From 4d6f41b28d7d8c4e72d0d664bc482f1a6487b49b Mon Sep 17 00:00:00 2001 From: Alexandr Nelyubov Date: Sat, 6 Jun 2026 16:30:39 +0300 Subject: [PATCH 1/6] refactor(useResetPasasword): unificate mutation hook --- .../forgot-password/model/useResetPassword.ts | 19 +++++++------------ .../auth/forgot-password/ui/EmailForm.tsx | 19 +++++++++++-------- .../forgot-password/ui/ForgotPasswordPage.tsx | 6 +++++- 3 files changed, 23 insertions(+), 21 deletions(-) diff --git a/src/pages/auth/forgot-password/model/useResetPassword.ts b/src/pages/auth/forgot-password/model/useResetPassword.ts index 91c0388..e164247 100644 --- a/src/pages/auth/forgot-password/model/useResetPassword.ts +++ b/src/pages/auth/forgot-password/model/useResetPassword.ts @@ -1,23 +1,18 @@ -import { type DefaultError, useMutation } from '@tanstack/react-query'; +import { type DefaultError, useMutation, UseMutationOptions } from '@tanstack/react-query'; import { AuthHttp, TAuth } from 'entities/auth'; -interface ResetPasswordProps { - onSuccess?: (body: TAuth.ResetPasswordBody, res: TAuth.ResetPasswordResponse) => void; - onError?: (err: Error) => void; -} +export type UseResetePasswordOptions = Omit< + UseMutationOptions, + 'mutationFn' +>; -export function useResetPassword({ onSuccess, onError }: ResetPasswordProps = {}) { +export function useResetPassword(props: UseResetePasswordOptions = {}) { return useMutation, DefaultError, TAuth.ResetPasswordBody>({ mutationKey: [], mutationFn: AuthHttp.resetPassword, meta: { skipGlobalValidationToast: true, }, - onError: (err) => { - onError?.(err); - }, - onSuccess: (res, body) => { - onSuccess?.(body, res); - }, + ...props, }); } diff --git a/src/pages/auth/forgot-password/ui/EmailForm.tsx b/src/pages/auth/forgot-password/ui/EmailForm.tsx index 718c078..3841161 100644 --- a/src/pages/auth/forgot-password/ui/EmailForm.tsx +++ b/src/pages/auth/forgot-password/ui/EmailForm.tsx @@ -18,16 +18,16 @@ import { Controller, useForm } from 'react-hook-form'; import { zodResolver } from '@hookform/resolvers/zod'; import type { EmailFormValues } from '../model/types'; import { EmailForm as EmailFormSchema } from '../model/schemas'; -import { ComponentProps } from 'react'; -import { useResetPassword } from '../model/useResetPassword'; +import { UseResetePasswordOptions, useResetPassword } from '../model/useResetPassword'; import { setFormErrors } from 'shared/lib/utils'; import { extractValidationIssues } from 'shared/api'; +import { ComponentProps } from 'react'; -interface EmailFormProps extends Omit, 'children' | 'onSubmit'> { - onSuccess?: (body: TAuth.ResetPasswordBody, res: TAuth.ResetPasswordResponse) => void; -} +type EmailFormProps = Omit, 'children' | 'onSubmit'> & { + mutateOptions: UseResetePasswordOptions; +}; -function EmailForm({ onSuccess, ...props }: EmailFormProps) { +function EmailForm({ mutateOptions = {}, ...props }: EmailFormProps) { const form = useForm({ resolver: zodResolver(EmailFormSchema), defaultValues: { @@ -36,8 +36,11 @@ function EmailForm({ onSuccess, ...props }: EmailFormProps) { }); const resetPassword = useResetPassword({ - onSuccess, - onError: (err) => setFormErrors(extractValidationIssues(err), form), + ...mutateOptions, + onError: (err, ...args) => { + mutateOptions.onError?.(err, ...args); + setFormErrors(extractValidationIssues(err), form); + }, }); const onSubmit = (data: EmailFormValues) => { diff --git a/src/pages/auth/forgot-password/ui/ForgotPasswordPage.tsx b/src/pages/auth/forgot-password/ui/ForgotPasswordPage.tsx index 69205f4..56cbd39 100644 --- a/src/pages/auth/forgot-password/ui/ForgotPasswordPage.tsx +++ b/src/pages/auth/forgot-password/ui/ForgotPasswordPage.tsx @@ -47,7 +47,11 @@ function ForgotPasswordPage() { {step === 'email' ? ( - setDraft({ email, step: 'otp' }, DRAFT_TTL_MS)} /> + setDraft({ email, step: 'otp' }, DRAFT_TTL_MS), + }} + /> ) : null} {step === 'otp' && ( Date: Sat, 6 Jun 2026 16:40:51 +0300 Subject: [PATCH 2/6] refactor(useSendCode): unificate mutation hook --- .../auth/forgot-password/model/useSendCode.ts | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/pages/auth/forgot-password/model/useSendCode.ts b/src/pages/auth/forgot-password/model/useSendCode.ts index 39f5611..ade02e2 100644 --- a/src/pages/auth/forgot-password/model/useSendCode.ts +++ b/src/pages/auth/forgot-password/model/useSendCode.ts @@ -1,7 +1,16 @@ -import { type DefaultError, useMutation } from '@tanstack/react-query'; +import { type DefaultError, useMutation, UseMutationOptions } from '@tanstack/react-query'; import { AuthHttp, TAuth } from 'entities/auth'; -export function useSendCode() { +export type UseSendCodeOptions = Omit< + UseMutationOptions< + TAuth.ResetPasswordVerifyResponse, + DefaultError, + TAuth.ResetPasswordVerifyBody + >, + 'mutationFn' +>; + +export function useSendCode(props: UseSendCodeOptions = {}) { return useMutation< Awaited, DefaultError, @@ -12,5 +21,6 @@ export function useSendCode() { meta: { skipGlobalValidationToast: true, }, + ...props, }); } From 6e0f83c78a4d11188365b3bdbcfeeaf14fbde6d1 Mon Sep 17 00:00:00 2001 From: Alexandr Nelyubov Date: Sat, 6 Jun 2026 17:01:13 +0300 Subject: [PATCH 3/6] refactor(useSendPassword): unificate mutation hook --- .../forgot-password/model/useSendPassword.ts | 26 ++++++++----------- .../forgot-password/ui/ForgotPasswordPage.tsx | 10 ++++--- .../auth/forgot-password/ui/PasswordForm.tsx | 16 ++++++------ 3 files changed, 25 insertions(+), 27 deletions(-) diff --git a/src/pages/auth/forgot-password/model/useSendPassword.ts b/src/pages/auth/forgot-password/model/useSendPassword.ts index 07823b5..e1bbc35 100644 --- a/src/pages/auth/forgot-password/model/useSendPassword.ts +++ b/src/pages/auth/forgot-password/model/useSendPassword.ts @@ -1,15 +1,16 @@ -import { type DefaultError, useMutation } from '@tanstack/react-query'; +import { type DefaultError, useMutation, UseMutationOptions } from '@tanstack/react-query'; import { AuthHttp, TAuth } from 'entities/auth'; -interface SendPasswordProps { - onSuccess?: ( - body: TAuth.ResetPasswordConfirmBody, - res: TAuth.ResetPasswordConfirmResponse - ) => void; - onError?: (err: Error) => void; -} +export type UseSendPasswordOptions = Omit< + UseMutationOptions< + TAuth.ResetPasswordConfirmResponse, + DefaultError, + TAuth.ResetPasswordConfirmBody + >, + 'mutationFn' +>; -export function useSendPassword({ onSuccess, onError }: SendPasswordProps = {}) { +export function useSendPassword(props: UseSendPasswordOptions = {}) { return useMutation< Awaited, DefaultError, @@ -20,11 +21,6 @@ export function useSendPassword({ onSuccess, onError }: SendPasswordProps = {}) meta: { skipGlobalValidationToast: true, }, - onError: (err) => { - onError?.(err); - }, - onSuccess: (res, body) => { - onSuccess?.(body, res); - }, + ...props, }); } diff --git a/src/pages/auth/forgot-password/ui/ForgotPasswordPage.tsx b/src/pages/auth/forgot-password/ui/ForgotPasswordPage.tsx index 56cbd39..5aae267 100644 --- a/src/pages/auth/forgot-password/ui/ForgotPasswordPage.tsx +++ b/src/pages/auth/forgot-password/ui/ForgotPasswordPage.tsx @@ -68,10 +68,12 @@ function ForgotPasswordPage() { {step === 'password' && ( { - clearDraft(); - router.replace(routes.auth.signin()); - toast.success(res.message); + mutateOptions={{ + onSuccess: (res) => { + clearDraft(); + router.replace(routes.auth.signin()); + toast.success(res.message); + }, }} /> )} diff --git a/src/pages/auth/forgot-password/ui/PasswordForm.tsx b/src/pages/auth/forgot-password/ui/PasswordForm.tsx index 9767347..8c34ec2 100644 --- a/src/pages/auth/forgot-password/ui/PasswordForm.tsx +++ b/src/pages/auth/forgot-password/ui/PasswordForm.tsx @@ -21,22 +21,22 @@ import { setFormErrors } from 'shared/lib/utils'; import { extractValidationIssues } from 'shared/api'; import { PasswordForm as PasswordFormSchema } from '../model/schemas'; import type { PasswordFormValues } from '../model/types'; -import { useSendPassword } from '../model/useSendPassword'; +import { useSendPassword, UseSendPasswordOptions } from '../model/useSendPassword'; interface PasswordFormProps extends Omit, 'children' | 'onSubmit'> { - onSuccess?: ( - body: TAuth.ResetPasswordConfirmBody, - res: TAuth.ResetPasswordConfirmResponse - ) => void; + mutateOptions: UseSendPasswordOptions; email: string; } -function PasswordForm({ onSuccess, email, ...props }: PasswordFormProps) { +function PasswordForm({ mutateOptions, email, ...props }: PasswordFormProps) { const [showPassword, setShowPassword] = useState(false); const sendPassword = useSendPassword({ - onSuccess, - onError: (err) => setFormErrors(extractValidationIssues(err), form), + ...mutateOptions, + onError: (err, ...args) => { + mutateOptions.onError?.(err, ...args); + setFormErrors(extractValidationIssues(err), form); + }, }); const form = useForm({ From e63305763d560b90e1cf9119c62fc282983f066e Mon Sep 17 00:00:00 2001 From: Alexandr Nelyubov Date: Sat, 6 Jun 2026 17:08:00 +0300 Subject: [PATCH 4/6] refactor(useSignIn): unificate mutation hook --- src/pages/auth/signin/model/useSignin.ts | 19 +++++++------------ src/pages/auth/signin/ui/SigninForm.tsx | 11 ++++++----- src/pages/auth/signin/ui/SigninPage.tsx | 16 +++++++++------- 3 files changed, 22 insertions(+), 24 deletions(-) diff --git a/src/pages/auth/signin/model/useSignin.ts b/src/pages/auth/signin/model/useSignin.ts index 3d1046d..8fb31ad 100644 --- a/src/pages/auth/signin/model/useSignin.ts +++ b/src/pages/auth/signin/model/useSignin.ts @@ -1,22 +1,17 @@ -import { type DefaultError, useMutation } from '@tanstack/react-query'; +import { type DefaultError, useMutation, UseMutationOptions } from '@tanstack/react-query'; import { AuthHttp, TAuth } from 'entities/auth'; -interface UseSigninProps { - onSuccess?: (body: TAuth.SigninBody, res: TAuth.SigninResponse) => void; - onError?: (err: Error) => void; -} +export type UseSigninOptions = Omit< + UseMutationOptions, + 'mutationFn' +>; -export function useSignin({ onSuccess, onError }: UseSigninProps = {}) { +export function useSignin(props: UseSigninOptions = {}) { return useMutation, DefaultError, TAuth.SigninBody>({ mutationFn: AuthHttp.signin, meta: { skipGlobalValidationToast: true, }, - onError: (err) => { - onError?.(err); - }, - onSuccess: (res, body) => { - onSuccess?.(body, res); - }, + ...props, }); } diff --git a/src/pages/auth/signin/ui/SigninForm.tsx b/src/pages/auth/signin/ui/SigninForm.tsx index c55e811..a004d37 100644 --- a/src/pages/auth/signin/ui/SigninForm.tsx +++ b/src/pages/auth/signin/ui/SigninForm.tsx @@ -25,13 +25,13 @@ import { routes } from 'shared/config'; import { extractValidationIssues } from 'shared/api'; import { TAuth } from 'entities/auth'; import { ComponentProps } from 'react'; -import { useSignin } from '../model/useSignin'; +import { useSignin, UseSigninOptions } from '../model/useSignin'; interface SigninFormProps extends Omit, 'children' | 'onSubmit'> { - onSuccess?: (body: TAuth.SigninBody, res: TAuth.SigninResponse) => void; + mutateOptions?: UseSigninOptions; } -export function SigninForm({ className, onSuccess, ...props }: SigninFormProps) { +export function SigninForm({ className, mutateOptions = {}, ...props }: SigninFormProps) { const form = useForm({ resolver: zodResolver(SigninFormSchema), defaultValues: { @@ -41,8 +41,9 @@ export function SigninForm({ className, onSuccess, ...props }: SigninFormProps) }); const sendUserData = useSignin({ - onSuccess, - onError: (err) => { + ...mutateOptions, + onError: (err, ...args) => { + mutateOptions.onError?.(err, ...args); setFormErrors(extractValidationIssues(err), form); }, }); diff --git a/src/pages/auth/signin/ui/SigninPage.tsx b/src/pages/auth/signin/ui/SigninPage.tsx index 81b8566..9490e3f 100644 --- a/src/pages/auth/signin/ui/SigninPage.tsx +++ b/src/pages/auth/signin/ui/SigninPage.tsx @@ -18,14 +18,16 @@ function SigninPage() { { - if (res.success) { - AccessToken.token = res.token; - router.replace(routes.profile.root()); - if (res.message) { - toast.success(res.message); + mutateOptions={{ + onSuccess: (res) => { + if (res.success) { + AccessToken.token = res.token; + router.replace(routes.profile.root()); + if (res.message) { + toast.success(res.message); + } } - } + }, }} /> From 58e82f9c20fd280fb949ccdd67dde13e7f5c4098 Mon Sep 17 00:00:00 2001 From: Alexandr Nelyubov Date: Sat, 6 Jun 2026 17:11:08 +0300 Subject: [PATCH 5/6] refactor(useSignup): unificate mutation hook --- src/pages/auth/signup/model/useSignup.ts | 19 +++++++------------ src/pages/auth/signup/ui/SignupForm.tsx | 11 ++++++----- src/pages/auth/signup/ui/SignupPage.tsx | 6 +++++- 3 files changed, 18 insertions(+), 18 deletions(-) diff --git a/src/pages/auth/signup/model/useSignup.ts b/src/pages/auth/signup/model/useSignup.ts index 37a68f5..7a58cda 100644 --- a/src/pages/auth/signup/model/useSignup.ts +++ b/src/pages/auth/signup/model/useSignup.ts @@ -1,22 +1,17 @@ -import { type DefaultError, useMutation } from '@tanstack/react-query'; +import { type DefaultError, useMutation, UseMutationOptions } from '@tanstack/react-query'; import { AuthHttp, TAuth } from 'entities/auth'; -interface UseSignupProps { - onSuccess?: (body: TAuth.SignupBody, res: TAuth.SignupResponse) => void; - onError?: (err: Error) => void; -} +export type UseSignupOptions = Omit< + UseMutationOptions, + 'mutationFn' +>; -export function useSignup({ onSuccess, onError }: UseSignupProps = {}) { +export function useSignup(rest: UseSignupOptions = {}) { return useMutation, DefaultError, TAuth.SignupBody>({ mutationFn: AuthHttp.signup, meta: { skipGlobalValidationToast: true, }, - onError: (err) => { - onError?.(err); - }, - onSuccess: (res, body) => { - onSuccess?.(body, res); - }, + ...rest, }); } diff --git a/src/pages/auth/signup/ui/SignupForm.tsx b/src/pages/auth/signup/ui/SignupForm.tsx index 07542f2..01602db 100644 --- a/src/pages/auth/signup/ui/SignupForm.tsx +++ b/src/pages/auth/signup/ui/SignupForm.tsx @@ -29,13 +29,13 @@ import { fieldNameMapper } from '../model/utils/field-name-mapper'; import { prepareFullName } from '../model/utils/prepare-fullname'; import { extractValidationIssues } from 'shared/api'; import { TAuth } from 'entities/auth'; -import { useSignup } from '../model/useSignup'; +import { useSignup, UseSignupOptions } from '../model/useSignup'; interface SignupFormProps extends Omit, 'children' | 'onSubmit'> { - onSuccess?: (body: TAuth.SignupBody, res: TAuth.SignupResponse) => void; + mutateOptions?: UseSignupOptions; } -export function SignupForm({ className, onSuccess, ...props }: SignupFormProps) { +export function SignupForm({ className, mutateOptions = {}, ...props }: SignupFormProps) { const [showPassword, setShowPassword] = useState(false); const form = useForm({ @@ -49,8 +49,9 @@ export function SignupForm({ className, onSuccess, ...props }: SignupFormProps) }); const sendUserData = useSignup({ - onSuccess, - onError: (err) => { + ...mutateOptions, + onError: (err, ...args) => { + mutateOptions.onError?.(err, ...args); setFormErrors( extractValidationIssues(err), form, diff --git a/src/pages/auth/signup/ui/SignupPage.tsx b/src/pages/auth/signup/ui/SignupPage.tsx index 6bb9043..459a420 100644 --- a/src/pages/auth/signup/ui/SignupPage.tsx +++ b/src/pages/auth/signup/ui/SignupPage.tsx @@ -48,7 +48,11 @@ function SignupPage() { {step === 'signup' ? ( - setDraft({ email, step: 'otp' }, DRAFT_TTL_MS)} /> + setDraft({ email, step: 'otp' }, DRAFT_TTL_MS), + }} + /> ) : null} {step === 'otp' ? ( Date: Sat, 6 Jun 2026 18:11:00 +0300 Subject: [PATCH 6/6] refactor(useSignupConfirm): unificate mutation hook and rename hook parameters --- .../auth/forgot-password/model/useResetPassword.ts | 4 ++-- src/pages/auth/forgot-password/model/useSendCode.ts | 4 ++-- .../auth/forgot-password/model/useSendPassword.ts | 4 ++-- src/pages/auth/forgot-password/ui/EmailForm.tsx | 2 +- src/pages/auth/forgot-password/ui/PasswordForm.tsx | 4 ++-- src/pages/auth/signin/model/useSignin.ts | 4 ++-- src/pages/auth/signup/model/useSignup.ts | 4 ++-- src/pages/auth/signup/model/useSignupConfirm.ts | 10 ++++++++-- 8 files changed, 21 insertions(+), 15 deletions(-) diff --git a/src/pages/auth/forgot-password/model/useResetPassword.ts b/src/pages/auth/forgot-password/model/useResetPassword.ts index e164247..b819e10 100644 --- a/src/pages/auth/forgot-password/model/useResetPassword.ts +++ b/src/pages/auth/forgot-password/model/useResetPassword.ts @@ -6,13 +6,13 @@ export type UseResetePasswordOptions = Omit< 'mutationFn' >; -export function useResetPassword(props: UseResetePasswordOptions = {}) { +export function useResetPassword(options: UseResetePasswordOptions = {}) { return useMutation, DefaultError, TAuth.ResetPasswordBody>({ mutationKey: [], mutationFn: AuthHttp.resetPassword, meta: { skipGlobalValidationToast: true, }, - ...props, + ...options, }); } diff --git a/src/pages/auth/forgot-password/model/useSendCode.ts b/src/pages/auth/forgot-password/model/useSendCode.ts index ade02e2..aa0d66b 100644 --- a/src/pages/auth/forgot-password/model/useSendCode.ts +++ b/src/pages/auth/forgot-password/model/useSendCode.ts @@ -10,7 +10,7 @@ export type UseSendCodeOptions = Omit< 'mutationFn' >; -export function useSendCode(props: UseSendCodeOptions = {}) { +export function useSendCode(options: UseSendCodeOptions = {}) { return useMutation< Awaited, DefaultError, @@ -21,6 +21,6 @@ export function useSendCode(props: UseSendCodeOptions = {}) { meta: { skipGlobalValidationToast: true, }, - ...props, + ...options, }); } diff --git a/src/pages/auth/forgot-password/model/useSendPassword.ts b/src/pages/auth/forgot-password/model/useSendPassword.ts index e1bbc35..ee38928 100644 --- a/src/pages/auth/forgot-password/model/useSendPassword.ts +++ b/src/pages/auth/forgot-password/model/useSendPassword.ts @@ -10,7 +10,7 @@ export type UseSendPasswordOptions = Omit< 'mutationFn' >; -export function useSendPassword(props: UseSendPasswordOptions = {}) { +export function useSendPassword(options: UseSendPasswordOptions = {}) { return useMutation< Awaited, DefaultError, @@ -21,6 +21,6 @@ export function useSendPassword(props: UseSendPasswordOptions = {}) { meta: { skipGlobalValidationToast: true, }, - ...props, + ...options, }); } diff --git a/src/pages/auth/forgot-password/ui/EmailForm.tsx b/src/pages/auth/forgot-password/ui/EmailForm.tsx index 3841161..d266b10 100644 --- a/src/pages/auth/forgot-password/ui/EmailForm.tsx +++ b/src/pages/auth/forgot-password/ui/EmailForm.tsx @@ -24,7 +24,7 @@ import { extractValidationIssues } from 'shared/api'; import { ComponentProps } from 'react'; type EmailFormProps = Omit, 'children' | 'onSubmit'> & { - mutateOptions: UseResetePasswordOptions; + mutateOptions?: UseResetePasswordOptions; }; function EmailForm({ mutateOptions = {}, ...props }: EmailFormProps) { diff --git a/src/pages/auth/forgot-password/ui/PasswordForm.tsx b/src/pages/auth/forgot-password/ui/PasswordForm.tsx index 8c34ec2..d248826 100644 --- a/src/pages/auth/forgot-password/ui/PasswordForm.tsx +++ b/src/pages/auth/forgot-password/ui/PasswordForm.tsx @@ -24,11 +24,11 @@ import type { PasswordFormValues } from '../model/types'; import { useSendPassword, UseSendPasswordOptions } from '../model/useSendPassword'; interface PasswordFormProps extends Omit, 'children' | 'onSubmit'> { - mutateOptions: UseSendPasswordOptions; + mutateOptions?: UseSendPasswordOptions; email: string; } -function PasswordForm({ mutateOptions, email, ...props }: PasswordFormProps) { +function PasswordForm({ mutateOptions = {}, email, ...props }: PasswordFormProps) { const [showPassword, setShowPassword] = useState(false); const sendPassword = useSendPassword({ diff --git a/src/pages/auth/signin/model/useSignin.ts b/src/pages/auth/signin/model/useSignin.ts index 8fb31ad..69ad33d 100644 --- a/src/pages/auth/signin/model/useSignin.ts +++ b/src/pages/auth/signin/model/useSignin.ts @@ -6,12 +6,12 @@ export type UseSigninOptions = Omit< 'mutationFn' >; -export function useSignin(props: UseSigninOptions = {}) { +export function useSignin(options: UseSigninOptions = {}) { return useMutation, DefaultError, TAuth.SigninBody>({ mutationFn: AuthHttp.signin, meta: { skipGlobalValidationToast: true, }, - ...props, + ...options, }); } diff --git a/src/pages/auth/signup/model/useSignup.ts b/src/pages/auth/signup/model/useSignup.ts index 7a58cda..6061d9d 100644 --- a/src/pages/auth/signup/model/useSignup.ts +++ b/src/pages/auth/signup/model/useSignup.ts @@ -6,12 +6,12 @@ export type UseSignupOptions = Omit< 'mutationFn' >; -export function useSignup(rest: UseSignupOptions = {}) { +export function useSignup(options: UseSignupOptions = {}) { return useMutation, DefaultError, TAuth.SignupBody>({ mutationFn: AuthHttp.signup, meta: { skipGlobalValidationToast: true, }, - ...rest, + ...options, }); } diff --git a/src/pages/auth/signup/model/useSignupConfirm.ts b/src/pages/auth/signup/model/useSignupConfirm.ts index d2dc7b8..6ce7d74 100644 --- a/src/pages/auth/signup/model/useSignupConfirm.ts +++ b/src/pages/auth/signup/model/useSignupConfirm.ts @@ -1,11 +1,17 @@ -import { type DefaultError, useMutation } from '@tanstack/react-query'; +import { type DefaultError, useMutation, UseMutationOptions } from '@tanstack/react-query'; import { AuthHttp, TAuth } from 'entities/auth'; -export function useSignupConfirm() { +export type UseSignupConfirmOptions = Omit< + UseMutationOptions, + 'mutationFn' +>; + +export function useSignupConfirm(options: UseSignupConfirmOptions = {}) { return useMutation, DefaultError, TAuth.SignupConfirmBody>({ mutationFn: AuthHttp.signupConfirm, meta: { skipGlobalValidationToast: true, }, + ...options, }); }