Disable publish on empty documents
This commit is contained in:
@@ -14,6 +14,8 @@ const parseHeader = text => {
|
||||
return firstLine.replace(/^#/, '').trim();
|
||||
};
|
||||
|
||||
const DEFAULT_TITLE = 'Untitled document';
|
||||
|
||||
class Document {
|
||||
isSaving: boolean = false;
|
||||
hasPendingChanges: boolean = false;
|
||||
@@ -32,7 +34,7 @@ class Document {
|
||||
private: boolean = false;
|
||||
starred: boolean = false;
|
||||
text: string = '';
|
||||
title: string = 'Untitled document';
|
||||
title: string = '';
|
||||
parentDocument: ?Document;
|
||||
updatedAt: string;
|
||||
updatedBy: User;
|
||||
@@ -70,6 +72,14 @@ class Document {
|
||||
return [];
|
||||
}
|
||||
|
||||
@computed get allowSave(): boolean {
|
||||
// Check if the document title has been modified and user generated content exists
|
||||
return (
|
||||
this.text.replace(new RegExp(`^\#$`), '').trim().length > 0 &&
|
||||
!this.isSaving
|
||||
);
|
||||
}
|
||||
|
||||
/* Actions */
|
||||
|
||||
@action star = async () => {
|
||||
@@ -135,6 +145,14 @@ class Document {
|
||||
text: this.text,
|
||||
});
|
||||
} else {
|
||||
if (!this.title) {
|
||||
this.title = DEFAULT_TITLE;
|
||||
this.text = this.text.replace(
|
||||
new RegExp(`^\# `),
|
||||
`# ${DEFAULT_TITLE}`
|
||||
);
|
||||
}
|
||||
|
||||
const data = {
|
||||
parentDocument: undefined,
|
||||
collection: this.collection.id,
|
||||
|
||||
@@ -70,6 +70,8 @@ type Props = {
|
||||
if (props.newDocument) {
|
||||
const newDocument = new Document({
|
||||
collection: { id: props.match.params.id },
|
||||
title: '',
|
||||
text: '',
|
||||
});
|
||||
this.setState({ newDocument });
|
||||
} else {
|
||||
@@ -102,6 +104,7 @@ type Props = {
|
||||
};
|
||||
|
||||
onSave = async (redirect: boolean = false) => {
|
||||
if (!get(this.document, 'allowSave')) return;
|
||||
let document = this.document;
|
||||
|
||||
if (!document) return;
|
||||
@@ -218,7 +221,7 @@ type Props = {
|
||||
? <SaveAction
|
||||
showCheckmark={this.state.showAsSaved}
|
||||
onClick={this.onSave.bind(this, true)}
|
||||
disabled={get(this.document, 'isSaving')}
|
||||
disabled={!get(this.document, 'allowSave')}
|
||||
isNew={!!isNew}
|
||||
/>
|
||||
: <a onClick={this.onClickEdit}>Edit</a>}
|
||||
|
||||
Reference in New Issue
Block a user