make darkmode persistent close #15

This commit is contained in:
Adrian Zürcher
2025-11-11 16:04:55 +01:00
parent 829dc074e2
commit b844f487bc
2 changed files with 24 additions and 6 deletions

View File

@@ -3,12 +3,17 @@ import { setQuasarInstance } from 'src/vueLib/utils/globalQ';
import { setRouterInstance } from 'src/vueLib/utils/globalRouter'; import { setRouterInstance } from 'src/vueLib/utils/globalRouter';
import { databaseName } from 'src/vueLib/tables/members/MembersTable'; import { databaseName } from 'src/vueLib/tables/members/MembersTable';
import { Logo } from 'src/vueLib/models/logo'; import { Logo } from 'src/vueLib/models/logo';
import { Dark } from 'quasar';
export default boot(({ app, router }) => { export default boot(({ app, router }) => {
setRouterInstance(router); // store router for global access setRouterInstance(router); // store router for global access
const $q = app.config.globalProperties.$q; const $q = app.config.globalProperties.$q;
setQuasarInstance($q); setQuasarInstance($q);
console.log(99, localStorage.getItem('mode'));
Dark.set(localStorage.getItem('mode') === 'true');
Logo.value = localStorage.getItem('icon') ?? Logo.value; Logo.value = localStorage.getItem('icon') ?? Logo.value;
databaseName.value = localStorage.getItem('databaseName') ?? databaseName.value; databaseName.value = localStorage.getItem('databaseName') ?? databaseName.value;
let primaryColor = localStorage.getItem('primaryColor'); let primaryColor = localStorage.getItem('primaryColor');

View File

@@ -8,7 +8,7 @@
<q-item-section class="text-primary">{{ loginText }}</q-item-section> <q-item-section class="text-primary">{{ loginText }}</q-item-section>
</q-item> </q-item>
<q-item> <q-item>
<q-btn flat :icon="Dark.mode ? 'light_mode' : 'dark_mode'" @click="Dark.toggle"></q-btn> <q-btn flat :icon="darkMode" @click="toggleDarkMode"></q-btn>
</q-item> </q-item>
<q-item> <q-item>
<q-select <q-select
@@ -54,21 +54,34 @@ import { useLogin } from './useLogin';
const userLogin = useLogin(); const userLogin = useLogin();
const route = useRoute(); const route = useRoute();
const refLoginDialog = ref();
const user = useUserStore();
const { NotifyResponse } = useNotify();
const currentUser = computed(() => user.user);
const darkMode = computed(() => {
if (Dark.mode) {
return 'light_mode';
}
return 'dark_mode';
});
const showLogin = computed( const showLogin = computed(
() => (route.path !== '/' && route.path !== '/login') || currentUser.value?.username === '', () => (route.path !== '/' && route.path !== '/login') || currentUser.value?.username === '',
); );
const user = useUserStore();
const autorized = computed(() => !!user.isAuthorizedAs(['admin'])); const autorized = computed(() => !!user.isAuthorizedAs(['admin']));
const { NotifyResponse } = useNotify();
const currentUser = computed(() => user.user);
// switch between logged in or logged out text
const loginText = computed(() => { const loginText = computed(() => {
return currentUser.value ? 'Logout' : 'Login'; return currentUser.value ? i18n.global.t('logout') : i18n.global.t('login');
}); });
const refLoginDialog = ref(); //switch between dark and light mode and save it in localStorage
function toggleDarkMode() {
Dark.toggle();
localStorage.setItem('mode', String(Dark.mode));
}
// opens login page if no user is logged in otherwise it serves as logout
function openLogin() { function openLogin() {
if (currentUser.value) { if (currentUser.value) {
userLogin.logout().catch((err) => NotifyResponse(err, 'error')); userLogin.logout().catch((err) => NotifyResponse(err, 'error'));