Skip to content

Pinia Task 14 - account-settings #6943

@n-lark

Description

@n-lark

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 equivalent

14.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

No type

Projects

Status

Todo

Status

No status

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions