diff --git a/overlay/src/app/features/ShareRoomPicker.tsx b/overlay/src/app/features/ShareRoomPicker.tsx index 8e10a0b..f058e62 100644 --- a/overlay/src/app/features/ShareRoomPicker.tsx +++ b/overlay/src/app/features/ShareRoomPicker.tsx @@ -1,18 +1,21 @@ import { useAtomValue } from 'jotai'; -import React, { ChangeEventHandler, useCallback, useMemo, useRef } from 'react'; +import React, { ChangeEventHandler, useCallback, useMemo, useRef, useState } from 'react'; import { useVirtualizer } from '@tanstack/react-virtual'; import FocusTrap from 'focus-trap-react'; import { Avatar, Box, + Button, Header, Icon, IconButton, Icons, Input, MenuItem, + Modal, Overlay, OverlayBackdrop, + OverlayCenter, Scroll, Text, config, @@ -60,6 +63,7 @@ export function ShareRoomPicker({ share, onPick, onDismiss }: ShareRoomPickerPro const mx = useMatrixClient(); const useAuthentication = useMediaAuthentication(); const scrollRef = useRef(null); + const [confirmRoomId, setConfirmRoomId] = useState(null); const mDirects = useAtomValue(mDirectAtom); const allRoomsSet = useAllJoinedRoomsSet(); @@ -105,10 +109,20 @@ export function ShareRoomPicker({ share, onPick, onDismiss }: ShareRoomPickerPro const handleRoomClick: React.MouseEventHandler = (evt) => { const roomId = evt.currentTarget.getAttribute('data-room-id'); if (roomId) { - onPick(roomId); + setConfirmRoomId(roomId); } }; + const handleConfirm = useCallback(() => { + if (confirmRoomId) { + onPick(confirmRoomId); + } + }, [confirmRoomId, onPick]); + + const handleCancelConfirm = useCallback(() => { + setConfirmRoomId(null); + }, []); + const previewText = share.text?.slice(0, 80) ?? share.subject?.slice(0, 80); const fileCount = share.files.length; @@ -247,6 +261,50 @@ export function ShareRoomPicker({ share, onPick, onDismiss }: ShareRoomPickerPro + + {confirmRoomId && (() => { + const room = getRoom(confirmRoomId); + const roomName = room?.name ?? confirmRoomId; + const isDm = mDirects.has(confirmRoomId); + return ( + + + + + + Share to {isDm ? 'Person' : 'Room'}? + + Send to {roomName}? + + + + + + + + + + + ); + })()} ); }