diff --git a/frontend/src/App.vue b/frontend/src/App.vue
index ea878f2937..8bcbec0dae 100644
--- a/frontend/src/App.vue
+++ b/frontend/src/App.vue
@@ -104,7 +104,7 @@ export default {
...mapState(useUxDrawersStore, ['hiddenLeftDrawer']),
...mapState(useAccountAuthStore, ['user']),
...mapState(useUxLoadingStore, ['appLoader', 'offline']),
- ...mapVuexState('account', ['team', 'settings']),
+ ...mapVuexState('account', ['settings']),
loginRequired () {
return this.$route.meta.requiresLogin !== false
},
diff --git a/frontend/src/components/DevicesBrowser.vue b/frontend/src/components/DevicesBrowser.vue
index bdf5df82d6..4b96ce4e39 100644
--- a/frontend/src/components/DevicesBrowser.vue
+++ b/frontend/src/components/DevicesBrowser.vue
@@ -348,7 +348,7 @@ import { CogIcon, PlusSmIcon } from '@heroicons/vue/solid'
import { mapActions, mapState } from 'pinia'
import { markRaw } from 'vue'
-import { mapGetters, mapState as mapVuexState } from 'vuex'
+import { mapGetters } from 'vuex'
import deviceApi from '../api/devices.js'
import teamApi from '../api/team.js'
@@ -386,6 +386,7 @@ import DevicesStatusBar from './charts/DeviceStatusBar.vue'
import AddDeviceToGroupDialog from './dialogs/device-group-management/AddDeviceToGroupDialog.vue'
import RemoveDeviceFromGroupDialog from './dialogs/device-group-management/RemoveDeviceFromGroupDialog.vue'
+import { useContextStore } from '@/stores/context.js'
import { useUxDialogStore } from '@/stores/ux-dialog.js'
import { useUxToursStore } from '@/stores/ux-tours.js'
@@ -461,7 +462,7 @@ export default {
}
},
computed: {
- ...mapVuexState('account', ['team', 'teamMembership']),
+ ...mapState(useContextStore, ['team']),
...mapGetters('account', ['featuresCheck']),
...mapState(useUxDialogStore, ['dialog']),
...mapState(useUxToursStore, ['tours']),
@@ -615,7 +616,7 @@ export default {
if (this.deviceCountDeltaSincePageLoad !== 0) {
// Trigger a refresh of team info to resync following device
// changes
- await this.$store.dispatch('account/refreshTeam')
+ await useContextStore().refreshTeam()
}
},
methods: {
diff --git a/frontend/src/components/NotificationsButton.vue b/frontend/src/components/NotificationsButton.vue
index fdc457111e..7fda56ca7e 100644
--- a/frontend/src/components/NotificationsButton.vue
+++ b/frontend/src/components/NotificationsButton.vue
@@ -11,10 +11,10 @@
import { MailIcon } from '@heroicons/vue/outline'
import { mapActions, mapState } from 'pinia'
import { markRaw } from 'vue'
-import { mapGetters } from 'vuex'
import NotificationsDrawer from './drawers/notifications/NotificationsDrawer.vue'
+import { useAccountStore } from '@/stores/account.js'
import { useUxDrawersStore } from '@/stores/ux-drawers.js'
export default {
@@ -22,8 +22,7 @@ export default {
components: { MailIcon },
computed: {
...mapState(useUxDrawersStore, ['rightDrawer']),
- ...mapGetters('account', ['hasNotifications']),
- ...mapGetters('account', ['unreadNotificationsCount']),
+ ...mapState(useAccountStore, ['hasNotifications', 'unreadNotificationsCount']),
notificationsCount: function () {
// Return null if count = 0 so we don't show a 0 in the pill
if (!this.unreadNotificationsCount) {
diff --git a/frontend/src/components/PageHeader.vue b/frontend/src/components/PageHeader.vue
index 8ada94fa4d..189c73a0e4 100644
--- a/frontend/src/components/PageHeader.vue
+++ b/frontend/src/components/PageHeader.vue
@@ -104,7 +104,7 @@
import { AcademicCapIcon, AdjustmentsIcon, CogIcon, CursorClickIcon, LogoutIcon, MenuIcon, PlusIcon, QuestionMarkCircleIcon, XIcon } from '@heroicons/vue/solid'
import { mapActions, mapState } from 'pinia'
import { ref } from 'vue'
-import { mapGetters, mapState as mapVuexState } from 'vuex'
+import { mapGetters } from 'vuex'
import usePermissions from '../composables/Permissions.js'
@@ -120,6 +120,8 @@ import TeamSelection from './TeamSelection.vue'
import GlobalSearch from './global-search/GlobalSearch.vue'
import { useAccountAuthStore } from '@/stores/account-auth.js'
+import { useAccountStore } from '@/stores/account.js'
+import { useContextStore } from '@/stores/context.js'
import { useUxDrawersStore } from '@/stores/ux-drawers.js'
import { useUxToursStore } from '@/stores/ux-tours.js'
@@ -132,8 +134,9 @@ export default {
},
...mapState(useUxDrawersStore, ['leftDrawer', 'hiddenLeftDrawer']),
...mapState(useAccountAuthStore, ['user']),
- ...mapVuexState('account', ['team', 'teams']),
- ...mapGetters('account', ['notifications', 'hasAvailableTeams', 'defaultUserTeam', 'canCreateTeam', 'isTrialAccount', 'featuresCheck']),
+ ...mapState(useContextStore, ['team']),
+ ...mapState(useAccountStore, ['teams', 'notifications', 'hasAvailableTeams', 'defaultUserTeam']),
+ ...mapGetters('account', ['canCreateTeam', 'featuresCheck']),
navigationOptions () {
return [
{
diff --git a/frontend/src/components/TeamSelection.vue b/frontend/src/components/TeamSelection.vue
index 45b1f038b3..2b7159e97b 100644
--- a/frontend/src/components/TeamSelection.vue
+++ b/frontend/src/components/TeamSelection.vue
@@ -42,12 +42,16 @@ import {
ListboxOption
} from '@headlessui/vue'
import { PlusIcon, UserAddIcon } from '@heroicons/vue/solid'
-import { mapGetters, mapState } from 'vuex'
+import { mapState } from 'pinia'
+import { mapGetters, mapState as mapVuexState } from 'vuex'
import usePermissions from '../composables/Permissions.js'
import NavItem from './NavItem.vue'
+import { useAccountStore } from '@/stores/account.js'
+import { useContextStore } from '@/stores/context.js'
+
export default {
name: 'FFTeamSelection',
emits: ['option-selected'],
@@ -61,8 +65,10 @@ export default {
return { PlusIcon, UserAddIcon, hasPermission }
},
computed: {
- ...mapState('account', ['team', 'teams', 'settings']),
- ...mapGetters('account', ['hasAvailableTeams', 'canCreateTeam']),
+ ...mapState(useContextStore, ['team']),
+ ...mapState(useAccountStore, ['teams', 'hasAvailableTeams']),
+ ...mapVuexState('account', ['settings']),
+ ...mapGetters('account', ['canCreateTeam']),
teamOptions () {
return [
...this.teams.map(team => {
@@ -101,7 +107,7 @@ export default {
methods: {
selectTeam (team) {
if (team) {
- this.$store.dispatch('account/setTeam', team.slug)
+ useAccountStore().setTeam(team.slug)
.then(() => this.$router.push({
name: 'Team',
params: {
diff --git a/frontend/src/components/TeamTypeTile.vue b/frontend/src/components/TeamTypeTile.vue
index 3bdd13a089..f3ac8fdf42 100644
--- a/frontend/src/components/TeamTypeTile.vue
+++ b/frontend/src/components/TeamTypeTile.vue
@@ -31,11 +31,11 @@
diff --git a/frontend/src/components/banners/TeamTrial.vue b/frontend/src/components/banners/TeamTrial.vue
index 60423e5c60..84fcfaa573 100644
--- a/frontend/src/components/banners/TeamTrial.vue
+++ b/frontend/src/components/banners/TeamTrial.vue
@@ -38,10 +38,12 @@
diff --git a/frontend/src/pages/instance/DuplicateInstance.vue b/frontend/src/pages/instance/DuplicateInstance.vue
index c9fd2bf388..50fc08f81d 100644
--- a/frontend/src/pages/instance/DuplicateInstance.vue
+++ b/frontend/src/pages/instance/DuplicateInstance.vue
@@ -54,11 +54,14 @@