From 644f5c2746c622f3ad6e1fddd4a67cf2bd25c5ec Mon Sep 17 00:00:00 2001
From: banklesss <105349292+banklesss@users.noreply.github.com>
Date: Tue, 19 Dec 2023 11:04:54 +0100
Subject: [PATCH] feature: domain resolver (#2866)
Signed-off-by: banklesss <105349292+banklesss@users.noreply.github.com>
Signed-off-by: Juliano Lazzarotto <30806844+stackchain@users.noreply.github.com>
Co-authored-by: Juliano Lazzarotto <30806844+stackchain@users.noreply.github.com>
---
apps/wallet-mobile/.env | 2 +
apps/wallet-mobile/.env.nightly | 2 +
apps/wallet-mobile/.env.production | 2 +
apps/wallet-mobile/.env.staging | 2 +
.../.storybook/storybook.requires.js | 5 +
apps/wallet-mobile/package.json | 4 +-
.../src/TxHistory/ActionsBanner.tsx | 4 +-
.../src/TxHistory/TxHistoryNavigator.tsx | 439 +++++-----
.../src/WalletInit/WalletForm.tsx | 2 +-
.../src/components/Icon/Check.tsx | 10 +-
.../TextInput/TextInput.stories.tsx | 4 +-
.../src/components/TextInput/TextInput.tsx | 26 +-
.../Scan/common/useTriggerScanAction.tsx | 14 +-
.../ButtonGroup/ButtonGroup.stories.tsx | 41 +
.../Send/common/ButtonGroup/ButtonGroup.tsx | 62 ++
.../features/Send/common/SendContext.test.tsx | 28 +-
.../src/features/Send/common/SendContext.tsx | 186 ++--
.../src/features/Send/common/constants.ts | 1 +
.../src/features/Send/common/errors.ts | 2 +
.../src/features/Send/common/mocks.ts | 5 +-
.../src/features/Send/common/strings.ts | 83 +-
.../features/Send/common/useSendAddress.tsx | 68 ++
.../features/Send/common/useSendReceiver.tsx | 72 ++
.../useCases/ConfirmTx/ConfirmTxScreen.tsx | 18 +-
.../ConfirmTx/Summary/ReceiverInfo.tsx | 58 +-
.../useCases/StartMultiTokenTx/InputMemo.tsx | 92 --
.../StartMultiTokenTx/InputMemo/InputMemo.tsx | 32 +
.../InputMemo/ShowMemoErrorTooLong.tsx | 27 +
.../InputMemo/ShowMemoInstructions.tsx | 27 +
.../InputReceiver/InputReceiver.stories.tsx | 41 +
.../InputReceiver/InputReceiver.tsx | 22 +-
.../InputReceiver/ResolveAddress.tsx | 121 ---
.../ShowResolvedAddressSelected.stories.tsx | 114 +++
.../ShowResolvedAddressSelected.tsx | 64 ++
.../NotifySupportedNameServers.stories.tsx | 41 +
.../NotifySupportedNameServers.tsx | 90 ++
.../SelectNameServer.stories.tsx | 104 +++
.../SelectNameServer/SelectNameServer.tsx | 96 +++
.../useCases/StartMultiTokenTx/ShowErrors.tsx | 22 +-
.../StartMultiTokenTxScreen.tsx | 101 ++-
.../ChangePassword/ChangePasswordScreen.tsx | 2 +-
.../ConfirmTx/ConfirmTxScreen.tsx | 18 +-
.../ConfirmTx/Summary/ReceiverInfo.tsx | 40 +-
.../ManageCollateralScreen.tsx | 14 +-
.../wallet-mobile/src/i18n/locales/en-US.json | 805 +++++++++---------
apps/wallet-mobile/src/legacy/config.ts | 2 +
apps/wallet-mobile/src/utils/debounceMaker.ts | 22 +
.../yoroi-wallets/cardano/constants/common.ts | 2 +-
.../src/yoroi-wallets/cardano/networks.ts | 2 +-
.../src/yoroi-wallets/cardano/utils.ts | 9 +-
.../src/yoroi-wallets/hooks/index.ts | 2 +-
.../src/yoroi-wallets/types/yoroi.ts | 4 +-
.../src/TxHistory/TxHistoryNavigator.json | 128 +--
.../messages/src/WalletInit/WalletForm.json | 24 +-
.../src/features/Send/common/strings.json | 557 +++++++-----
.../ConfirmTx/Summary/ReceiverInfo.json | 8 +-
.../ChangePassword/ChangePasswordScreen.json | 24 +-
.../ConfirmTx/Summary/ReceiverInfo.json | 8 +-
metro.config.js | 6 +-
package.json | 3 +-
packages/common/src/api/fetchData.ts | 7 +-
packages/resolver/.dependency-cruiser.js | 449 ++++++++++
packages/resolver/.gitignore | 70 ++
packages/resolver/README.md | 5 +
packages/resolver/babel.config.js | 3 +
packages/resolver/jest.setup.js | 5 +
packages/resolver/package.json | 216 +++++
packages/resolver/scripts/flowgen.sh | 3 +
packages/resolver/src/adapters/api.mocks.ts | 25 +
packages/resolver/src/adapters/api.test.ts | 147 ++++
packages/resolver/src/adapters/api.ts | 131 +++
packages/resolver/src/adapters/cns.test.ts | 14 +
packages/resolver/src/adapters/cns.ts | 11 +
.../resolver/src/adapters/handle-api.mocks.ts | 33 +
.../resolver/src/adapters/handle-api.test.ts | 154 ++++
packages/resolver/src/adapters/handle-api.ts | 106 +++
.../resolver/src/adapters/storage.mocks.ts | 40 +
.../resolver/src/adapters/storage.test.ts | 65 ++
packages/resolver/src/adapters/storage.ts | 33 +
.../src/adapters/unstoppable-api.mocks.ts | 24 +
.../src/adapters/unstoppable-api.test.ts | 259 ++++++
.../resolver/src/adapters/unstoppable-api.ts | 113 +++
.../resolver/src/adapters/zod-errors.test.ts | 34 +
packages/resolver/src/adapters/zod-errors.ts | 15 +
.../resolver/src/fixtures/ErrorBoundary.tsx | 34 +
.../src/fixtures/SuspenseBoundary.tsx | 16 +
.../resolver/src/fixtures/manager-wrapper.tsx | 27 +
.../resolver/src/fixtures/query-client.ts | 14 +
packages/resolver/src/index.test.ts | 9 +
packages/resolver/src/index.ts | 21 +
.../resolver/src/translators/constants.ts | 7 +
.../resolver/src/translators/manager.mocks.ts | 22 +
.../resolver/src/translators/manager.test.ts | 23 +
packages/resolver/src/translators/manager.ts | 14 +
.../hooks/useResolverCryptoAddresses.test.tsx | 58 ++
.../hooks/useResolverCryptoAddresses.tsx | 36 +
.../hooks/useResolverSetShowNotice.test.tsx | 43 +
.../hooks/useResolverSetShowNotice.tsx | 21 +
.../hooks/useResolverShowNotice.test.tsx | 73 ++
.../reactjs/hooks/useResolverShowNotice.tsx | 27 +
.../provider/ResolverProvider.test.tsx | 57 ++
.../reactjs/provider/ResolverProvider.tsx | 31 +
packages/resolver/src/utils/isDomain.test.ts | 13 +
packages/resolver/src/utils/isDomain.ts | 4 +
.../resolver/src/utils/isNameServer.test.ts | 15 +
packages/resolver/src/utils/isNameServer.ts | 4 +
.../src/utils/isResolvableDomain.test.ts | 27 +
.../resolver/src/utils/isResolvableDomain.ts | 8 +
.../utils/useMutationWithInvalidations.tsx | 34 +
packages/resolver/tsconfig.build.json | 5 +
packages/resolver/tsconfig.json | 26 +
packages/swap/src/translators/reactjs.tsx | 0
packages/types/package.json | 3 +
packages/types/src/index.ts | 39 +
packages/types/src/resolver/api.ts | 23 +
packages/types/src/resolver/errors.ts | 4 +
packages/types/src/resolver/manager.ts | 9 +
packages/types/src/resolver/name-server.ts | 5 +
packages/types/src/resolver/receiver.ts | 8 +
packages/types/src/resolver/storage.ts | 10 +
scripts/install-pkgs.sh | 4 +
yarn.lock | 228 +----
yoroi.code-workspace | 6 +-
123 files changed, 5179 insertions(+), 1605 deletions(-)
create mode 100644 apps/wallet-mobile/src/features/Send/common/ButtonGroup/ButtonGroup.stories.tsx
create mode 100644 apps/wallet-mobile/src/features/Send/common/ButtonGroup/ButtonGroup.tsx
create mode 100644 apps/wallet-mobile/src/features/Send/common/constants.ts
create mode 100644 apps/wallet-mobile/src/features/Send/common/errors.ts
create mode 100644 apps/wallet-mobile/src/features/Send/common/useSendAddress.tsx
create mode 100644 apps/wallet-mobile/src/features/Send/common/useSendReceiver.tsx
delete mode 100644 apps/wallet-mobile/src/features/Send/useCases/StartMultiTokenTx/InputMemo.tsx
create mode 100644 apps/wallet-mobile/src/features/Send/useCases/StartMultiTokenTx/InputMemo/InputMemo.tsx
create mode 100644 apps/wallet-mobile/src/features/Send/useCases/StartMultiTokenTx/InputMemo/ShowMemoErrorTooLong.tsx
create mode 100644 apps/wallet-mobile/src/features/Send/useCases/StartMultiTokenTx/InputMemo/ShowMemoInstructions.tsx
create mode 100644 apps/wallet-mobile/src/features/Send/useCases/StartMultiTokenTx/InputReceiver/InputReceiver.stories.tsx
delete mode 100644 apps/wallet-mobile/src/features/Send/useCases/StartMultiTokenTx/InputReceiver/ResolveAddress.tsx
create mode 100644 apps/wallet-mobile/src/features/Send/useCases/StartMultiTokenTx/InputReceiver/ShowResolvedAddressSelected.stories.tsx
create mode 100644 apps/wallet-mobile/src/features/Send/useCases/StartMultiTokenTx/InputReceiver/ShowResolvedAddressSelected.tsx
create mode 100644 apps/wallet-mobile/src/features/Send/useCases/StartMultiTokenTx/NotifySupportedNameServers/NotifySupportedNameServers.stories.tsx
create mode 100644 apps/wallet-mobile/src/features/Send/useCases/StartMultiTokenTx/NotifySupportedNameServers/NotifySupportedNameServers.tsx
create mode 100644 apps/wallet-mobile/src/features/Send/useCases/StartMultiTokenTx/SelectNameServer/SelectNameServer.stories.tsx
create mode 100644 apps/wallet-mobile/src/features/Send/useCases/StartMultiTokenTx/SelectNameServer/SelectNameServer.tsx
create mode 100644 apps/wallet-mobile/src/utils/debounceMaker.ts
create mode 100644 packages/resolver/.dependency-cruiser.js
create mode 100644 packages/resolver/.gitignore
create mode 100644 packages/resolver/README.md
create mode 100644 packages/resolver/babel.config.js
create mode 100644 packages/resolver/jest.setup.js
create mode 100644 packages/resolver/package.json
create mode 100644 packages/resolver/scripts/flowgen.sh
create mode 100644 packages/resolver/src/adapters/api.mocks.ts
create mode 100644 packages/resolver/src/adapters/api.test.ts
create mode 100644 packages/resolver/src/adapters/api.ts
create mode 100644 packages/resolver/src/adapters/cns.test.ts
create mode 100644 packages/resolver/src/adapters/cns.ts
create mode 100644 packages/resolver/src/adapters/handle-api.mocks.ts
create mode 100644 packages/resolver/src/adapters/handle-api.test.ts
create mode 100644 packages/resolver/src/adapters/handle-api.ts
create mode 100644 packages/resolver/src/adapters/storage.mocks.ts
create mode 100644 packages/resolver/src/adapters/storage.test.ts
create mode 100644 packages/resolver/src/adapters/storage.ts
create mode 100644 packages/resolver/src/adapters/unstoppable-api.mocks.ts
create mode 100644 packages/resolver/src/adapters/unstoppable-api.test.ts
create mode 100644 packages/resolver/src/adapters/unstoppable-api.ts
create mode 100644 packages/resolver/src/adapters/zod-errors.test.ts
create mode 100644 packages/resolver/src/adapters/zod-errors.ts
create mode 100644 packages/resolver/src/fixtures/ErrorBoundary.tsx
create mode 100644 packages/resolver/src/fixtures/SuspenseBoundary.tsx
create mode 100644 packages/resolver/src/fixtures/manager-wrapper.tsx
create mode 100644 packages/resolver/src/fixtures/query-client.ts
create mode 100644 packages/resolver/src/index.test.ts
create mode 100644 packages/resolver/src/index.ts
create mode 100644 packages/resolver/src/translators/constants.ts
create mode 100644 packages/resolver/src/translators/manager.mocks.ts
create mode 100644 packages/resolver/src/translators/manager.test.ts
create mode 100644 packages/resolver/src/translators/manager.ts
create mode 100644 packages/resolver/src/translators/reactjs/hooks/useResolverCryptoAddresses.test.tsx
create mode 100644 packages/resolver/src/translators/reactjs/hooks/useResolverCryptoAddresses.tsx
create mode 100644 packages/resolver/src/translators/reactjs/hooks/useResolverSetShowNotice.test.tsx
create mode 100644 packages/resolver/src/translators/reactjs/hooks/useResolverSetShowNotice.tsx
create mode 100644 packages/resolver/src/translators/reactjs/hooks/useResolverShowNotice.test.tsx
create mode 100644 packages/resolver/src/translators/reactjs/hooks/useResolverShowNotice.tsx
create mode 100644 packages/resolver/src/translators/reactjs/provider/ResolverProvider.test.tsx
create mode 100644 packages/resolver/src/translators/reactjs/provider/ResolverProvider.tsx
create mode 100644 packages/resolver/src/utils/isDomain.test.ts
create mode 100644 packages/resolver/src/utils/isDomain.ts
create mode 100644 packages/resolver/src/utils/isNameServer.test.ts
create mode 100644 packages/resolver/src/utils/isNameServer.ts
create mode 100644 packages/resolver/src/utils/isResolvableDomain.test.ts
create mode 100644 packages/resolver/src/utils/isResolvableDomain.ts
create mode 100644 packages/resolver/src/utils/useMutationWithInvalidations.tsx
create mode 100644 packages/resolver/tsconfig.build.json
create mode 100644 packages/resolver/tsconfig.json
delete mode 100644 packages/swap/src/translators/reactjs.tsx
create mode 100644 packages/types/src/resolver/api.ts
create mode 100644 packages/types/src/resolver/errors.ts
create mode 100644 packages/types/src/resolver/manager.ts
create mode 100644 packages/types/src/resolver/name-server.ts
create mode 100644 packages/types/src/resolver/receiver.ts
create mode 100644 packages/types/src/resolver/storage.ts
diff --git a/apps/wallet-mobile/.env b/apps/wallet-mobile/.env
index bf3b4c923e..1ac5746e88 100644
--- a/apps/wallet-mobile/.env
+++ b/apps/wallet-mobile/.env
@@ -17,3 +17,5 @@ BANXA_TEST_WALLET=addr1qyfuspldlchc5kechfe5jzdrr9jms2s9w0tq4hggy9zgkhxssydveuc8x
FRONTEND_FEE_ADDRESS_MAINNET=addr1q9ry6jfdgm0lcrtfpgwrgxg7qfahv80jlghhrthy6w8hmyjuw9ngccy937pm7yw0jjnxasm7hzxjrf8rzkqcj26788lqws5fke
FRONTEND_FEE_ADDRESS_PREPROD=addr_test1qrgpjmyy8zk9nuza24a0f4e7mgp9gd6h3uayp0rqnjnkl54v4dlyj0kwfs0x4e38a7047lymzp37tx0y42glslcdtzhqzp57km
+
+UNSTOPPABLE_API_KEY=czsajliz-wxgu6tujd1zqq7hey_pclfqhdjsqolsxjfsurgh
diff --git a/apps/wallet-mobile/.env.nightly b/apps/wallet-mobile/.env.nightly
index 24ff2b7c36..cb7d421413 100644
--- a/apps/wallet-mobile/.env.nightly
+++ b/apps/wallet-mobile/.env.nightly
@@ -8,3 +8,5 @@ BANXA_TEST_WALLET=addr1qyfuspldlchc5kechfe5jzdrr9jms2s9w0tq4hggy9zgkhxssydveuc8x
FRONTEND_FEE_ADDRESS_MAINNET=addr1q9ry6jfdgm0lcrtfpgwrgxg7qfahv80jlghhrthy6w8hmyjuw9ngccy937pm7yw0jjnxasm7hzxjrf8rzkqcj26788lqws5fke
FRONTEND_FEE_ADDRESS_PREPROD=addr_test1qrgpjmyy8zk9nuza24a0f4e7mgp9gd6h3uayp0rqnjnkl54v4dlyj0kwfs0x4e38a7047lymzp37tx0y42glslcdtzhqzp57km
+
+UNSTOPPABLE_API_KEY=czsajliz-wxgu6tujd1zqq7hey_pclfqhdjsqolsxjfsurgh
diff --git a/apps/wallet-mobile/.env.production b/apps/wallet-mobile/.env.production
index 44d32e4a7b..2300c957cc 100644
--- a/apps/wallet-mobile/.env.production
+++ b/apps/wallet-mobile/.env.production
@@ -5,3 +5,5 @@ SENTRY_DSN=https://7f7c6cb60a6f429facd34f491dfc5133@o1138840.ingest.sentry.io/67
FRONTEND_FEE_ADDRESS_MAINNET=addr1q9ry6jfdgm0lcrtfpgwrgxg7qfahv80jlghhrthy6w8hmyjuw9ngccy937pm7yw0jjnxasm7hzxjrf8rzkqcj26788lqws5fke
FRONTEND_FEE_ADDRESS_PREPROD=addr_test1qrgpjmyy8zk9nuza24a0f4e7mgp9gd6h3uayp0rqnjnkl54v4dlyj0kwfs0x4e38a7047lymzp37tx0y42glslcdtzhqzp57km
+
+UNSTOPPABLE_API_KEY=czsajliz-wxgu6tujd1zqq7hey_pclfqhdjsqolsxjfsurgh
diff --git a/apps/wallet-mobile/.env.staging b/apps/wallet-mobile/.env.staging
index 052b636071..9c9cbb8f5d 100644
--- a/apps/wallet-mobile/.env.staging
+++ b/apps/wallet-mobile/.env.staging
@@ -17,3 +17,5 @@ BANXA_TEST_WALLET=addr1qyfuspldlchc5kechfe5jzdrr9jms2s9w0tq4hggy9zgkhxssydveuc8x
FRONTEND_FEE_ADDRESS_MAINNET=addr1q9ry6jfdgm0lcrtfpgwrgxg7qfahv80jlghhrthy6w8hmyjuw9ngccy937pm7yw0jjnxasm7hzxjrf8rzkqcj26788lqws5fke
FRONTEND_FEE_ADDRESS_PREPROD=addr_test1qrgpjmyy8zk9nuza24a0f4e7mgp9gd6h3uayp0rqnjnkl54v4dlyj0kwfs0x4e38a7047lymzp37tx0y42glslcdtzhqzp57km
+
+UNSTOPPABLE_API_KEY=czsajliz-wxgu6tujd1zqq7hey_pclfqhdjsqolsxjfsurgh
diff --git a/apps/wallet-mobile/.storybook/storybook.requires.js b/apps/wallet-mobile/.storybook/storybook.requires.js
index e656480dec..794a226259 100644
--- a/apps/wallet-mobile/.storybook/storybook.requires.js
+++ b/apps/wallet-mobile/.storybook/storybook.requires.js
@@ -120,6 +120,7 @@ const getStories = () => {
"./src/features/Scan/useCases/ScanCodeScreen.stories.tsx": require("../src/features/Scan/useCases/ScanCodeScreen.stories.tsx"),
"./src/features/Scan/useCases/ShowCameraPermissionDeniedScreen/OpenDeviceAppSettingsButton.stories.tsx": require("../src/features/Scan/useCases/ShowCameraPermissionDeniedScreen/OpenDeviceAppSettingsButton.stories.tsx"),
"./src/features/Scan/useCases/ShowCameraPermissionDeniedScreen/ShowCameraPermissionDeniedScreen.stories.tsx": require("../src/features/Scan/useCases/ShowCameraPermissionDeniedScreen/ShowCameraPermissionDeniedScreen.stories.tsx"),
+ "./src/features/Send/common/ButtonGroup/ButtonGroup.stories.tsx": require("../src/features/Send/common/ButtonGroup/ButtonGroup.stories.tsx"),
"./src/features/Send/useCases/ConfirmTx/ConfirmTxScreen.stories.tsx": require("../src/features/Send/useCases/ConfirmTx/ConfirmTxScreen.stories.tsx"),
"./src/features/Send/useCases/ConfirmTx/FailedTx/FailedTxScreen.stories.tsx": require("../src/features/Send/useCases/ConfirmTx/FailedTx/FailedTxScreen.stories.tsx"),
"./src/features/Send/useCases/ConfirmTx/SubmittedTx/SubmittedTxScreen.stories.tsx": require("../src/features/Send/useCases/ConfirmTx/SubmittedTx/SubmittedTxScreen.stories.tsx"),
@@ -128,6 +129,10 @@ const getStories = () => {
"./src/features/Send/useCases/ListAmountsToSend/AddToken/Show/MaxAmountsPerTx.stories.tsx": require("../src/features/Send/useCases/ListAmountsToSend/AddToken/Show/MaxAmountsPerTx.stories.tsx"),
"./src/features/Send/useCases/ListAmountsToSend/EditAmount/EditAmountScreen.stories.tsx": require("../src/features/Send/useCases/ListAmountsToSend/EditAmount/EditAmountScreen.stories.tsx"),
"./src/features/Send/useCases/ListAmountsToSend/ListAmountsToSendScreen.stories.tsx": require("../src/features/Send/useCases/ListAmountsToSend/ListAmountsToSendScreen.stories.tsx"),
+ "./src/features/Send/useCases/StartMultiTokenTx/InputReceiver/InputReceiver.stories.tsx": require("../src/features/Send/useCases/StartMultiTokenTx/InputReceiver/InputReceiver.stories.tsx"),
+ "./src/features/Send/useCases/StartMultiTokenTx/InputReceiver/ShowResolvedAddressSelected.stories.tsx": require("../src/features/Send/useCases/StartMultiTokenTx/InputReceiver/ShowResolvedAddressSelected.stories.tsx"),
+ "./src/features/Send/useCases/StartMultiTokenTx/NotifySupportedNameServers/NotifySupportedNameServers.stories.tsx": require("../src/features/Send/useCases/StartMultiTokenTx/NotifySupportedNameServers/NotifySupportedNameServers.stories.tsx"),
+ "./src/features/Send/useCases/StartMultiTokenTx/SelectNameServer/SelectNameServer.stories.tsx": require("../src/features/Send/useCases/StartMultiTokenTx/SelectNameServer/SelectNameServer.stories.tsx"),
"./src/features/Send/useCases/StartMultiTokenTx/StartMultiTokenTxScreen.stories.tsx": require("../src/features/Send/useCases/StartMultiTokenTx/StartMultiTokenTxScreen.stories.tsx"),
"./src/features/Settings/About/About.stories.tsx": require("../src/features/Settings/About/About.stories.tsx"),
"./src/features/Settings/ApplicationSettings/ApplicationSettingsScreen.stories.tsx": require("../src/features/Settings/ApplicationSettings/ApplicationSettingsScreen.stories.tsx"),
diff --git a/apps/wallet-mobile/package.json b/apps/wallet-mobile/package.json
index 9891babc3b..63413ab01c 100644
--- a/apps/wallet-mobile/package.json
+++ b/apps/wallet-mobile/package.json
@@ -120,11 +120,11 @@
"@react-navigation/stack": "^6.3.16",
"@sentry/react-native": "^5.8.0",
"@shopify/flash-list": "^1.4.1",
- "@unstoppabledomains/resolution": "6.0.3",
"@yoroi/api": "1.3.0",
"@yoroi/banxa": "1.3.0",
"@yoroi/common": "1.3.0",
"@yoroi/links": "1.3.0",
+ "@yoroi/resolver": "1.0.0",
"@yoroi/staking": "1.0.0",
"@yoroi/swap": "1.3.0",
"add": "2.0.6",
@@ -263,7 +263,7 @@
"prettier-plugin-packagejson": "^2.2.11",
"prettylint": "^1.0.0",
"react-addons-test-utils": "^15.6.2",
- "react-devtools-core": "4.26.1",
+ "react-devtools-core": "^4.28",
"react-dom": "16.8.3",
"react-intl-translations-manager": "^5.0.3",
"react-native-typescript-transformer": "^1.2.13",
diff --git a/apps/wallet-mobile/src/TxHistory/ActionsBanner.tsx b/apps/wallet-mobile/src/TxHistory/ActionsBanner.tsx
index c7d61f87a6..2f2ee53949 100644
--- a/apps/wallet-mobile/src/TxHistory/ActionsBanner.tsx
+++ b/apps/wallet-mobile/src/TxHistory/ActionsBanner.tsx
@@ -26,7 +26,7 @@ export const ActionsBanner = ({disabled = false}: {disabled: boolean}) => {
const strings = useStrings()
const navigateTo = useNavigateTo()
const wallet = useSelectedWallet()
- const {resetForm} = useSend()
+ const {reset: resetSendState} = useSend()
const {orderData} = useSwap()
const {resetSwapForm} = useSwapForm()
const {track} = useMetrics()
@@ -87,7 +87,7 @@ export const ActionsBanner = ({disabled = false}: {disabled: boolean}) => {
const handleOnSend = () => {
navigateTo.send()
- resetForm()
+ resetSendState()
}
const handleOnSwap = () => {
diff --git a/apps/wallet-mobile/src/TxHistory/TxHistoryNavigator.tsx b/apps/wallet-mobile/src/TxHistory/TxHistoryNavigator.tsx
index 725a8d6d1a..61abff4a1d 100644
--- a/apps/wallet-mobile/src/TxHistory/TxHistoryNavigator.tsx
+++ b/apps/wallet-mobile/src/TxHistory/TxHistoryNavigator.tsx
@@ -1,5 +1,6 @@
import {useNavigation} from '@react-navigation/native'
import {createStackNavigator} from '@react-navigation/stack'
+import {resolverApiMaker, resolverManagerMaker, ResolverProvider, resolverStorageMaker} from '@yoroi/resolver'
import {
milkTokenId,
supportedProviders,
@@ -8,7 +9,7 @@ import {
SwapProvider,
swapStorageMaker,
} from '@yoroi/swap'
-import {Swap} from '@yoroi/types'
+import {Resolver, Swap} from '@yoroi/types'
import React from 'react'
import {defineMessages, useIntl} from 'react-intl'
import {StyleSheet, Text, TouchableOpacity, TouchableOpacityProps, View, ViewProps} from 'react-native'
@@ -39,6 +40,7 @@ import {
} from '../features/Swap/useCases'
import {SelectBuyTokenFromListScreen} from '../features/Swap/useCases/StartSwapScreen/CreateOrder/EditBuyAmount/SelectBuyTokenFromListScreen/SelectBuyTokenFromListScreen'
import {SelectSellTokenFromListScreen} from '../features/Swap/useCases/StartSwapScreen/CreateOrder/EditSellAmount/SelectSellTokenFromListScreen/SelectSellTokenFromListScreen'
+import {CONFIG} from '../legacy/config'
import {
BackButton,
defaultStackNavigationOptions,
@@ -84,6 +86,19 @@ export const TxHistoryNavigator = () => {
return swapManagerMaker({swapStorage, swapApi, frontendFeeTiers, aggregator, aggregatorTokenId})
}, [wallet.networkId, wallet.primaryTokenInfo.id, stakingKey, frontendFees, aggregatorTokenId])
+ // resolver
+ const resolverManager = React.useMemo(() => {
+ const resolverApi = resolverApiMaker({
+ apiConfig: {
+ [Resolver.NameServer.Unstoppable]: {
+ apiKey: CONFIG.UNSTOPPABLE_API_KEY,
+ },
+ },
+ })
+ const resolverStorage = resolverStorageMaker()
+ return resolverManagerMaker(resolverStorage, resolverApi)
+ }, [])
+
// claim
const claimApi = React.useMemo(() => {
return claimApiMaker({
@@ -98,218 +113,220 @@ export const TxHistoryNavigator = () => {
return (
-
-
-
-
-
-
- {() => (
-
-
-
- )}
-
-
- ,
- headerStyle: {
- elevation: 0,
- shadowOpacity: 0,
- backgroundColor: '#fff',
- },
- }}
- />
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {() => (
-
-
-
- )}
-
-
-
- {() => (
-
-
-
- )}
-
-
-
- {() => (
-
-
-
- )}
-
-
-
+
+
+
- {() => (
-
-
-
- )}
-
-
-
-
-
-
-
-
- ,
- }}
- />
-
-
-
- null}}
- />
-
-
-
- {strings.receiveInfoText}
-
-
-
+
+
+
+ {() => (
+
+
+
+ )}
+
+
+ ,
+ headerStyle: {
+ elevation: 0,
+ shadowOpacity: 0,
+ backgroundColor: '#fff',
+ },
+ }}
+ />
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {() => (
+
+
+
+ )}
+
+
+
+ {() => (
+
+
+
+ )}
+
+
+
+ {() => (
+
+
+
+ )}
+
+
+
+ {() => (
+
+
+
+ )}
+
+
+
+
+
+
+
+
+ ,
+ }}
+ />
+
+
+
+ null}}
+ />
+
+
+
+ {strings.receiveInfoText}
+
+
+
+
)
diff --git a/apps/wallet-mobile/src/WalletInit/WalletForm.tsx b/apps/wallet-mobile/src/WalletInit/WalletForm.tsx
index 03f678b128..f771d122af 100644
--- a/apps/wallet-mobile/src/WalletInit/WalletForm.tsx
+++ b/apps/wallet-mobile/src/WalletInit/WalletForm.tsx
@@ -81,7 +81,7 @@ export const WalletForm = ({onSubmit}: Props) => {
onChangeText={setPassword}
errorText={passwordErrorText}
returnKeyType="next"
- helperText={strings.passwordStrengthRequirement({
+ helper={strings.passwordStrengthRequirement({
requiredPasswordLength: REQUIRED_PASSWORD_LENGTH,
})}
right={!passwordErrors.passwordIsWeak ? : undefined}
diff --git a/apps/wallet-mobile/src/components/Icon/Check.tsx b/apps/wallet-mobile/src/components/Icon/Check.tsx
index f2b2d7387e..b03a5f046d 100644
--- a/apps/wallet-mobile/src/components/Icon/Check.tsx
+++ b/apps/wallet-mobile/src/components/Icon/Check.tsx
@@ -2,21 +2,19 @@ import React from 'react'
import {ImageStyle} from 'react-native'
import Svg, {Path} from 'react-native-svg'
-import {COLORS} from '../../theme'
-
type Props = {
size?: number
color?: string
style?: ImageStyle
}
-export const Check = ({size = 40, color}: Props) => (
-