Browse Source

fix: use global store

pull/1397/head
tetuaoro 7 months ago
committed by Bernd Storath
parent
commit
976c5e4062
  1. 7
      src/app/pages/setup.vue
  2. 11
      src/app/stores/general.ts
  3. 9
      src/app/stores/global.ts
  4. 2
      src/app/utils/api.ts
  5. 4
      src/server/api/lang.post.ts
  6. 4
      src/services/database/lowdb.ts
  7. 2
      src/services/database/repositories/system.ts

7
src/app/pages/setup.vue

@ -104,14 +104,14 @@ import { FetchError } from 'ofetch';
const { t, setLocale } = useI18n(); const { t, setLocale } = useI18n();
const authStore = useAuthStore(); const authStore = useAuthStore();
const generalStore = useGeneralStore(); const globalStore = useGlobalStore();
type SetupError = { type SetupError = {
title: string; title: string;
message: string; message: string;
}; };
const lang = ref(''); const lang = ref('en'); // default
const username = ref<null | string>(null); const username = ref<null | string>(null);
const password = ref<null | string>(null); const password = ref<null | string>(null);
@ -132,6 +132,7 @@ watch(setupError, (value) => {
function updateLang(value: string) { function updateLang(value: string) {
lang.value = value; lang.value = value;
// TODO: if the translation does not exist, it shows the key
setLocale(lang.value); setLocale(lang.value);
} }
@ -139,7 +140,7 @@ async function increaseStep() {
try { try {
if (step.value === 1) { if (step.value === 1) {
// TODO: handle error // TODO: handle error
await generalStore.updateLanguage(lang.value); await globalStore.updateLang(lang.value);
stepInvalide.value.push(1); stepInvalide.value.push(1);
} }

11
src/app/stores/general.ts

@ -1,11 +0,0 @@
export const useGeneralStore = defineStore('General', () => {
/**
* @throws if unsuccessful
*/
async function updateLanguage(language: string) {
const response = await api.updateLanguage({ lang: language });
return response.success;
}
return { updateLanguage };
});

9
src/app/stores/global.ts

@ -75,6 +75,14 @@ export const useGlobalStore = defineStore('Global', () => {
return statistics.value.chartType > 0 && uiShowCharts.value; return statistics.value.chartType > 0 && uiShowCharts.value;
}); });
/**
* @throws if unsuccessful
*/
async function updateLang(language: string) {
const response = await api.updateLang({ lang: language });
return response.success;
}
return { return {
uiShowCharts, uiShowCharts,
updateCharts, updateCharts,
@ -88,5 +96,6 @@ export const useGlobalStore = defineStore('Global', () => {
fetchFeatures, fetchFeatures,
setLanguage, setLanguage,
fetchStatistics, fetchStatistics,
updateLang,
}; };
}); });

2
src/app/utils/api.ts

@ -130,7 +130,7 @@ class API {
}); });
} }
async updateLanguage({ lang }: { lang: string }) { async updateLang({ lang }: { lang: string }) {
return $fetch('/api/lang', { return $fetch('/api/lang', {
method: 'post', method: 'post',
body: { lang }, body: { lang },

4
src/server/api/lang.post.ts

@ -1,7 +1,7 @@
export default defineEventHandler(async (event) => { export default defineEventHandler(async (event) => {
const { lang } = await readValidatedBody(event, validateZod(langType)); const { lang } = await readValidatedBody(event, validateZod(langType));
setHeader(event, 'Content-Type', 'application/json'); setHeader(event, 'Content-Type', 'application/json');
await Database.system.updateLanguage(lang); await Database.system.updateLang(lang);
SERVER_DEBUG(`Update Language: ${lang}`); SERVER_DEBUG(`Update Lang: ${lang}`);
return { success: true }; return { success: true };
}); });

4
src/services/database/lowdb.ts

@ -71,10 +71,10 @@ export class LowDBSystem extends SystemRepository {
}); });
} }
async updateLanguage(language: Lang): Promise<void> { async updateLang(lang: Lang): Promise<void> {
DEBUG('Update Language'); DEBUG('Update Language');
this.#db.update((v) => { this.#db.update((v) => {
v.system.general.lang = language; v.system.general.lang = lang;
}); });
} }
} }

2
src/services/database/repositories/system.ts

@ -107,5 +107,5 @@ export abstract class SystemRepository {
abstract updateFeatures(features: Record<string, Feature>): Promise<void>; abstract updateFeatures(features: Record<string, Feature>): Promise<void>;
abstract updateStatistics(statistics: Statistics): Promise<void>; abstract updateStatistics(statistics: Statistics): Promise<void>;
abstract updateLanguage(language: Lang): Promise<void>; abstract updateLang(lang: Lang): Promise<void>;
} }

Loading…
Cancel
Save