From 8e0fbe589c736c0ecb97d1fef87c083b2337b9f7 Mon Sep 17 00:00:00 2001 From: Mario Colque Date: Thu, 1 May 2014 10:00:55 -0300 Subject: [PATCH] refactor --- js/models/storage/LocalEncrypted.js | 109 ++++++++++++++++++++++------ 1 file changed, 86 insertions(+), 23 deletions(-) diff --git a/js/models/storage/LocalEncrypted.js b/js/models/storage/LocalEncrypted.js index 56922a1f2..470c9f39f 100644 --- a/js/models/storage/LocalEncrypted.js +++ b/js/models/storage/LocalEncrypted.js @@ -1,8 +1,6 @@ 'use strict'; var imports = require('soop').imports(); -//var buffertools = imports.buffertools || require('buffertools'); -var parent = imports.parent || require('./LocalPlain'); var id = 0; function Storage(opts) { @@ -13,8 +11,6 @@ function Storage(opts) { if (opts.password) this._setPassphrase(opts.password); } -Storage.parent = parent; - var pps = {}; Storage.prototype._getPassphrase = function() { @@ -58,38 +54,105 @@ Storage.prototype._read = function(k) { console.log('Error while decrypting: '+e); throw e; }; + return ret; }; Storage.prototype._write = function(k,v) { v = JSON.stringify(v); v = this._encrypt(v); + localStorage.setItem(k, v); }; +// get value by key +Storage.prototype.getGlobal = function(k) { + return localStorage.getItem(k); +}; + +// set value for key +Storage.prototype.setGlobal = function(k,v) { + localStorage.setItem(k, JSON.stringify(v)); +}; + +// remove value for key +Storage.prototype.removeGlobal = function(k) { + localStorage.removeItem(k); +}; + +Storage.prototype._key = function(walletId, k) { + return walletId + '::' + k; +}; +// get value by key +Storage.prototype.get = function(walletId, k) { + var ret = this._read(this._key(walletId,k)); + + return ret; +}; + +// set value for key +Storage.prototype.set = function(walletId, k,v) { + this._write(this._key(walletId,k), v); +}; + +// remove value for key +Storage.prototype.remove = function(walletId, k) { + this.removeGlobal(this._key(walletId,k)); +}; + +Storage.prototype.setName = function(walletId, name) { + this.setGlobal('nameFor::'+walletId, name); +}; + +Storage.prototype.getName = function(walletId) { + return this.getGlobal('nameFor::'+walletId); +}; + +Storage.prototype.getWalletIds = function() { + var walletIds = []; + var uniq = {}; + for (var i = 0; i < localStorage.length; i++) { + var key = localStorage.key(i); + var split = key.split('::'); + if (split.length == 2) { + var walletId = split[0]; + + if (walletId === 'nameFor') continue; + + if (typeof uniq[walletId] === 'undefined' ) { + walletIds.push(walletId); + uniq[walletId] = 1; + } + } + } + return walletIds; +}; + +Storage.prototype.getWallets = function() { + var wallets = []; + var uniq = {}; + var ids = this.getWalletIds(); + + for (var i in ids){ + wallets.push({ + id:ids[i], + name: this.getName(ids[i]), + }); + } + return wallets; +}; + +//obj contains keys to be set Storage.prototype.setFromObj = function(walletId, obj) { - for (var i in keys) { - var key = keys[0]; - obj[key] = this.get(walletId, key); + for (var k in obj) { + this.set(walletId, k, obj[k]); } + this.setName(walletId, obj.opts.name); }; -Storage.prototype.setFromEncryptedObj = function(walletId, base64) { - -}; - -Storage.prototype.getEncryptedObj = function(walletId) { - var keys = this._getWalletKeys(); - var obj = {}; - for (var i in keys) { - var key = keys[0]; - obj[key] = this.get(walletId, key); - } - - var str = JSON.stringify(obj); - var base64 = this._encrypt(str).toString(); - - return base64; +// remove all values +Storage.prototype.clearAll = function() { + localStorage.clear(); }; module.exports = require('soop')(Storage);