import { Button, Icon, IconButton, Tooltip } from "@prismicio/editor-ui";
import { SX } from "@prismicio/editor-ui/dist/theme";
import * as Sentry from "@sentry/nextjs";
import { useQueryClient } from "@tanstack/react-query";
import { useRouter } from "next/router";
import { toast } from "react-toastify";
import { clearAuth, getState } from "@/apiClient";
import { GetActiveEnvironmentQueryKey } from "@/features/environments/useActiveEnvironment";
import { GetEnvironmentsQueryKey } from "@/features/environments/useEnvironments";
import useSliceMachineActions from "@/modules/useSliceMachineActions";
export function EnvironmentLogoutButton() {
const { refreshState } = useSliceMachineActions();
const queryClient = useQueryClient();
async function onClick() {
await clearAuth();
const serverState = await getState();
refreshState(serverState);
Sentry.setUser({ id: serverState.env.shortId });
await Promise.all([
queryClient.invalidateQueries({ queryKey: GetEnvironmentsQueryKey }),
queryClient.invalidateQueries({
queryKey: GetActiveEnvironmentQueryKey,
}),
]);
toast.success("Logged out");
}
return (
void onClick()}
hiddenLabel="Log out"
/>
);
}
interface ReloadLogoutButtonProps {
sx?: SX;
}
export function ReloadLogoutButton(props: ReloadLogoutButtonProps) {
const { sx } = props;
const router = useRouter();
async function onClick() {
await clearAuth();
Sentry.setUser({ id: undefined });
router.reload();
}
return (
);
}