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 { 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 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 ( }>
Leave Room
Are you sure you want to leave this room? {leaveState.status === AsyncStatus.Error && ( Failed to leave room! {leaveState.error.message} )}
); }