@roochnetwork/rooch-sdk-kit
Version:
Rooch SDK Kit
94 lines (93 loc) • 2.73 kB
JavaScript
// 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