From f71ebb174bdc1af107f3c227a580398e40561f8c Mon Sep 17 00:00:00 2001 From: Jakob Scheid Date: Mon, 20 Jul 2026 17:30:24 +0200 Subject: [PATCH] feat(settings): add settings store --- src/features/settings/stores/settingsStore.js | 42 +++++++++++++++++++ src/main.js | 2 + 2 files changed, 44 insertions(+) create mode 100644 src/features/settings/stores/settingsStore.js diff --git a/src/features/settings/stores/settingsStore.js b/src/features/settings/stores/settingsStore.js new file mode 100644 index 0000000..482268a --- /dev/null +++ b/src/features/settings/stores/settingsStore.js @@ -0,0 +1,42 @@ +/* +Copyright 2026 Seekra + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +import { defineStore } from 'pinia'; +import { reactive } from 'vue'; + +export const useSettingsStore = defineStore('settings', () => { + const settings = reactive({}); + + const set = function set (key, value) { + settings[key] = value; + }; + + const get = function get (key) { + return settings[key]; + }; + + const remove = function remove (key) { + delete settings[key]; + }; + + const clear = function clear () { + Object.keys(settings).forEach(key => delete settings[key]); + }; + + return { set, get, remove, clear, settings }; +}, { + persist: true +}); \ No newline at end of file diff --git a/src/main.js b/src/main.js index 232d94b..fe17cb9 100644 --- a/src/main.js +++ b/src/main.js @@ -16,6 +16,7 @@ limitations under the License. import { createApp } from 'vue' import { createPinia } from 'pinia'; +import piniaPluginPersistedstate from 'pinia-plugin-persistedstate'; import App from './App.vue' import { i18n, loadLanguage } from './i18n'; import getCurrentLanguage from './utils/currentLanguage'; @@ -26,6 +27,7 @@ import './styles/variables/colors.css' await loadLanguage(getCurrentLanguage()); const pinia = createPinia(); +pinia.use(piniaPluginPersistedstate); createApp(App) .use(router)