diff --git a/package-lock.json b/package-lock.json index c1a108055..343d23645 100644 --- a/package-lock.json +++ b/package-lock.json @@ -24,6 +24,8 @@ "markdown-it": "12.3.2", "markdown-it-decorate": "1.2.2", "openseadragon": "^4.1.0", + "pinia": "2.1.7", + "pinia-plugin-persistedstate": "3.2.1", "socket.io-client": "4.7.5", "svg-overlay": "github:openseadragon/svg-overlay", "uuid": "3.4.0", @@ -37,8 +39,6 @@ "vue-matomo": "^4.2.0", "vue-router": "3.1.5", "vue-slider-component": "^3.1.1", - "vuex": "3.1.2", - "vuex-persistedstate": "2.7.0", "webfontloader": "1.6.28" }, "devDependencies": { @@ -12233,6 +12233,11 @@ "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", "dev": true }, + "node_modules/@vue/devtools-api": { + "version": "6.6.1", + "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.6.1.tgz", + "integrity": "sha512-LgPscpE3Vs0x96PzSSB4IGVSZXZBZHpfxs+ZA1d+VEPwHdOXowy/Y2CsvCAIFrf+ssVU1pD1jidj505EpUnfbA==" + }, "node_modules/@vue/eslint-config-airbnb": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/@vue/eslint-config-airbnb/-/eslint-config-airbnb-5.3.0.tgz", @@ -17045,6 +17050,7 @@ "version": "4.2.2", "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "dev": true, "engines": { "node": ">=0.10.0" } @@ -27916,6 +27922,64 @@ "node": ">=6" } }, + "node_modules/pinia": { + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/pinia/-/pinia-2.1.7.tgz", + "integrity": "sha512-+C2AHFtcFqjPih0zpYuvof37SFxMQ7OEG2zV9jRI12i9BOy3YQVAHwdKtyyc8pDcDyIc33WCIsZaCFWU7WWxGQ==", + "dependencies": { + "@vue/devtools-api": "^6.5.0", + "vue-demi": ">=0.14.5" + }, + "funding": { + "url": "https://github.com/sponsors/posva" + }, + "peerDependencies": { + "@vue/composition-api": "^1.4.0", + "typescript": ">=4.4.4", + "vue": "^2.6.14 || ^3.3.0" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + }, + "typescript": { + "optional": true + } + } + }, + "node_modules/pinia-plugin-persistedstate": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/pinia-plugin-persistedstate/-/pinia-plugin-persistedstate-3.2.1.tgz", + "integrity": "sha512-MK++8LRUsGF7r45PjBFES82ISnPzyO6IZx3CH5vyPseFLZCk1g2kgx6l/nW8pEBKxxd4do0P6bJw+mUSZIEZUQ==", + "peerDependencies": { + "pinia": "^2.0.0" + } + }, + "node_modules/pinia/node_modules/vue-demi": { + "version": "0.14.8", + "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.8.tgz", + "integrity": "sha512-Uuqnk9YE9SsWeReYqK2alDI5YzciATE0r2SkA6iMAtuXvNTMNACJLJEXNXaEy94ECuBe4Sk6RzRU80kjdbIo1Q==", + "hasInstallScript": true, + "bin": { + "vue-demi-fix": "bin/vue-demi-fix.js", + "vue-demi-switch": "bin/vue-demi-switch.js" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@vue/composition-api": "^1.0.0-rc.1", + "vue": "^3.0.0-0 || ^2.6.0" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + } + } + }, "node_modules/pinkie": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", @@ -31955,12 +32019,6 @@ "dev": true, "optional": true }, - "node_modules/shvl": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shvl/-/shvl-2.0.0.tgz", - "integrity": "sha512-WbpzSvI5XgVGJ3A4ySGe8hBxj0JgJktfnoLhhJmvITDdK21WPVWwgG8GPlYEh4xqdti3Ff7PJ5G0QrRAjNS0Ig==", - "deprecated": "older versions vulnerable to prototype pollution" - }, "node_modules/side-channel": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", @@ -33915,7 +33973,7 @@ "version": "4.9.4", "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.4.tgz", "integrity": "sha512-Uz+dTXYzxXXbsFpM86Wh3dKCxrQqUcVMxwU54orwlJjOpO3ao8L7j5lH+dWfTwgCwIuM9GQ2kvVotzYJMXTBZg==", - "dev": true, + "devOptional": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -35005,25 +35063,6 @@ "node": ">=0.10.0" } }, - "node_modules/vuex": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/vuex/-/vuex-3.1.2.tgz", - "integrity": "sha512-ha3jNLJqNhhrAemDXcmMJMKf1Zu4sybMPr9KxJIuOpVcsDQlTBYLLladav2U+g1AvdYDG5Gs0xBTb0M5pXXYFQ==" - }, - "node_modules/vuex-persistedstate": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/vuex-persistedstate/-/vuex-persistedstate-2.7.0.tgz", - "integrity": "sha512-mpko65DUMBY4mF4sSGsgrqjE7fwO373LFZeuNrC55glRuBBAK4dkgzjr4j4Bij7WtMoKuo2t2w0NGenjauISaQ==", - "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", - "dependencies": { - "deepmerge": "^4.2.2", - "shvl": "^2.0.0" - }, - "peerDependencies": { - "vue": "^2.0.0", - "vuex": "^2.0.0 || ^3.0.0" - } - }, "node_modules/w3c-hr-time": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", @@ -45264,6 +45303,11 @@ } } }, + "@vue/devtools-api": { + "version": "6.6.1", + "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.6.1.tgz", + "integrity": "sha512-LgPscpE3Vs0x96PzSSB4IGVSZXZBZHpfxs+ZA1d+VEPwHdOXowy/Y2CsvCAIFrf+ssVU1pD1jidj505EpUnfbA==" + }, "@vue/eslint-config-airbnb": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/@vue/eslint-config-airbnb/-/eslint-config-airbnb-5.3.0.tgz", @@ -49147,7 +49191,8 @@ "deepmerge": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", - "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==" + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "dev": true }, "default-browser-id": { "version": "1.0.4", @@ -57730,6 +57775,29 @@ "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", "dev": true }, + "pinia": { + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/pinia/-/pinia-2.1.7.tgz", + "integrity": "sha512-+C2AHFtcFqjPih0zpYuvof37SFxMQ7OEG2zV9jRI12i9BOy3YQVAHwdKtyyc8pDcDyIc33WCIsZaCFWU7WWxGQ==", + "requires": { + "@vue/devtools-api": "^6.5.0", + "vue-demi": ">=0.14.5" + }, + "dependencies": { + "vue-demi": { + "version": "0.14.8", + "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.8.tgz", + "integrity": "sha512-Uuqnk9YE9SsWeReYqK2alDI5YzciATE0r2SkA6iMAtuXvNTMNACJLJEXNXaEy94ECuBe4Sk6RzRU80kjdbIo1Q==", + "requires": {} + } + } + }, + "pinia-plugin-persistedstate": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/pinia-plugin-persistedstate/-/pinia-plugin-persistedstate-3.2.1.tgz", + "integrity": "sha512-MK++8LRUsGF7r45PjBFES82ISnPzyO6IZx3CH5vyPseFLZCk1g2kgx6l/nW8pEBKxxd4do0P6bJw+mUSZIEZUQ==", + "requires": {} + }, "pinkie": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", @@ -60863,11 +60931,6 @@ "dev": true, "optional": true }, - "shvl": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shvl/-/shvl-2.0.0.tgz", - "integrity": "sha512-WbpzSvI5XgVGJ3A4ySGe8hBxj0JgJktfnoLhhJmvITDdK21WPVWwgG8GPlYEh4xqdti3Ff7PJ5G0QrRAjNS0Ig==" - }, "side-channel": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", @@ -62436,7 +62499,7 @@ "version": "4.9.4", "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.4.tgz", "integrity": "sha512-Uz+dTXYzxXXbsFpM86Wh3dKCxrQqUcVMxwU54orwlJjOpO3ao8L7j5lH+dWfTwgCwIuM9GQ2kvVotzYJMXTBZg==", - "dev": true + "devOptional": true }, "uberproto": { "version": "2.0.6", @@ -63259,20 +63322,6 @@ "integrity": "sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw==", "dev": true }, - "vuex": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/vuex/-/vuex-3.1.2.tgz", - "integrity": "sha512-ha3jNLJqNhhrAemDXcmMJMKf1Zu4sybMPr9KxJIuOpVcsDQlTBYLLladav2U+g1AvdYDG5Gs0xBTb0M5pXXYFQ==" - }, - "vuex-persistedstate": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/vuex-persistedstate/-/vuex-persistedstate-2.7.0.tgz", - "integrity": "sha512-mpko65DUMBY4mF4sSGsgrqjE7fwO373LFZeuNrC55glRuBBAK4dkgzjr4j4Bij7WtMoKuo2t2w0NGenjauISaQ==", - "requires": { - "deepmerge": "^4.2.2", - "shvl": "^2.0.0" - } - }, "w3c-hr-time": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", diff --git a/package.json b/package.json index 04e70850b..43ee2be85 100644 --- a/package.json +++ b/package.json @@ -49,9 +49,9 @@ "vue-matomo": "^4.2.0", "vue-router": "3.1.5", "vue-slider-component": "^3.1.1", - "vuex": "3.1.2", - "vuex-persistedstate": "2.7.0", - "webfontloader": "1.6.28" + "webfontloader": "1.6.28", + "pinia": "2.1.7", + "pinia-plugin-persistedstate": "3.2.1" }, "devDependencies": { "@babel/core": "^7.20.7", diff --git a/src/App.vue b/src/App.vue index 7e8aabbc4..3e5c23167 100644 --- a/src/App.vue +++ b/src/App.vue @@ -43,6 +43,10 @@ import { CommonQueryParameters } from './router/util' import { joinFiltersWithItems, optimizeFilters, serializeFilters } from './logic/filters' import { searchQueryGetter } from './logic/queryParams' import { filtersItems } from './services' +import { mapStores } from 'pinia' +import { useSettingsStore } from '@/stores/settings' +import { useUserStore } from '@/stores/user' +import { useNotificationsStore } from '@/stores/notifications' export default { name: 'app', @@ -71,6 +75,7 @@ export default { }, }, computed: { + ...mapStores(useSettingsStore, useUserStore, useNotificationsStore), searchQuery: { ...searchQueryGetter(), }, @@ -80,14 +85,14 @@ export default { return this.searchQuery.filters }, termsAgreed() { - console.info('Terms agreement:', this.$store.state.settings.termsAgreed) - if (this.$store.state.user.userData) { + console.info('Terms agreement:', this.settingsStore.termsAgreed) + if (this.userStore.userData) { return true } - return this.$store.state.settings.termsAgreed + return this.settingsStore.termsAgreed }, is_locked() { - return this.$store.state.processingLocked + return this.notificationsStore.processingLocked }, }, methods: { diff --git a/src/components/Autocomplete.vue b/src/components/Autocomplete.vue index 3aea7e44c..3d9b88104 100644 --- a/src/components/Autocomplete.vue +++ b/src/components/Autocomplete.vue @@ -106,7 +106,10 @@ diff --git a/src/components/modals/CookieDisclaimer.vue b/src/components/modals/CookieDisclaimer.vue index 348b503b8..315b91b4c 100644 --- a/src/components/modals/CookieDisclaimer.vue +++ b/src/components/modals/CookieDisclaimer.vue @@ -11,10 +11,13 @@ diff --git a/src/components/modules/CollectionAddTo.vue b/src/components/modules/CollectionAddTo.vue index d97f0d9e5..99aa89a26 100644 --- a/src/components/modules/CollectionAddTo.vue +++ b/src/components/modules/CollectionAddTo.vue @@ -21,7 +21,10 @@ diff --git a/src/components/modules/CollectionAddToList.vue b/src/components/modules/CollectionAddToList.vue index 58db13a9c..fad840706 100644 --- a/src/components/modules/CollectionAddToList.vue +++ b/src/components/modules/CollectionAddToList.vue @@ -70,6 +70,10 @@ diff --git a/src/components/modules/SearchResultsListItem.vue b/src/components/modules/SearchResultsListItem.vue index 4904a3b00..47a6fd01a 100644 --- a/src/components/modules/SearchResultsListItem.vue +++ b/src/components/modules/SearchResultsListItem.vue @@ -109,11 +109,14 @@