Merge pull request #20771 from nextcloud/fix/sharing-reactivity

Do not process the same shares twice
pull/20776/head
Roeland Jago Douma 2020-05-01 19:15:38 +07:00 committed by GitHub
commit 24bb4a05c4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 24 additions and 22 deletions

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -398,15 +398,19 @@ export default {
* @returns {boolean} * @returns {boolean}
*/ */
hasExpirationDate: { hasExpirationDate: {
get: function() { get() {
return this.config.isDefaultExpireDateEnforced || !!this.share.expireDate return this.config.isDefaultExpireDateEnforced
|| !!this.share.expireDate
}, },
set: function(enabled) { set(enabled) {
this.share.expireDate = enabled let dateString = moment(this.config.defaultExpirationDateString)
? this.config.defaultExpirationDateString !== '' if (!dateString.isValid()) {
? this.config.defaultExpirationDateString dateString = moment()
: moment().format('YYYY-MM-DD') }
this.share.state.expiration = enabled
? dateString.format('YYYY-MM-DD')
: '' : ''
console.debug('Expiration date status', enabled, this.share.expireDate)
}, },
}, },
@ -420,11 +424,11 @@ export default {
* @returns {boolean} * @returns {boolean}
*/ */
isPasswordProtected: { isPasswordProtected: {
get: function() { get() {
return this.config.enforcePasswordForPublicLink return this.config.enforcePasswordForPublicLink
|| !!this.share.password || !!this.share.password
}, },
set: async function(enabled) { async set(enabled) {
// TODO: directly save after generation to make sure the share is always protected // TODO: directly save after generation to make sure the share is always protected
Vue.set(this.share, 'password', enabled ? await this.generatePassword() : '') Vue.set(this.share, 'password', enabled ? await this.generatePassword() : '')
Vue.set(this.share, 'newPassword', this.share.password) Vue.set(this.share, 'newPassword', this.share.password)

@ -64,7 +64,7 @@ export default {
* ! This allow vue to make the Share class state reactive * ! This allow vue to make the Share class state reactive
* ! do not remove it ot you'll lose all reactivity here * ! do not remove it ot you'll lose all reactivity here
*/ */
reactiveState: this.share && this.share.state, reactiveState: this.share?.state,
SHARE_TYPES: { SHARE_TYPES: {
SHARE_TYPE_USER: OC.Share.SHARE_TYPE_USER, SHARE_TYPE_USER: OC.Share.SHARE_TYPE_USER,

@ -189,10 +189,6 @@ export default {
}, },
}, },
beforeMount() {
this.getShares()
},
methods: { methods: {
/** /**
* Get the existing shares infos * Get the existing shares infos
@ -284,6 +280,8 @@ export default {
this.linkShares = shares.filter(share => share.type === this.SHARE_TYPES.SHARE_TYPE_LINK || share.type === this.SHARE_TYPES.SHARE_TYPE_EMAIL) this.linkShares = shares.filter(share => share.type === this.SHARE_TYPES.SHARE_TYPE_LINK || share.type === this.SHARE_TYPES.SHARE_TYPE_EMAIL)
this.shares = shares.filter(share => share.type !== this.SHARE_TYPES.SHARE_TYPE_LINK && share.type !== this.SHARE_TYPES.SHARE_TYPE_EMAIL) this.shares = shares.filter(share => share.type !== this.SHARE_TYPES.SHARE_TYPE_LINK && share.type !== this.SHARE_TYPES.SHARE_TYPE_EMAIL)
console.debug('Processed', this.linkShares.length, 'link share(s)')
console.debug('Processed', this.shares.length, 'share(s)')
} }
}, },