From a1577a3b97edcb3a87fbb1d5bc8baba6a3373684 Mon Sep 17 00:00:00 2001 From: Max Litruv Boonzaayer Date: Wed, 13 May 2026 09:53:50 +1000 Subject: [PATCH] fix(mobile): navigate to room after share picker selection --- .../app/pages/client/ClientNonUIFeatures.tsx | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/overlay/src/app/pages/client/ClientNonUIFeatures.tsx b/overlay/src/app/pages/client/ClientNonUIFeatures.tsx index 8f6072f..c5e7745 100644 --- a/overlay/src/app/pages/client/ClientNonUIFeatures.tsx +++ b/overlay/src/app/pages/client/ClientNonUIFeatures.tsx @@ -517,11 +517,14 @@ function TaskbarFlashStopper() { function AndroidShareIntentHandler() { const mx = useMatrixClient(); + const navigate = useNavigate(); const [isMarkdown] = useSetting(settingsAtom, 'isMarkdown'); const [pendingShare, setPendingShare] = useState(null); const [pickedRoomId, setPickedRoomId] = useState(null); const [msgDraft, setMsgDraft] = useAtom(roomIdToMsgDraftAtomFamily(pickedRoomId ?? '__android_share__')); const setUploadItems = useSetAtom(roomIdToUploadItemsAtomFamily(pickedRoomId ?? '__android_share__')); + const mDirects = useAtomValue(mDirectAtom); + const roomToParents = useAtomValue(roomToParentsAtom); const applyPendingShare = useCallback( async (share: AndroidSharePayload, roomId: string) => { @@ -582,6 +585,20 @@ function AndroidShareIntentHandler() { if (applied) { setPendingShare(null); setPickedRoomId(null); + + // Navigate to the selected room + const isDirect = mDirects.has(roomId); + if (isDirect) { + navigate(getDirectRoomPath(roomId)); + } else { + const parents = roomToParents.get(roomId); + const parent = parents && parents.length > 0 ? parents[0] : undefined; + if (parent) { + navigate(getSpaceRoomPath(parent, roomId)); + } else { + navigate(getHomeRoomPath(roomId)); + } + } } }) .catch((err) => { @@ -590,7 +607,7 @@ function AndroidShareIntentHandler() { setPickedRoomId(null); }); }, - [applyPendingShare, pendingShare] + [applyPendingShare, pendingShare, navigate, mDirects, roomToParents] ); const handleDismiss = useCallback(() => {