import { QueryClient, useMutation, useSuspenseQuery, } from '@tanstack/react-query'; import { t } from 'i18next'; import { useNavigate } from 'react-router-dom'; import { toast } from 'sonner'; import { authenticationSession } from '@/lib/authentication-session'; import { PlatformWithoutSensitiveData } from '@activepieces/shared'; import { platformApi } from '../lib/platforms-api'; import { flagsHooks } from './flags-hooks'; export const platformHooks = { useDeleteAccount: () => { const navigate = useNavigate(); return useMutation({ mutationFn: async () => { await platformApi.deleteAccount(); }, onSuccess: () => { toast.success(t('Account deleted successfully')); navigate('/sign-in'); }, }); }, useCurrentPlatform: () => { const currentPlatformId = authenticationSession.getPlatformId(); const query = useSuspenseQuery({ queryKey: ['platform', currentPlatformId], queryFn: platformApi.getCurrentPlatform, staleTime: Infinity, }); return { platform: query.data, refetch: async () => { await query.refetch(); }, setCurrentPlatform: ( queryClient: QueryClient, platform: PlatformWithoutSensitiveData, ) => { queryClient.setQueryData(['platform', currentPlatformId], platform); }, }; }, useUpdateLisenceKey: (queryClient: QueryClient) => { const currentPlatformId = authenticationSession.getPlatformId(); return useMutation({ mutationFn: async (tempLicenseKey: string) => { if (tempLicenseKey.trim() === '') return; await platformApi.verifyLicenseKey(tempLicenseKey.trim()); }, onSuccess: () => { queryClient.invalidateQueries({ queryKey: ['platform', currentPlatformId], }); queryClient.invalidateQueries({ queryKey: flagsHooks.queryKey, }); toast.success(t('License activated successfully!')); }, onError: () => { toast.error(t('Activation failed, invalid license key')); }, }); }, };