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 authStore = useAuthStore();
const generalStore = useGeneralStore();
const globalStore = useGlobalStore();
type SetupError = {
title: string;
message: string;
};
const lang = ref('');
const lang = ref('en'); // default
const username = ref<null | string>(null);
const password = ref<null | string>(null);
@ -132,6 +132,7 @@ watch(setupError, (value) => {
function updateLang(value: string) {
lang.value = value;
// TODO: if the translation does not exist, it shows the key
setLocale(lang.value);
}
@ -139,7 +140,7 @@ async function increaseStep() {
try {
if (step.value === 1) {
// TODO: handle error
await generalStore.updateLanguage(lang.value);
await globalStore.updateLang(lang.value);
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;
});
/**
* @throws if unsuccessful
*/
async function updateLang(language: string) {
const response = await api.updateLang({ lang: language });
return response.success;
}
return {
uiShowCharts,
updateCharts,
@ -88,5 +96,6 @@ export const useGlobalStore = defineStore('Global', () => {
fetchFeatures,
setLanguage,
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', {
method: 'post',
body: { lang },

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

@ -1,7 +1,7 @@
export default defineEventHandler(async (event) => {
const { lang } = await readValidatedBody(event, validateZod(langType));
setHeader(event, 'Content-Type', 'application/json');
await Database.system.updateLanguage(lang);
SERVER_DEBUG(`Update Language: ${lang}`);
await Database.system.updateLang(lang);
SERVER_DEBUG(`Update Lang: ${lang}`);
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');
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 updateStatistics(statistics: Statistics): Promise<void>;
abstract updateLanguage(language: Lang): Promise<void>;
abstract updateLang(lang: Lang): Promise<void>;
}

Loading…
Cancel
Save