Signed-off-by: Louis Chemineau <louis@chmn.me> Update tests Signed-off-by: Louis Chemineau <louis@chmn.me>tags/v24.0.0beta1
@@ -81,6 +81,7 @@ import $ from 'jquery' | |||
import axios from '@nextcloud/axios' | |||
import { emit } from '@nextcloud/event-bus' | |||
import moment from '@nextcloud/moment' | |||
import { Type as ShareTypes } from '@nextcloud/sharing' | |||
import AppSidebar from '@nextcloud/vue/dist/Components/AppSidebar' | |||
import ActionButton from '@nextcloud/vue/dist/Components/ActionButton' | |||
@@ -323,8 +324,8 @@ export default { | |||
} else if (fileInfo.mountType !== undefined && fileInfo.mountType !== '') { | |||
return OC.MimeType.getIconUrl('dir-' + fileInfo.mountType) | |||
} else if (fileInfo.shareTypes && ( | |||
fileInfo.shareTypes.indexOf(OC.Share.SHARE_TYPE_LINK) > -1 | |||
|| fileInfo.shareTypes.indexOf(OC.Share.SHARE_TYPE_EMAIL) > -1) | |||
fileInfo.shareTypes.indexOf(ShareTypes.SHARE_TYPE_LINK) > -1 | |||
|| fileInfo.shareTypes.indexOf(ShareTypes.SHARE_TYPE_EMAIL) > -1) | |||
) { | |||
return OC.MimeType.getIconUrl('dir-public') | |||
} else if (fileInfo.shareTypes && fileInfo.shareTypes.length > 0) { |
@@ -329,6 +329,7 @@ | |||
<script> | |||
import { generateUrl } from '@nextcloud/router' | |||
import { Type as ShareTypes } from '@nextcloud/sharing' | |||
import Vue from 'vue' | |||
import ActionButton from '@nextcloud/vue/dist/Components/ActionButton' | |||
@@ -662,8 +663,8 @@ export default { | |||
externalLinkActions() { | |||
// filter only the registered actions for said link | |||
return this.ExternalShareActions.actions | |||
.filter(action => action.shareType.includes(OC.Share.SHARE_TYPE_LINK) | |||
|| action.shareType.includes(OC.Share.SHARE_TYPE_EMAIL)) | |||
.filter(action => action.shareType.includes(ShareTypes.SHARE_TYPE_LINK) | |||
|| action.shareType.includes(ShareTypes.SHARE_TYPE_EMAIL)) | |||
}, | |||
isPasswordPolicyEnabled() { | |||
@@ -682,7 +683,7 @@ export default { | |||
} | |||
const shareDefaults = { | |||
share_type: OC.Share.SHARE_TYPE_LINK, | |||
share_type: ShareTypes.SHARE_TYPE_LINK, | |||
} | |||
if (this.config.isDefaultExpireDateEnforced) { | |||
// default is empty string if not set | |||
@@ -756,7 +757,7 @@ export default { | |||
const path = (this.fileInfo.path + '/' + this.fileInfo.name).replace('//', '/') | |||
const newShare = await this.createShare({ | |||
path, | |||
shareType: OC.Share.SHARE_TYPE_LINK, | |||
shareType: ShareTypes.SHARE_TYPE_LINK, | |||
password: share.password, | |||
expireDate: share.expireDate, | |||
// we do not allow setting the publicUpload |
@@ -21,21 +21,12 @@ | |||
* | |||
*/ | |||
import { Type as ShareTypes } from '@nextcloud/sharing' | |||
export default { | |||
data() { | |||
return { | |||
SHARE_TYPES: { | |||
SHARE_TYPE_USER: OC.Share.SHARE_TYPE_USER, | |||
SHARE_TYPE_GROUP: OC.Share.SHARE_TYPE_GROUP, | |||
SHARE_TYPE_LINK: OC.Share.SHARE_TYPE_LINK, | |||
SHARE_TYPE_EMAIL: OC.Share.SHARE_TYPE_EMAIL, | |||
SHARE_TYPE_REMOTE: OC.Share.SHARE_TYPE_REMOTE, | |||
SHARE_TYPE_CIRCLE: OC.Share.SHARE_TYPE_CIRCLE, | |||
SHARE_TYPE_GUEST: OC.Share.SHARE_TYPE_GUEST, | |||
SHARE_TYPE_DECK: OC.Share.SHARE_TYPE_DECK, | |||
SHARE_TYPE_REMOTE_GROUP: OC.Share.SHARE_TYPE_REMOTE_GROUP, | |||
SHARE_TYPE_ROOM: OC.Share.SHARE_TYPE_ROOM, | |||
}, | |||
SHARE_TYPES: ShareTypes, | |||
} | |||
}, | |||
} |
@@ -75,18 +75,6 @@ export default { | |||
* ! do not remove it ot you'll lose all reactivity here | |||
*/ | |||
reactiveState: this.share?.state, | |||
SHARE_TYPES: { | |||
SHARE_TYPE_USER: OC.Share.SHARE_TYPE_USER, | |||
SHARE_TYPE_GROUP: OC.Share.SHARE_TYPE_GROUP, | |||
SHARE_TYPE_LINK: OC.Share.SHARE_TYPE_LINK, | |||
SHARE_TYPE_EMAIL: OC.Share.SHARE_TYPE_EMAIL, | |||
SHARE_TYPE_REMOTE: OC.Share.SHARE_TYPE_REMOTE, | |||
SHARE_TYPE_CIRCLE: OC.Share.SHARE_TYPE_CIRCLE, | |||
SHARE_TYPE_GUEST: OC.Share.SHARE_TYPE_GUEST, | |||
SHARE_TYPE_REMOTE_GROUP: OC.Share.SHARE_TYPE_REMOTE_GROUP, | |||
SHARE_TYPE_ROOM: OC.Share.SHARE_TYPE_ROOM, | |||
}, | |||
} | |||
}, | |||
@@ -50,7 +50,7 @@ export default class ExternalShareActions { | |||
* @param {object} action new action component to register | |||
* @param {string} action.id unique action id | |||
* @param {Function} action.data data to bind the component to | |||
* @param {Array} action.shareType list of OC.Share.SHARE_XXX to be mounted on | |||
* @param {Array} action.shareType list of \@nextcloud/sharing.Types.SHARE_XXX to be mounted on | |||
* @param {object} action.handlers list of listeners | |||
* @return {boolean} | |||
*/ | |||
@@ -59,7 +59,7 @@ export default class ExternalShareActions { | |||
if (typeof action !== 'object' | |||
|| typeof action.id !== 'string' | |||
|| typeof action.data !== 'function' // () => {disabled: true} | |||
|| !Array.isArray(action.shareType) // [OC.Share.SHARE_TYPE_LINK, ...] | |||
|| !Array.isArray(action.shareType) // [\@nextcloud/sharing.Types.SHARE_TYPE_LINK, ...] | |||
|| typeof action.handlers !== 'object' // {click: () => {}, ...} | |||
|| !Object.values(action.handlers).every(handler => typeof handler === 'function')) { | |||
console.error('Invalid action provided', action) |
@@ -35,6 +35,9 @@ | |||
/* eslint-disable */ | |||
import escapeHTML from 'escape-html' | |||
import { Type as ShareTypes } from '@nextcloud/sharing' | |||
import { getCapabilities } from '@nextcloud/capabilities' | |||
(function() { | |||
_.extend(OC.Files.Client, { | |||
@@ -70,7 +73,7 @@ import escapeHTML from 'escape-html' | |||
*/ | |||
attach: function(fileList) { | |||
// core sharing is disabled/not loaded | |||
if (!OC.Share) { | |||
if (!getCapabilities().files_sharing?.api_enabled) { | |||
return | |||
} | |||
if (fileList.id === 'trashbin' || fileList.id === 'files.public') { | |||
@@ -164,30 +167,30 @@ import escapeHTML from 'escape-html' | |||
_.each($files, function(file) { | |||
var $tr = $(file) | |||
var shareTypes = $tr.attr('data-share-types') || '' | |||
var shareTypesStr = $tr.attr('data-share-types') || '' | |||
var shareOwner = $tr.attr('data-share-owner') | |||
if (shareTypes || shareOwner) { | |||
if (shareTypesStr || shareOwner) { | |||
var hasLink = false | |||
var hasShares = false | |||
_.each(shareTypes.split(',') || [], function(shareType) { | |||
shareType = parseInt(shareType, 10) | |||
if (shareType === OC.Share.SHARE_TYPE_LINK) { | |||
_.each(shareTypesStr.split(',') || [], function(shareTypeStr) { | |||
let shareType = parseInt(shareTypeStr, 10) | |||
if (shareType === ShareTypes.SHARE_TYPE_LINK) { | |||
hasLink = true | |||
} else if (shareType === OC.Share.SHARE_TYPE_EMAIL) { | |||
} else if (shareType === ShareTypes.SHARE_TYPE_EMAIL) { | |||
hasLink = true | |||
} else if (shareType === OC.Share.SHARE_TYPE_USER) { | |||
} else if (shareType === ShareTypes.SHARE_TYPE_USER) { | |||
hasShares = true | |||
} else if (shareType === OC.Share.SHARE_TYPE_GROUP) { | |||
} else if (shareType === ShareTypes.SHARE_TYPE_GROUP) { | |||
hasShares = true | |||
} else if (shareType === OC.Share.SHARE_TYPE_REMOTE) { | |||
} else if (shareType === ShareTypes.SHARE_TYPE_REMOTE) { | |||
hasShares = true | |||
} else if (shareType === OC.Share.SHARE_TYPE_REMOTE_GROUP) { | |||
} else if (shareType === ShareTypes.SHARE_TYPE_REMOTE_GROUP) { | |||
hasShares = true | |||
} else if (shareType === OC.Share.SHARE_TYPE_CIRCLE) { | |||
} else if (shareType === ShareTypes.SHARE_TYPE_CIRCLE) { | |||
hasShares = true | |||
} else if (shareType === OC.Share.SHARE_TYPE_ROOM) { | |||
} else if (shareType === ShareTypes.SHARE_TYPE_ROOM) { | |||
hasShares = true | |||
} else if (shareType === OC.Share.SHARE_TYPE_DECK) { | |||
} else if (shareType === ShareTypes.SHARE_TYPE_DECK) { | |||
hasShares = true | |||
} | |||
}) | |||
@@ -218,8 +221,8 @@ import escapeHTML from 'escape-html' | |||
permissions: OC.PERMISSION_ALL, | |||
iconClass: function(fileName, context) { | |||
var shareType = parseInt(context.$file.data('share-types'), 10) | |||
if (shareType === OC.Share.SHARE_TYPE_EMAIL | |||
|| shareType === OC.Share.SHARE_TYPE_LINK) { | |||
if (shareType === ShareTypes.SHARE_TYPE_EMAIL | |||
|| shareType === ShareTypes.SHARE_TYPE_LINK) { | |||
return 'icon-public' | |||
} | |||
return 'icon-shared' |
@@ -22,6 +22,8 @@ | |||
* | |||
*/ | |||
import { Type as ShareTypes } from '@nextcloud/sharing' | |||
(function() { | |||
'use strict' | |||
@@ -40,7 +42,7 @@ | |||
this.$el.removeClass('shared icon-public icon-shared') | |||
if (isShared) { | |||
this.$el.addClass('shared') | |||
if (data.dirInfo.shareTypes.indexOf(OC.Share.SHARE_TYPE_LINK) !== -1) { | |||
if (data.dirInfo.shareTypes.indexOf(ShareTypes.SHARE_TYPE_LINK) !== -1) { | |||
this.$el.addClass('icon-public') | |||
} else { | |||
this.$el.addClass('icon-shared') |
@@ -21,8 +21,10 @@ | |||
* | |||
*/ | |||
import { Type as ShareTypes } from '@nextcloud/sharing' | |||
const shareWithTitle = function(share) { | |||
if (share.type === OC.Share.SHARE_TYPE_GROUP) { | |||
if (share.type === ShareTypes.SHARE_TYPE_GROUP) { | |||
return t( | |||
'files_sharing', | |||
'Shared with you and the group {group} by {owner}', | |||
@@ -33,7 +35,7 @@ const shareWithTitle = function(share) { | |||
undefined, | |||
{ escape: false } | |||
) | |||
} else if (share.type === OC.Share.SHARE_TYPE_CIRCLE) { | |||
} else if (share.type === ShareTypes.SHARE_TYPE_CIRCLE) { | |||
return t( | |||
'files_sharing', | |||
'Shared with you and {circle} by {owner}', | |||
@@ -44,7 +46,7 @@ const shareWithTitle = function(share) { | |||
undefined, | |||
{ escape: false } | |||
) | |||
} else if (share.type === OC.Share.SHARE_TYPE_ROOM) { | |||
} else if (share.type === ShareTypes.SHARE_TYPE_ROOM) { | |||
if (share.shareWithDisplayName) { | |||
return t( | |||
'files_sharing', |
@@ -86,6 +86,14 @@ window.firstDay = 0; | |||
// setup dummy webroots | |||
/* jshint camelcase: false */ | |||
window.oc_debug = true; | |||
// Mock @nextcloud/capabilities | |||
window._oc_capabilities = { | |||
files_sharing: { | |||
api_enabled: true | |||
} | |||
} | |||
// FIXME: OC.webroot is supposed to be only the path!!! | |||
OC.webroot = location.href + '/'; | |||
OC.appswebroots = { |
@@ -24,6 +24,7 @@ | |||
"@nextcloud/password-confirmation": "^1.0.1", | |||
"@nextcloud/paths": "^2.1.0", | |||
"@nextcloud/router": "^2.0.0", | |||
"@nextcloud/sharing": "^0.1.0", | |||
"@nextcloud/vue": "^4.3.0", | |||
"@nextcloud/vue-dashboard": "^2.0.1", | |||
"autosize": "^5.0.1", | |||
@@ -2953,6 +2954,14 @@ | |||
"core-js": "^3.6.4" | |||
} | |||
}, | |||
"node_modules/@nextcloud/sharing": { | |||
"version": "0.1.0", | |||
"resolved": "https://registry.npmjs.org/@nextcloud/sharing/-/sharing-0.1.0.tgz", | |||
"integrity": "sha512-Cv4uc1aFrA18w0dltq7a5om/EbJSXf36rtO0LP3vi42E6l8ZDVCZwHLKrsZZa/TXNLeYErs1g/6tmWx5xiSSow==", | |||
"dependencies": { | |||
"core-js": "^3.6.4" | |||
} | |||
}, | |||
"node_modules/@nextcloud/stylelint-config": { | |||
"version": "2.1.2", | |||
"resolved": "https://registry.npmjs.org/@nextcloud/stylelint-config/-/stylelint-config-2.1.2.tgz", | |||
@@ -21754,6 +21763,14 @@ | |||
"core-js": "^3.6.4" | |||
} | |||
}, | |||
"@nextcloud/sharing": { | |||
"version": "0.1.0", | |||
"resolved": "https://registry.npmjs.org/@nextcloud/sharing/-/sharing-0.1.0.tgz", | |||
"integrity": "sha512-Cv4uc1aFrA18w0dltq7a5om/EbJSXf36rtO0LP3vi42E6l8ZDVCZwHLKrsZZa/TXNLeYErs1g/6tmWx5xiSSow==", | |||
"requires": { | |||
"core-js": "^3.6.4" | |||
} | |||
}, | |||
"@nextcloud/stylelint-config": { | |||
"version": "2.1.2", | |||
"resolved": "https://registry.npmjs.org/@nextcloud/stylelint-config/-/stylelint-config-2.1.2.tgz", |
@@ -41,6 +41,7 @@ | |||
"@nextcloud/password-confirmation": "^1.0.1", | |||
"@nextcloud/paths": "^2.1.0", | |||
"@nextcloud/router": "^2.0.0", | |||
"@nextcloud/sharing": "^0.1.0", | |||
"@nextcloud/vue": "^4.3.0", | |||
"@nextcloud/vue-dashboard": "^2.0.1", | |||
"autosize": "^5.0.1", |