From 1966cea7d092988b69b392564ecfce2b3d7975d3 Mon Sep 17 00:00:00 2001 From: Pedro Pinto Silva Date: Thu, 23 Apr 2026 14:20:31 +0200 Subject: [PATCH] feat: handle UI_PickLink postMessage from Collabora Online Open the existing FilePickerModal and reply with Action_InsertLink carrying {url: resource.privateLink, text: resource.name} so Collabora Online inserts a hyperlink to the picked file (label = filename). Requires EnableRemoteLinkPicker=true in CheckFileInfo, added in the companion opencloud-eu/opencloud PR. Signed-off-by: Pedro Pinto Silva --- packages/web-app-external/src/App.vue | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/packages/web-app-external/src/App.vue b/packages/web-app-external/src/App.vue index 344de8381d..4f44becf1e 100644 --- a/packages/web-app-external/src/App.vue +++ b/packages/web-app-external/src/App.vue @@ -394,6 +394,27 @@ const handlePostMessagesCollabora = async (event: MessageEvent) => { }), focusTrapInitial: false }) + return + } + + if (message.MessageId === 'UI_PickLink') { + dispatchModal({ + elementClass: 'file-picker-modal', + title: $gettext('Pick a file to link'), + customComponent: FilePickerModal, + hideActions: true, + customComponentAttrs: () => ({ + parentFolderLink: getParentFolderLink(resource), + allowedFileTypes: [], + callbackFn: ({ resource }: { resource: Resource }) => { + postMessageToCollabora('Action_InsertLink', { + url: resource.privateLink, + text: resource.name + }) + } + }), + focusTrapInitial: false + }) } } catch (e) { console.debug('Error parsing Collabora PostMessage', e)