import {SWITCH_LANGUAGE} from "@/graphql/mutations/languages.js"; import {useAppConfig} from "~/composables/config"; import type {IUserResponse, LocaleDefinition} from "~/types"; import {DEFAULT_LOCALE} from "@intlify/core-base"; export function useLanguageSwitch() { const userStore = useUserStore(); const router = useRouter(); const { COOKIES_LOCALE_KEY } = useAppConfig(); const switchLocalePath = useSwitchLocalePath(); const cookieLocale = useCookie( COOKIES_LOCALE_KEY, { default: () => DEFAULT_LOCALE, path: '/' } ); const isAuthenticated = computed(() => userStore.isAuthenticated) const userUuid = computed(() => userStore.user?.uuid); const { mutate, loading, error } = useMutation(SWITCH_LANGUAGE); async function switchLanguage( locale: string ) { cookieLocale.value = locale; await router.push({path: switchLocalePath(cookieLocale.value as LocaleDefinition['code'])}) if (isAuthenticated.value) { const result = await mutate({ uuid: userUuid.value, locale }); if (result?.data?.updateUser) { userStore.setUser(result.data.updateUser.user) } } } watch(error, (err) => { if (err) { console.error('useLanguageSwitch error:', err) } }); return { switchLanguage, loading }; }