import { t } from "@lingui/core/macro"; import { useEffect } from "react"; import { HiMiniArrowTopRightOnSquare } from "react-icons/hi2"; import Button from "~/components/Button"; import FeedbackModal from "~/components/FeedbackModal"; import Modal from "~/components/modal"; import { NewWorkspaceForm } from "~/components/NewWorkspaceForm"; import { PageHead } from "~/components/PageHead"; import { useModal } from "~/providers/modal"; import { usePopup } from "~/providers/popup"; import { api } from "~/utils/api"; export default function IntegrationsSettings() { const { modalContentType, isOpen } = useModal(); const { showPopup } = usePopup(); const { data: integrations, refetch: refetchIntegrations, isLoading: integrationsLoading, } = api.integration.providers.useQuery(); const { data: trelloUrl, refetch: refetchTrelloUrl } = api.integration.getAuthorizationUrl.useQuery( { provider: "trello" }, { enabled: !integrationsLoading && !integrations?.some( (integration) => integration.provider === "trello", ), refetchOnWindowFocus: true, }, ); useEffect(() => { const handleFocus = () => { refetchIntegrations(); }; window.addEventListener("focus", handleFocus); return () => { window.removeEventListener("focus", handleFocus); }; }, [refetchIntegrations]); const { mutateAsync: disconnectTrello } = api.integration.disconnect.useMutation({ onSuccess: () => { refetchIntegrations(); refetchTrelloUrl(); showPopup({ header: t`Trello disconnected`, message: t`Your Trello account has been disconnected.`, icon: "success", }); }, onError: () => { showPopup({ header: t`Error disconnecting Trello`, message: t`An error occurred while disconnecting your Trello account.`, icon: "error", }); }, }); return ( <>

{t`Trello`}

{!integrations?.some( (integration) => integration.provider === "trello", ) && trelloUrl ? ( <>

{t`Connect your Trello account to import boards.`}

) : ( integrations?.some( (integration) => integration.provider === "trello", ) && ( <>

{t`Your Trello account is connected.`}

) )}
{/* Global modals */} ); }