/* eslint-disable sonarjs/no-identical-functions */ 'use client'; import { createSubscription, createSubscriptionHistory, createTrialSubscription, getSubscription, getSubscriptionHistory, getSubscriptionPrices, getSubscriptionSettings, updateSubscription, updateSubscriptionHistory, } from '@/actions/api/subscriptions'; import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query'; import { useSession } from 'next-auth/react'; export const useSubscriptionQuery = (variables?: Parameters[0]) => { const { data: session } = useSession(); const telegramId = variables?.telegramId === undefined ? session?.user?.telegramId : variables?.telegramId; return useQuery({ enabled: Boolean(telegramId), queryFn: () => getSubscription({ telegramId }), queryKey: ['subscription', telegramId], }); }; export const useSubscriptionSettingQuery = () => { return useQuery({ queryFn: getSubscriptionSettings, queryKey: ['subscriptionSetting'], }); }; export const useSubscriptionPricesQuery = ( variables?: Parameters[0], ) => { return useQuery({ queryFn: () => getSubscriptionPrices(variables), queryKey: ['subscriptionPrices', variables], }); }; export const useSubscriptionHistoryQuery = ( variables: Parameters[0], ) => { return useQuery({ enabled: Boolean(variables.subscriptionId), queryFn: () => getSubscriptionHistory(variables), queryKey: ['subscriptionHistory', variables.subscriptionId], }); }; export const useSubscriptionMutation = () => { const { data: session } = useSession(); const telegramId = session?.user?.telegramId; const queryClient = useQueryClient(); const handleOnSuccess = () => { if (!telegramId) return; queryClient.invalidateQueries({ queryKey: ['subscription', telegramId], }); }; return useMutation({ mutationFn: updateSubscription, onSuccess: handleOnSuccess, }); }; export const useSubscriptionCreate = () => { const { data: session } = useSession(); const telegramId = session?.user?.telegramId; const queryClient = useQueryClient(); const handleOnSuccess = () => { if (!telegramId) return; queryClient.refetchQueries({ queryKey: ['subscription', telegramId], }); }; return useMutation({ mutationFn: createSubscription, onSuccess: handleOnSuccess, }); }; export const useSubscriptionHistoryMutation = () => { const { data: session } = useSession(); const telegramId = session?.user?.telegramId; const queryClient = useQueryClient(); const handleOnSuccess = () => { if (!telegramId) return; queryClient.invalidateQueries({ queryKey: ['subscription', telegramId], }); }; return useMutation({ mutationFn: updateSubscriptionHistory, onSuccess: handleOnSuccess, }); }; export const useSubscriptionHistoryCreate = () => { const { data: session } = useSession(); const telegramId = session?.user?.telegramId; const queryClient = useQueryClient(); const handleOnSuccess = () => { if (!telegramId) return; queryClient.refetchQueries({ queryKey: ['subscription', telegramId], }); }; return useMutation({ mutationFn: createSubscriptionHistory, onSuccess: handleOnSuccess, }); }; export const useCreateTrialSubscriptionMutation = () => { const { data: session } = useSession(); const telegramId = session?.user?.telegramId; const queryClient = useQueryClient(); const handleOnSuccess = () => { if (!telegramId) return; queryClient.invalidateQueries({ queryKey: ['subscription', telegramId], }); }; return useMutation({ mutationFn: createTrialSubscription, onSuccess: handleOnSuccess, }); };