UNPKG

@roochnetwork/rooch-sdk-kit

Version:
94 lines (93 loc) 2.73 kB
// src/provider/walletStore.ts import { createStore } from "zustand"; import { createJSONStorage, persist } from "zustand/middleware"; function createWalletStore({ chain, currentWallet, wallets, storage, storageKey, autoConnectEnabled }) { return createStore()( persist( (set, get) => ({ currentChain: chain, autoConnectEnabled, currentWallet, wallets, addresses: [], currentAddress: void 0, lastConnectedAddress: void 0, lastConnectedWalletName: void 0, connectionStatus: "disconnected", setChain(chain2) { const currentChain = get().currentChain; if (currentChain === chain2) { return; } set(() => ({ currentChain: chain2, accounts: [], // currentWallet: supportWallets.find((v) => v.getSupportNetworks()), sessionAccount: null, connectionStatus: "disconnected" })); }, setConnectionStatus(connectionStatus) { set(() => ({ connectionStatus })); }, setWalletConnected(wallet, connectedAddresses, selectedAddress) { set(() => ({ currentWallet: wallet, accounts: connectedAddresses, currentAddress: selectedAddress || void 0, lastConnectedWalletName: wallet.getName(), lastConnectedAddress: selectedAddress?.toStr(), connectionStatus: "connected" })); }, setWalletDisconnected() { set(() => ({ accounts: [], currentAddress: void 0, lastConnectedWalletName: void 0, lastConnectedAddress: void 0, connectionStatus: "disconnected" })); }, setAddressSwitched(selected) { set(() => ({ currentAddress: selected, lastConnectedAddress: selected.toStr() ?? "" })); }, updateWalletAddresses(addresses) { const currentAddr = get().currentAddress; set(() => ({ currentAddress: currentAddr && addresses.find((addr) => addr.toStr() === currentAddr.toStr()) || addresses[0] })); }, updateWallets(wallets2) { set(() => ({ wallets: wallets2 })); } }), { name: storageKey, storage: createJSONStorage(() => storage), partialize: ({ lastConnectedWalletName, lastConnectedAddress }) => ({ lastConnectedWalletName, lastConnectedAddress }) } ) ); } export { createWalletStore }; //# sourceMappingURL=walletStore.js.map