import { GetServerSidePropsContext } from "next"; import { useForm } from "react-hook-form"; import { useLocale } from "@calcom/lib/hooks/useLocale"; import { trpc } from "@calcom/trpc/react"; import { Button, Form, getSettingsLayout as getLayout, Label, Meta, showToast, Skeleton, Switch, } from "@calcom/ui"; import { ssrInit } from "@server/lib/ssr"; const ProfileImpersonationView = () => { const { t } = useLocale(); const utils = trpc.useContext(); const { data: user } = trpc.viewer.me.useQuery(); const mutation = trpc.viewer.updateProfile.useMutation({ onSuccess: () => { showToast(t("profile_updated_successfully"), "success"); }, onError: (error) => { showToast(`${t("error")}, ${error.message}`, "error"); }, }); const formMethods = useForm<{ disableImpersonation: boolean }>({ defaultValues: { disableImpersonation: user?.disableImpersonation, }, }); const { formState: { isSubmitting }, setValue, } = formMethods; return ( <>
{ mutation.mutate({ disableImpersonation }); utils.viewer.me.invalidate(); }}>
{ setValue("disableImpersonation", !e); }} fitToHeight={true} />
{t("user_impersonation_heading")} {t("user_impersonation_description")}
); }; ProfileImpersonationView.getLayout = getLayout; export const getServerSideProps = async (context: GetServerSidePropsContext) => { const ssr = await ssrInit(context); return { props: { trpcState: ssr.dehydrate(), }, }; }; export default ProfileImpersonationView;