You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
88 lines
2.5 KiB
88 lines
2.5 KiB
import { |
|
AlertDialog, |
|
AlertDialogAction, |
|
AlertDialogCancel, |
|
AlertDialogContent, |
|
AlertDialogDescription, |
|
AlertDialogFooter, |
|
AlertDialogHeader, |
|
AlertDialogTitle |
|
} from '@/components/ui/alert-dialog' |
|
import { Button } from '@/components/ui/button' |
|
import { |
|
Drawer, |
|
DrawerContent, |
|
DrawerDescription, |
|
DrawerFooter, |
|
DrawerHeader, |
|
DrawerTitle |
|
} from '@/components/ui/drawer' |
|
import { usePrimaryPage } from '@/contexts/primary-page-context' |
|
import { useNostr } from '@/providers/NostrProvider' |
|
import { useScreenSizeOptional } from '@/providers/ScreenSizeProvider' |
|
import { useTranslation } from 'react-i18next' |
|
|
|
export default function LogoutDialog({ |
|
open = false, |
|
setOpen |
|
}: { |
|
open: boolean |
|
setOpen: (open: boolean) => void |
|
}) { |
|
const { t } = useTranslation() |
|
const { isSmallScreen = false } = useScreenSizeOptional() ?? {} |
|
const { account, switchAccount } = useNostr() |
|
const { navigate } = usePrimaryPage() |
|
|
|
const handleLogout = () => { |
|
setOpen(false) |
|
void switchAccount(null) |
|
navigate('feed') |
|
} |
|
|
|
if (isSmallScreen) { |
|
return ( |
|
<Drawer defaultOpen={false} open={open} onOpenChange={setOpen}> |
|
<DrawerContent> |
|
<DrawerHeader> |
|
<DrawerTitle>{t('Logout')}</DrawerTitle> |
|
<DrawerDescription>{t('Are you sure you want to logout?')}</DrawerDescription> |
|
</DrawerHeader> |
|
<DrawerFooter> |
|
<Button variant="outline" onClick={() => setOpen(false)} className="w-full"> |
|
{t('Cancel')} |
|
</Button> |
|
<Button |
|
variant="destructive" |
|
onClick={handleLogout} |
|
disabled={!account} |
|
className="w-full" |
|
> |
|
{t('Logout')} |
|
</Button> |
|
</DrawerFooter> |
|
</DrawerContent> |
|
</Drawer> |
|
) |
|
} |
|
|
|
return ( |
|
<AlertDialog defaultOpen={false} open={open} onOpenChange={setOpen}> |
|
<AlertDialogContent> |
|
<AlertDialogHeader> |
|
<AlertDialogTitle>{t('Logout')}</AlertDialogTitle> |
|
<AlertDialogDescription>{t('Are you sure you want to logout?')}</AlertDialogDescription> |
|
</AlertDialogHeader> |
|
<AlertDialogFooter> |
|
<AlertDialogCancel>{t('Cancel')}</AlertDialogCancel> |
|
<AlertDialogAction |
|
variant="destructive" |
|
onClick={handleLogout} |
|
> |
|
{t('Logout')} |
|
</AlertDialogAction> |
|
</AlertDialogFooter> |
|
</AlertDialogContent> |
|
</AlertDialog> |
|
) |
|
}
|
|
|