1
0
Fork 0
mirror of https://github.com/openstf/stf synced 2025-10-06 12:00:08 +02:00
OpenSTF/res/app/components/stf/settings/settings-service.js
2014-05-29 01:40:38 +09:00

61 lines
1.3 KiB
JavaScript

var Promise = require('bluebird')
module.exports = function SettingsServiceFactory($localForage) {
var SettingsService = {}
var loadedInMemory = false
var memoryData = Object.create(null)
function setItemMemory(key, value) {
memoryData[key] = value
}
function getItemMemory(key) {
return memoryData[key]
}
SettingsService.setItem = function (key, value) {
setItemMemory(key, value)
return $localForage.setItem(key, value)
}
function loadAllItems() {
if (loadedInMemory) {
return Promise.resolve()
}
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
})
}
SettingsService.getItem = function (key) {
return loadAllItems().then(function () {
return getItemMemory(key)
})
}
SettingsService.bind = function () {
return $localForage.bind.apply($localForage, arguments)
}
SettingsService.driver = function () {
return $localForage.driver.apply($localForage, arguments)
+ ' with memory cache'
}
SettingsService.clear = function () {
memoryData = Object.create(null)
return $localForage.clear.apply($localForage, arguments)
}
return SettingsService
}