From dbe1bd552a2d42a538dbc3267a40f399bdd57fca 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 6fac3e4bb8f..9d8530b8066 100644 --- a/apps/files_sharing/src/views/SharingDetailsTab.vue +++ b/apps/files_sharing/src/views/SharingDetailsTab.vue @@ -273,6 +273,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, @@ -729,6 +731,7 @@ export default { mounted() { this.$refs.quickPermissions?.querySelector('input:checked')?.focus() + subscribe('files_sharing:external:add-share', this.handleExistingShareFromExternalSource) }, methods: { @@ -997,6 +1000,9 @@ export default { return null // Or a default icon component if needed } }, + handleExistingShareFromExternalSource(share) { + logger.info('Existing share from external source/app', { share }) + }, }, }