-
Notifications
You must be signed in to change notification settings - Fork 198
SELF-915: Setup and add turnkey utils #1314
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. 🗂️ Base branches to auto review (3)
Please check the settings in the CodeRabbit UI or the You can disable this status message by setting the Note Other AI code review bot(s) detectedCodeRabbit has detected other AI code review bot(s) in this pull request and will avoid duplicating their findings in the review comments. This may lead to a less comprehensive review. WalkthroughThis PR integrates Turnkey wallet support with environment configuration, implements a comprehensive points and referral system featuring earning flows, confirmation modals, and history tracking, adds new navigation routes (Points, Referral, Gratification), bumps app versions to 2.7.4, extends mobile SDK with new utilities and animations, and expands test coverage throughout. Changes
Sequence Diagram(s)sequenceDiagram
participant User
participant HomeScreen
participant Modal as Modal Registry
participant Points as Points Flow
participant API as Points API
participant Navigation
User->>HomeScreen: Press Earn Points
activate HomeScreen
HomeScreen->>HomeScreen: Check identity document<br/>(hasUserAnIdentityDocumentRegistered)
alt No identity document
HomeScreen->>Modal: Show identity verification modal
activate Modal
User->>Modal: Confirm
Modal->>Navigation: Navigate to DocumentOnboarding
deactivate Modal
else Has identity document
HomeScreen->>HomeScreen: Check points disclosure<br/>(hasUserDoneThePointsDisclosure)
alt No disclosure
HomeScreen->>Modal: Show disclosure modal
activate Modal
User->>Modal: Confirm
Modal->>Navigation: Navigate to points-disclosure
deactivate Modal
else Has disclosure & has referrer
HomeScreen->>Points: Register referral
activate Points
Points->>API: POST /referrals/refer
API-->>Points: Success/Error
Points-->>HomeScreen: Result
deactivate Points
alt Referral success
HomeScreen->>Navigation: Navigate to Gratification<br/>(with earned points)
else Referral error
HomeScreen->>Modal: Show error modal
activate Modal
User->>Modal: Retry/Dismiss
deactivate Modal
end
else No referrer
HomeScreen->>Navigation: Navigate to Points screen
end
end
deactivate HomeScreen
sequenceDiagram
participant App
participant ReferralConfirmation as useReferralConfirmation
participant Modal as Modal Registry
participant UserStore
participant Navigation
App->>ReferralConfirmation: hasReferrer=true<br/>onConfirmed=callback
activate ReferralConfirmation
ReferralConfirmation->>UserStore: Read deepLinkReferrer<br/>isReferrerRegistered
alt hasReferrer && !isReferrerRegistered<br/>&& !isReferralConfirmed
ReferralConfirmation->>Modal: Register confirmation modal
activate Modal
Note over Modal: User sees referral confirmation
User->>Modal: Confirm button press
ReferralConfirmation->>UserStore: Set isReferralConfirmed=true
Modal->>Navigation: Navigate back (after delay)
deactivate Modal
ReferralConfirmation->>ReferralConfirmation: isReferralConfirmed===true<br/>hasReferrer===true
ReferralConfirmation->>App: Call onConfirmed()
else Already confirmed or<br/>no referrer
ReferralConfirmation->>ReferralConfirmation: Skip modal
end
deactivate ReferralConfirmation
Estimated code review effort🎯 4 (Complex) | ⏱️ ~60 minutes Areas requiring extra attention:
Possibly related PRs
Suggested labels
Suggested reviewers
Poem
Pre-merge checks and finishing touches❌ Failed checks (1 warning)
✅ Passed checks (2 passed)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
| GitGuardian id | GitGuardian status | Secret | Commit | Filename | |
|---|---|---|---|---|---|
| 19414827 | Triggered | Generic Password | cd6a7f3 | packages/mobile-sdk-alpha/ios/Frameworks/NFCPassportReader.xcframework/ios-arm64/NFCPassportReader.framework/Modules/NFCPassportReader.swiftmodule/arm64-apple-ios.private.swiftinterface | View secret |
🛠 Guidelines to remediate hardcoded secrets
- Understand the implications of revoking this secret by investigating where it is used in your code.
- Replace and store your secret safely. Learn here the best practices.
- Revoke and rotate this secret.
- If possible, rewrite git history. Rewriting git history is not a trivial act. You might completely break other contributing developers' workflow and you risk accidentally deleting legitimate data.
To avoid such incidents in the future consider
- following these best practices for managing and storing secrets including API keys and other credentials
- install secret detection on pre-commit to catch secret before it leaves your machine and ease remediation.
🦉 GitGuardian detects secrets in your source code to help developers and security teams secure the modern development process. You are seeing this because you or someone else with access to this repository has authorized GitGuardian to scan your pull request.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This PR is being reviewed by Cursor Bugbot
Details
Your team is on the Bugbot Free tier. On this plan, Bugbot will review limited PRs each billing cycle for each member of your team.
To receive Bugbot reviews on all of your PRs, visit the Cursor dashboard to activate Pro and start your 14-day free trial.
| } catch (e: unknown) { | ||
| console.error(e); | ||
| } | ||
| }, [getMnemonic, restoreAccountFlow, setBackedUpWithTurnKey, trackEvent]); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Bug: Restore Flag Misrepresents Success
The onRestoreFromTurnkeyPress function calls setBackedUpWithTurnKey(true) after restoreAccountFlow completes, but restoreAccountFlow itself can throw errors that are caught in the outer try-catch. If restoreAccountFlow throws an error (e.g., during passport validation), the backup flag is never set, but the function still catches the error and continues. However, if restoreAccountFlow succeeds but the user's passport isn't registered, it navigates away and sets restoring to false inside restoreAccountFlow, then the outer function still tries to set backedUpWithTurnKey to true even though the restore failed. The flag should only be set when the entire flow succeeds, not just when no exception is thrown.
* 2.9 release * 2.9 release * Remove debug console logs from generateTEEInputsRegister function in registerInputs.ts * parse only the passport data during the dsc step * Add ReferralScreen and integrate referral functionality - Introduced ReferralScreen for sharing referral links via messages, WhatsApp, and clipboard. - Updated navigation to include ReferralScreen in the home stack. - Added new icons for sharing and messaging. - Enhanced points utility functions to check user identity document registration and points disclosure status. - Minor adjustments to existing components for better integration with the new referral feature. * fix types * fix font * fix vertical spacing * save current abstraction * clean up linking * clean up spurious ai slop comments * add dinot bold font * minify animations * update fonts and add placeholder animation * fix pipelines * fix order * Update dependencies and enhance Points component functionality - Added `@react-native-masked-view/masked-view` and `react-native-linear-gradient` to dependencies for improved UI components. - Refactored `PointHistoryList` to accept `ListHeaderComponent` and `onRefreshRef` props for better integration with parent components. - Enhanced `Points` component to manage notification and backup point events, including user feedback through modals. - Updated navigation to use `PointsNavBar` for a more cohesive user experience. - Introduced new utility functions for managing incoming points and point event records. * update lock * update lock and project settings * fix line height for android * save wip referral message fix and deeplink setup * Fix whatsapp link (#1352) * add 2 new lines * use path based param instead of query string * use staging url for now * SELF-1089: Fix black screen on Points (#1351) * Fix black screen on Points * Fix: black screen on Referral Page * fix: prevent BlurView from displaying when IdDetailsScreen loses focus * Fix Android message share (#1355) * Referral flow (#1354) * SELF-1139: update getUserAddress() (#1353) * update getUserAddress() * rename getUserAddress to getPointsAddress * [SELF-1098, SELF-1099] polish gratification screen post referrer update history (#1356) * fix: mark document as registered after restoring secret (#1350) * update lock * create useRegisterReferral hook and test * add referral message test * save wip register referral flow request * use register referral from the home screen * fix typing and sort screens * fix linting issues * register poitns and update tests * use package * fix tests * simplify HomeScreen with hooks * fix tests * address tests * abstract points logic, fix types and linting * add test referral flow hook * coderabbit feedback: fix refereral logic issues, remove sensitive logs * move test referral flow button to dev settings screen * close modal after referring and viewing gratification screen * fix tests, remove alert, format --------- Co-authored-by: Seshanth.S <[email protected]> * add gratification bg; use safe bottom padding hook on home screen * prep 2.7.4 as 2.9.0 * manually bump version for custom deploy * match version code * fix types * formatting * fix tests * SELF-1144 - use real points on home screen and improve points screen (#1361) * fix whitespace * move effects for fetching points and incoming points to hooks, add items to deps array so that they refresh when we expect points to change. * cleanup * Add events for new Points Flow (#1362) * remove deeplinkCallback from pointsSelfApp. (#1365) * fix pipelines * SELF-978: wire cloudbackup with points (#1360) * wire cloudbackup with points * wire cloudbackup with points * Remove redundant setSelfPoints() * add signature and simplify POST api requests (#1367) * add signature and simplify POST api requests * better gitleaks ignore * update toml * have gitguardian ignore gitleaks * add buffer lib * update api with 202 success code * update scope and contract-address (#1366) * fix navigation test * SELF-915: Setup and add turnkey utils (#1314) * Setup and add turnkey utils * update CloudBackupScreen * fix: turnkey * add yarn.lock * lint * add podfile.lock * fix deeplink * fix tests: mock turnkey * yarn nice * update .gitleaksignore * patch react-native-svg * fix patch-package * fix lineHeight * points.tsx: fix lineHeight * fix: recover with turnkey disabled state * fix turnkey flow * fix: address generation * minify animations (#1368) * fix pipelines * fix false positives * fix gitguardian --------- Co-authored-by: Justin Hernandez <[email protected]> * enable turnkey only on success * use prod url * fix tests and update mocks * update version and fastlane readme * pointsSelfApp: update scope * bump android version to 117 * incremenet timestamp * abstract points css, hide explore button for now, add points guardrail * better logic * simplify point event list data acquisition (#1375) * simplify point event list data acquisition * explain * Remove BlurView in Points.tsx * Move Points and IncomingPoints to the Point Events Store (#1363) * add polling for event processing. atomically update store state * handle failed states and use real backend api * improve concurrency reliability of pointevents * move points to the store * refresh all points on pull * add points tracking events * fix imports * fix headers * fix import * fix misspelling * enable apps link * remove __DEV__ logging * remove additional referall dev mode features * Add turnkey env * don't allow users to refer themselves * prettier * trim both addresses * fix close webview button * fix tests and format * lint and format * Update point rewards in NavBar component: change earned points from 20 to 44 and from 100 to 32. * Refactor point rewards in NavBar component: replace hardcoded values with constants for backup and notification points, and update subscription state variable names for clarity. * Update POINT_VALUES in types.ts: adjust point rewards for disclosure, notification, and backup events to 8, 44, and 32 respectively. * App/fix backup points (#1381) * Enhance backup completion tracking in Points component: Introduce a ref to manage backup check flag, ensuring points are recorded only when explicitly set, preventing false triggers from other navigation flows. * Update API endpoint in getTotalPoints function: change URL from /distribution to /points for accurate points retrieval. * formatting * update points url * Clear referrer on modal dismiss in useEarnPointsFlow hook to prevent retry loop * use points private key to sign api requests * formatting * save working version of referral confirmation * fix circular dependency * don't fetch private key if unable to fetch points key * add url * add debug info * Refactor optimistic points calculation in usePointEventStore: update return value to only include incomingPoints.amount, marking the optimistic approach for future improvement. * save clean up * clean useReferralConfirmation logic * fix tests * tests pass * standardize android compile sdk version * fix package version * don't log errors * Update app/src/hooks/useReferralConfirmation.ts Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * better test * add turnkey entitlements * fix linting * remove entitlements * prettier and fix lint * update gradle version * update lock file * fix tests * fix build failure * bump android version to 118 * update date * bump version for next build * address failing pipelines due to cache issues * Hide turnkey button (#1387) * prep for 2.9.0 release * fix mobile e2e test * fix tests * bump android version --------- Co-authored-by: Justin Hernandez <[email protected]> Co-authored-by: Seshanth.S <[email protected]> Co-authored-by: Leszek Stachowski <[email protected]> Co-authored-by: Aaron DeRuvo <[email protected]> Co-authored-by: seshanthS <[email protected]> Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
* 2.9 release * 2.9 release * Remove debug console logs from generateTEEInputsRegister function in registerInputs.ts * parse only the passport data during the dsc step * Add ReferralScreen and integrate referral functionality - Introduced ReferralScreen for sharing referral links via messages, WhatsApp, and clipboard. - Updated navigation to include ReferralScreen in the home stack. - Added new icons for sharing and messaging. - Enhanced points utility functions to check user identity document registration and points disclosure status. - Minor adjustments to existing components for better integration with the new referral feature. * fix types * fix font * fix vertical spacing * save current abstraction * clean up linking * clean up spurious ai slop comments * add dinot bold font * minify animations * update fonts and add placeholder animation * fix pipelines * fix order * Update dependencies and enhance Points component functionality - Added `@react-native-masked-view/masked-view` and `react-native-linear-gradient` to dependencies for improved UI components. - Refactored `PointHistoryList` to accept `ListHeaderComponent` and `onRefreshRef` props for better integration with parent components. - Enhanced `Points` component to manage notification and backup point events, including user feedback through modals. - Updated navigation to use `PointsNavBar` for a more cohesive user experience. - Introduced new utility functions for managing incoming points and point event records. * update lock * update lock and project settings * fix line height for android * save wip referral message fix and deeplink setup * Fix whatsapp link (#1352) * add 2 new lines * use path based param instead of query string * use staging url for now * SELF-1089: Fix black screen on Points (#1351) * Fix black screen on Points * Fix: black screen on Referral Page * fix: prevent BlurView from displaying when IdDetailsScreen loses focus * Fix Android message share (#1355) * Referral flow (#1354) * SELF-1139: update getUserAddress() (#1353) * update getUserAddress() * rename getUserAddress to getPointsAddress * [SELF-1098, SELF-1099] polish gratification screen post referrer update history (#1356) * fix: mark document as registered after restoring secret (#1350) * update lock * create useRegisterReferral hook and test * add referral message test * save wip register referral flow request * use register referral from the home screen * fix typing and sort screens * fix linting issues * register poitns and update tests * use package * fix tests * simplify HomeScreen with hooks * fix tests * address tests * abstract points logic, fix types and linting * add test referral flow hook * coderabbit feedback: fix refereral logic issues, remove sensitive logs * move test referral flow button to dev settings screen * close modal after referring and viewing gratification screen * fix tests, remove alert, format --------- Co-authored-by: Seshanth.S <[email protected]> * add gratification bg; use safe bottom padding hook on home screen * prep 2.7.4 as 2.9.0 * manually bump version for custom deploy * match version code * fix types * formatting * fix tests * SELF-1144 - use real points on home screen and improve points screen (#1361) * fix whitespace * move effects for fetching points and incoming points to hooks, add items to deps array so that they refresh when we expect points to change. * cleanup * Add events for new Points Flow (#1362) * remove deeplinkCallback from pointsSelfApp. (#1365) * fix pipelines * SELF-978: wire cloudbackup with points (#1360) * wire cloudbackup with points * wire cloudbackup with points * Remove redundant setSelfPoints() * add signature and simplify POST api requests (#1367) * add signature and simplify POST api requests * better gitleaks ignore * update toml * have gitguardian ignore gitleaks * add buffer lib * update api with 202 success code * update scope and contract-address (#1366) * fix navigation test * SELF-915: Setup and add turnkey utils (#1314) * Setup and add turnkey utils * update CloudBackupScreen * fix: turnkey * add yarn.lock * lint * add podfile.lock * fix deeplink * fix tests: mock turnkey * yarn nice * update .gitleaksignore * patch react-native-svg * fix patch-package * fix lineHeight * points.tsx: fix lineHeight * fix: recover with turnkey disabled state * fix turnkey flow * fix: address generation * minify animations (#1368) * fix pipelines * fix false positives * fix gitguardian --------- Co-authored-by: Justin Hernandez <[email protected]> * enable turnkey only on success * use prod url * fix tests and update mocks * update version and fastlane readme * pointsSelfApp: update scope * bump android version to 117 * incremenet timestamp * abstract points css, hide explore button for now, add points guardrail * better logic * simplify point event list data acquisition (#1375) * simplify point event list data acquisition * explain * Remove BlurView in Points.tsx * Move Points and IncomingPoints to the Point Events Store (#1363) * add polling for event processing. atomically update store state * handle failed states and use real backend api * improve concurrency reliability of pointevents * move points to the store * refresh all points on pull * add points tracking events * fix imports * fix headers * fix import * fix misspelling * enable apps link * remove __DEV__ logging * remove additional referall dev mode features * Add turnkey env * don't allow users to refer themselves * prettier * trim both addresses * fix close webview button * fix tests and format * lint and format * Update point rewards in NavBar component: change earned points from 20 to 44 and from 100 to 32. * Refactor point rewards in NavBar component: replace hardcoded values with constants for backup and notification points, and update subscription state variable names for clarity. * Update POINT_VALUES in types.ts: adjust point rewards for disclosure, notification, and backup events to 8, 44, and 32 respectively. * App/fix backup points (#1381) * Enhance backup completion tracking in Points component: Introduce a ref to manage backup check flag, ensuring points are recorded only when explicitly set, preventing false triggers from other navigation flows. * Update API endpoint in getTotalPoints function: change URL from /distribution to /points for accurate points retrieval. * formatting * update points url * Clear referrer on modal dismiss in useEarnPointsFlow hook to prevent retry loop * use points private key to sign api requests * formatting * save working version of referral confirmation * fix circular dependency * don't fetch private key if unable to fetch points key * add url * add debug info * Refactor optimistic points calculation in usePointEventStore: update return value to only include incomingPoints.amount, marking the optimistic approach for future improvement. * save clean up * clean useReferralConfirmation logic * fix tests * tests pass * standardize android compile sdk version * fix package version * don't log errors * Update app/src/hooks/useReferralConfirmation.ts Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * better test * add turnkey entitlements * fix linting * remove entitlements * prettier and fix lint * update gradle version * update lock file * fix tests * fix build failure * bump android version to 118 * update date * bump version for next build * address failing pipelines due to cache issues * Hide turnkey button (#1387) * prep for 2.9.0 release * patch turnkey to prevent keychain deletes * add yarn.lock * update yarn.lock * enable buttons * remove console logging from patch * fix test * skip tests * fix test * allow users to advance if they backup via turnkey * Recognize Turnkey backups in onboarding (#1394) * rename var * update var name * remove transform * simplify tests to avoid oom issues * fix check * fix tests --------- Co-authored-by: turnoffthiscomputer <[email protected]> Co-authored-by: Justin Hernandez <[email protected]> Co-authored-by: Leszek Stachowski <[email protected]> Co-authored-by: Aaron DeRuvo <[email protected]> Co-authored-by: turnoffthiscomputer <[email protected]> Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Summary by CodeRabbit
Release Notes
New Features
UI/UX Improvements
Version Update
Note
Integrates Turnkey wallet (OAuth) into the app with new backup/restore flows and deeplink handling, plus related UI, config, and build/dependency updates.
TurnkeyProviderand config/callbacks inapp/App.tsxwith env-driven IDs and platform redirect URIs.useTurnkeyUtilsfor authenticate/backup/restore/mnemonic export; storebackedUpWithTurnKeyinuseSettingStore.CloudBackupScreenwith selectable iCloud or Turnkey backup, progress/disable flows, and modals.AccountRecoveryChoiceScreento restore via Turnkey or cloud; shared restore flow with CSCA checks.Pointsscreen records backup points when either cloud or Turnkey backup is enabled.CloudBackupSettingstitle to “Account Backup”.code,id_token, etc.) inutils/deeplinks.ts; ignore OAuth redirects from navigation.deeplinkstests for OAuth, validation, and parsing.compileSdkVersionto 36, Kotlin 2.0.21; enablebuildFeaturesand set app auth redirect scheme.com.warroom.proofofpassportandwebcredentials:redirect.self.xyzentitlement; add pods (react-native-compat,react-native-passkey,RNInAppBrowser); updateRNSVG.@turnkey/*andviem; Babel adds@babel/plugin-transform-export-namespace-from.react-native-svg..gitguardian.ymlkeys (paths_ignore,secrets_ignore) and extend.gitleaksignore.Written by Cursor Bugbot for commit 545303c. This will update automatically on new commits. Configure here.