Merge pull request #20771 from nextcloud/fix/sharing-reactivity
Do not process the same shares twice
This commit is contained in:
commit
24bb4a05c4
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)')
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue