UNPKG

@roochnetwork/rooch-sdk-kit

Version:
65 lines (64 loc) 1.89 kB
// src/provider/sessionStore.ts import { createStore } from "zustand"; import { createJSONStorage, persist } from "zustand/middleware"; import { Session } from "@roochnetwork/rooch-sdk"; function createSessionStore({ storage, storageKey, sessionConf }) { return createStore()( persist( (set, get) => ({ sessions: [], currentSession: null, sessionConf, addSession(session) { const cache = get().sessions; cache.push(session); set(() => ({ sessions: cache })); }, setCurrentSession(session) { if (!session) { set(() => ({ currentSession: null })); } else { const cache = get().sessions; if (!cache.find((item) => item.getAuthKey() === session.getAuthKey())) { cache.push(session); } set(() => ({ currentSession: session, sessions: cache })); } }, removeSession(session) { const cacheSessions = get().sessions; const cacheCurSession = get().currentSession; set(() => ({ currentSession: cacheCurSession?.getAuthKey() === session.getAuthKey() ? null : cacheCurSession, sessions: cacheSessions.filter((c) => c.getAuthKey() !== session.getAuthKey()) })); } }), { name: storageKey, storage: createJSONStorage(() => storage, { reviver: (key, value) => { if (key === "sessions") { return value.map((session) => Session.fromJson(session)); } return value; } }), partialize: ({ sessions }) => ({ sessions }) } ) ); } export { createSessionStore }; //# sourceMappingURL=sessionStore.js.map