safe-wallet-web
safe-wallet-web copied to clipboard
Refactor: replace @safe-global/safe-gateway-typescript-sdk imports
What it solves
This is an attempt to refactor the code to use the new @safe-global/store package instead of @safe-global/safe-gateway-typescript-sdk.
The codemod is at the moment not complete. I'm not sure how to map the data-decoded types and few other.
to execute the script one needs to have jscoodeshift installed globaly and then one can run
jscodeshift -t codemods/convert-safe-gateway-typescript-sdk.js apps/web/src --extensions=tsx --parser=tsx
jscodeshift -t codemods/convert-safe-gateway-typescript-sdk.js apps/web/src --extensions=ts --parser=ts
Prettier and lint are not happy with the newly generated code, so running those commands with --fix is necessary to reduce the amount of errors.
Resolves #
How this PR fixes it
How to test it
Screenshots
Checklist
- [ ] I've tested the branch on mobile 📱
- [ ] I've documented how it affects the analytics (if at all) 📊
- [ ] I've written a unit/e2e test for it (if applicable) 🧑💻
Branch preview
❌ Deploy failed!
Coverage (25%)
| File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s |
|---|---|---|---|---|---|
| All files | 25.43 | 21 | 21.01 | 25.75 | |
| src | 0 | 0 | 0 | 0 | |
| react-app-env.d.ts | 0 | 0 | 0 | 0 | |
| src/app | 0 | 0 | 0 | 0 | |
| +html.tsx | 0 | 100 | 0 | 0 | 9–31 |
| +not-found.tsx | 0 | 100 | 0 | 0 | 8–21 |
| _layout.tsx | 0 | 0 | 0 | 0 | 24–160 |
| accounts-sheet.tsx | 0 | 100 | 0 | 0 | 3–4 |
| action-details.tsx | 0 | 100 | 0 | 0 | 8 |
| address-book.tsx | 0 | 100 | 0 | 0 | 5 |
| app-settings.tsx | 0 | 100 | 0 | 0 | 5 |
| change-signer-sheet.tsx | 0 | 100 | 0 | 0 | 3–4 |
| confirm-transaction.tsx | 0 | 100 | 0 | 0 | 7–9 |
| confirmations-sheet.tsx | 0 | 100 | 0 | 0 | 3–4 |
| conflict-transaction-sheet.tsx | 0 | 100 | 0 | 0 | 3–4 |
| developer.tsx | 0 | 100 | 0 | 0 | 6 |
| get-started.tsx | 0 | 100 | 0 | 0 | 5 |
| index.tsx | 0 | 100 | 0 | 0 | 14 |
| networks-sheet.tsx | 0 | 100 | 0 | 0 | 3–4 |
| notifications-center.tsx | 0 | 100 | 0 | 0 | 5 |
| notifications-opt-in.tsx | 0 | 0 | 0 | 0 | 10–30 |
| notifications-settings.tsx | 0 | 100 | 0 | 0 | 5 |
| onboarding.tsx | 0 | 100 | 0 | 0 | 5 |
| pending-transactions.tsx | 0 | 100 | 0 | 0 | 7 |
| share.tsx | 0 | 100 | 0 | 0 | 7–8 |
| transaction-actions.tsx | 0 | 100 | 0 | 0 | 8 |
| transaction-parameters.tsx | 0 | 100 | 0 | 0 | 8 |
| src/app/(import-accounts) | 0 | 100 | 0 | 0 | |
| _layout.tsx | 0 | 100 | 0 | 0 | 5–7 |
| form.tsx | 0 | 100 | 0 | 0 | 8–9 |
| index.tsx | 0 | 100 | 0 | 0 | 5 |
| signers.tsx | 0 | 100 | 0 | 0 | 8–9 |
| src/app/(tabs) | 0 | 100 | 0 | 0 | |
| _layout.tsx | 0 | 100 | 0 | 0 | 8–62 |
| index.tsx | 0 | 100 | 0 | 0 | 4–5 |
| settings.tsx | 0 | 100 | 0 | 0 | 4 |
| src/app/(tabs)/transactions | 0 | 0 | 0 | 0 | |
| _layout.tsx | 0 | 0 | 0 | 0 | 7–26 |
| src/app/(tabs)/transactions/(tabs) | 0 | 100 | 0 | 0 | |
| _layout.tsx | 0 | 100 | 0 | 0 | 12–24 |
| index.tsx | 0 | 100 | 0 | 0 | 5 |
| messages.tsx | 0 | 100 | 0 | 0 | 10–34 |
| src/app/import-signers | 0 | 100 | 0 | 0 | |
| _layout.tsx | 0 | 100 | 0 | 0 | 5–7 |
| index.tsx | 0 | 100 | 0 | 0 | 15–60 |
| loading.tsx | 0 | 100 | 0 | 0 | 5 |
| private-key-error.tsx | 0 | 100 | 0 | 0 | 9–22 |
| private-key-success.tsx | 0 | 100 | 0 | 0 | 9–22 |
| private-key.tsx | 0 | 100 | 0 | 0 | 7–8 |
| src/app/sign-transaction | 0 | 100 | 0 | 0 | |
| _layout.tsx | 0 | 100 | 0 | 0 | 4 |
| index.tsx | 0 | 100 | 0 | 0 | 5 |
| src/app/signers | 0 | 100 | 0 | 0 | |
| [address].tsx | 0 | 100 | 0 | 0 | 6 |
| _layout.tsx | 0 | 100 | 0 | 0 | 6–15 |
| index.tsx | 0 | 100 | 0 | 0 | 7–9 |
| src/components/Alert | 100 | 85.71 | 100 | 100 | |
| Alert.tsx | 100 | 85.71 | 100 | 100 | 57, 72 |
| index.ts | 0 | 0 | 0 | 0 | |
| src/components/Badge | 87.5 | 75 | 100 | 87.5 | |
| Badge.tsx | 85.71 | 75 | 100 | 85.71 | 49 |
| index.ts | 0 | 0 | 0 | 0 | |
| theme.ts | 100 | 100 | 100 | 100 | |
| src/components/BlurredIdenticonBackground | 0 | 0 | 0 | 0 | |
| BlurredIdenticonBackground.tsx | 0 | 0 | 0 | 0 | 14–51 |
| index.tsx | 0 | 0 | 0 | 0 | |
| src/components/Camera | 0 | 0 | 0 | 0 | |
| QrCamera.tsx | 0 | 0 | 0 | 0 | 7–141 |
| index.ts | 0 | 0 | 0 | 0 | |
| src/components/ChainsDisplay | 100 | 84.61 | 100 | 100 | |
| ChainsDisplay.tsx | 100 | 84.61 | 100 | 100 | 15–18 |
| index.ts | 0 | 0 | 0 | 0 | |
| src/components/Container | 100 | 75 | 100 | 100 | |
| Container.tsx | 100 | 75 | 100 | 100 | 33 |
| index.ts | 0 | 0 | 0 | 0 | |
| src/components/CopyButton | 25 | 0 | 0 | 25 | |
| CopyButton.tsx | 25 | 0 | 0 | 25 | 13–17 |
| index.ts | 0 | 0 | 0 | 0 | |
| src/components/DataRow | 100 | 100 | 100 | 100 | |
| DataRow.tsx | 100 | 100 | 100 | 100 | |
| index.ts | 0 | 0 | 0 | 0 | |
| src/components/Dropdown | 0 | 0 | 0 | 0 | |
| DropdownLabel.tsx | 0 | 0 | 0 | 0 | 15–27 |
| index.ts | 0 | 0 | 0 | 0 | |
| sheetComponents.tsx | 0 | 100 | 0 | 0 | 8–42 |
| src/components/EncodedData | 0 | 0 | 0 | 0 | |
| EncodedData.tsx | 0 | 0 | 0 | 0 | 10–12 |
| index.ts | 0 | 0 | 0 | 0 | |
| src/components/EthAddress | 100 | 20 | 100 | 100 | |
| ETHAddress.tsx | 100 | 20 | 100 | 100 | 22–23 |
| index.ts | 0 | 0 | 0 | 0 | |
| src/components/Fiat | 100 | 37.5 | 100 | 100 | |
| Fiat.tsx | 100 | 37.5 | 100 | 100 | 22–34 |
| index.ts | 0 | 0 | 0 | 0 | |
| src/components/FloatingContainer | 0 | 0 | 0 | 0 | |
| FloatingContainer.tsx | 0 | 0 | 0 | 0 | 16–49 |
| index.ts | 0 | 0 | 0 | 0 | |
| src/components/Identicon | 100 | 100 | 100 | 100 | |
| Identicon.tsx | 100 | 100 | 100 | 100 | |
| index.ts | 0 | 0 | 0 | 0 | |
| src/components/InnerShadow | 100 | 100 | 100 | 100 | |
| InnerShadow.tsx | 100 | 100 | 100 | 100 | |
| index.ts | 0 | 0 | 0 | 0 | |
| src/components/LoadingScreen | 0 | 100 | 0 | 0 | |
| LoadingScreen.tsx | 0 | 100 | 0 | 0 | 11 |
| index.ts | 0 | 0 | 0 | 0 | |
| src/components/Logo | 100 | 87.5 | 100 | 100 | |
| Logo.tsx | 100 | 87.5 | 100 | 100 | 34 |
| index.ts | 0 | 0 | 0 | 0 | |
| src/components/NetworkBadge | 33.33 | 100 | 0 | 33.33 | |
| NetworkBadge.tsx | 0 | 100 | 0 | 0 | 9–10 |
| index.ts | 0 | 0 | 0 | 0 | |
| theme.ts | 100 | 100 | 100 | 100 | |
| src/components/OptIn | 0 | 0 | 0 | 0 | |
| OptIn.tsx | 0 | 0 | 0 | 0 | 26–81 |
| index.ts | 0 | 0 | 0 | 0 | |
| src/components/SafeBottomSheet | 0 | 0 | 0 | 0 | |
| SafeBottomSheet.tsx | 0 | 0 | 0 | 0 | 44–173 |
| index.ts | 0 | 0 | 0 | 0 | |
| src/components/SafeButton | 60 | 0 | 66.66 | 60 | |
| SafeButton.tsx | 60 | 0 | 66.66 | 60 | 67–68 |
| index.ts | 0 | 0 | 0 | 0 | |
| src/components/SafeCard | 100 | 100 | 100 | 100 | |
| SafeCard.tsx | 100 | 100 | 100 | 100 | |
| index.ts | 0 | 0 | 0 | 0 | |
| src/components/SafeFontIcon | 87.5 | 85.71 | 100 | 87.5 | |
| SafeFontIcon.tsx | 87.5 | 85.71 | 100 | 87.5 | 28 |
| index.ts | 0 | 0 | 0 | 0 | |
| src/components/SafeInput | 80 | 73.33 | 75 | 80 | |
| SafeInput.tsx | 100 | 77.77 | 100 | 100 | 44–57 |
| SafeInputWithLabel.tsx | 0 | 0 | 0 | 0 | 14–63 |
| index.ts | 0 | 0 | 0 | 0 | |
| styled.ts | 100 | 100 | 100 | 100 | |
| theme.ts | 100 | 100 | 100 | 100 | |
| utils.ts | 100 | 100 | 100 | 100 | |
| src/components/SafeListItem | 100 | 73.68 | 100 | 100 | |
| SafeListItem.tsx | 100 | 73.68 | 100 | 100 | 77–91 |
| index.tsx | 0 | 0 | 0 | 0 | |
| theme.ts | 100 | 100 | 100 | 100 | |
| src/components/SafeSearchBar | 0 | 0 | 0 | 0 | |
| SafeSearchBar.tsx | 0 | 0 | 0 | 0 | 11–74 |
| src/components/SafeTab | 28.57 | 0 | 0 | 30 | |
| SafeTab.tsx | 44.44 | 100 | 0 | 44.44 | 14–27 |
| SafeTabBar.tsx | 9.09 | 0 | 0 | 10 | 18–45 |
| index.tsx | 0 | 0 | 0 | 0 | |
| theme.ts | 100 | 100 | 100 | 100 | |
| types.ts | 0 | 0 | 0 | 0 | |
| src/components/StatusBanners/PendingTransactions | 100 | 50 | 100 | 100 | |
| PendingTransactions.tsx | 100 | 50 | 100 | 100 | 17 |
| index.tsx | 0 | 0 | 0 | 0 | |
| src/components/Tab | 0 | 0 | 0 | 0 | |
| TabNameContext.tsx | 0 | 0 | 0 | 0 | 3–10 |
| src/components/Tag | 0 | 100 | 100 | 0 | |
| Tag.tsx | 0 | 100 | 100 | 0 | 3 |
| index.ts | 0 | 0 | 0 | 0 | |
| src/components/Title | 100 | 66.66 | 100 | 100 | |
| LargeHeaderTitle.tsx | 100 | 100 | 100 | 100 | |
| NavBarTitle.tsx | 100 | 100 | 100 | 100 | |
| SectionTitle.tsx | 100 | 66.66 | 100 | 100 | 11 |
| index.ts | 0 | 0 | 0 | 0 | |
| src/components/TxInfo | 25 | 4.16 | 33.33 | 25 | |
| TxInfo.tsx | 25 | 4.16 | 33.33 | 25 | 36–37, 57–143, 147 |
| index.tsx | 0 | 0 | 0 | 0 | |
| types.ts | 0 | 0 | 0 | 0 | |
| src/components/navigation | 100 | 100 | 100 | 100 | |
| TabBarIcon.tsx | 100 | 100 | 100 | 100 | |
| index.ts | 0 | 0 | 0 | 0 | |
| src/components/transactions-list/Card/AccountCard | 100 | 83.33 | 100 | 100 | |
| AccountCard.tsx | 100 | 83.33 | 100 | 100 | 58 |
| index.ts | 0 | 0 | 0 | 0 | |
| src/components/transactions-list/Card/AssetsCard | 100 | 100 | 100 | 100 | |
| AssetsCard.tsx | 100 | 100 | 100 | 100 | |
| index.tsx | 0 | 0 | 0 | 0 | |
| src/components/transactions-list/Card/SignersCard | 100 | 71.42 | 100 | 100 | |
| SignersCard.tsx | 100 | 71.42 | 100 | 100 | 30, 44 |
| index.ts | 0 | 0 | 0 | 0 | |
| src/components/transactions-list/Card/TxBatchCard | 100 | 100 | 100 | 100 | |
| TxBatchCard.tsx | 100 | 100 | 100 | 100 | |
| index.tsx | 0 | 0 | 0 | 0 | |
| src/components/transactions-list/Card/TxConflictingCard | 0 | 0 | 0 | 0 | |
| TxConflictingCard.tsx | 0 | 0 | 0 | 0 | 15–46 |
| index.tsx | 0 | 0 | 0 | 0 | |
| src/components/transactions-list/Card/TxContractInteractionCard | 100 | 100 | 100 | 100 | |
| TxContractInteractionCard.tsx | 100 | 100 | 100 | 100 | |
| index.tsx | 0 | 0 | 0 | 0 | |
| src/components/transactions-list/Card/TxCreationCard | 100 | 100 | 100 | 100 | |
| TxCreationCard.tsx | 100 | 100 | 100 | 100 | |
| index.ts | 0 | 0 | 0 | 0 | |
| src/components/transactions-list/Card/TxGroupedCard | 90.9 | 75 | 75 | 90.9 | |
| TxGroupedCard.tsx | 90.9 | 75 | 75 | 90.9 | 57 |
| index.tsx | 0 | 0 | 0 | 0 | |
| src/components/transactions-list/Card/TxRejectionCard | 100 | 100 | 100 | 100 | |
| TxRejectionCard.tsx | 100 | 100 | 100 | 100 | |
| index.tsx | 0 | 0 | 0 | 0 | |
| src/components/transactions-list/Card/TxSafeAppCard | 100 | 100 | 100 | 100 | |
| TxSafeAppCard.tsx | 100 | 100 | 100 | 100 | |
| index.tsx | 0 | 0 | 0 | 0 | |
| src/components/transactions-list/Card/TxSettingsCard | 80 | 50 | 50 | 80 | |
| TxSettingsCard.tsx | 80 | 50 | 50 | 80 | 21 |
| index.tsx | 0 | 0 | 0 | 0 | |
| src/components/transactions-list/Card/TxSwapCard | 100 | 100 | 100 | 100 | |
| TxSwapCard.tsx | 100 | 100 | 100 | 100 | |
| index.tsx | 0 | 0 | 0 | 0 | |
| src/components/transactions-list/Card/TxTokenCard | 100 | 91.66 | 100 | 100 | |
| TxTokenCard.tsx | 100 | 91.66 | 100 | 100 | 23 |
| index.tsx | 0 | 0 | 0 | 0 | |
| src/config | 50 | 87.5 | 0 | 50 | |
| constants.ts | 100 | 87.5 | 100 | 100 | 15 |
| ethers.ts | 0 | 100 | 0 | 0 | 10–38 |
| polyfills.ts | 0 | 0 | 0 | 0 | |
| src/context | 0 | 0 | 0 | 0 | |
| NotificationsContext.tsx | 0 | 0 | 0 | 0 | 9–26 |
| src/features/AccountsSheet | 0 | 0 | 0 | 0 | |
| AccountsSheet.container.tsx | 0 | 0 | 0 | 0 | 10–23 |
| index.tsx | 0 | 0 | 0 | 0 | |
| src/features/AccountsSheet/AccountItem | 81.25 | 75 | 66.66 | 80 | |
| AccountItem.tsx | 81.25 | 75 | 66.66 | 80 | 26, 43–52 |
| index.ts | 0 | 0 | 0 | 0 | |
| src/features/AccountsSheet/AccountItem/hooks | 47.05 | 0 | 33.33 | 50 | |
| useEditAccountItem.ts | 47.05 | 0 | 33.33 | 50 | 19–44 |
| src/features/AccountsSheet/MyAccounts | 93.33 | 100 | 80 | 100 | |
| MyAccounts.container.tsx | 100 | 100 | 100 | 100 | |
| MyAccountsFooter.tsx | 80 | 100 | 50 | 100 | |
| index.ts | 0 | 0 | 0 | 0 | |
| src/features/AccountsSheet/MyAccounts/hooks | 41.66 | 100 | 40 | 45.45 | |
| useMyAccounts.ts | 100 | 100 | 100 | 100 | |
| useMyAccountsSortable.ts | 0 | 100 | 0 | 0 | 11–30 |
| src/features/ActionDetails | 0 | 0 | 0 | 0 | |
| ActionDetails.container.tsx | 0 | 0 | 0 | 0 | 15–36 |
| ActionsDetails.tsx | 0 | 0 | 0 | 0 | 9–11 |
| index.ts | 0 | 0 | 0 | 0 | |
| utils.tsx | 0 | 0 | 0 | 0 | 16–112 |
| src/features/AddressBook | 0 | 100 | 0 | 0 | |
| AddressBook.container.tsx | 0 | 100 | 0 | 0 | 7–10 |
| index.tsx | 0 | 0 | 0 | 0 | |
| src/features/AddressBook/components | 0 | 0 | 0 | 0 | |
| AddressBookView.tsx | 0 | 0 | 0 | 0 | 14–42 |
| src/features/AddressBook/components/List | 0 | 0 | 0 | 0 | |
| AddressBookList.tsx | 0 | 0 | 0 | 0 | 21–75 |
| AddressBookListHeader.tsx | 0 | 0 | 0 | 0 | 10 |
| EmptyAddressBookDark.tsx | 0 | 100 | 0 | 0 | 5 |
| EmptyAddressBookLight.tsx | 0 | 100 | 0 | 0 | 5 |
| NoContacts.tsx | 0 | 0 | 0 | 0 | 7–12 |
| index.ts | 0 | 0 | 0 | 0 | |
| src/features/Assets | 0 | 100 | 0 | 0 | |
| Assets.container.tsx | 0 | 100 | 0 | 0 | 9–21 |
| index.tsx | 0 | 0 | 0 | 0 | |
| styles.ts | 0 | 100 | 100 | 0 | 3 |
| src/features/Assets/components/AssetsHeader | 0 | 0 | 0 | 0 | |
| AssetsHeader.container.tsx | 0 | 100 | 0 | 0 | 6–13 |
| AssetsHeader.tsx | 0 | 0 | 0 | 0 | 15 |
| index.tsx | 0 | 0 | 0 | 0 | |
| styles.ts | 0 | 100 | 100 | 0 | 3 |
| src/features/Assets/components/Balance | 0 | 0 | 0 | 0 | |
| Balance.container.tsx | 0 | 0 | 0 | 0 | 16–41 |
| Balance.tsx | 0 | 0 | 0 | 0 | 35–49 |
| ChainItems.tsx | 0 | 0 | 0 | 0 | 17–28 |
| index.tsx | 0 | 0 | 0 | 0 | |
| src/features/Assets/components/Fallback | 100 | 25 | 100 | 100 | |
| Fallback.tsx | 100 | 25 | 100 | 100 | 17–19 |
| index.ts | 0 | 0 | 0 | 0 | |
| src/features/Assets/components/NFTs | 100 | 75 | 100 | 100 | |
| NFTItem.tsx | 100 | 50 | 100 | 100 | 8 |
| NFTs.container.tsx | 100 | 80 | 100 | 100 | 27, 52 |
| index.tsx | 0 | 0 | 0 | 0 | |
| src/features/Assets/components/Navbar | 7.14 | 0 | 0 | 7.14 | |
| Navbar.tsx | 0 | 0 | 0 | 0 | 15–50 |
| index.tsx | 0 | 0 | 0 | 0 | |
| theme.ts | 100 | 100 | 100 | 100 | |
| src/features/Assets/components/NoFunds | 100 | 50 | 100 | 100 | |
| EmptyNFT.tsx | 100 | 50 | 100 | 100 | 10 |
| EmptyToken.tsx | 100 | 100 | 100 | 100 | |
| NoFunds.tsx | 100 | 100 | 100 | 100 | |
| index.ts | 0 | 0 | 0 | 0 | |
| src/features/Assets/components/Tokens | 100 | 77.77 | 100 | 100 | |
| Tokens.container.tsx | 100 | 77.77 | 100 | 100 | 22–45 |
| index.tsx | 0 | 0 | 0 | 0 | |
| src/features/ChangeSignerSheet | 0 | 0 | 0 | 0 | |
| ChangeSignerSheet.container.tsx | 0 | 0 | 0 | 0 | 22–74 |
| index.ts | 0 | 0 | 0 | 0 | |
| src/features/ConfirmTx | 0 | 0 | 0 | 0 | |
| ConfirmTx.container.tsx | 0 | 0 | 0 | 0 | 19–51 |
| index.ts | 0 | 0 | 0 | 0 | |
| utils.ts | 0 | 0 | 0 | 0 | 4–15 |
| src/features/ConfirmTx/components/ConfirmTxForm | 0 | 0 | 0 | 0 | |
| ConfirmTxForm.tsx | 0 | 0 | 0 | 0 | 23–43 |
| index.ts | 0 | 0 | 0 | 0 | |
| src/features/ConfirmTx/components/ConfirmationView | 0 | 0 | 0 | 0 | |
| ConfirmationView.tsx | 0 | 0 | 0 | 0 | 26–76 |
| index.ts | 0 | 0 | 0 | 0 | |
| types.ts | 0 | 0 | 0 | 0 | |
| src/features/ConfirmTx/components/ExecuteForm | 0 | 100 | 0 | 0 | |
| ExecuteForm.tsx | 0 | 100 | 0 | 0 | 14–16 |
| index.ts | 0 | 0 | 0 | 0 | |
| src/features/ConfirmTx/components/ListTable | 0 | 0 | 0 | 0 | |
| ListTable.tsx | 0 | 0 | 0 | 0 | 18–21 |
| index.ts | 0 | 0 | 0 | 0 | |
| src/features/ConfirmTx/components/LoadingTx | 0 | 100 | 0 | 0 | |
| LoadingTx.tsx | 0 | 100 | 0 | 0 | 6 |
| index.ts | 0 | 0 | 0 | 0 | |
| src/features/ConfirmTx/components/ParametersButton | 0 | 100 | 0 | 0 | |
| ParametersButton.tsx | 0 | 100 | 0 | 0 | 10–17 |
| index.ts | 0 | 0 | 0 | 0 | |
| src/features/ConfirmTx/components/SignForm | 0 | 0 | 0 | 0 | |
| SignForm.tsx | 0 | 0 | 0 | 0 | 18–25 |
| index.ts | 0 | 0 | 0 | 0 | |
| src/features/ConfirmTx/components/SignTransaction | 0 | 0 | 0 | 0 | |
| SignError.tsx | 0 | 100 | 0 | 0 | 13–60 |
| SignSuccess.tsx | 0 | 100 | 0 | 0 | 16–59 |
| SignTransaction.tsx | 0 | 0 | 0 | 0 | 17–61 |
| index.ts | 0 | 0 | 0 | 0 | |
| src/features/ConfirmTx/components/TransactionHeader | 0 | 0 | 0 | 0 | |
| TransactionHeader.tsx | 0 | 0 | 0 | 0 | 31–34 |
| index.tsx | 0 | 0 | 0 | 0 | |
| src/features/ConfirmTx/components/TransactionInfo | 0 | 0 | 0 | 0 | |
| TransactionInfo.tsx | 0 | 0 | 0 | 0 | 17–28 |
| index.ts | 0 | 0 | 0 | 0 | |
| src/features/ConfirmTx/components/confirmation-views/AddSigner | 0 | 0 | 0 | 0 | |
| AddSigner.tsx | 0 | 100 | 0 | 0 | 22–30 |
| index.ts | 0 | 0 | 0 | 0 | |
| utils.tsx | 0 | 0 | 0 | 0 | 13–63 |
| src/features/ConfirmTx/components/confirmation-views/AlreadySigned | 0 | 100 | 0 | 0 | |
| AlreadySigned.tsx | 0 | 100 | 0 | 0 | 6 |
| index.ts | 0 | 0 | 0 | 0 | |
| src/features/ConfirmTx/components/confirmation-views/Contract | 0 | 0 | 0 | 0 | |
| Contract.tsx | 0 | 0 | 0 | 0 | 24–35 |
| index.ts | 0 | 0 | 0 | 0 | |
| utils.tsx | 0 | 0 | 0 | 0 | 12–44 |
| src/features/ConfirmTx/components/confirmation-views/GenericView | 0 | 0 | 0 | 0 | |
| GenericView.tsx | 0 | 0 | 0 | 0 | 29–36 |
| index.ts | 0 | 0 | 0 | 0 | |
| utils.tsx | 0 | 0 | 0 | 0 | 18–94 |
| src/features/ConfirmTx/components/confirmation-views/RemoveSigner | 0 | 100 | 0 | 0 | |
| RemoveSigner.tsx | 0 | 100 | 0 | 0 | 24–29 |
| index.ts | 0 | 0 | 0 | 0 | |
| utils.tsx | 0 | 100 | 0 | 0 | 12–30 |
| src/features/ConfirmTx/components/confirmation-views/SendNFT | 0 | 0 | 0 | 0 | |
| SendNFT.tsx | 0 | 100 | 0 | 0 | 20–25 |
| index.ts | 0 | 0 | 0 | 0 | |
| utils.tsx | 0 | 0 | 0 | 0 | 11–29 |
| src/features/ConfirmTx/components/confirmation-views/Stake | 0 | 100 | 0 | 0 | |
| Stake.tsx | 0 | 100 | 0 | 0 | 7–14 |
| index.ts | 0 | 0 | 0 | 0 | |
| utils.tsx | 0 | 100 | 0 | 0 | 7–61 |
| src/features/ConfirmTx/components/confirmation-views/SwapOrder | 0 | 0 | 0 | 0 | |
| SwapOrder.tsx | 0 | 100 | 0 | 0 | 18–23 |
| SwapOrderHeader.tsx | 0 | 100 | 0 | 0 | 18–25 |
| index.ts | 0 | 0 | 0 | 0 | |
| utils.tsx | 0 | 0 | 0 | 0 | 14–54 |
| src/features/ConfirmTx/components/confirmation-views/TokenTransfer | 0 | 0 | 0 | 0 | |
| TokenTransfer.tsx | 0 | 0 | 0 | 0 | 28–73 |
| index.ts | 0 | 0 | 0 | 0 | |
| src/features/ConfirmTx/hooks/useTxSigner | 0 | 0 | 0 | 0 | |
| index.ts | 0 | 0 | 0 | 0 | |
| useTxSigner.ts | 0 | 0 | 0 | 0 | 10–53 |
| src/features/ConfirmationsSheet | 0 | 0 | 0 | 0 | |
| ConfirmationsSheet.container.tsx | 0 | 0 | 0 | 0 | 19–95 |
| index.ts | 0 | 0 | 0 | 0 | |
| src/features/ConflictTxSheet | 0 | 100 | 0 | 0 | |
| ConflictTxSheet.container.tsx | 0 | 100 | 0 | 0 | 6–7 |
| index.ts | 0 | 0 | 0 | 0 | |
| src/features/Developer | 0 | 0 | 0 | 0 | |
| Developer.container.tsx | 0 | 0 | 0 | 0 | 9–33 |
| index.tsx | 0 | 0 | 0 | 0 | |
| types.ts | 0 | 0 | 0 | 0 | |
| src/features/Developer/components | 0 | 100 | 0 | 0 | |
| Developer.tsx | 0 | 100 | 0 | 0 | 12–33 |
| src/features/GetStarted | 0 | 100 | 0 | 0 | |
| GetStarted.tsx | 0 | 100 | 0 | 0 | 11–34 |
| index.tsx | 0 | 0 | 0 | 0 | |
| src/features/ImportPrivateKey | 100 | 100 | 100 | 100 | |
| ImportPrivateKey.container.tsx | 100 | 100 | 100 | 100 | |
| index.ts | 0 | 0 | 0 | 0 | |
| src/features/ImportPrivateKey/components/ImportError | 0 | 100 | 0 | 0 | |
| ImportError.tsx | 0 | 100 | 0 | 0 | 12–14 |
| index.ts | 0 | 0 | 0 | 0 | |
| src/features/ImportPrivateKey/components/ImportSuccess | 0 | 0 | 0 | 0 | |
| ImportSuccess.tsx | 0 | 0 | 0 | 0 | 17–71 |
| index.ts | 0 | 0 | 0 | 0 | |
| src/features/ImportPrivateKey/components/LoadingImport | 0 | 0 | 0 | 0 | |
| LoadingImport.container.tsx | 0 | 0 | 0 | 0 | 19–130 |
| index.ts | 0 | 0 | 0 | 0 | |
| src/features/ImportPrivateKey/hooks | 66.66 | 50 | 75 | 66.66 | |
| useImportPrivateKey.ts | 66.66 | 50 | 75 | 66.66 | 18–19, 30–39, 44–45 |
| src/features/ImportReadOnly | 0 | 0 | 0 | 0 | |
| AddSignersForm.container.tsx | 0 | 0 | 0 | 0 | 17–65 |
| ImportAccountForm.container.tsx | 0 | 0 | 0 | 0 | 15–66 |
| NetworkBadge.container.tsx | 0 | 0 | 0 | 0 | 9–15 |
| ScanQrAccount.container.tsx | 0 | 0 | 0 | 0 | 10–68 |
| index.tsx | 0 | 0 | 0 | 0 | |
| schema.ts | 0 | 100 | 0 | 0 | 5–12 |
| types.ts | 0 | 0 | 0 | 0 | |
| src/features/ImportReadOnly/components | 0 | 0 | 0 | 0 | |
| AddSignersFormView.tsx | 0 | 100 | 0 | 0 | 14–20 |
| AvailableNetworks.tsx | 0 | 100 | 0 | 0 | 6–11 |
| ImportAccountFormView.tsx | 0 | 0 | 0 | 0 | 32–92 |
| ScanQrAccountView.tsx | 0 | 0 | 0 | 0 | 16–17 |
| VerificationStatus.tsx | 0 | 0 | 0 | 0 | 12–26 |
| src/features/ImportReadOnly/helpers | 100 | 100 | 100 | 100 | |
| safes.tsx | 100 | 100 | 100 | 100 | |
| src/features/NetworksSheet | 0 | 0 | 0 | 0 | |
| NetworksSheet.container.tsx | 0 | 0 | 0 | 0 | 16–47 |
| index.tsx | 0 | 0 | 0 | 0 | |
| src/features/Notifications | 0 | 100 | 0 | 0 | |
| NotificationsCenter.container.tsx | 0 | 100 | 0 | 0 | 4–5 |
| NotificationsSettings.container.tsx | 0 | 100 | 0 | 0 | 6–9 |
| index.tsx | 0 | 0 | 0 | 0 | |
| src/features/Notifications/components | 0 | 0 | 0 | 0 | |
| EmptyBell.tsx | 0 | 100 | 0 | 0 | 5 |
| NotificationPermissions.tsx | 0 | 0 | 0 | 0 | 11–14 |
| NotificationsScreenEmpty.tsx | 0 | 100 | 0 | 0 | 6–7 |
| NotificationsSettingsView.tsx | 0 | 0 | 0 | 0 | 28–76 |
| src/features/Onboarding | 100 | 100 | 100 | 100 | |
| Onboarding.container.tsx | 100 | 100 | 100 | 100 | |
| index.ts | 0 | 0 | 0 | 0 | |
| src/features/Onboarding/components/OnboardingCarousel | 96 | 88.88 | 88.88 | 96 | |
| CarouselFeedback.tsx | 100 | 100 | 100 | 100 | |
| CarouselItem.tsx | 100 | 80 | 100 | 100 | 31 |
| OnboardingCarousel.tsx | 91.66 | 100 | 83.33 | 91.66 | 50 |
| index.ts | 0 | 0 | 0 | 0 | |
| items.tsx | 100 | 100 | 100 | 100 | |
| src/features/Onboarding/components/OnboardingHeader | 100 | 100 | 100 | 100 | |
| OnboardingHeader.tsx | 100 | 100 | 100 | 100 | |
| index.ts | 0 | 0 | 0 | 0 | |
| src/features/PendingTx | 0 | 0 | 0 | 0 | |
| PendingTx.container.tsx | 0 | 100 | 0 | 0 | 6–8 |
| index.tsx | 0 | 0 | 0 | 0 | |
| utils.tsx | 0 | 0 | 0 | 0 | 24–170 |
| src/features/PendingTx/components/PendingTxList | 0 | 0 | 0 | 0 | |
| PendingTxList.container.tsx | 0 | 0 | 0 | 0 | 33–63 |
| index.ts | 0 | 0 | 0 | 0 | |
| src/features/Settings | 0 | 0 | 0 | 0 | |
| Settings.container.tsx | 0 | 0 | 0 | 0 | 9–25 |
| Settings.tsx | 0 | 0 | 0 | 0 | 24–170 |
| index.tsx | 0 | 0 | 0 | 0 | |
| src/features/Settings/components/AppSettings | 0 | 0 | 0 | 0 | |
| AppSettings.container.tsx | 0 | 0 | 0 | 0 | 7–23 |
| AppSettings.tsx | 0 | 100 | 0 | 0 | 10–11 |
| index.ts | 0 | 0 | 0 | 0 | |
| src/features/Settings/components/IdenticonWithBadge | 100 | 50 | 100 | 100 | |
| IdenticonWithBadge.tsx | 100 | 50 | 100 | 100 | 21–22 |
| index.ts | 0 | 0 | 0 | 0 | |
| src/features/Settings/components/Navbar | 0 | 0 | 0 | 0 | |
| Navbar.tsx | 0 | 100 | 0 | 0 | 7–11 |
| SettingsButton.tsx | 0 | 100 | 0 | 0 | 6–15 |
| SettingsMenu.tsx | 0 | 0 | 0 | 0 | 21–95 |
| index.ts | 0 | 0 | 0 | 0 | |
| src/features/Share | 0 | 0 | 0 | 0 | |
| Share.container.tsx | 0 | 0 | 0 | 0 | 8–14 |
| index.ts | 0 | 0 | 0 | 0 | |
| src/features/Share/components | 100 | 100 | 100 | 100 | |
| ShareView.tsx | 100 | 100 | 100 | 100 | |
| index.ts | 0 | 0 | 0 | 0 | |
| src/features/Signer | 0 | 0 | 0 | 0 | |
| Signer.container.tsx | 0 | 0 | 0 | 0 | 16–99 |
| index.ts | 0 | 0 | 0 | 0 | |
| schema.ts | 0 | 100 | 100 | 0 | 3 |
| types.ts | 0 | 0 | 0 | 0 | |
| src/features/Signer/components | 0 | 0 | 0 | 0 | |
| SignerView.tsx | 0 | 0 | 0 | 0 | 25–52 |
| src/features/Signers | 0 | 0 | 0 | 0 | |
| Signers.container.tsx | 0 | 0 | 0 | 0 | 10–26 |
| constants.ts | 0 | 100 | 100 | 0 | 3 |
| index.tsx | 0 | 0 | 0 | 0 | |
| src/features/Signers/components/SignersList | 0 | 0 | 0 | 0 | |
| SignersList.tsx | 0 | 0 | 0 | 0 | 20–59 |
| SignersListHeader.tsx | 0 | 0 | 0 | 0 | 12 |
| SignersListItem.tsx | 0 | 0 | 0 | 0 | 23–60 |
| index.ts | 0 | 0 | 0 | 0 | |
| src/features/Signers/components/SignersList/hooks | 0 | 100 | 0 | 0 | |
| useSignersActions.ts | 0 | 100 | 0 | 0 | 5–41 |
| src/features/Signers/hooks | 0 | 0 | 0 | 0 | |
| useSignersGroupService.ts | 0 | 0 | 0 | 0 | 11–34 |
| src/features/TransactionActions | 0 | 0 | 0 | 0 | |
| TransactionActions.container.tsx | 0 | 0 | 0 | 0 | 15–35 |
| index.ts | 0 | 0 | 0 | 0 | |
| src/features/TransactionActions/components | 0 | 0 | 0 | 0 | |
| TxActionsList.tsx | 0 | 0 | 0 | 0 | 15–55 |
| src/features/TransactionParameters | 0 | 0 | 0 | 0 | |
| TransactionParameters.container.tsx | 0 | 0 | 0 | 0 | 15–35 |
| index.ts | 0 | 0 | 0 | 0 | |
| src/features/TransactionParameters/components/TxParametersList | 0 | 0 | 0 | 0 | |
| TxParametersList.tsx | 0 | 100 | 0 | 0 | 13–15 |
| index.ts | 0 | 0 | 0 | 0 | |
| utils.tsx | 0 | 0 | 0 | 0 | 14–63 |
| src/features/TransactionParameters/components/TxParametersList/formatters | 0 | 0 | 0 | 0 | |
| arrayValue.tsx | 0 | 0 | 0 | 0 | 8–31 |
| singleValue.tsx | 0 | 0 | 0 | 0 | 10–51 |
| src/features/TxHistory | 0 | 0 | 0 | 0 | |
| TxHistory.container.tsx | 0 | 0 | 0 | 0 | 10–36 |
| index.tsx | 0 | 0 | 0 | 0 | |
| utils.tsx | 0 | 0 | 0 | 0 | 18–58 |
| src/features/TxHistory/components/TxHistoryList | 0 | 0 | 0 | 0 | |
| TxHistoryList.tsx | 0 | 0 | 0 | 0 | 18–33 |
| index.ts | 0 | 0 | 0 | 0 | |
| src/hooks | 16.66 | 11.84 | 25.71 | 16.52 | |
| useGTW.ts | 0 | 0 | 0 | 0 | 22–140 |
| useNotificationGTWPermissions.ts | 76.92 | 83.33 | 60 | 81.81 | 14–15 |
| useNotificationManager.ts | 40.81 | 3.33 | 50 | 40.81 | 23–26, 39–47, 52–63, 68–76, 82–89 |
| useNotificationPayload.ts | 81.81 | 75 | 100 | 81.81 | 24–25 |
| useRegisterForNotifications.ts | 0 | 0 | 0 | 0 | 38–329 |
| useSiwe.ts | 0 | 100 | 0 | 0 | 13–32 |
| src/hooks/services | 100 | 100 | 100 | 100 | |
| useSafeOverviewService.ts | 100 | 100 | 100 | 100 | |
| src/hooks/useCopyAndDispatchToast | 100 | 100 | 100 | 100 | |
| index.ts | 100 | 100 | 100 | 100 | |
| src/hooks/useInfiniteScroll | 72.22 | 62.5 | 80 | 72.22 | |
| index.ts | 0 | 0 | 0 | 0 | |
| useInfiniteScroll.ts | 72.22 | 62.5 | 80 | 72.22 | 28, 39–44 |
| src/hooks/useMakeSafesWithChainId | 0 | 100 | 0 | 0 | |
| useMakeSafesWithChainId.ts | 0 | 100 | 0 | 0 | 7–12 |
| src/hooks/usePendingTxs | 0 | 0 | 0 | 0 | |
| index.ts | 0 | 0 | 0 | 0 | 14–41 |
| src/hooks/usePreventLeaveScreen | 0 | 100 | 0 | 0 | |
| index.ts | 0 | 100 | 0 | 0 | 5–17 |
| src/hooks/useSign | 78.94 | 12.5 | 100 | 78.94 | |
| index.ts | 0 | 0 | 0 | 0 | |
| useSign.ts | 78.94 | 12.5 | 100 | 78.94 | 43–46, 60–63 |
| src/hooks/useTokenDetails | 81.81 | 73.07 | 100 | 81.81 | |
| index.ts | 0 | 0 | 0 | 0 | |
| useTokenDetails.ts | 81.81 | 73.07 | 100 | 81.81 | 22, 52 |
| src/hooks/useTransactionType | 91.66 | 79.16 | 100 | 91.66 | |
| index.tsx | 91.66 | 79.16 | 100 | 91.66 | 116–124 |
| src/navigation | 0 | 0 | 0 | 0 | |
| NavigationGuardHOC.tsx | 0 | 0 | 0 | 0 | 9–69 |
| useScrollableHeader.tsx | 0 | 0 | 0 | 0 | 23–48 |
| src/navigation/hooks | 0 | 0 | 0 | 0 | |
| useModalStyle.ts | 0 | 0 | 0 | 0 | 13–28 |
| utils.tsx | 0 | 100 | 0 | 0 | 6–17 |
| src/services/exceptions | 88.88 | 100 | 100 | 88.88 | |
| utils.ts | 88.88 | 100 | 100 | 88.88 | 14 |
| src/services/key-storage | 6.66 | 0 | 0 | 6.66 | |
| index.ts | 100 | 100 | 100 | 100 | |
| key-storage.service.ts | 2.7 | 0 | 0 | 2.7 | 31–115 |
| types.ts | 0 | 0 | 0 | 0 | |
| wallet.service.ts | 0 | 0 | 0 | 0 | 10–18 |
| src/services/notifications | 0 | 0 | 0 | 0 | |
| FCMService.ts | 0 | 0 | 0 | 0 | 12–77 |
| NotificationService.ts | 0 | 0 | 0 | 0 | 25–301 |
| src/services/tx | 0 | 0 | 0 | 0 | |
| extractTx.ts | 0 | 0 | 0 | 0 | 7–111 |
| src/services/tx/tx-sender | 0 | 0 | 0 | 0 | |
| create.ts | 0 | 0 | 0 | 0 | 16–26 |
| index.ts | 0 | 0 | 0 | 0 | |
| sign.ts | 0 | 0 | 0 | 0 | 14–52 |
| src/services/web3 | 18.18 | 0 | 0 | 18.18 | |
| index.ts | 18.18 | 0 | 0 | 18.18 | 7–12, 20–27, 31, 42–62 |
| src/store | 42.51 | 5.55 | 19.71 | 44.08 | |
| activeSafeSlice.ts | 60 | 0 | 50 | 55.55 | 15–24 |
| activeSignerSlice.ts | 36.36 | 100 | 0 | 40 | 14–20, 28–29 |
| addressBookSlice.ts | 30 | 12.5 | 27.27 | 25 | 25–65, 76–79 |
| constants.ts | 66.66 | 0 | 0 | 66.66 | 350–363 |
| delegatedSlice.ts | 44.44 | 0 | 0 | 50 | 28–33 |
| index.ts | 92.3 | 50 | 100 | 92.3 | 62 |
| myAccountsSlice.ts | 71.42 | 100 | 33.33 | 66.66 | 13–16 |
| notificationsSlice.ts | 39.13 | 0 | 0 | 52.94 | 18–36 |
| safesSlice.ts | 31.57 | 100 | 11.11 | 31.25 | 20–38, 47–48 |
| settingsSlice.ts | 71.42 | 100 | 33.33 | 83.33 | 21 |
| signersBalance.ts | 31.25 | 0 | 20 | 35.71 | 17–33 |
| signersSlice.ts | 38.46 | 0 | 0 | 45.45 | 14–16, 23–28 |
| storage.ts | 7.14 | 0 | 0 | 7.14 | 12–67 |
| txHistorySlice.ts | 100 | 100 | 100 | 100 | |
| src/store/chains | 60.86 | 12.5 | 33.33 | 70 | |
| index.ts | 60.86 | 12.5 | 33.33 | 70 | 10, 23, 28, 41–45 |
| src/store/hooks | 85.71 | 50 | 100 | 85.71 | |
| activeSafe.ts | 80 | 50 | 100 | 80 | 8 |
| index.ts | 100 | 100 | 100 | 100 | |
| src/theme | 100 | 100 | 100 | 100 | |
| navigation.ts | 100 | 100 | 100 | 100 | |
| tamagui.config.ts | 100 | 100 | 100 | 100 | |
| tokens.ts | 100 | 100 | 100 | 100 | |
| src/theme/helpers | 100 | 81.81 | 100 | 100 | |
| utils.ts | 100 | 81.81 | 100 | 100 | 37, 41 |
| src/theme/hooks | 0 | 100 | 0 | 0 | |
| useSafeAreaPaddingBottom.tsx | 0 | 100 | 0 | 0 | 4–6 |
| src/theme/palettes | 100 | 100 | 100 | 100 | |
| darkPalette.ts | 100 | 100 | 100 | 100 | |
| lightPalette.ts | 100 | 100 | 100 | 100 | |
| src/theme/provider | 59.09 | 27.77 | 60 | 59.09 | |
| font.tsx | 90 | 50 | 100 | 90 | 34 |
| safeTheme.tsx | 100 | 37.5 | 100 | 100 | 19–34 |
| toastProvider.tsx | 0 | 0 | 0 | 0 | 10–29 |
| src/utils | 61.29 | 32 | 57.37 | 61.01 | |
| balance.ts | 100 | 100 | 100 | 100 | |
| chains.ts | 100 | 100 | 100 | 100 | |
| date.ts | 96 | 66.66 | 85.71 | 100 | 31, 35–39 |
| formatters.ts | 57.89 | 57.14 | 57.14 | 55.55 | 10, 21, 34–41, 45–48 |
| logger.ts | 56.09 | 24 | 50 | 55 | 24, 32, 40–45, 50–55, 61–66, 85 |
| transaction-guards.ts | 74.6 | 42.85 | 56.66 | 77.04 | 55, 59–65, 76, 80, 84, 106, 121, 125, 139, 143 |
| transactions.tsx | 0 | 0 | 0 | 0 | 14–67 |
| src/utils/notifications | 0 | 100 | 0 | 0 | |
| index.ts | 0 | 100 | 0 | 0 | 16–55 |