add account preferences model and API endpoints for user settings
This commit is contained in:
parent
a9d5bbb9df
commit
32addb8ed1
11 changed files with 297 additions and 21 deletions
|
|
@ -202,6 +202,10 @@ export default createStore({
|
|||
state.user_profile = null;
|
||||
state.token = null;
|
||||
state.keypair = null;
|
||||
state.accountPreferences = {};
|
||||
state.preferenceDefinitions = [];
|
||||
state.preferencesLoaded = false;
|
||||
// Note: devicePreferences are NOT cleared on logout (device-specific)
|
||||
localStorage.removeItem('user');
|
||||
localStorage.removeItem('token');
|
||||
localStorage.removeItem('keypair');
|
||||
|
|
@ -226,24 +230,33 @@ export default createStore({
|
|||
}
|
||||
},
|
||||
actions: {
|
||||
async loadUserPreferences({state, commit}) {
|
||||
const accountKey = 'toolshed.preferences.account.' + (state.user || 'anonymous')
|
||||
async loadUserPreferences({state, commit, dispatch, getters}) {
|
||||
if (state.preferencesLoaded) return
|
||||
const deviceKey = 'toolshed.preferences.device'
|
||||
|
||||
commit('setPreferenceDefinitions', defaultPreferenceDefinitions)
|
||||
commit('setAccountPreferences', parseStoredPreferences(accountKey))
|
||||
commit('setDevicePreferences', parseStoredPreferences(deviceKey))
|
||||
|
||||
let definitions = defaultPreferenceDefinitions
|
||||
let accountPreferences = {}
|
||||
try {
|
||||
const servers = await dispatch('getHomeServers')
|
||||
definitions = await servers.get(getters.nullAuth, '/auth/preferences/') || defaultPreferenceDefinitions
|
||||
accountPreferences = await servers.get(getters.signAuth, '/auth/self/preferences/') || {}
|
||||
} catch (error) {
|
||||
console.error('Failed to load user preferences:', error)
|
||||
}
|
||||
commit('setPreferenceDefinitions', definitions)
|
||||
commit('setAccountPreferences', accountPreferences)
|
||||
commit('setPreferencesLoaded', true)
|
||||
},
|
||||
async setAccountPreference({state, commit}, {key, value}) {
|
||||
async setAccountPreference({state, commit, dispatch, getters}, {key, value}) {
|
||||
const servers = await dispatch('getHomeServers')
|
||||
await servers.put(getters.signAuth, '/auth/self/preferences/', {[key]: value})
|
||||
commit('setAccountPreference', {key, value})
|
||||
const accountKey = 'toolshed.preferences.account.' + (state.user || 'anonymous')
|
||||
localStorage.setItem(accountKey, JSON.stringify(state.accountPreferences))
|
||||
},
|
||||
async resetAccountPreference({state, commit}, key) {
|
||||
async resetAccountPreference({state, commit, dispatch, getters}, key) {
|
||||
const servers = await dispatch('getHomeServers')
|
||||
await servers.delete(getters.signAuth, '/auth/self/preferences/' + key + '/')
|
||||
commit('deleteAccountPreference', key)
|
||||
const accountKey = 'toolshed.preferences.account.' + (state.user || 'anonymous')
|
||||
localStorage.setItem(accountKey, JSON.stringify(state.accountPreferences))
|
||||
},
|
||||
async setDevicePreference({state, commit}, {key, value}) {
|
||||
commit('setDevicePreference', {key, value})
|
||||
|
|
|
|||
|
|
@ -134,6 +134,8 @@ export default {
|
|||
return;
|
||||
}
|
||||
alert('Data imported successfully: ' +
|
||||
`${summary.profile ? 'profile, ' : ''}` +
|
||||
`${summary.settings || 0} settings, ` +
|
||||
`${summary.inventory_items || 0} inventory items, ` +
|
||||
`${summary.friends || 0} friends, ` +
|
||||
`${summary.locations || 0} locations, ` +
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue