diff options
-rw-r--r-- | webapp/components/create_post.jsx | 24 | ||||
-rw-r--r-- | webapp/stores/browser_store.jsx | 4 | ||||
-rw-r--r-- | webapp/stores/post_store.jsx | 23 |
3 files changed, 23 insertions, 28 deletions
diff --git a/webapp/components/create_post.jsx b/webapp/components/create_post.jsx index ae25fc74e..e7bf2b92a 100644 --- a/webapp/components/create_post.jsx +++ b/webapp/components/create_post.jsx @@ -40,7 +40,6 @@ export default class CreatePost extends React.Component { this.lastTime = 0; - this.getCurrentDraft = this.getCurrentDraft.bind(this); this.handleSubmit = this.handleSubmit.bind(this); this.postMsgKeyPress = this.postMsgKeyPress.bind(this); this.handleChange = this.handleChange.bind(this); @@ -61,7 +60,7 @@ export default class CreatePost extends React.Component { PostStore.clearDraftUploads(); - const draft = this.getCurrentDraft(); + const draft = PostStore.getCurrentDraft(); this.state = { channelId: ChannelStore.getCurrentId(), @@ -77,25 +76,6 @@ export default class CreatePost extends React.Component { }; } - getCurrentDraft() { - const draft = PostStore.getCurrentDraft(); - const safeDraft = {fileInfos: [], messageText: '', uploadsInProgress: []}; - - if (draft) { - if (draft.message) { - safeDraft.messageText = draft.message; - } - if (draft.fileInfos) { - safeDraft.fileInfos = draft.fileInfos; - } - if (draft.uploadsInProgress) { - safeDraft.uploadsInProgress = draft.uploadsInProgress; - } - } - - return safeDraft; - } - handleSubmit(e) { e.preventDefault(); @@ -358,7 +338,7 @@ export default class CreatePost extends React.Component { onChange() { const channelId = ChannelStore.getCurrentId(); if (this.state.channelId !== channelId) { - const draft = this.getCurrentDraft(); + const draft = PostStore.getCurrentDraft(); this.setState({channelId, messageText: draft.messageText, initialText: draft.messageText, submitting: false, serverError: null, postError: null, fileInfos: draft.fileInfos, uploadsInProgress: draft.uploadsInProgress}); } diff --git a/webapp/stores/browser_store.jsx b/webapp/stores/browser_store.jsx index 4b8bae06b..99aebc466 100644 --- a/webapp/stores/browser_store.jsx +++ b/webapp/stores/browser_store.jsx @@ -52,7 +52,7 @@ class BrowserStoreClass { } } - getGlobalItem(name, defaultValue) { + getGlobalItem(name, defaultValue = null) { var result = null; try { if (this.isLocalStorageSupported()) { @@ -64,7 +64,7 @@ class BrowserStoreClass { result = null; } - if (result === null && typeof defaultValue !== 'undefined') { + if (!result) { result = defaultValue; } diff --git a/webapp/stores/post_store.jsx b/webapp/stores/post_store.jsx index cdd3f5860..6adc03bad 100644 --- a/webapp/stores/post_store.jsx +++ b/webapp/stores/post_store.jsx @@ -513,8 +513,23 @@ class PostStoreClass extends EventEmitter { return lastPost; } - getEmptyDraft() { - return {message: '', uploadsInProgress: [], fileInfos: []}; + normalizeDraft(originalDraft) { + let draft = { + messageText: '', + uploadsInProgress: [], + fileInfos: [] + }; + + // Make sure that the post draft is non-null and has all the required fields + if (originalDraft) { + draft = { + messageText: originalDraft.messageText || draft.messageText, + uploadsInProgress: originalDraft.uploadsInProgress || draft.uploadsInProgress, + fileInfos: originalDraft.fileInfos || draft.fileInfos + }; + } + + return draft; } storeCurrentDraft(draft) { @@ -532,7 +547,7 @@ class PostStoreClass extends EventEmitter { } getDraft(channelId) { - return BrowserStore.getGlobalItem('draft_' + channelId, this.getEmptyDraft()); + return this.normalizeDraft(BrowserStore.getGlobalItem('draft_' + channelId)); } storeCommentDraft(parentPostId, draft) { @@ -540,7 +555,7 @@ class PostStoreClass extends EventEmitter { } getCommentDraft(parentPostId) { - return BrowserStore.getGlobalItem('comment_draft_' + parentPostId, this.getEmptyDraft()); + return this.normalizeDraft(BrowserStore.getGlobalItem('comment_draft_' + parentPostId)); } clearDraftUploads() { |