mirror of
https://github.com/openstf/stf
synced 2025-10-05 10:39:25 +02:00
Refactor SettingsService.
This commit is contained in:
parent
78c207c8d1
commit
fa098680c2
1 changed files with 35 additions and 36 deletions
|
@ -1,57 +1,56 @@
|
|||
var Promise = require('bluebird')
|
||||
|
||||
module.exports = function SettingsServiceFactory($localForage) {
|
||||
var SettingsService = {}
|
||||
|
||||
var loadedInMemory = false
|
||||
|
||||
$localForage.memoryData = {}
|
||||
var memoryData = Object.create(null)
|
||||
|
||||
function setItemMemory(key, value) {
|
||||
$localForage.memoryData[key] = value
|
||||
memoryData[key] = value
|
||||
}
|
||||
|
||||
function getItemMemory(key) {
|
||||
var ret
|
||||
if (typeof $localForage.memoryData[key] !== 'undefined') {
|
||||
ret = $localForage.memoryData[key]
|
||||
}
|
||||
return ret
|
||||
return memoryData[key]
|
||||
}
|
||||
|
||||
$localForage.setItemSync = function (key, value) {
|
||||
SettingsService.setItem = function (key, value) {
|
||||
setItemMemory(key, value)
|
||||
|
||||
$localForage.setItem(key, value, function () {
|
||||
console.log('Finished saving to local forage', key, value)
|
||||
})
|
||||
return $localForage.setItem(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]))
|
||||
function loadAllItems() {
|
||||
if (loadedInMemory) {
|
||||
return Promise.resolve()
|
||||
}
|
||||
})
|
||||
// FIX: This is not sync
|
||||
|
||||
return $localForage.getKeys().then(function (keys) {
|
||||
return Promise.all(keys.map(function (key) {
|
||||
return $localForage.getItem(key).then(setItemMemory.bind(null, key))
|
||||
}))
|
||||
}).then(function () {
|
||||
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)
|
||||
|
||||
SettingsService.getItem = function (key) {
|
||||
return loadAllItems().then(function () {
|
||||
return getItemMemory(key)
|
||||
})
|
||||
}
|
||||
|
||||
$localForage.bindSync = function (scope, opts) {
|
||||
SettingsService.bind = function () {
|
||||
|
||||
|
||||
|
||||
return $localForage.bind.apply($localForage, arguments)
|
||||
}
|
||||
|
||||
|
||||
return $localForage
|
||||
SettingsService.clear = function () {
|
||||
memoryData = Object.create(null)
|
||||
return $localForage.clear.apply($localForage, arguments)
|
||||
}
|
||||
|
||||
return SettingsService
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue