37 lines
904 B
TypeScript
37 lines
904 B
TypeScript
import { DEFAULT_LOCALE } from '@appConstants';
|
|
import type { ILanguage } from '@types';
|
|
|
|
export const useLanguageStore = defineStore('language', () => {
|
|
const { $appHelpers } = useNuxtApp();
|
|
|
|
const cookieLocale = useCookie($appHelpers.COOKIES_LOCALE_KEY, {
|
|
default: () => DEFAULT_LOCALE,
|
|
path: '/',
|
|
});
|
|
|
|
const localeFromCookies = computed(() => cookieLocale.value);
|
|
|
|
const languages = ref<ILanguage[] | null>(null);
|
|
const setLanguages = (payload: ILanguage[]) => {
|
|
languages.value = payload;
|
|
};
|
|
|
|
const currentLocale = ref<ILanguage | null>(null);
|
|
const setCurrentLocale = (payload: ILanguage | null) => {
|
|
currentLocale.value = payload;
|
|
};
|
|
|
|
watch(
|
|
() => localeFromCookies.value,
|
|
() => {
|
|
setCurrentLocale(languages.value?.find((l) => l.code === localeFromCookies.value) as ILanguage);
|
|
},
|
|
);
|
|
|
|
return {
|
|
languages,
|
|
setLanguages,
|
|
currentLocale,
|
|
setCurrentLocale,
|
|
};
|
|
});
|