2021-11-19 20:00:34 -06:00
|
|
|
import { Storage } from '@capacitor/storage'
|
|
|
|
|
|
|
|
class LocalStorage {
|
|
|
|
constructor(vuexStore) {
|
|
|
|
this.vuexStore = vuexStore
|
|
|
|
|
|
|
|
this.userAudiobooksLoaded = false
|
|
|
|
this.downloadFolder = null
|
|
|
|
}
|
|
|
|
|
|
|
|
async setToken(token) {
|
|
|
|
try {
|
|
|
|
if (token) {
|
|
|
|
await Storage.set({ key: 'token', value: token })
|
|
|
|
} else {
|
|
|
|
await Storage.remove({ key: 'token' })
|
|
|
|
}
|
|
|
|
} catch (error) {
|
|
|
|
console.error('[LocalStorage] Failed to set token', error)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
async getToken() {
|
|
|
|
try {
|
|
|
|
return (await Storage.get({ key: 'token' }) || {}).value || null
|
|
|
|
} catch (error) {
|
|
|
|
console.error('[LocalStorage] Failed to get token', error)
|
|
|
|
return null
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
async setCurrentLibrary(library) {
|
|
|
|
try {
|
|
|
|
if (library) {
|
|
|
|
await Storage.set({ key: 'library', value: JSON.stringify(library) })
|
|
|
|
} else {
|
|
|
|
await Storage.remove({ key: 'library' })
|
|
|
|
}
|
|
|
|
} catch (error) {
|
|
|
|
console.error('[LocalStorage] Failed to set library', error)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
async getCurrentLibrary() {
|
|
|
|
try {
|
|
|
|
var _value = (await Storage.get({ key: 'library' }) || {}).value || null
|
|
|
|
if (!_value) return null
|
|
|
|
return JSON.parse(_value)
|
|
|
|
} catch (error) {
|
|
|
|
console.error('[LocalStorage] Failed to get current library', error)
|
|
|
|
return null
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
async setDownloadFolder(folderObj) {
|
|
|
|
try {
|
|
|
|
if (folderObj) {
|
|
|
|
await Storage.set({ key: 'downloadFolder', value: JSON.stringify(folderObj) })
|
|
|
|
this.downloadFolder = folderObj
|
|
|
|
this.vuexStore.commit('setDownloadFolder', { ...this.downloadFolder })
|
|
|
|
} else {
|
|
|
|
await Storage.remove({ key: 'downloadFolder' })
|
|
|
|
this.downloadFolder = null
|
|
|
|
this.vuexStore.commit('setDownloadFolder', null)
|
|
|
|
}
|
|
|
|
|
|
|
|
} catch (error) {
|
|
|
|
console.error('[LocalStorage] Failed to set download folder', error)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
async getDownloadFolder() {
|
|
|
|
try {
|
|
|
|
var _value = (await Storage.get({ key: 'downloadFolder' }) || {}).value || null
|
|
|
|
if (!_value) return null
|
|
|
|
this.downloadFolder = JSON.parse(_value)
|
|
|
|
this.vuexStore.commit('setDownloadFolder', { ...this.downloadFolder })
|
|
|
|
return this.downloadFolder
|
|
|
|
} catch (error) {
|
|
|
|
console.error('[LocalStorage] Failed to get download folder', error)
|
|
|
|
return null
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
async getServerUrl() {
|
|
|
|
try {
|
|
|
|
return (await Storage.get({ key: 'serverUrl' }) || {}).value || null
|
|
|
|
} catch (error) {
|
|
|
|
console.error('[LocalStorage] Failed to get serverUrl', error)
|
|
|
|
return null
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
async setUserSettings(settings) {
|
|
|
|
try {
|
|
|
|
await Storage.set({ key: 'userSettings', value: JSON.stringify(settings) })
|
|
|
|
} catch (error) {
|
|
|
|
console.error('[LocalStorage] Failed to update user settings', error)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
async getUserSettings() {
|
|
|
|
try {
|
|
|
|
var settingsObj = await Storage.get({ key: 'userSettings' }) || {}
|
|
|
|
return settingsObj.value ? JSON.parse(settingsObj.value) : null
|
|
|
|
} catch (error) {
|
|
|
|
console.error('[LocalStorage] Failed to get user settings', error)
|
|
|
|
return null
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2021-12-05 18:31:47 -06:00
|
|
|
async setServerSettings(settings) {
|
|
|
|
try {
|
|
|
|
await Storage.set({ key: 'serverSettings', value: JSON.stringify(settings) })
|
|
|
|
console.log('Saved server settings', JSON.stringify(settings))
|
|
|
|
} catch (error) {
|
|
|
|
console.error('[LocalStorage] Failed to update server settings', error)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
async getServerSettings() {
|
|
|
|
try {
|
|
|
|
var settingsObj = await Storage.get({ key: 'serverSettings' }) || {}
|
|
|
|
return settingsObj.value ? JSON.parse(settingsObj.value) : null
|
|
|
|
} catch (error) {
|
|
|
|
console.error('[LocalStorage] Failed to get server settings', error)
|
|
|
|
return null
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2021-11-19 20:00:34 -06:00
|
|
|
async setCurrent(current) {
|
|
|
|
try {
|
|
|
|
if (current) {
|
|
|
|
await Storage.set({ key: 'current', value: JSON.stringify(current) })
|
|
|
|
} else {
|
|
|
|
await Storage.remove({ key: 'current' })
|
|
|
|
}
|
|
|
|
} catch (error) {
|
|
|
|
console.error('[LocalStorage] Failed to set current', error)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
async getCurrent() {
|
|
|
|
try {
|
|
|
|
var currentObj = await Storage.get({ key: 'current' }) || {}
|
|
|
|
return currentObj.value ? JSON.parse(currentObj.value) : null
|
|
|
|
} catch (error) {
|
|
|
|
console.error('[LocalStorage] Failed to get current', error)
|
|
|
|
return null
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
async setBookshelfView(view) {
|
|
|
|
try {
|
|
|
|
await Storage.set({ key: 'bookshelfView', value: view })
|
|
|
|
} catch (error) {
|
|
|
|
console.error('[LocalStorage] Failed to set bookshelf view', error)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
async getBookshelfView() {
|
|
|
|
try {
|
|
|
|
var view = await Storage.get({ key: 'bookshelfView' }) || {}
|
|
|
|
return view.value || null
|
|
|
|
} catch (error) {
|
|
|
|
console.error('[LocalStorage] Failed to get bookshelf view', error)
|
|
|
|
return null
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
export default ({ app, store }, inject) => {
|
|
|
|
inject('localStore', new LocalStorage(store))
|
|
|
|
}
|