Skip to content

Commit 6df2cbe

Browse files
authored
chore(nav): type wallet, asset, and settings shell navigators (Phase 3) (MetaMask#33306)
<!-- Please submit this PR as a draft initially. Do not mark it as "Ready for review" until this PR meets the canonical Definition of Ready For Review in `docs/readme/ready-for-review.md`. In short: the template must be materially complete (not just section titles present), all status checks must be currently passing, and the only expected follow-up commits must be reviewer-driven. --> <!-- mms-check directive vocabulary — read by .github/scripts/shared/pr-template-checks.ts at module load to build the validation plan. Directives are invisible in rendered markdown and must NOT be removed or edited without updating the validator registry. type=text Section must contain non-placeholder prose. type=changelog Section must have a valid CHANGELOG entry: line. type=issue-link Section must have a Fixes:/Closes:/Refs: line with a value. type=manual-testing Section must have real testing steps or an explicit N/A. type=screenshot Section must have evidence (image/URL) or an explicit N/A. type=checklist Section must have all checkboxes consciously checked. required=true|false Whether a missing/invalid section runs the validator at all. blocking=true|false Whether a failure of this check fails the CI workflow. Default: false — failures are shown as warnings in the sticky comment but do not block the PR. Sections without a directive are checked for structural presence only. --> ## **Description** <!-- mms-check: type=text required=true --> <!-- Write a short description of the changes included in this pull request, also include relevant motivation and context. Have in mind the following questions: 1. What is the reason for the change? 2. What is the improvement/solution? --> **Phase 3 of the incremental React Navigation typing migration — app shell navigators.** Shared navigation hosts (`AssetStackFlow`, `WalletTabHome`, `SettingsView`, `TrendingView`, `BrowserTabHome`, `Webview`, `SetPasswordFlow`, `ImportPrivateKeyView`, `RootModalFlow`, `Home`, `Main`) were still loosely typed as `NestedNavigationParams` (or equivalent `{ screen: string; params?: object }`), so nested `navigate(container, { screen, params })` calls into those shells could not be checked against real screen param shapes. This PR adds shell-level param lists and wires them into `RootStackParamList` via `NavigatorScreenParams`, matching the Phase 3 pattern already used for feature stacks (Perps / Rewards / Predict / Card / Earn / etc.). This is primarily **types-only** — no intentional navigation architecture change. One small Onboarding call-site cleanup aligns SuccessErrorSheet params with the typed sheet contract (`primaryButtonLabel`). ### What changed **Shell param lists (`app/components/Nav/Main/types/navigation.ts`)** - Shells 1: `AssetStackParamList`, `WalletTabStackParamList` / `WalletTabHomeParamList`, `SettingsStackParamList` - Shells 2: `TrendingViewStackParamList`, `BrowserTabHomeParamList`, `WebviewStackParamList`, `SetPasswordFlowParamList`, `ImportPrivateKeyStackParamList` - Shells 3: `MoneyTabStackParamList`, `TransactionsHomeParamList`, `RewardsHomeParamList`, `HomeTabsParamList`, `MainStackParamList`, `MainFlowParamList` **Root modal flow (`app/core/NavigationService/types.ts`)** - `RootModalFlowParamList` — screens registered inside App’s `RootModalFlow` - `RootModalFlow` / `Home` / `Main` (and the Shells 1–2 hosts above) → `NavigatorScreenParams<…>` **Param accuracy / call-site cleanup** - Tightened stub shapes for `TransactionDetailsSheetParams` and `MultichainTransactionDetailsParams` to match what those sheets actually receive - Onboarding SuccessErrorSheet navigations now pass `primaryButtonLabel` (was incorrect `buttonLabel`) ## **Changelog** <!-- mms-check: type=changelog required=true blocking=true --> <!-- If this PR is not End-User-Facing and should not show up in the CHANGELOG, you can choose to either: 1. Write `CHANGELOG entry: null` 2. Label with `no-changelog` If this PR is End-User-Facing, please write a short User-Facing description in the past tense like: `CHANGELOG entry: Added a new tab for users to see their NFTs` `CHANGELOG entry: Fixed a bug that was causing some NFTs to flicker` (This helps the Release Engineer do their job more quickly and accurately) --> CHANGELOG entry:null ## **Related issues** <!-- mms-check: type=issue-link required=true --> Fixes:https://consensyssoftware.atlassian.net/browse/MCWP-674 ## **Manual testing steps** <!-- mms-check: type=manual-testing required=true --> N/A ## **Screenshots/Recordings** <!-- mms-check: type=screenshot required=true --> <!-- If applicable, add screenshots and/or recordings to visualize the before and after of your change. --> N/A ## **Pre-merge author checklist** <!-- mms-check: type=checklist required=true --> <!-- Every checklist item must be consciously assessed before marking this PR as "Ready for review". A checked box means you deliberately considered that responsibility, not that you literally performed every action listed. Unchecked boxes are ambiguous: they are not an implicit "N/A" and they are not a silent "skip". See `docs/readme/ready-for-review.md` for the full checklist semantics. --> - [x] I've followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [x] I've completed the PR template to the best of my ability - [x] I've included tests if applicable - [x] I've documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [x] I've applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. #### Performance checks (if applicable) - [ ] I've tested on Android - Ideally on a mid-range device; emulator is acceptable - [ ] I've tested with a power user scenario - Use these [power-user SRPs](https://consensyssoftware.atlassian.net/wiki/spaces/TL1/pages/edit-v2/401401446401?draftShareId=9d77e1e1-4bdc-4be1-9ebb-ccd916988d93) to import wallets with many accounts and tokens - [ ] I've instrumented key operations with Sentry traces for production performance metrics - See [`trace()`](/app/util/trace.ts) for usage and [`addToken`](/app/components/Views/AddAsset/components/AddCustomToken/AddCustomToken.tsx#L274) for an example For performance guidelines and tooling, see the [Performance Guide](https://consensyssoftware.atlassian.net/wiki/spaces/TL1/pages/400085549067/Performance+Guide+for+Engineers). ## **Pre-merge reviewer checklist** <!-- Reviewer checklist items follow the same semantics as the author checklist: an unchecked box is ambiguous, a checked box means the reviewer consciously assessed that responsibility. See `docs/readme/ready-for-review.md`. --> - [x] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [x] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. <!-- CURSOR_SUMMARY --> --- > [!NOTE] > **Low Risk** > Compile-time navigation typing and param-shape fixes; the only runtime tweak is correcting SuccessErrorSheet button props on onboarding error flows. > > **Overview** > **Phase 3** of the React Navigation typing migration: app-shell navigators that were still `NestedNavigationParams` (or loose `{ screen, params }`) now have dedicated param lists and are wired into `RootStackParamList` via `NavigatorScreenParams`. > > A new `navigation.ts` defines shell lists for asset/wallet/settings stacks, home tabs, main flow, browser/webview/set-password/import flows, and related hosts. `NavigationService/types.ts` adds **`RootModalFlowParamList`** and replaces loose typing on **`Main`**, **`Home`**, **`RootModalFlow`**, **`SettingsView`**, **`WalletTabHome`**, **`AssetStackFlow`**, and similar routes with nested `NavigatorScreenParams`. > > Modal route stubs are tightened: **`TransactionDetailsSheetParams`** and **`MultichainTransactionDetailsParams`** match what those sheets actually receive (full tx/display payloads instead of optional `transactionId` only). > > Onboarding **SuccessErrorSheet** navigations now pass **`primaryButtonLabel`** instead of **`buttonLabel`**, with matching test updates—aligning call sites with the typed sheet contract. > > <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit cb64ba0. Bugbot is set up for automated code reviews on this repo. Configure [here](https://www.cursor.com/dashboard/bugbot).</sup> <!-- /CURSOR_SUMMARY -->
1 parent d27d2ec commit 6df2cbe

6 files changed

Lines changed: 388 additions & 46 deletions

File tree

Lines changed: 245 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,245 @@
1+
import type { NavigatorScreenParams } from '@react-navigation/native';
2+
import type {
3+
AssetLoaderParams,
4+
AssetViewParams,
5+
} from '../../../Views/Asset/Asset.types';
6+
import type { TokenDetailsRouteParams } from '../../../UI/TokenDetails/constants/constants';
7+
import type {
8+
CreatePriceAlertRouteParams,
9+
PriceAlertRouteParams,
10+
} from '../../../UI/Assets/PriceAlerts/constants';
11+
import type { RevealPrivateCredentialParams } from '../../../Views/RevealPrivateCredential/RevealPrivateCredential.types';
12+
import type { NetworkDetailsViewParams } from '../../../Views/NetworksManagement/NetworkDetailsView/NetworkDetailsView.types';
13+
import type { ContactFormParams } from '../../../Views/Settings/Contacts/ContactForm.types';
14+
import type { NotificationSettingsSectionProps } from '../../../Views/Settings/NotificationsSettings/NotificationSettingsSection';
15+
import type { RegionSelectorParams } from '../../../Views/Modals/Modals.types';
16+
import type {
17+
AccountBackupParams,
18+
ManualBackupStep3Params,
19+
} from '../../../Views/AccountBackup/AccountBackup.types';
20+
import type {
21+
ManualBackupStep1Params,
22+
ManualBackupStep2Params,
23+
} from '../../../Views/ManualBackupStep1/ManualBackupStep1.types';
24+
import type { BrowserParams } from '../../../Views/Browser/Browser.types';
25+
import type { SimpleWebviewParams } from '../../../Views/Webview/Webview.types';
26+
import type { ExploreFeedRouteParams } from '../../../Views/TrendingView/TrendingView';
27+
import type { ChoosePasswordRouteParams } from '../../../Views/ChoosePassword/ChoosePassword.types';
28+
import type { OptinMetricsRouteParams } from '../../../UI/OptinMetrics/OptinMetrics.types';
29+
import type { QRTabSwitcherParams } from '../../../Views/QRTabSwitcher/QRTabSwitcher';
30+
import type { TransactionsViewParams } from '../../../Views/TransactionsView/TransactionsView.types';
31+
import type { RampOrderDetailsParams } from '../../../UI/Ramp/Aggregator/types/navigation';
32+
import type { RampNavigationParamList } from '../../../UI/Ramp/types/navigation';
33+
import type { BridgeTransactionDetailsParams } from '../../../UI/Bridge/Bridge.types';
34+
35+
/**
36+
* Param list for screens inside `AssetStackFlow` (token details + alerts).
37+
*/
38+
// ParamListBase requires `type`; `interface` cannot satisfy it.
39+
// eslint-disable-next-line @typescript-eslint/consistent-type-definitions
40+
export type AssetStackParamList = {
41+
Asset: AssetViewParams | undefined;
42+
SecurityTrust: TokenDetailsRouteParams & {
43+
isPricePositive?: boolean;
44+
useAmbientColor?: boolean;
45+
};
46+
CreatePriceAlert: CreatePriceAlertRouteParams;
47+
ManagePriceAlerts: PriceAlertRouteParams;
48+
};
49+
50+
/**
51+
* Param list for screens inside `WalletTabStackFlow`.
52+
*/
53+
// ParamListBase requires `type`; `interface` cannot satisfy it.
54+
// eslint-disable-next-line @typescript-eslint/consistent-type-definitions
55+
export type WalletTabStackParamList = {
56+
WalletView: undefined;
57+
RevealPrivateCredential: RevealPrivateCredentialParams | undefined;
58+
};
59+
60+
/**
61+
* `WalletTabHome` is registered with component `WalletTabStackFlow`, but many
62+
* call sites still navigate with an intermediate `WalletTabStackFlow` screen.
63+
* Include both the real stack screens and that nested form.
64+
*/
65+
// ParamListBase requires `type`; `interface` cannot satisfy it.
66+
// eslint-disable-next-line @typescript-eslint/consistent-type-definitions
67+
export type WalletTabHomeParamList = WalletTabStackParamList & {
68+
WalletTabStackFlow:
69+
| NavigatorScreenParams<WalletTabStackParamList>
70+
| undefined;
71+
};
72+
73+
/**
74+
* Param list for screens inside `SettingsFlow` (`SettingsView`).
75+
*/
76+
// ParamListBase requires `type`; `interface` cannot satisfy it.
77+
// eslint-disable-next-line @typescript-eslint/consistent-type-definitions
78+
export type SettingsStackParamList = {
79+
AccountsMenuView: undefined;
80+
Settings: undefined;
81+
GeneralSettings: undefined;
82+
AdvancedSettings: { scrollToBottom?: boolean } | undefined;
83+
NetworksManagement: undefined;
84+
NetworkDetails: NetworkDetailsViewParams | undefined;
85+
SDKSessionsManager: undefined;
86+
SecuritySettings: undefined;
87+
RampSettings: undefined;
88+
RampActivationKeyForm: undefined;
89+
RampHeadlessPlayground: undefined;
90+
AesCryptoTestForm: undefined;
91+
ExperimentalSettings: undefined;
92+
CompanySettings: undefined;
93+
DeveloperOptions: undefined;
94+
ContactsSettings: undefined;
95+
ContactForm: ContactFormParams | undefined;
96+
RevealPrivateCredentialView: RevealPrivateCredentialParams | undefined;
97+
WalletConnectSessionsView: undefined;
98+
ResetPassword: undefined;
99+
WalletRecovery: undefined;
100+
AccountBackupStep1B: AccountBackupParams | undefined;
101+
ManualBackupStep1: ManualBackupStep1Params | undefined;
102+
ManualBackupStep2: ManualBackupStep2Params | undefined;
103+
ManualBackupStep3: ManualBackupStep3Params;
104+
EnterPasswordSimple: undefined;
105+
NotificationsSettings: undefined;
106+
NotificationSettingsSection: NotificationSettingsSectionProps['route']['params'];
107+
BackupAndSyncSettings: undefined;
108+
SettingsRegionSelector: RegionSelectorParams | undefined;
109+
SnapsSettingsList: undefined;
110+
};
111+
112+
/**
113+
* Param list for screens inside `ExploreHome` (`TrendingView` tab).
114+
*/
115+
// ParamListBase requires `type`; `interface` cannot satisfy it.
116+
// eslint-disable-next-line @typescript-eslint/consistent-type-definitions
117+
export type TrendingViewStackParamList = {
118+
TrendingFeed: ExploreFeedRouteParams | undefined;
119+
};
120+
121+
/**
122+
* Param list for screens inside `BrowserFlow` (`BrowserTabHome`).
123+
*/
124+
// ParamListBase requires `type`; `interface` cannot satisfy it.
125+
// eslint-disable-next-line @typescript-eslint/consistent-type-definitions
126+
export type BrowserTabHomeParamList = {
127+
BrowserView: BrowserParams | undefined;
128+
AssetLoader: AssetLoaderParams | undefined;
129+
AssetView: AssetViewParams | undefined;
130+
};
131+
132+
/**
133+
* Param list for screens inside the `Webview` stack.
134+
*/
135+
// ParamListBase requires `type`; `interface` cannot satisfy it.
136+
// eslint-disable-next-line @typescript-eslint/consistent-type-definitions
137+
export type WebviewStackParamList = {
138+
SimpleWebview: SimpleWebviewParams | undefined;
139+
};
140+
141+
/**
142+
* Param list for screens inside `SetPasswordFlow`.
143+
*/
144+
// ParamListBase requires `type`; `interface` cannot satisfy it.
145+
// eslint-disable-next-line @typescript-eslint/consistent-type-definitions
146+
export type SetPasswordFlowParamList = {
147+
ChoosePassword: ChoosePasswordRouteParams | undefined;
148+
AccountBackupStep1: AccountBackupParams | undefined;
149+
AccountBackupStep1B: AccountBackupParams | undefined;
150+
ManualBackupStep1: ManualBackupStep1Params | undefined;
151+
ManualBackupStep2: ManualBackupStep2Params | undefined;
152+
ManualBackupStep3: ManualBackupStep3Params;
153+
OptinMetrics: OptinMetricsRouteParams | undefined;
154+
};
155+
156+
/**
157+
* Param list for screens inside `ImportPrivateKeyView` (App root stack).
158+
*/
159+
// ParamListBase requires `type`; `interface` cannot satisfy it.
160+
// eslint-disable-next-line @typescript-eslint/consistent-type-definitions
161+
export type ImportPrivateKeyStackParamList = {
162+
ImportPrivateKey: undefined;
163+
ImportPrivateKeySuccess: undefined;
164+
QRTabSwitcher: QRTabSwitcherParams | undefined;
165+
};
166+
167+
/**
168+
* Param list for screens inside `MoneyTabScreenStack` (Money tab under Home).
169+
*/
170+
// ParamListBase requires `type`; `interface` cannot satisfy it.
171+
// eslint-disable-next-line @typescript-eslint/consistent-type-definitions
172+
export type MoneyTabStackParamList = {
173+
MoneyHome: undefined;
174+
MoneyActivity: undefined;
175+
MoneyHowItWorks: undefined;
176+
};
177+
178+
/**
179+
* Param list for screens inside `TransactionsHome` (Activity tab under Home).
180+
*/
181+
// ParamListBase requires `type`; `interface` cannot satisfy it.
182+
// eslint-disable-next-line @typescript-eslint/consistent-type-definitions
183+
export type TransactionsHomeParamList = {
184+
TransactionsView: TransactionsViewParams | undefined;
185+
OrderDetails: RampOrderDetailsParams | undefined;
186+
RampsOrderDetails: RampNavigationParamList['RampsOrderDetails'];
187+
DepositOrderDetails: undefined;
188+
RampBankDetailsStandalone: RampNavigationParamList['RampBankDetailsStandalone'];
189+
SendTransaction: undefined;
190+
BridgeTransactionDetails: BridgeTransactionDetailsParams | undefined;
191+
};
192+
193+
/**
194+
* Param list for screens inside `RewardsHome` (Rewards tab under Home).
195+
*/
196+
// ParamListBase requires `type`; `interface` cannot satisfy it.
197+
// eslint-disable-next-line @typescript-eslint/consistent-type-definitions
198+
export type RewardsHomeParamList = {
199+
RewardsOnboardingFlow: undefined;
200+
RewardsDashboard: undefined;
201+
};
202+
203+
/**
204+
* Param list for tabs inside `HomeTabs` (`Home`).
205+
*
206+
* Trade tab reuses `WalletTabStackFlow` as a placeholder component under
207+
* `TradeWalletActions`; Money vs Activity tabs are mutually exclusive at runtime.
208+
*/
209+
// ParamListBase requires `type`; `interface` cannot satisfy it.
210+
// eslint-disable-next-line @typescript-eslint/consistent-type-definitions
211+
export type HomeTabsParamList = {
212+
WalletTabHome: NavigatorScreenParams<WalletTabHomeParamList> | undefined;
213+
TrendingView: NavigatorScreenParams<TrendingViewStackParamList> | undefined;
214+
BrowserTabHome: NavigatorScreenParams<BrowserTabHomeParamList> | undefined;
215+
TradeWalletActions:
216+
| NavigatorScreenParams<WalletTabStackParamList>
217+
| undefined;
218+
MoneyScreens: NavigatorScreenParams<MoneyTabStackParamList> | undefined;
219+
TransactionsView:
220+
| NavigatorScreenParams<TransactionsHomeParamList>
221+
| undefined;
222+
RewardsView: NavigatorScreenParams<RewardsHomeParamList> | undefined;
223+
};
224+
225+
/**
226+
* Param list for `MainNavigator` (`ConnectedMain`).
227+
*
228+
* Phase 3 types the Home tab host used for nested deeplink / reset state.
229+
* Sibling MainNavigator screens remain typed flat on `RootStackParamList`.
230+
*/
231+
// ParamListBase requires `type`; `interface` cannot satisfy it.
232+
// eslint-disable-next-line @typescript-eslint/consistent-type-definitions
233+
export type MainStackParamList = {
234+
Home: NavigatorScreenParams<HomeTabsParamList> | undefined;
235+
};
236+
237+
/**
238+
* Param list for `MainFlow` (`Routes.MAIN_FLOW` / `Main` on the root stack).
239+
*/
240+
// ParamListBase requires `type`; `interface` cannot satisfy it.
241+
// eslint-disable-next-line @typescript-eslint/consistent-type-definitions
242+
export type MainFlowParamList = {
243+
Main: NavigatorScreenParams<MainStackParamList> | undefined;
244+
ReviewModal: undefined;
245+
};

app/components/Views/Modals/Modals.types.ts

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import type { TransactionMeta } from '@metamask/transaction-controller';
2+
13
/**
24
* Modal navigation parameters
35
*/
@@ -43,9 +45,29 @@ export interface SeedphraseModalParams {
4345
seedPhrase?: string[];
4446
}
4547

46-
/** Transaction details sheet parameters */
48+
/** Transaction details sheet parameters (matches TransactionDetailsSheet route). */
4749
export interface TransactionDetailsSheetParams {
48-
transactionId?: string;
50+
tx: TransactionMeta;
51+
transactionElement: {
52+
actionKey: string;
53+
value?: string;
54+
[key: string]: unknown;
55+
};
56+
transactionDetails: {
57+
hash?: string;
58+
renderFrom?: string;
59+
renderTo?: string;
60+
renderValue?: string;
61+
summaryAmount?: string;
62+
summaryFee?: string;
63+
summaryTotalAmount?: string;
64+
summarySecondaryTotalAmount?: string;
65+
transactionType?: string;
66+
txChainId?: string;
67+
[key: string]: unknown;
68+
};
69+
showSpeedUpModal: () => void;
70+
showCancelModal: () => void;
4971
}
5072

5173
/** Show NFT display media parameters */

app/components/Views/MultichainAccounts/MultichainAccounts.types.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
*/
44

55
import { InternalAccount } from '@metamask/keyring-internal-api';
6+
import type { Transaction } from '@metamask/keyring-api';
7+
import type { MultichainTransactionDisplayData } from '../../hooks/useMultichainTransactionDisplay';
68

79
export interface AccountParams {
810
account?: InternalAccount;
@@ -16,7 +18,8 @@ export interface MultichainAccountDetailActionsParams {
1618

1719
/** Multichain transaction details parameters */
1820
export interface MultichainTransactionDetailsParams {
19-
transactionId?: string;
21+
displayData: MultichainTransactionDisplayData;
22+
transaction: Transaction;
2023
}
2124

2225
/** Multichain account actions parameters */

app/components/Views/Onboarding/index.test.tsx

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -745,7 +745,6 @@ describe('Onboarding', () => {
745745
'error_sheet.no_internet_connection_description',
746746
),
747747
descriptionAlign: 'left',
748-
buttonLabel: strings('error_sheet.no_internet_connection_button'),
749748
primaryButtonLabel: strings(
750749
'error_sheet.no_internet_connection_button',
751750
),
@@ -1459,7 +1458,7 @@ describe('Onboarding', () => {
14591458
title: strings('error_sheet.user_cancelled_title'),
14601459
description: strings('error_sheet.user_cancelled_description'),
14611460
descriptionAlign: 'center',
1462-
buttonLabel: strings('error_sheet.user_cancelled_button'),
1461+
primaryButtonLabel: strings('error_sheet.user_cancelled_button'),
14631462
type: 'error',
14641463
}),
14651464
}),
@@ -1506,7 +1505,7 @@ describe('Onboarding', () => {
15061505
title: strings('error_sheet.oauth_error_title'),
15071506
description: strings('error_sheet.oauth_error_description'),
15081507
descriptionAlign: 'center',
1509-
buttonLabel: strings('error_sheet.oauth_error_button'),
1508+
primaryButtonLabel: strings('error_sheet.oauth_error_button'),
15101509
type: 'error',
15111510
}),
15121511
}),
@@ -3341,7 +3340,7 @@ describe('Onboarding', () => {
33413340
title: strings('error_sheet.oauth_error_title'),
33423341
description: strings('error_sheet.oauth_error_description'),
33433342
descriptionAlign: 'center',
3344-
buttonLabel: strings('error_sheet.oauth_error_button'),
3343+
primaryButtonLabel: strings('error_sheet.oauth_error_button'),
33453344
type: 'error',
33463345
}),
33473346
}),

app/components/Views/Onboarding/index.tsx

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -706,7 +706,7 @@ const Onboarding = () => {
706706
title: strings('error_sheet.oauth_error_title'),
707707
description: strings('error_sheet.oauth_error_description'),
708708
descriptionAlign: 'center',
709-
buttonLabel: strings('error_sheet.oauth_error_button'),
709+
primaryButtonLabel: strings('error_sheet.oauth_error_button'),
710710
type: 'error',
711711
},
712712
});
@@ -722,7 +722,7 @@ const Onboarding = () => {
722722
title: strings('error_sheet.oauth_error_title'),
723723
description: strings('error_sheet.oauth_error_description'),
724724
descriptionAlign: 'center',
725-
buttonLabel: strings('error_sheet.oauth_error_button'),
725+
primaryButtonLabel: strings('error_sheet.oauth_error_button'),
726726
type: 'error',
727727
},
728728
});
@@ -753,7 +753,7 @@ const Onboarding = () => {
753753
title: strings(`error_sheet.${errorMessage}_title`),
754754
description: strings(`error_sheet.${errorMessage}_description`),
755755
descriptionAlign: 'center',
756-
buttonLabel: strings(`error_sheet.${errorMessage}_button`),
756+
primaryButtonLabel: strings(`error_sheet.${errorMessage}_button`),
757757
type: 'error',
758758
},
759759
});
@@ -783,9 +783,6 @@ const Onboarding = () => {
783783
`error_sheet.no_internet_connection_description`,
784784
),
785785
descriptionAlign: 'left',
786-
buttonLabel: strings(
787-
`error_sheet.no_internet_connection_button`,
788-
),
789786
primaryButtonLabel: strings(
790787
`error_sheet.no_internet_connection_button`,
791788
),

0 commit comments

Comments
 (0)