"use client";
import { useLocale } from "@calcom/lib/hooks/useLocale";
import { trpc } from "@calcom/trpc/react";
import { Alert } from "@calcom/ui/components/alert";
import { Badge } from "@calcom/ui/components/badge";
import { SettingsToggle } from "@calcom/ui/components/form";
import { SkeletonButton, SkeletonContainer, SkeletonText } from "@calcom/ui/components/skeleton";
import DisableTwoFactorModal from "@components/settings/DisableTwoFactorModal";
import EnableTwoFactorModal from "@components/settings/EnableTwoFactorModal";
import { signOut, useSession } from "next-auth/react";
import { useState } from "react";
const SkeletonLoader = () => {
return (
);
};
const TwoFactorAuthView = () => {
const utils = trpc.useUtils();
const { data: sessionData } = useSession();
const { t } = useLocale();
const { data: user, isPending } = trpc.viewer.me.get.useQuery({ includePasswordAdded: true });
const [enableModalOpen, setEnableModalOpen] = useState(false);
const [disableModalOpen, setDisableModalOpen] = useState(false);
if (isPending) return ;
const isCalProvider = user?.identityProvider === "CAL";
const canSetupTwoFactor = !isCalProvider && !user?.twoFactorEnabled && !user?.passwordAdded;
return (
<>
{canSetupTwoFactor && }
user?.twoFactorEnabled ? setDisableModalOpen(true) : setEnableModalOpen(true)
}
Badge={
{user?.twoFactorEnabled ? t("enabled") : t("disabled")}
}
switchContainerClassName="rounded-t-none border-t-0"
/>
setEnableModalOpen(!enableModalOpen)}
onEnable={() => {
setEnableModalOpen(false);
if (sessionData?.user.role === "INACTIVE_ADMIN") {
// Session role is set at login time, so we need to sign out
// and sign back in to refresh the role and dismiss the banner
signOut({ callbackUrl: "/auth/login" });
} else {
utils.viewer.me.invalidate();
}
}}
onCancel={() => {
setEnableModalOpen(false);
}}
/>
setDisableModalOpen(!disableModalOpen)}
onDisable={() => {
setDisableModalOpen(false);
utils.viewer.me.invalidate();
}}
onCancel={() => {
setDisableModalOpen(false);
}}
/>
>
);
};
export default TwoFactorAuthView;