From d1022635d2beaa37099e9d194ef7adcc4d88fa57 Mon Sep 17 00:00:00 2001 From: Max Litruv Boonzaayer Date: Wed, 13 May 2026 10:08:11 +1000 Subject: [PATCH] feat(mobile): improve share dialog UI with padding, full-width search, and confirmation --- overlay/src/app/features/ShareRoomPicker.tsx | 71 +++++++++++++++++++- 1 file changed, 68 insertions(+), 3 deletions(-) diff --git a/overlay/src/app/features/ShareRoomPicker.tsx b/overlay/src/app/features/ShareRoomPicker.tsx index bd10d0f..c921b5c 100644 --- a/overlay/src/app/features/ShareRoomPicker.tsx +++ b/overlay/src/app/features/ShareRoomPicker.tsx @@ -62,6 +62,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(); @@ -107,10 +108,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; @@ -129,7 +140,7 @@ export function ShareRoomPicker({ share, onPick, onDismiss }: ShareRoomPickerPro
Share to Room @@ -150,7 +161,7 @@ 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}? + + + + + + + + + + + ); + })()} ); }