Store user module for users settings and username.
This commit is contained in:
104
src/modules/userModule.js
Normal file
104
src/modules/userModule.js
Normal file
@@ -0,0 +1,104 @@
|
|||||||
|
import { getSettings } from '@/api'
|
||||||
|
|
||||||
|
function setLocalStorageByKey(key, value) {
|
||||||
|
if (value instanceof Object || value instanceof Array) {
|
||||||
|
value = JSON.stringify(value)
|
||||||
|
}
|
||||||
|
const buff = Buffer.from(value)
|
||||||
|
const encodedValue = buff.toString('base64')
|
||||||
|
localStorage.setItem(key, encodedValue)
|
||||||
|
}
|
||||||
|
|
||||||
|
function getLocalStorageByKey(key) {
|
||||||
|
const encodedValue = localStorage.getItem(key)
|
||||||
|
if (encodedValue == null) {
|
||||||
|
return undefined
|
||||||
|
}
|
||||||
|
const buff = new Buffer(encodedValue, 'base64')
|
||||||
|
const value = buff.toString('utf-8')
|
||||||
|
|
||||||
|
try {
|
||||||
|
return JSON.parse(value)
|
||||||
|
} catch {
|
||||||
|
return value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const ifMissingSettingsAndTokenExistsFetchSettings =
|
||||||
|
() => getLocalStorageByKey('token') ? getSettings() : null
|
||||||
|
|
||||||
|
export default {
|
||||||
|
namespaced: true,
|
||||||
|
state: {
|
||||||
|
admin: false,
|
||||||
|
settings: undefined,
|
||||||
|
username: undefined,
|
||||||
|
plex_userid: undefined
|
||||||
|
},
|
||||||
|
getters: {
|
||||||
|
admin: (state) => {
|
||||||
|
return state.admin
|
||||||
|
},
|
||||||
|
settings: (state, foo, bar) => {
|
||||||
|
console.log('is this called?')
|
||||||
|
const settings = state.settings || getLocalStorageByKey('settings')
|
||||||
|
if (settings instanceof Object) {
|
||||||
|
return settings
|
||||||
|
}
|
||||||
|
|
||||||
|
ifMissingSettingsAndTokenExistsFetchSettings()
|
||||||
|
return undefined
|
||||||
|
},
|
||||||
|
username: (state) => {
|
||||||
|
const settings = state.settings || getLocalStorageByKey('settings')
|
||||||
|
|
||||||
|
if (settings instanceof Object && settings.hasOwnProperty('user_name')) {
|
||||||
|
return settings.user_name
|
||||||
|
}
|
||||||
|
|
||||||
|
ifMissingSettingsAndTokenExistsFetchSettings()
|
||||||
|
return undefined
|
||||||
|
},
|
||||||
|
plex_userid: (state) => {
|
||||||
|
const settings = state.settings || getLocalStorageByKey('settings')
|
||||||
|
console.log('plex_userid from store', settings)
|
||||||
|
|
||||||
|
if (settings instanceof Object && settings.hasOwnProperty('plex_userid')) {
|
||||||
|
return settings.plex_userid
|
||||||
|
}
|
||||||
|
|
||||||
|
ifMissingSettingsAndTokenExistsFetchSettings()
|
||||||
|
return undefined
|
||||||
|
}
|
||||||
|
},
|
||||||
|
mutations: {
|
||||||
|
SET_ADMIN: (state, isAdmin) => {
|
||||||
|
state.admin = isAdmin
|
||||||
|
},
|
||||||
|
SET_USERNAME: (state, username) => {
|
||||||
|
state.username = username
|
||||||
|
console.log('username')
|
||||||
|
setLocalStorageByKey('username', username)
|
||||||
|
},
|
||||||
|
SET_SETTINGS: (state, settings) => {
|
||||||
|
state.settings = settings
|
||||||
|
console.log('settings')
|
||||||
|
setLocalStorageByKey('settings', settings)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
actions: {
|
||||||
|
setAdmin: ({commit}, isAdmin) => {
|
||||||
|
if (!(isAdmin instanceof Object)) {
|
||||||
|
throw "Parameter is not a boolean value."
|
||||||
|
}
|
||||||
|
commit('SET_ADMIN', isAdmin)
|
||||||
|
},
|
||||||
|
setSettings: ({commit}, settings) => {
|
||||||
|
console.log('settings input', settings)
|
||||||
|
if (!(settings instanceof Object)) {
|
||||||
|
throw "Parameter is not a object."
|
||||||
|
}
|
||||||
|
commit('SET_SETTINGS', settings)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,17 +1,19 @@
|
|||||||
import Vue from 'vue'
|
import Vue from 'vue'
|
||||||
import Vuex from 'vuex'
|
import Vuex from 'vuex'
|
||||||
|
|
||||||
import torrentModule from './modules/torrentModule'
|
|
||||||
import darkmodeModule from './modules/darkmodeModule'
|
import darkmodeModule from './modules/darkmodeModule'
|
||||||
import documentTitle from './modules/documentTitle'
|
import documentTitle from './modules/documentTitle'
|
||||||
|
import torrentModule from './modules/torrentModule'
|
||||||
|
import userModule from './modules/userModule'
|
||||||
|
|
||||||
Vue.use(Vuex)
|
Vue.use(Vuex)
|
||||||
|
|
||||||
const store = new Vuex.Store({
|
const store = new Vuex.Store({
|
||||||
modules: {
|
modules: {
|
||||||
torrentModule,
|
|
||||||
darkmodeModule,
|
darkmodeModule,
|
||||||
documentTitle
|
documentTitle,
|
||||||
|
torrentModule,
|
||||||
|
userModule
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user