schon/storefront/app/composables/languages/useLanguage.ts
2026-02-27 21:59:51 +03:00

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 {};
}