import React, { useCallback, useEffect } from 'react'; import FocusTrap from 'focus-trap-react'; import { Dialog, Overlay, OverlayCenter, OverlayBackdrop, Header, config, Box, Text, IconButton, Icon, Icons, color, Button, Spinner, } from 'folds'; import { MatrixError } from 'matrix-js-sdk'; import { useTranslation } from 'react-i18next'; import { useMatrixClient } from '../../hooks/useMatrixClient'; import { AsyncStatus, useAsyncCallback } from '../../hooks/useAsyncCallback'; import { stopPropagation } from '../../utils/keyboard'; type LeaveRoomPromptProps = { roomId: string; onDone: () => void; onCancel: () => void; }; export function LeaveRoomPrompt({ roomId, onDone, onCancel }: LeaveRoomPromptProps) { const { t } = useTranslation(); const mx = useMatrixClient(); const [leaveState, leaveRoom] = useAsyncCallback( useCallback(async () => { mx.leave(roomId); }, [mx, roomId]) ); const handleLeave = () => { leaveRoom(); }; useEffect(() => { if (leaveState.status === AsyncStatus.Success) { onDone(); } }, [leaveState, onDone]); return ( }>
{t('Room.leave_room_title')}
{t('Room.leave_room_confirm')} {leaveState.status === AsyncStatus.Error && ( {t('Room.leave_room_error', { error: leaveState.error.message })} )}
); }