Skip to content

Commit

Permalink
Merge pull request #46279 from nextcloud/backport/46068/stable27
Browse files Browse the repository at this point in the history
[stable27] fix(ExternalSharing): Handle template shares from external sources
  • Loading branch information
AndyScherzinger authored Jul 12, 2024
2 parents 0e64da6 + 8517c28 commit a442a79
Show file tree
Hide file tree
Showing 4 changed files with 9 additions and 84 deletions.
76 changes: 0 additions & 76 deletions apps/files_sharing/src/components/SharingInput.vue
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,6 @@ import debounce from 'debounce'
import NcSelect from '@nextcloud/vue/dist/Components/NcSelect.js'

import Config from '../services/ConfigService.js'
import GeneratePassword from '../utils/GeneratePassword.js'
import Share from '../models/Share.js'
import ShareRequests from '../mixins/ShareRequests.js'
import ShareTypes from '../mixins/ShareTypes.js'
Expand Down Expand Up @@ -463,81 +462,6 @@ export default {
...this.shareTypeToIcon(result.value.shareType),
}
},

/**
* Process the new share request
*
* @param {object} value the multiselect option
*/
async addShare(value) {
// Clear the displayed selection
this.value = null

if (value.lookup) {
await this.getSuggestions(this.query, true)

this.$nextTick(() => {
// open the dropdown again
this.$refs.select.$children[0].open = true
})
return true
}

// handle externalResults from OCA.Sharing.ShareSearch
if (value.handler) {
const share = await value.handler(this)
this.$emit('add:share', new Share(share))
return true
}

this.loading = true
console.debug('Adding a new share from the input for', value)
try {
let password = null

if (this.config.enforcePasswordForPublicLink
&& value.shareType === this.SHARE_TYPES.SHARE_TYPE_EMAIL) {
password = await GeneratePassword()
}

const path = (this.fileInfo.path + '/' + this.fileInfo.name).replace('//', '/')
const share = await this.createShare({
path,
shareType: value.shareType,
shareWith: value.shareWith,
password,
permissions: this.fileInfo.sharePermissions & OC.getCapabilities().files_sharing.default_permissions,
attributes: JSON.stringify(this.fileInfo.shareAttributes),
})

// If we had a password, we need to show it to the user as it was generated
if (password) {
share.newPassword = password
// Wait for the newly added share
const component = await new Promise(resolve => {
this.$emit('add:share', share, resolve)
})

// open the menu on the
// freshly created share component
component.open = true
} else {
// Else we just add it normally
this.$emit('add:share', share)
}

await this.getRecommendations()
} catch (error) {
this.$nextTick(() => {
// open the dropdown again on error
this.$refs.select.$children[0].open = true
})
this.query = value.shareWith
console.error('Error while adding new share', error)
} finally {
this.loading = false
}
},
},
}
</script>
Expand Down
11 changes: 6 additions & 5 deletions apps/files_sharing/src/mixins/ShareDetails.js
Original file line number Diff line number Diff line change
Expand Up @@ -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)
}
Expand Down
4 changes: 2 additions & 2 deletions dist/files_sharing-files_sharing_tab.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/files_sharing-files_sharing_tab.js.map

Large diffs are not rendered by default.

0 comments on commit a442a79

Please sign in to comment.