-
Notifications
You must be signed in to change notification settings - Fork 83
Description
Task 14 — account-settings (PR 15)
Gate: Task 13 merged (featuresCheck imports team from account-team).
State: settings, features
Getters: featuresCheck (31 properties — imports team from useAccountTeamStore())
Actions: refreshSettings
Consumers: ~50 files (almost all via featuresCheck)
14.1 — Create account-settings.js
14.2 — Port featuresCheck getter
This is the most-consumed getter in the codebase — 31 computed properties. Port it line-by-line. No shortcuts. team is now imported from useAccountTeamStore() inside the getter body:
featuresCheck () {
const { team } = useAccountTeamStore() // cross-store import inside getter
const { settings, features } = this
// ... same logic as today
}14.3 — Update Vuex checkState to delegate settings to Pinia
// Before
commit('setSettings', settings)
// After
useAccountSettingsStore().setSettings(settings)Remove setSettings mutation from Vuex.
14.4 — Update Vuex logout
useAccountAuthStore().$reset()
useAccountTeamStore().$reset()
useAccountSettingsStore().$reset() // ← add — skipReset: ['settings', 'features'] preserves them
dispatch('$resetState', null, { root: true })14.5 — Add persistence
persist: {
pick: ['settings', 'features'],
storage: localStorage
},
skipReset: ['settings', 'features'] // clearOnLogout: false equivalent14.6 — Update _account_bridge.js
import { useAccountSettingsStore } from './account-settings.js'
export function useAccountBridge () {
return {
user: useAccountAuthStore().user,
team: useAccountTeamStore().team,
featuresCheck: useAccountSettingsStore().featuresCheck // fully on Pinia now
}
}At this point the bridge no longer reads from Vuex at all. It can be simplified to a thin re-export if needed.
14.7 — Update ~50 consumers
Final consumer migration — after this task, no component reads from Vuex account at all. Components that used mapGetters('account', ['featuresCheck']) switch to mapState(useAccountSettingsStore, ['featuresCheck']). Remove all remaining mapVuexState('account', [...]) calls for settings and features. At this point the Vuex mapState as mapVuexState alias can be removed from every file that still has it.
grep -rl "mapVuexState.*account\|mapState.*account\|mapGetters.*account" frontend/src/14.8 — Export from stores index
export { useAccountSettingsStore } from './account-settings.js'14.9 — Write tests
Metadata
Metadata
Assignees
Labels
Type
Projects
Status
Status