2020-11-15 12:43:11 +01:00

78 lines
2.0 KiB
JavaScript

import { defaults, app } from 'config'
export function parseLocalStorage(){
const fromStorage = localStorage.getItem(app.storage_appSettings)
try {
return JSON.parse(fromStorage)
} catch (error) {
console.log(error)
}
}
export function newSetting(key, value) {
let setting = {}
setting.id = key
setting.value = value
return [setting]
}
export const settings = {
get: (key) => {
let tmp = [];
const keys = Object.keys(defaults)
const values = Object.values(defaults)
const length = keys.length
for (let i = 0; i < length; i++) {
if(parseLocalStorage()){
const storagedValue = parseLocalStorage().find(item => {
return item.id === keys[i]
})
if (typeof(storagedValue) == 'undefined') {
tmp[keys[i]] = values[i]
}else{
tmp[keys[i]] = storagedValue.value
}
}
else{
tmp[keys[i]] = values[i]
}
}
if (key) {
return tmp[key]
}
return tmp
},
set: (key, value) => {
let tmp
let data = parseLocalStorage()
if (data) {
const finded = data.find(element => {
return element.id === key
})
if (!finded) {
const parsed = data.concat(newSetting(key, value))
tmp = parsed
} else {
const updated = data.map(element => {
return element.id === key? Object.assign(element, { value: value }) : element
})
tmp = updated
}
}else{
tmp = newSetting(key, value)
}
data = tmp
try {
localStorage.setItem( app.storage_appSettings, JSON.stringify(data) )
} catch (error) {
console.log(error)
return false
}
}
}
export default (e) => settings.get(e)