-
Notifications
You must be signed in to change notification settings - Fork 1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[ Feature/subscription 75 ] 구독 & 구독 취소 API 연결 #78
Changes from all commits
554bc66
f50ec61
54ec84d
4293852
b6f9609
a2c81b9
68edba2
dd5e9b1
6aac329
c74e82c
9553999
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
This file was deleted.
This file was deleted.
This file was deleted.
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,67 @@ | ||
import { usePathname } from 'next/navigation'; | ||
|
||
import { useEffect, useState } from 'react'; | ||
import { useForm } from 'react-hook-form'; | ||
|
||
import { useMutation } from '@tanstack/react-query'; | ||
|
||
import { useToast } from '@shared/components/ui/use-toast'; | ||
|
||
import { getWorkbookId } from '@workbook/utils'; | ||
|
||
import { SUBSCRIBE_USER_ACTIONS } from '@subscription/constants/subscribe'; | ||
import { subscribeWorkbookOptions } from '@subscription/remotes/postSubscriptionQueryOptions'; | ||
import { emailSubscribeSchema } from '@subscription/schemas'; | ||
import { EmailSubscribeFormData } from '@subscription/types/subscription'; | ||
|
||
import { zodResolver } from '@hookform/resolvers/zod'; | ||
|
||
export const useSubscribeForm = () => { | ||
const { toast } = useToast(); | ||
const pathname = usePathname() | ||
const [workbookId, setWorkbookId] = useState<string>("") | ||
|
||
useEffect(function getId() { | ||
return setWorkbookId(getWorkbookId(pathname)); | ||
}, [pathname]) | ||
|
||
const form = useForm<EmailSubscribeFormData>({ | ||
resolver: zodResolver(emailSubscribeSchema), | ||
defaultValues: { | ||
email: '', | ||
}, | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. mode를 설정해주면 될것같아요! There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 혹시 이거 설명해주실 수 있나용❔ There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. useForm zod mode 참고해보시면, 굳이 submit 함수 실행할때 safeparse 체크하지 않아도 검증 가능합니다..! There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 오오 !! 참고해서 수정했습니다! useForm 에서 이미 유효성 검사 처리가 가능하군용 💯 |
||
mode: "onSubmit" | ||
}); | ||
|
||
const { mutate: subscribeWorkbook } = useMutation(subscribeWorkbookOptions({ | ||
workbookId: workbookId, | ||
})); | ||
|
||
const onSubmit = (values: EmailSubscribeFormData) => { | ||
try { | ||
subscribeWorkbook(values, { | ||
onSuccess: () => { | ||
form.reset(); | ||
toast({ | ||
title: SUBSCRIBE_USER_ACTIONS.SUBSCRIBE_SUCCESS, | ||
}); | ||
}, | ||
onError: (error) => { | ||
console.error(error); | ||
toast({ | ||
title: '구독 신청이 되지 않았습니다.' | ||
}); | ||
}, | ||
}); | ||
} catch (error) { | ||
toast({ | ||
title: '구독 신청이 되지 않았습니다.' | ||
}); | ||
} | ||
}; | ||
|
||
return { | ||
form, | ||
onSubmit, | ||
}; | ||
}; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
나중에는 다른 workbook 페이지가 될수도 있을것같습니다...!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
맞아요!! 이 부분은 한 번 말해봐야겠네용!!