"use client"; import { useMutation } from "@tanstack/react-query"; import { useRouter } from "next/navigation"; import { useEffect } from "react"; import { useTranslation } from "@turbostarter/i18n"; import { Button } from "@turbostarter/ui-web/button"; import { Icons } from "@turbostarter/ui-web/icons"; import { pathsConfig } from "~/config/paths"; import { authClient } from "~/lib/auth/client"; import { admin } from "~/modules/admin/lib/api"; export const ImpersonatingBanner = () => { const { t } = useTranslation("common"); const session = authClient.useSession(); const router = useRouter(); const userId = session.data?.user.id; const isImpersonating = !!session.data?.session.impersonatedBy; const stop = useMutation({ ...admin.mutations.users.stopImpersonating, onSuccess: async () => { await session.refetch(); router.replace( userId ? pathsConfig.admin.users.user(userId) : pathsConfig.admin.users.index, ); }, }); useEffect(() => { if (isImpersonating) { document.body.style.setProperty("--banner-height", "2.5rem"); document.body.style.paddingTop = "2.5rem"; } else { document.body.style.setProperty("--banner-height", "0"); document.body.style.paddingTop = "0"; } }, [isImpersonating]); if (!isImpersonating) { return null; } return (
{t("impersonating")}{" "} {session.data?.user.email}
); };