Skip to content

Commit 50c9553

Browse files
committed
add persistent pinia store
1 parent 324b2e1 commit 50c9553

3 files changed

Lines changed: 22 additions & 14 deletions

File tree

README.md

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,9 @@ npx nuxi info
4040

4141
## Updates
4242

43-
* Added Vuetify, Pinia store and ToggleDarkMode component
43+
* Add persistent Pinia store
4444

4545
* Issue resolved! The problem stemmed from an outdated version of Vue Devtools that Google Chrome and Brave had detected. The solution was to download and install the extension directly from the official website: https://devtools.vuejs.org/guide/installation.html
46+
47+
* Added Vuetify, Pinia store and ToggleDarkMode component
48+

components/ToggleDarkMode.vue

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,20 @@
11
<script lang="ts" setup>
2-
import {useTheme} from "vuetify";
3-
import {useMainStore} from "~/stores/main";
2+
import { useTheme } from "vuetify";
3+
import { useMainStore } from "~/stores/main";
44
55
const theme = useTheme();
66
const store = useMainStore();
7-
const {darkMode} = toRefs(store);
7+
8+
const { darkMode } = toRefs(store);
89
910
function toggleTheme() {
10-
store.toggleDarkMode(theme);
11+
store.toggleDarkMode();
12+
theme.global.name.value = darkMode.value ? "dark" : "light";
1113
}
14+
15+
onMounted(() => {
16+
theme.global.name.value = darkMode.value ? "dark" : "light";
17+
});
1218
</script>
1319

1420
<template>

stores/main.ts

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,21 @@
1-
import {defineStore} from 'pinia'
1+
import { defineStore } from 'pinia';
22

33
export const useMainStore = defineStore('main', () => {
44
const darkMode = ref(true);
55

6-
const currentTheme = computed(() => {
7-
return darkMode.value ? 'dark' : 'light';
8-
});
6+
console.log('isServer', typeof window === 'undefined');
97

10-
11-
function toggleDarkMode(theme: { global: { name: { value: string; }; }; }) {
8+
function toggleDarkMode () {
129
darkMode.value = !darkMode.value;
13-
theme.global.name.value = currentTheme.value
1410
}
1511

1612
return {
17-
currentTheme,
1813
darkMode,
1914
toggleDarkMode,
2015
};
21-
}, {persist: true});
16+
}, {
17+
persist: {
18+
storage: persistedState.localStorage,
19+
}
20+
});
2221

0 commit comments

Comments
 (0)