Extend pending shares list to include remote shares

And adjust the accept/decline actions to use the right endpoint for
remote shares.

Signed-off-by: Vincent Petry <vincent@nextcloud.com>
This commit is contained in:
Vincent Petry 2021-07-01 17:26:00 +02:00
parent 5bd4ed19d4
commit df835ed350
No known key found for this signature in database
GPG key ID: E055D6A4D513575C
3 changed files with 48 additions and 3 deletions

View file

@ -296,7 +296,11 @@ OCA.Sharing.App = {
type: OCA.Files.FileActions.TYPE_INLINE,
actionHandler(fileName, context) {
const shareId = context.$file.data('shareId')
$.post(OC.linkToOCS('apps/files_sharing/api/v1/shares/pending', 2) + shareId)
let shareBase = 'shares/pending'
if (context.$file.attr('data-remote-id')) {
shareBase = 'remote_shares/pending'
}
$.post(OC.linkToOCS('apps/files_sharing/api/v1/' + shareBase, 2) + shareId)
.success(function(result) {
context.fileList.remove(context.fileInfoModel.attributes.name)
}).fail(function() {
@ -313,8 +317,13 @@ OCA.Sharing.App = {
type: OCA.Files.FileActions.TYPE_INLINE,
actionHandler(fileName, context) {
const shareId = context.$file.data('shareId')
let shareBase = 'shares'
if (context.$file.attr('data-remote-id')) {
shareBase = 'remote_shares/pending'
}
$.ajax({
url: OC.linkToOCS('apps/files_sharing/api/v1/shares', 2) + shareId,
url: OC.linkToOCS('apps/files_sharing/api/v1/' + shareBase, 2) + shareId,
type: 'DELETE',
}).success(function(result) {
context.fileList.remove(context.fileInfoModel.attributes.name)

View file

@ -212,6 +212,18 @@
}
}
var pendingRemoteShares = {
url: OC.linkToOCS('apps/files_sharing/api/v1/remote_shares', 2) + 'pending',
/* jshint camelcase: false */
data: {
format: 'json'
},
type: 'GET',
beforeSend: function(xhr) {
xhr.setRequestHeader('OCS-APIREQUEST', 'true')
}
}
var shares = {
url: OC.linkToOCS('apps/files_sharing/api/v1') + 'shares',
/* jshint camelcase: false */
@ -245,6 +257,7 @@
promises.push($.ajax(deletedShares))
} else if (this._showPending) {
promises.push($.ajax(pendingShares))
promises.push($.ajax(pendingRemoteShares))
} else {
promises.push($.ajax(shares))
@ -292,7 +305,12 @@
}
if (additionalShares && additionalShares.ocs && additionalShares.ocs.data) {
files = files.concat(this._makeFilesFromShares(additionalShares.ocs.data, !this._sharedWithUser))
if (this._showPending) {
// in this case the second callback is about pending remote shares
files = files.concat(this._makeFilesFromRemoteShares(additionalShares.ocs.data))
} else {
files = files.concat(this._makeFilesFromShares(additionalShares.ocs.data, !this._sharedWithUser))
}
}
this.setFiles(files)
@ -317,6 +335,21 @@
tags: share.tags || []
}
if (share.remote_id) {
// remote share
if (share.accepted !== '1') {
file.name = OC.basename(share.name)
file.path = '/'
}
file.remoteId = share.remote_id
file.shareOwnerId = share.owner
}
if (!file.type) {
// pending shares usually have no type, so default to showing a directory icon
file.mimetype = 'httpd/unix-directory'
}
file.shares = [{
id: share.id,
type: OC.Share.SHARE_TYPE_REMOTE

View file

@ -104,6 +104,9 @@ import escapeHTML from 'escape-html'
if (fileData.shareTypes) {
tr.attr('data-share-types', fileData.shareTypes.join(','))
}
if (fileData.remoteId) {
tr.attr('data-remote-id', fileData.remoteId)
}
return tr
}