Spaces:
Runtime error
Runtime error
import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query"; | |
import type { Session } from "next-auth"; | |
import OauthApi from "../services/workflow/oauthApi"; | |
const QUERY_KEY = ["sid"]; | |
export function useSID(session: Session | null) { | |
const api = OauthApi.fromSession(session); | |
const queryClient = useQueryClient(); | |
const { data, refetch } = useQuery(QUERY_KEY, async () => await api.get_info_sid(), { | |
enabled: !!session, | |
retry: false, | |
}); | |
const { mutateAsync: install } = useMutation(async () => { | |
if (!session) return; | |
window.location.href = await api.install("sid"); | |
}); | |
const { mutateAsync: uninstall } = useMutation(async () => { | |
if (!session) return; | |
await api.uninstall("sid"); | |
queryClient.setQueriesData(QUERY_KEY, { connected: false }); | |
}); | |
return { | |
connected: data?.connected ?? false, | |
refetch, | |
install: async () => install(), | |
uninstall: async () => uninstall(), | |
manage: () => void window.open("https://me.sid.ai/", "_blank"), | |
}; | |
} | |