-
Notifications
You must be signed in to change notification settings - Fork 279
Jon/scenewrapper updates #5886
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
base: master
Are you sure you want to change the base?
Jon/scenewrapper updates #5886
Conversation
New Crowdin updates
Fix fading to avoid white empty white square
Per Paybis team feedback, this prevents an invalid session that triggers a new email verification check.
Fix Paybis sell for US users
Re-enable UFO coin
Split search queries by spaces so users can search multiple terms like 'base eth' to find Ethereum on Base network. All terms must match at least one searchable field (AND logic). Add chainDisplayName as a searchable field in searchWalletList to enable searching by network/chain name.
Include assetDisplayName from currencyInfo as a searchable field for wallet and create-wallet searches. This allows users to search by the asset's display name (e.g., 'Ethereum') in addition to other existing searchable fields.
Change search matching for currencyCode, displayName, and assetDisplayName from includes() to startsWith(). This prevents partial substring matches that crowd search results. For example, searching 'eth' now shows Ethereum assets but not Tether (which contains 'eth' in the middle). Context fields like chainDisplayName, wallet name, and contractAddress still use includes() for broader discovery.
Test coverage for: - Multi-word search with space delimiter (AND logic) - startsWith matching for currencyCode, displayName, assetDisplayName - includes matching for chainDisplayName, wallet name, contractAddress - assetDisplayName and chainDisplayName only searched for mainnet assets - Regression tests for original issues (#1: 'base eth', #3: 'eth' vs Tether)
Jon/search update
Sam/dock prop hopity hop
Layout animations on elements within WelcomeHero were causing visually slow gesture-based animation. Disabling them ensures smoother rendering of the gesture-based animation during the welcome flow.
Use layout positioning (not absolute nor relative) for ButtonFadeContainer on both platforms to prevent layout shift when buttons swap visibility. This fixes the issue where the "Next" button would fly in from the upper section of the screen on Android instead of fading in place like on iOS. Also unified TertiaryTouchable margins across platforms. The HACK was introduced in PR #5590 (May 2025) as a workaround after PR #5566 fixed a button animation issue using absolute positioning but broke iOS. The conditional styling attempted to address "iOS/Android parity mismatches when the animation fires" without understanding the root cause. The actual root cause is that EdgeAnim applies `layout={LAYOUT_ANIMATION}` (LinearTransition) to all animated views. With relative positioning, when the "Get Started" button unmounts and "Next" mounts, there's a layout shift that triggers the layout animation - causing the button to fly in from its initial position. Absolute positioning prevents any layout shift, so the layout animation has nothing to animate, and the button simply fades in place as intended. This is the same approach the original fix (PR #5566) used, but now correctly applied to both platforms.
Replace styled() usage with a single getStyles cacheStyles pattern. Extract reusable animated components (HeroItem, PageIndicator, SectionItem) placed at the bottom of the file. Replace showNextButton state with animated button opacity. Add EdgeAnim fade-in for pagination and button container. Also fixes bug where static flexGrow: 1 was overridden by animated style.
Encourage migration away from styled components to regular components with useTheme() and cacheStyles().
Sam/fly in button
Jared/fix cross device tests
The showScamWarningModal function was already disabled (always returns false), making these calls unnecessary async overhead during login and other operations. Removes calls from: - initializeAccount (firstLogin) - WcConnectionsScene (firstWalletConnect) - WalletListMenuActions (firstPrivateKeyView)
When Settings.json doesn't exist (new account or first login), return default values without writing them to disk. Defaults are derived from cleaners, so they don't need to be persisted. Settings will be written when the user explicitly changes a value. This eliminates unnecessary disk I/O during the login flow.
When local Settings.json doesn't exist (new account), return default values without writing them to disk. Defaults are derived from cleaners, so they don't need to be persisted. Settings will be written when values actually change. This eliminates unnecessary disk I/O during the login flow.
Move biometric checks (isTouchEnabled, getSupportedBiometryType) from blocking awaits to background Promise execution. This removes two blocking native module calls from the critical login path. The biometric state is loaded asynchronously and dispatched via a new UI/SETTINGS/SET_TOUCH_ID_SUPPORT action when available. The UI will use default values (false) until the background check completes. Also removes the redundant refreshTouchId call - this is already called by edge-login-ui-rn in submitLogin() before the onLogin callback, so the call here was unnecessary.
Remove isTouchEnabled and isTouchSupported from global Redux state. Biometric state is now loaded lazily in SettingsScene using useAsyncValue, which removes it from the login critical path. - Remove biometric fields from SettingsState and AccountInitPayload - Remove CHANGE_TOUCH_ID_SETTINGS action type - Remove updateTouchIdEnabled thunk from SettingsActions - SettingsScene loads biometric state locally on mount via useAsyncValue - Toggle calls enableTouchId/disableTouchId directly with local state
Add a migration that removes default denomination values from the synced settings file. This migration: 1. Runs once per account (tracked via denominationSettingsOptimized flag) 2. Compares each saved denomination to the default from currencyInfo 3. Removes entries that match the default (they're derived on-demand) 4. Reduces settings file size for existing accounts The migration runs in the background after ACCOUNT_INIT_COMPLETE to avoid blocking the login flow. For existing accounts with many saved denominations, this significantly reduces the settings file size.
Remove the expensive nested loop that merged default denomination settings with synced settings. Since default denominations are no longer populated in the LOGIN reducer, we can use synced settings directly. The synced settings contain only user customizations. Default denominations are derived on-demand from currencyInfo via selectors.
Remove the expensive loop that populated denomination defaults for all currency plugins and tokens during LOGIN. This loop iterated through every plugin and token to set default denominations in Redux state. Denomination defaults are already available from currencyInfo and can be derived on-demand via selectors (selectDisplayDenom already has fallback logic to currencyConfig). This change eliminates unnecessary work during the login critical path.
Separate out the new account workflow to `navigateToNewAccountFlow` in initializeAccount and the existing account flow into `navigateToExistingAccountHome`.
Eliminate the ACCOUNT_INIT_COMPLETE action by loading all settings upfront and dispatching them in the LOGIN action. This enables immediate navigation after login since all required state is available in Redux right away. - Load synced and local settings in parallel before LOGIN dispatch - Expand LOGIN action payload to include syncedSettings and localSettings - Remove ACCOUNT_INIT_COMPLETE action type and AccountInitPayload - Remove pinLoginEnabled from Redux, load locally in SettingsScene - Remove togglePinLoginEnabled thunk from SettingsActions - Update WalletsReducer to remove ACCOUNT_INIT_COMPLETE handling - Update SpendingLimitsReducer to read from LOGIN payload - Update PasswordReminderReducer to read from LOGIN payload - Remove getFirstActiveWalletInfo (walletId/currencyCode no longer set at login)
Sam/optimize initialize account
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.
💡 Codex Review
Here are some automated review suggestions for this pull request.
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| // Check for security alerts: | ||
| if (hasSecurityAlerts(account)) { | ||
| navigation.push('securityAlerts') | ||
| hideSurvey = true | ||
| } |
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.
Show scam warning on first login
The login flow no longer calls showScamWarningModal('firstLogin') (the only caller was removed), so new users will never see the anti-scam warning. With no other entry point for this modal, first-time logins now skip the security warning entirely, reducing protection for new accounts.
Useful? React with 👍 / 👎.
CHANGELOG
Does this branch warrant an entry to the CHANGELOG?
Dependencies
noneRequirements
If you have made any visual changes to the GUI. Make sure you have:
Note
E2E tests (Maestro) – major expansion
add-wallets,import-wallets,add-all-wallet-types,no-errors,relogin-pin,dismiss-modals).Build/Deps
edge-core-jsto^2.38.2,edge-currency-accountbasedto^4.68.0,edge-currency-pluginsto^3.8.10,edge-exchange-pluginsto^2.40.2; syncios/Podfile.lock.Lint
no-restricted-syntaxwarning forstyled()usage to encourageuseTheme()+cacheStyles().Misc
scripts/runMaestro.ts.denominationSettingsOptimized).Written by Cursor Bugbot for commit d102426. This will update automatically on new commits. Configure here.