UNPKG

golos-lib-js

Version:

Golos-js the JavaScript library with API for GOLOS blockchain

65 lines (64 loc) 1.91 kB
"use strict"; const MultiSessionData = require('./MultiSessionData'); const MultiSessionTempData = require('./MultiSessionTempData'); class MultiSession { constructor() { let key = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'multi_session'; this.key = key; } ensure() { if (typeof localStorage === 'undefined' || typeof sessionStorage === 'undefined') throw new Error('Browser should support localStorage and sessionStorage.'); } load() { this.ensure(); const obj = { key: this.key, currentName: '', accounts: {} }; let data = localStorage.getItem(this.key); if (data) { try { data = new Buffer(data, 'hex').toString(); data = JSON.parse(data); if (data.currentName) obj.currentName = data.currentName; if (data.accounts) obj.accounts = data.accounts; } catch (err) { console.warn('MultiSession.load', err); } } return new MultiSessionData(obj); } loadTemp() { this.ensure(); const obj = { key: this.key, accounts: {} }; let data = sessionStorage.getItem(this.key); if (data) { try { data = new Buffer(data, 'hex').toString(); data = JSON.parse(data); if (data.accounts) obj.accounts = data.accounts; } catch (err) { console.warn('MultiSession.loadTemp', err); } } return new MultiSessionTempData(obj); } clearExpired() { this.ensure(); return this.loadTemp().clearExpired(...arguments).save(); } logout(account) { let newCurrent = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined; this.loadTemp().logout(account).save(); return this.load().logout(account, newCurrent).save(); } clear() { this.loadTemp().clear().save(); return this.load().clear().save(); } } module.exports = MultiSession;