import {NEW_PASSWORD} from "@/graphql/mutations/auth.js"; import {isGraphQLError} from "~/utils/error"; import type {INewPasswordResponse} from "~/types"; import { useRouteQuery } from '@vueuse/router'; import {useNotification} from "~/composables/notification"; export function useNewPassword() { const {t} = useI18n(); const router = useRouter(); const appStore = useAppStore(); const token = useRouteQuery('token', ''); const uid = useRouteQuery('uid', ''); const { mutate, loading, error } = useMutation(NEW_PASSWORD); async function newPassword( password: string, confirmPassword: string ) { const result = await mutate({ password, confirmPassword, token: token.value, uid: uid.value }); if (result?.data?.confirmResetPassword.success) { useNotification( t('popup.success.newPassword'), 'success' ); await router.push({path: '/'}) appStore.unsetActiveState(); } } watch(error, (err) => { if (!err) return; console.error('useNewPassword error:', err); let message = t('popup.errors.defaultError'); if (isGraphQLError(err)) { message = err.graphQLErrors?.[0]?.message || message; } else { message = err.message; } useNotification( message, 'error', t('popup.errors.main') ); }); return { newPassword, loading }; }