import { useState } from 'react'; import { Trans, useLingui } from '@lingui/react/macro'; import { authClient } from '@documenso/auth/client'; import { Button } from '@documenso/ui/primitives/button'; import { Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger, } from '@documenso/ui/primitives/dialog'; import { useToast } from '@documenso/ui/primitives/use-toast'; type SessionLogoutAllDialogProps = { onSuccess?: () => Promise; disabled?: boolean; }; export const SessionLogoutAllDialog = ({ onSuccess, disabled }: SessionLogoutAllDialogProps) => { const { t } = useLingui(); const { toast } = useToast(); const [isOpen, setIsOpen] = useState(false); const [isLoading, setIsLoading] = useState(false); const handleSignOutAllSessions = async () => { setIsLoading(true); try { await authClient.signOutAllSessions(); if (onSuccess) { await onSuccess(); } toast({ title: t`Sessions have been revoked`, }); setIsOpen(false); } catch (error) { console.error(error); toast({ title: t`Error`, description: t`Failed to sign out all sessions`, variant: 'destructive', }); } setIsLoading(false); }; return ( (isLoading ? undefined : setIsOpen(value))}> Revoke all sessions This will sign you out of all other devices. You will need to sign in again on those devices to continue using your account. ); };