diff --git a/app/scenes/Document/components/DataLoader.js b/app/scenes/Document/components/DataLoader.js index 8d65c41d..a308cfcb 100644 --- a/app/scenes/Document/components/DataLoader.js +++ b/app/scenes/Document/components/DataLoader.js @@ -181,7 +181,7 @@ class DataLoader extends React.Component { revision={revision} abilities={abilities} location={location} - readOnly={!this.isEditing} + readOnly={!this.isEditing || !abilities.update || document.isArchived} onSearchLink={this.onSearchLink} onCreateLink={this.onCreateLink} /> diff --git a/app/scenes/Document/components/Document.js b/app/scenes/Document/components/Document.js index de9a24dd..734200f0 100644 --- a/app/scenes/Document/components/Document.js +++ b/app/scenes/Document/components/Document.js @@ -294,8 +294,16 @@ class DocumentScene extends React.Component { onChange = getEditorText => { this.getEditorText = getEditorText; - this.updateIsDirtyDebounced(); - this.autosave(); + + // document change while read only is presumed to be a checkbox edit, + // in that case we don't delay in saving for a better user experience. + if (this.props.readOnly) { + this.updateIsDirty(); + this.onSave({ done: false, autosave: true }); + } else { + this.updateIsDirtyDebounced(); + this.autosave(); + } }; onChangeTitle = event => { @@ -320,6 +328,7 @@ class DocumentScene extends React.Component { revision, readOnly, location, + abilities, auth, ui, match, @@ -443,7 +452,8 @@ class DocumentScene extends React.Component { onSave={this.onSave} onPublish={this.onPublish} onCancel={this.goBack} - readOnly={readOnly || document.isArchived} + readOnly={readOnly} + readOnlyWriteCheckboxes={readOnly && abilities.update} ui={this.props.ui} /> diff --git a/app/scenes/Document/components/Editor.js b/app/scenes/Document/components/Editor.js index b4e7274d..92a89c69 100644 --- a/app/scenes/Document/components/Editor.js +++ b/app/scenes/Document/components/Editor.js @@ -83,6 +83,7 @@ class DocumentEditor extends React.Component { placeholder="Start with a title…" value={!title && readOnly ? "Untitled" : title} style={startsWithEmojiAndSpace ? { marginLeft: "-1.2em" } : undefined} + readOnlyWriteCheckboxes readOnly={readOnly} autoFocus={!title} maxLength={100}