REF: Store ID, not whole wallet object

This commit is contained in:
Marcos Rodriguez Velez 2024-03-23 12:33:00 -04:00
parent 2f00b83e63
commit dd9aa0463e
No known key found for this signature in database
GPG key ID: 6030B2F48CCE86D7
4 changed files with 22 additions and 17 deletions

View file

@ -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,
},
}),
);

View file

@ -7,7 +7,7 @@ const useOnAppLaunch = () => {
const STORAGE_KEY = 'ONAPP_LAUNCH_SELECTED_DEFAULT_WALLET_KEY';
const { wallets } = useContext(BlueStorageContext);
const getSelectedDefaultWallet = useCallback(async (): Promise<TWallet | undefined> => {
const getSelectedDefaultWallet = useCallback(async (): Promise<string | undefined> => {
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]);

View file

@ -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<RootStackParamList, 'SelectWallet'>;
@ -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) => {

View file

@ -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