From eec19cef98ea00aa4c76f7f81d56b1fda1924ea5 Mon Sep 17 00:00:00 2001 From: Gunther Brunner Date: Wed, 14 May 2014 15:24:35 +0900 Subject: [PATCH] Trying to implement memory based settings storage. --- .../stf/settings/settings-service.js | 54 +++++++++++++++++++ 1 file changed, 54 insertions(+) diff --git a/res/app/components/stf/settings/settings-service.js b/res/app/components/stf/settings/settings-service.js index 54d2610e..a820971a 100644 --- a/res/app/components/stf/settings/settings-service.js +++ b/res/app/components/stf/settings/settings-service.js @@ -1,3 +1,57 @@ module.exports = function SettingsServiceFactory($localForage) { + var loadedInMemory = false + + $localForage.memoryData = {} + + function setItemMemory(key, value) { + $localForage.memoryData[key] = value + } + + function getItemMemory(key) { + var ret + if (typeof $localForage.memoryData[key] !== 'undefined') { + ret = $localForage.memoryData[key] + } + return ret + } + + $localForage.setItemSync = function (key, value) { + setItemMemory(key, value) + + $localForage.setItem(key, value, function () { + console.log('Finished saving to local forage', key, value) + }) + } + + $localForage.getAllItemsSync = function () { + $localForage.getKeys().then(function (keys) { + for (var i = 0; i < keys.length; ++i) { + $localForage.getItem(keys[i]).then(setItemMemory.bind(null, keys[i])) + } + }) + // FIX: This is not sync + loadedInMemory = true + } + + $localForage.getItemSync = function (key) { + if (!loadedInMemory) { + console.log('Loading for the first time') + $localForage.getAllItemsSync(function () { + console.log(getItemMemory(key)) + }) + } + + setTimeout(function () { + console.log(getItemMemory(key)) + }, 1000) + + return getItemMemory(key) + } + + $localForage.bindSync = function (scope, opts) { + + } + + return $localForage }