UNPKG

@reown/appkit-siwx

Version:

The chain agnostic tool to enable authentication for AppKit applications.

51 lines 1.81 kB
/** * This storage saves the sessions in the localStorage. */ export class LocalStorage { constructor(params) { this.key = params.key; } add(session) { const sessions = this.getSessions(); sessions.push(session); this.setSessions(sessions); return Promise.resolve(); } set(sessions) { this.setSessions(sessions); return Promise.resolve(); } get(chainId, address) { const allSessions = this.getSessions(); const validSessions = allSessions.filter(session => { const isSameChain = session.data.chainId === chainId; const isSameAddress = session.data.accountAddress === address; const startsAt = session.data.notBefore || session.data.issuedAt; if (startsAt && Date.parse(startsAt) > Date.now()) { return false; } const endsAt = session.data.expirationTime; if (endsAt && Date.now() > Date.parse(endsAt)) { return false; } return isSameChain && isSameAddress; }); return Promise.resolve(validSessions); } delete(chainId, address) { const sessions = this.getSessions().filter(session => session.data.chainId !== chainId && session.data.accountAddress !== address); this.setSessions(sessions); return Promise.resolve(); } getSessions() { if (typeof localStorage === 'undefined') { throw new Error('localStorage not available'); } const stringItem = localStorage.getItem(this.key); return stringItem ? JSON.parse(stringItem) : []; } setSessions(sessions) { localStorage.setItem(this.key, JSON.stringify(sessions)); } } //# sourceMappingURL=LocalStorage.js.map