state.tsx 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. import { useMutation } from '@tanstack/react-query'
  2. import { create } from 'zustand'
  3. import { sendDeleteAccountCode, submitDeleteAccountFeedback, verifyDeleteAccountCode } from '@/service/common'
  4. type State = {
  5. sendEmailToken: string
  6. setSendEmailToken: (token: string) => void
  7. }
  8. export const useAccountDeleteStore = create<State>(set => ({
  9. sendEmailToken: '',
  10. setSendEmailToken: (token: string) => set({ sendEmailToken: token }),
  11. }))
  12. export function useSendDeleteAccountEmail() {
  13. const updateEmailToken = useAccountDeleteStore(state => state.setSendEmailToken)
  14. return useMutation({
  15. mutationKey: ['delete-account'],
  16. mutationFn: sendDeleteAccountCode,
  17. onSuccess: (ret) => {
  18. if (ret.result === 'success')
  19. updateEmailToken(ret.data)
  20. },
  21. })
  22. }
  23. export function useConfirmDeleteAccount() {
  24. return useMutation({
  25. mutationKey: ['confirm-delete-account'],
  26. mutationFn: verifyDeleteAccountCode,
  27. })
  28. }
  29. export function useDeleteAccountFeedback() {
  30. return useMutation({
  31. mutationKey: ['delete-account-feedback'],
  32. mutationFn: submitDeleteAccountFeedback,
  33. })
  34. }