diff --git a/class/quick-actions.tsx b/class/quick-actions.tsx index 9ba16e220..bcc32670b 100644 --- a/class/quick-actions.tsx +++ b/class/quick-actions.tsx @@ -93,16 +93,16 @@ function DeviceQuickActions(): JSX.Element | null { } } else { if (!(await isViewAllWalletsEnabled())) { - const selectedDefaultWallet: TWallet = (await getSelectedDefaultWallet()) as TWallet; + const selectedDefaultWalletID = (await getSelectedDefaultWallet()) as string; + const selectedDefaultWallet = wallets.find((w: TWallet) => w.getID() === selectedDefaultWalletID); if (selectedDefaultWallet) { - const wallet = wallets.find(w => w.getID() === selectedDefaultWallet.getID()); - if (wallet) { + if (selectedDefaultWallet) { NavigationService.dispatch( CommonActions.navigate({ name: 'WalletTransactions', params: { - walletID: wallet.getID(), - walletType: wallet.type, + walletID: selectedDefaultWalletID, + walletType: selectedDefaultWallet.type, }, }), ); diff --git a/hooks/useOnAppLaunch.ts b/hooks/useOnAppLaunch.ts index e8288fe0d..a4a6de605 100644 --- a/hooks/useOnAppLaunch.ts +++ b/hooks/useOnAppLaunch.ts @@ -7,7 +7,7 @@ const useOnAppLaunch = () => { const STORAGE_KEY = 'ONAPP_LAUNCH_SELECTED_DEFAULT_WALLET_KEY'; const { wallets } = useContext(BlueStorageContext); - const getSelectedDefaultWallet = useCallback(async (): Promise => { + const getSelectedDefaultWallet = useCallback(async (): Promise => { let selectedWallet: TWallet | undefined; try { const selectedWalletID = JSON.parse((await AsyncStorage.getItem(STORAGE_KEY)) || 'null'); @@ -23,7 +23,7 @@ const useOnAppLaunch = () => { } catch (_e) { return undefined; } - return selectedWallet; + return selectedWallet.getID(); // eslint-disable-next-line react-hooks/exhaustive-deps }, [STORAGE_KEY]); diff --git a/screen/settings/DefaultView.tsx b/screen/settings/DefaultView.tsx index 4219e665d..5e22f86f5 100644 --- a/screen/settings/DefaultView.tsx +++ b/screen/settings/DefaultView.tsx @@ -10,7 +10,7 @@ import { NativeStackNavigationProp } from '@react-navigation/native-stack'; import { TWallet } from '../../class/wallets/types'; type RootStackParamList = { - SelectWallet: { onWalletSelect: (wallet: TWallet) => void }; + SelectWallet: { onWalletSelect: (wallet: TWallet) => void; onChainRequireSend: boolean }; }; type DefaultViewNavigationProp = NativeStackNavigationProp; @@ -26,10 +26,11 @@ const DefaultView: React.FC = () => { (async () => { const newViewAllWalletsEnabled: boolean = await isViewAllWalletsEnabled(); let newDefaultWalletLabel: string = ''; - const wallet = await getSelectedDefaultWallet(); + const walletID = await getSelectedDefaultWallet(); - if (wallet) { - newDefaultWalletLabel = wallet.getLabel(); + if (walletID) { + const w = wallets.find(wallet => wallet.getID() === walletID); + if (w) newDefaultWalletLabel = w.getLabel(); } setDefaultWalletLabel(newDefaultWalletLabel); setIsViewAllWalletsSwitchEnabled(newViewAllWalletsEnabled); @@ -43,7 +44,8 @@ const DefaultView: React.FC = () => { setIsViewAllWalletsSwitchEnabled(true); setDefaultWalletLabel(''); } else { - const selectedWallet = await getSelectedDefaultWallet(); + const selectedWalletID = await getSelectedDefaultWallet(); + const selectedWallet = wallets.find(wallet => wallet.getID() === selectedWalletID); if (selectedWallet) { setDefaultWalletLabel(selectedWallet.getLabel()); setIsViewAllWalletsSwitchEnabled(false); @@ -52,7 +54,7 @@ const DefaultView: React.FC = () => { }; const selectWallet = () => { - navigate('SelectWallet', { onWalletSelect: onWalletSelectValueChanged }); + navigate('SelectWallet', { onWalletSelect: onWalletSelectValueChanged, onChainRequireSend: false }); }; const onWalletSelectValueChanged = async (wallet: TWallet) => { diff --git a/screen/wallets/selectWallet.js b/screen/wallets/selectWallet.js index 3b899b353..18f09c58a 100644 --- a/screen/wallets/selectWallet.js +++ b/screen/wallets/selectWallet.js @@ -12,17 +12,20 @@ import { BlueStorageContext } from '../../blue_modules/storage-context'; import { useTheme } from '../../components/themes'; import triggerHapticFeedback, { HapticFeedbackTypes } from '../../blue_modules/hapticFeedback'; import SafeArea from '../../components/SafeArea'; +import { Chain } from '../../models/bitcoinUnits'; const SelectWallet = () => { - const { chainType, onWalletSelect, availableWallets, noWalletExplanationText } = useRoute().params; + const { chainType, onWalletSelect, availableWallets, noWalletExplanationText, onChainRequireSend = false } = useRoute().params; const [isLoading, setIsLoading] = useState(true); const { pop, navigate, setOptions, getParent } = useNavigation(); const { wallets } = useContext(BlueStorageContext); const { colors, closeImage } = useTheme(); const isModal = useNavigationState(state => state.routes.length) === 1; - let data = chainType - ? wallets.filter(item => item.chain === chainType && item.allowSend()) - : wallets.filter(item => item.allowSend()) || []; + let data = !onChainRequireSend + ? wallets.filter(item => item.chain === Chain.ONCHAIN) || [] + : chainType + ? wallets.filter(item => item.chain === chainType && item.allowSend()) + : wallets.filter(item => item.allowSend()) || []; if (availableWallets && availableWallets.length > 0) { // availableWallets if provided, overrides chainType argument and `allowSend()` check