From 3b11104f681c9782f0ddbf8485ea3df41df34566 Mon Sep 17 00:00:00 2001 From: fenn-cs Date: Mon, 24 Jun 2024 10:19:53 +0100 Subject: [PATCH] fix(ExternalSharing): Handle template share from external sources The new sharing flow requires or implies that users should edit share before creating. External sources should not created the share IF we would upon sharing details tab on first request. Signed-off-by: fenn-cs --- apps/files_sharing/src/mixins/ShareDetails.js | 11 ++++++----- apps/files_sharing/src/views/SharingDetailsTab.vue | 6 ++++++ 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/apps/files_sharing/src/mixins/ShareDetails.js b/apps/files_sharing/src/mixins/ShareDetails.js index 60645ef89c8..77fbd657944 100644 --- a/apps/files_sharing/src/mixins/ShareDetails.js +++ b/apps/files_sharing/src/mixins/ShareDetails.js @@ -9,13 +9,14 @@ export default { // TODO : Better name/interface for handler required // For example `externalAppCreateShareHook` with proper documentation if (shareRequestObject.handler) { + const handlerInput = {} if (this.suggestions) { - shareRequestObject.suggestions = this.suggestions - shareRequestObject.fileInfo = this.fileInfo - shareRequestObject.query = this.query + handlerInput.suggestions = this.suggestions + handlerInput.fileInfo = this.fileInfo + handlerInput.query = this.query } - share = await shareRequestObject.handler(shareRequestObject) - share = new Share(share) + const externalShareRequestObject = await shareRequestObject.handler(handlerInput) + share = this.mapShareRequestToShareObject(externalShareRequestObject) } else { share = this.mapShareRequestToShareObject(shareRequestObject) } diff --git a/apps/files_sharing/src/views/SharingDetailsTab.vue b/apps/files_sharing/src/views/SharingDetailsTab.vue index fa16d913d97..94d5c07f49c 100644 --- a/apps/files_sharing/src/views/SharingDetailsTab.vue +++ b/apps/files_sharing/src/views/SharingDetailsTab.vue @@ -227,6 +227,8 @@ import ShareRequests from '../mixins/ShareRequests.js' import ShareTypes from '../mixins/ShareTypes.js' import SharesMixin from '../mixins/SharesMixin.js' +import { subscribe } from '@nextcloud/event-bus' + import { ATOMIC_PERMISSIONS, BUNDLED_PERMISSIONS, @@ -652,6 +654,7 @@ export default { mounted() { this.$refs.quickPermissions?.querySelector('input:checked')?.focus() + subscribe('files_sharing:external:add-share', this.handleExistingShareFromExternalSource) }, methods: { @@ -913,6 +916,9 @@ export default { return null // Or a default icon component if needed } }, + handleExistingShareFromExternalSource(share) { + logger.info('Existing share from external source/app', { share }) + }, }, }