'use client'; import { useEffect, useState } from "react"; import { CodeHostType } from "@/lib/utils"; import { getCodeHostIcon } from "@/lib/utils"; import { GitHubConnectionCreationForm, GitLabConnectionCreationForm, GiteaConnectionCreationForm, GerritConnectionCreationForm } from "@/app/[domain]/components/connectionCreationForms"; import { useRouter } from "next/navigation"; import { useCallback } from "react"; import { OnboardingSteps } from "@/lib/constants"; import { BackButton } from "./onboardBackButton"; import { CodeHostIconButton } from "../../components/codeHostIconButton"; import useCaptureEvent from "@/hooks/useCaptureEvent"; import { useSession } from "next-auth/react"; import posthog from "posthog-js"; import SecurityCard from "@/app/components/securityCard"; interface ConnectCodeHostProps { nextStep: OnboardingSteps; } export const ConnectCodeHost = ({ nextStep }: ConnectCodeHostProps) => { const [selectedCodeHost, setSelectedCodeHost] = useState(null); const router = useRouter(); const { data: session } = useSession(); // Note: this is currently the first client side page that gets loaded after a user registers. If this changes, we need to update this. // @nocheckin useEffect(() => { if (session?.user) { posthog.identify(session.user.id, { email: session.user.email, name: session.user.name, }); } }, [session?.user]); const onCreated = useCallback(() => { router.push(`?step=${nextStep}`); }, [nextStep, router]); const onBack = useCallback(() => { setSelectedCodeHost(null); }, []); if (!selectedCodeHost) { return ( <> ) } if (selectedCodeHost === "github") { return ( <> ) } if (selectedCodeHost === "gitlab") { return ( <> ) } if (selectedCodeHost === "gitea") { return ( <> ) } if (selectedCodeHost === "gerrit") { return ( <> ) } return null; } interface CodeHostSelectionProps { onSelect: (codeHost: CodeHostType) => void; } const CodeHostSelection = ({ onSelect }: CodeHostSelectionProps) => { const captureEvent = useCaptureEvent(); return (
{ onSelect("github"); captureEvent("wa_onboard_github_selected", {}); }} /> { onSelect("gitlab"); captureEvent("wa_onboard_gitlab_selected", {}); }} /> { onSelect("gitea"); captureEvent("wa_onboard_gitea_selected", {}); }} /> { onSelect("gerrit"); captureEvent("wa_onboard_gerrit_selected", {}); }} />
) }