"use client"; import { useSession } from "next-auth/react"; import { Trans } from "next-i18next"; import Link from "next/link"; import { useRouter } from "next/navigation"; import { useState } from "react"; import { getQueryParam } from "@calcom/features/bookings/Booker/utils/query-param"; import { WEBAPP_URL } from "@calcom/lib/constants"; import { useLocale } from "@calcom/lib/hooks/useLocale"; import { trpc } from "@calcom/trpc"; import { TRPCClientError } from "@calcom/trpc/react"; import { Button, EmptyScreen, Alert } from "@calcom/ui"; import PageWrapper from "@components/PageWrapper"; function ConnectAndJoin() { const { t } = useLocale(); const router = useRouter(); const token = getQueryParam("token"); const [meetingUrl, setMeetingUrl] = useState(null); const [errorMessage, setErrorMessage] = useState(); const session = useSession(); const isUserPartOfOrg = session.status === "authenticated" && !!session.data.user?.org; const mutation = trpc.viewer.connectAndJoin.useMutation({ onSuccess: (res) => { if (res.meetingUrl && !res.isBookingAlreadyAcceptedBySomeoneElse) { router.push(res.meetingUrl); } else if (res.isBookingAlreadyAcceptedBySomeoneElse && res.meetingUrl) { setMeetingUrl(res.meetingUrl); } }, onError: (err) => { console.log("err", err, err instanceof TRPCClientError); if (err instanceof TRPCClientError) { setErrorMessage(t(err.message)); } else { setErrorMessage(t("something_went_wrong")); } }, }); if (session.status === "loading") return

{t("loading")}

; if (!token) return

{t("token_not_found")}

; return (
{session ? ( {meetingUrl ? (
Some other host already accepted the meeting. Do you still want to join? Continue to Meeting
) : ( )} {errorMessage && }
} /> ) : (
{t("you_must_be_logged_in_to", { url: WEBAPP_URL })}
)} ); } ConnectAndJoin.requiresLicense = true; ConnectAndJoin.PageWrapper = PageWrapper; export default ConnectAndJoin;