diff --git a/apps/files_sharing/src/models/Share.ts b/apps/files_sharing/src/models/Share.ts index b0638b29448..a861aabf88d 100644 --- a/apps/files_sharing/src/models/Share.ts +++ b/apps/files_sharing/src/models/Share.ts @@ -38,6 +38,10 @@ export default class Share { } ocsData.attributes = ocsData.attributes ?? [] + // Pre-declared so Vue 2 makes newPassword reactive at observation time, + // avoiding $set's property-addition path which races with async setters. + ocsData.newPassword = ocsData.newPassword ?? undefined + // store state this._share = ocsData } @@ -278,6 +282,18 @@ export default class Share { this._share.password = password } + /** + * Unsaved password (set during share creation or editing). + * Delegates to _share so reads/writes go through the reactive state. + */ + get newPassword(): string | undefined { + return this._share.newPassword + } + + set newPassword(value: string | undefined) { + this._share.newPassword = value + } + /** * Password expiration time * @return {string} date with YYYY-MM-DD format