diff --git a/src/public/app/widgets/buttons/edit_button.js b/src/public/app/widgets/buttons/edit_button.js index af70cc6aa..9b458fcca 100644 --- a/src/public/app/widgets/buttons/edit_button.js +++ b/src/public/app/widgets/buttons/edit_button.js @@ -1,5 +1,7 @@ import ButtonWidget from "./button_widget.js"; import appContext from "../../services/app_context.js"; +import attributeService from "../../services/attributes.js"; +import protectedSessionHolder from "../../services/protected_session_holder.js"; export default class EditButton extends ButtonWidget { isEnabled() { @@ -22,9 +24,29 @@ export default class EditButton extends ButtonWidget { } async refreshWithNote(note) { - // can't do this in isEnabled() since isReadOnly is async - this.toggleInt(await this.noteContext.isReadOnly()); + if (note.isProtected && !protectedSessionHolder.isProtectedSessionAvailable()) { + this.toggleInt(false); + } + else { + // prevent flickering by assuming hidden before async operation + this.toggleInt(false); + + // can't do this in isEnabled() since isReadOnly is async + this.toggleInt(await this.noteContext.isReadOnly()); + } await super.refreshWithNote(note); } + + entitiesReloadedEvent({loadResults}) { + if (loadResults.getAttributes().find( + attr => attr.type === 'label' + && attr.name.toLowerCase().includes("readonly") + && attributeService.isAffecting(attr, this.note) + )) { + this.noteContext.readOnlyTemporarilyDisabled = false; + + this.refresh(); + } + } }