Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 0 additions & 9 deletions apps/files_sharing/src/components/SharingEntry.vue
Original file line number Diff line number Diff line change
Expand Up @@ -128,15 +128,6 @@ export default {
return (typeof this.share.status === 'object' && !Array.isArray(this.share.status))
},
},

methods: {
/**
* Save potential changed data on menu close
*/
onMenuClose() {
this.onNoteSubmit()
},
},
}
</script>

Expand Down
81 changes: 1 addition & 80 deletions apps/files_sharing/src/components/SharingEntryLink.vue
Original file line number Diff line number Diff line change
Expand Up @@ -147,8 +147,7 @@
class="sharing-entry__actions"
:aria-label="actionsTooltip"
menu-align="right"
:open.sync="open"
@close="onMenuClose">
:open.sync="open">
<template v-if="share">
<template v-if="share.canEdit && canReshare">
<NcActionButton
Expand Down Expand Up @@ -442,30 +441,6 @@ export default {
return OC.appswebroots.spreed !== undefined
},

/**
* Is it possible to protect the password by Talk?
*
* @return {boolean}
*/
isPasswordProtectedByTalkAvailable() {
return this.isPasswordProtected && this.isTalkEnabled
},

/**
* Is the current share password protected by Talk?
*
* @return {boolean}
*/
isPasswordProtectedByTalk: {
get() {
return this.share.sendPasswordByTalk
},

async set(enabled) {
this.share.sendPasswordByTalk = enabled
},
},

/**
* Is the current share an email share ?
*
Expand All @@ -477,20 +452,6 @@ export default {
: false
},

canTogglePasswordProtectedByTalkAvailable() {
if (!this.isPasswordProtected) {
// Makes no sense
return false
} else if (this.isEmailShareType && !this.hasUnsavedPassword) {
// For email shares we need a new password in order to enable or
// disable
return false
}

// Anything else should be fine
return true
},

/**
* Pending data.
* If the share still doesn't have an id, it is not synced
Expand Down Expand Up @@ -853,46 +814,6 @@ export default {
}
},

/**
* Menu have been closed or password has been submitted.
* The only property that does not get
* synced automatically is the password
* So let's check if we have an unsaved
* password.
* expireDate is saved on datepicker pick
* or close.
*/
onPasswordSubmit() {
if (this.hasUnsavedPassword) {
this.share.newPassword = this.share.newPassword.trim()
this.queueUpdate('password')
}
},

/**
* Update the password along with "sendPasswordByTalk".
*
* If the password was modified the new password is sent; otherwise
* updating a mail share would fail, as in that case it is required that
* a new password is set when enabling or disabling
* "sendPasswordByTalk".
*/
onPasswordProtectedByTalkChange() {
if (this.hasUnsavedPassword) {
this.share.newPassword = this.share.newPassword.trim()
}

this.queueUpdate('sendPasswordByTalk', 'password')
},

/**
* Save potential changed data on menu close
*/
onMenuClose() {
this.onPasswordSubmit()
this.onNoteSubmit()
},

/**
* @param {boolean} enabled True if expiration is enabled
*/
Expand Down
25 changes: 2 additions & 23 deletions apps/files_sharing/src/mixins/SharesMixin.js
Original file line number Diff line number Diff line change
Expand Up @@ -261,27 +261,6 @@ export default {
this.share.expireDate = this.formatDateToString(parsedDate)
},

/**
* Note changed, let's save it to a different key
*
* @param {string} note the share note
*/
onNoteChange(note) {
this.$set(this.share, 'newNote', note.trim())
},

/**
* When the note change, we trim, save and dispatch
*
*/
onNoteSubmit() {
if (this.share.newNote) {
this.share.note = this.share.newNote
this.$delete(this.share, 'newNote')
this.queueUpdate('note')
}
},

/**
* Delete share button handler
*/
Expand Down Expand Up @@ -348,7 +327,7 @@ export default {
if (propertyNames.includes('password')) {
// reset password state after sync
this.share.password = this.share.newPassword || undefined
this.$delete(this.share, 'newPassword')
this.$set(this.share, 'newPassword', undefined)

// updates password expiration time after sync
this.share.passwordExpirationTime = updatedShare.password_expiration_time
Expand Down Expand Up @@ -419,7 +398,7 @@ export default {
if (this.share.newPassword === this.share.password) {
this.share.password = ''
}
this.$delete(this.share, 'newPassword')
this.$set(this.share, 'newPassword', undefined)
}

// re-open menu if closed
Expand Down
2 changes: 1 addition & 1 deletion apps/files_sharing/src/models/Share.ts
Original file line number Diff line number Diff line change
Expand Up @@ -422,7 +422,7 @@ export default class Share {
const hasDisabledDownload = (attribute) => {
return attribute.scope === 'permissions' && attribute.key === 'download' && attribute.value === false
}
return this.attributes.some(hasDisabledDownload)
return !this.attributes.some(hasDisabledDownload)
}

/**
Expand Down
58 changes: 36 additions & 22 deletions apps/files_sharing/src/views/SharingDetailsTab.vue
Original file line number Diff line number Diff line change
Expand Up @@ -155,8 +155,7 @@
</template>
<NcCheckboxRadioSwitch
v-if="canTogglePasswordProtectedByTalkAvailable"
v-model="isPasswordProtectedByTalk"
@update:modelValue="onPasswordProtectedByTalkChange">
v-model="isPasswordProtectedByTalk">
{{ t('files_sharing', 'Video verification') }}
</NcCheckboxRadioSwitch>
<NcCheckboxRadioSwitch v-model="hasExpirationDate" :disabled="isExpiryDateEnforced">
Expand All @@ -178,8 +177,7 @@
<NcCheckboxRadioSwitch
v-if="isPublicShare"
v-model="share.hideDownload"
:disabled="canChangeHideDownload"
@update:modelValue="queueUpdate('hideDownload')">
:disabled="canChangeHideDownload">
{{ t('files_sharing', 'Hide download') }}
</NcCheckboxRadioSwitch>
<NcCheckboxRadioSwitch
Expand Down Expand Up @@ -400,6 +398,13 @@ export default {
creating: false,
initialToken: this.share.token,
loadingToken: false,
initialPermissions: undefined,
initialExpireDate: undefined,
initialNote: undefined,
initialLabel: undefined,
initialHideDownload: undefined,
initialSendPasswordByTalk: undefined,
initialHasDownloadPermission: undefined,

externalShareActions: getSidebarActions(),
// legacy
Expand Down Expand Up @@ -867,6 +872,14 @@ export default {
},

beforeMount() {
this.initialPermissions = this.share.permissions
this.initialExpireDate = this.share.expireDate
this.initialNote = this.share.note
this.initialLabel = this.share.label
this.initialHideDownload = this.share.hideDownload
this.initialSendPasswordByTalk = this.share.sendPasswordByTalk
this.initialHasDownloadPermission = this.share.hasDownloadPermission

this.initializePermissions()
this.initializeAttributes()
logger.debug('Share object received', { share: this.share })
Expand Down Expand Up @@ -931,6 +944,16 @@ export default {

cancel() {
this.share.token = this.initialToken
this.share.permissions = this.initialPermissions
this.share.expireDate = this.initialExpireDate
this.share.note = this.initialNote
this.share.label = this.initialLabel
this.share.hideDownload = this.initialHideDownload
this.share.sendPasswordByTalk = this.initialSendPasswordByTalk
this.share.hasDownloadPermission = this.initialHasDownloadPermission

this.$set(this.share, 'newPassword', undefined)

this.$emit('close-sharing-details')
},

Expand Down Expand Up @@ -1065,7 +1088,7 @@ export default {

async saveShare() {
const permissionsAndAttributes = ['permissions', 'attributes', 'note', 'expireDate']
const publicShareAttributes = ['label', 'hideDownload']
const publicShareAttributes = ['label', 'hideDownload', 'sendPasswordByTalk']
// Only include password if it's being actively changed
if (this.hasUnsavedPassword) {
publicShareAttributes.push('password')
Expand Down Expand Up @@ -1099,6 +1122,13 @@ export default {
this.share.password = ''
}

// "Video verification" must be disabled if the password was
// disabled, as it does not make sense and would also prevent
// saving if it is still enabled.
if (this.isPasswordProtectedByTalk && !this.isPasswordProtected) {
this.isPasswordProtectedByTalk = false
}

if (!this.hasExpirationDate) {
this.share.expireDate = ''
}
Expand Down Expand Up @@ -1228,30 +1258,14 @@ export default {
*/
onPasswordChange(password) {
if (password === '') {
this.$delete(this.share, 'newPassword')
this.$set(this.share, 'newPassword', undefined)
this.passwordError = this.isNewShare && this.isPasswordEnforced
return
}
this.passwordError = !this.isValidShareAttribute(password)
this.$set(this.share, 'newPassword', password)
},

/**
* Update the password along with "sendPasswordByTalk".
*
* If the password was modified the new password is sent; otherwise
* updating a mail share would fail, as in that case it is required that
* a new password is set when enabling or disabling
* "sendPasswordByTalk".
*/
onPasswordProtectedByTalkChange() {
if (this.isEmailShareType || this.hasUnsavedPassword) {
this.queueUpdate('sendPasswordByTalk', 'password')
} else {
this.queueUpdate('sendPasswordByTalk')
}
},

isValidShareAttribute(value) {
if ([null, undefined].includes(value)) {
return false
Expand Down
2 changes: 1 addition & 1 deletion build/eslint-baseline-legacy.json
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
},
"apps/files_sharing/src/views/SharingDetailsTab.vue": {
"vue/no-mutating-props": {
"count": 24
"count": 31
}
},
"apps/files_sharing/src/views/SharingLinkList.vue": {
Expand Down
4 changes: 2 additions & 2 deletions dist/1598-1598.js

Large diffs are not rendered by default.

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

Large diffs are not rendered by default.

2 changes: 0 additions & 2 deletions dist/1991-1991.js

This file was deleted.

1 change: 0 additions & 1 deletion dist/1991-1991.js.map

This file was deleted.

1 change: 0 additions & 1 deletion dist/1991-1991.js.map.license

This file was deleted.

2 changes: 2 additions & 0 deletions dist/6590-6590.js

Large diffs are not rendered by default.

File renamed without changes.
1 change: 1 addition & 0 deletions dist/6590-6590.js.map

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions dist/6590-6590.js.map.license
Loading
Loading