UNPKG

sbis3-node-ws

Version:

Модуль позволяет использовать ядро интерфейсного фреймворка sbis3-ws(`core.js`) и модуль работы с данными (`Source.js`) в приложении на nodejs.

87 lines (79 loc) 2.12 kB
/** * Created by Shilovda on 14.08.2015. */ define('Core/SessionStorage', function() { var saveSSTimeout; // На тот случай, если у нас нет sessionStorage, то храним просто все в объекте var storage = sessionStorage || { getItem: function() {}, setItem: function() {}, removeItem: function() {} }; var sid = $ && $.cookie('sid'); var sessionName = 'wsss'; var ss = storage.getItem(sessionName); if (ss) { try { ss = JSON.parse(ss) || {}; } catch(e) { ss = {}; } } else { ss = {}; } if (ss.sid && sid) { var w = ss.sid.split("-"), n = sid.split("-"); //если изменились пользователи или клиент, то чистим if(w[0] !== n[0] || w[1] !== n[1]) { clearSS(); ss.sid = sid; } } else if (!ss.sid) { ss.sid = sid; } function clearSS() { storage.removeItem(sessionName); ss = {}; } function saveSS() { try { if (!saveSSTimeout) { saveSSTimeout = setTimeout(function() { storage.setItem(sessionName, JSON.stringify(ss)); saveSSTimeout = null; }, 500); } } catch (e) { // ignore } } var SessionStorage = { get: function(key) { return ss[key]; }, set: function(key, value) { if (value == null && typeof key == 'object' && Object.prototype.toString.call(key) == '[object Object]') { // Обходимся без нашего helpers for (var k in key) { if (key.hasOwnProperty(k)) { ss[k] = key[k]; } } } else { ss[key] = value; } saveSS(); }, remove: function(key) { delete ss[key]; saveSS(); }, toObject: function() { return ss; } }; $ws.single.SessionStorage = SessionStorage; return SessionStorage; });