import React, { FC, useCallback, useEffect, useMemo } from 'react'; import { useRouter, useSearchParams } from 'next/navigation'; import { TopTitle } from '@gitroom/frontend/components/launches/helpers/top.title.component'; import { continueProviderList } from '@gitroom/frontend/components/launches/providers/continue-provider/list'; import { IntegrationContext } from '@gitroom/frontend/components/launches/helpers/use.integration'; import dayjs from 'dayjs'; import useSWR, { useSWRConfig } from 'swr'; import { useFetch } from '@gitroom/helpers/utils/custom.fetch'; export const Null: FC<{ closeModal: () => void; existingId: string[] }> = () => null; export const ContinueProvider: FC = () => { const { mutate } = useSWRConfig(); const fetch = useFetch(); const searchParams = useSearchParams(); const added = searchParams.get('added'); const continueId = searchParams.get('continue'); const router = useRouter(); const load = useCallback(async (path: string) => { const list = (await (await fetch(path)).json()).integrations; return list; }, []); const { data: integrations } = useSWR('/integrations/list', load, { fallbackData: [], }); const closeModal = useCallback(() => { mutate('/integrations/list'); const url = new URL(window.location.href); url.searchParams.delete('added'); url.searchParams.delete('continue'); router.push(url.toString()); }, []); const Provider = useMemo(() => { if (!added) { return Null; } return continueProviderList[added as keyof typeof continueProviderList] || Null; }, [added]); if (!added || !continueId || !integrations) { return null; } return (