37 lines
1.1 KiB
TypeScript
37 lines
1.1 KiB
TypeScript
import { DEFAULT_LOCALE, SUPPORTED_LOCALES } from '@appConstants';
|
|
import { GET_LANGUAGES } from '@graphql/queries/standalone/languages.js';
|
|
import type { ILanguage, ILanguagesResponse } from '@types';
|
|
|
|
export async function useLanguages() {
|
|
const languageStore = useLanguageStore();
|
|
const { $appHelpers } = useNuxtApp();
|
|
|
|
const cookieLocale = useCookie($appHelpers.COOKIES_LOCALE_KEY, {
|
|
default: () => DEFAULT_LOCALE,
|
|
path: '/',
|
|
});
|
|
|
|
const { data, error } = await useAsyncQuery<ILanguagesResponse>(GET_LANGUAGES);
|
|
|
|
if (!error.value && data.value?.languages) {
|
|
const filteredLanguages = data.value.languages.filter((locale: ILanguage) =>
|
|
SUPPORTED_LOCALES.some((supportedLocale) => supportedLocale.code === locale.code),
|
|
);
|
|
|
|
languageStore.setLanguages(filteredLanguages);
|
|
|
|
const currentLocale = filteredLanguages.find((locale) => locale.code === cookieLocale.value);
|
|
|
|
if (currentLocale) {
|
|
languageStore.setCurrentLocale(currentLocale);
|
|
}
|
|
}
|
|
|
|
watch(error, (err) => {
|
|
if (err) {
|
|
console.error('useLanguage error:', err);
|
|
}
|
|
});
|
|
|
|
return {};
|
|
}
|