import { useState } from "react"; import { getLayout } from "@calcom/features/settings/layouts/SettingsLayout"; import { useLocale } from "@calcom/lib/hooks/useLocale"; import { trpc } from "@calcom/trpc/react"; import type { RouterOutputs } from "@calcom/trpc/react"; import { Meta, showToast, SettingsToggle, SkeletonContainer, SkeletonText } from "@calcom/ui"; import PageWrapper from "@components/PageWrapper"; const SkeletonLoader = ({ title, description }: { title: string; description: string }) => { return (
); }; const ProfileImpersonationView = ({ user }: { user: RouterOutputs["viewer"]["me"] }) => { const { t } = useLocale(); const utils = trpc.useContext(); const [disableImpersonation, setDisableImpersonation] = useState( user?.disableImpersonation ); const mutation = trpc.viewer.updateProfile.useMutation({ onSuccess: () => { showToast(t("profile_updated_successfully"), "success"); }, onSettled: () => { utils.viewer.me.invalidate(); }, onMutate: async ({ disableImpersonation }) => { await utils.viewer.me.cancel(); const previousValue = utils.viewer.me.getData(); setDisableImpersonation(disableImpersonation); return { previousValue }; }, onError: (error, variables, context) => { if (context?.previousValue) { utils.viewer.me.setData(undefined, context.previousValue); setDisableImpersonation(context.previousValue?.disableImpersonation); } showToast(`${t("error")}, ${error.message}`, "error"); }, }); return ( <>
{ mutation.mutate({ disableImpersonation: !checked }); }} switchContainerClassName="rounded-t-none border-t-0" disabled={mutation.isLoading} />
); }; const ProfileImpersonationViewWrapper = () => { const { data: user, isLoading } = trpc.viewer.me.useQuery(); const { t } = useLocale(); if (isLoading || !user) return ; return ; }; ProfileImpersonationViewWrapper.getLayout = getLayout; ProfileImpersonationViewWrapper.PageWrapper = PageWrapper; export default ProfileImpersonationViewWrapper;