From 8afda8e3d4996053d4cb1e6712c0329797f340cd Mon Sep 17 00:00:00 2001 From: Ben Gotow Date: Wed, 5 Jul 2017 14:56:28 -0700 Subject: [PATCH] Remove more draft syncback code --- .../spec/stores/draft-helpers-spec.es6 | 1 - .../spec/stores/draft-store-spec.es6 | 2 +- packages/client-app/src/flux/actions.es6 | 1 - .../src/flux/stores/draft-helpers.es6 | 46 +++++-------------- .../src/flux/stores/draft-store.es6 | 14 +----- 5 files changed, 14 insertions(+), 50 deletions(-) diff --git a/packages/client-app/spec/stores/draft-helpers-spec.es6 b/packages/client-app/spec/stores/draft-helpers-spec.es6 index bdb2c3d87..271044ffe 100644 --- a/packages/client-app/spec/stores/draft-helpers-spec.es6 +++ b/packages/client-app/spec/stores/draft-helpers-spec.es6 @@ -2,7 +2,6 @@ import { Actions, Message, DraftHelpers, - DatabaseStore, } from 'nylas-exports'; import InlineStyleTransformer from '../../src/services/inline-style-transformer' diff --git a/packages/client-app/spec/stores/draft-store-spec.es6 b/packages/client-app/spec/stores/draft-store-spec.es6 index cf70bbc69..64647db87 100644 --- a/packages/client-app/spec/stores/draft-store-spec.es6 +++ b/packages/client-app/spec/stores/draft-store-spec.es6 @@ -324,7 +324,7 @@ xdescribe('DraftStore', function draftStore() { DraftStore._draftSessions[this.draft.clientId] = session; spyOn(DraftStore, "_doneWithSession").andCallThrough(); - spyOn(DraftHelpers, "prepareDraftForSyncback").andReturn(Promise.resolve()); + spyOn(DraftHelpers, "draftPreparedForSyncback").andReturn(Promise.resolve()); spyOn(DraftStore, "trigger"); spyOn(SoundRegistry, "playSound"); spyOn(Actions, "queueTask"); diff --git a/packages/client-app/src/flux/actions.es6 b/packages/client-app/src/flux/actions.es6 index 8c0972db5..ed8620a26 100644 --- a/packages/client-app/src/flux/actions.es6 +++ b/packages/client-app/src/flux/actions.es6 @@ -405,7 +405,6 @@ class Actions { static ensureMessageInSentSuccess = ActionScopeGlobal; static sendManyDrafts = ActionScopeWindow; - static ensureDraftSynced = ActionScopeWindow; /* Public: Destroys the draft with the given ID. This Action is handled by the {DraftStore}, diff --git a/packages/client-app/src/flux/stores/draft-helpers.es6 b/packages/client-app/src/flux/stores/draft-helpers.es6 index e38d3b88d..1e1c0d440 100644 --- a/packages/client-app/src/flux/stores/draft-helpers.es6 +++ b/packages/client-app/src/flux/stores/draft-helpers.es6 @@ -66,34 +66,12 @@ class DraftHelpers { return (cleaned.indexOf("attach") >= 0); } - async refreshDraftReference(id) { - const message = await DatabaseStore - .findBy(Message, {id: id}) - .include(Message.attributes.body) - - if (!message || !message.draft) { - throw new this.DraftNotFoundError() - } - - return message - } - async pruneRemovedInlineFiles(draft) { - if (!(draft.files instanceof Array) || draft.files.length === 0) { - // The async keyword makes it so this is returned as a promise, which - // allows us to always treat the return value of this function as a - // promise-like object. - return draft; - } - return DatabaseStore.inTransaction(async (t) => { - // Inline files that are no longer referenced in the body are stale - draft.files = draft.files.filter(f => { - return !(f.contentId && !draft.body.includes(`cid:${f.id}`)) - }); - - await t.persistModel(draft); - return draft; + draft.files = draft.files.filter(f => { + return !(f.contentId && !draft.body.includes(`cid:${f.id}`)) }); + + return draft; } appendQuotedTextToDraft(draft) { @@ -144,17 +122,15 @@ class DraftHelpers { }); } - async prepareDraftForSyncback(session) { + async draftPreparedForSyncback(session) { await session.ensureCorrectAccount({noSyncback: true}) - const transformed = await this.applyExtensionTransforms(session.draft()) - let draft; - if (!transformed.replyToMessageId || !this.shouldAppendQuotedText(transformed)) { - draft = transformed; - } else { - draft = await this.appendQuotedTextToDraft(transformed); - } + let draft = session.draft(); + + draft = await this.applyExtensionTransforms(draft) draft = await this.pruneRemovedInlineFiles(draft); - await DatabaseStore.inTransaction((t) => t.persistModel(draft)) + if (draft.replyToMessageId && this.shouldAppendQuotedText(draft)) { + draft = await this.appendQuotedTextToDraft(draft); + } return draft; } } diff --git a/packages/client-app/src/flux/stores/draft-store.es6 b/packages/client-app/src/flux/stores/draft-store.es6 index b8daaad3f..9acc005da 100644 --- a/packages/client-app/src/flux/stores/draft-store.es6 +++ b/packages/client-app/src/flux/stores/draft-store.es6 @@ -54,7 +54,6 @@ class DraftStore extends NylasStore { // Remember that these two actions only fire in the current window and // are picked up by the instance of the DraftStore in the current // window. - this.listenTo(Actions.ensureDraftSynced, this._onEnsureDraftSynced); this.listenTo(Actions.sendDraft, this._onSendDraft); this.listenTo(Actions.destroyDraft, this._onDestroyDraft); @@ -361,15 +360,6 @@ class DraftStore extends NylasStore { } } - _onEnsureDraftSynced = (headerMessageId) => { - return this.sessionForClientId(headerMessageId).then((session) => { - return DraftHelpers.prepareDraftForSyncback(session) - .then(() => { - Actions.queueTask(new SyncbackDraftTask(headerMessageId)); - }); - }); - } - _onSendDraft = async (headerMessageId, sendActionKey = DefaultSendActionKey) => { this._draftsSending[headerMessageId] = true; @@ -383,8 +373,8 @@ class DraftStore extends NylasStore { } const session = await this.sessionForClientId(headerMessageId); - await DraftHelpers.prepareDraftForSyncback(session) - await sendAction.performSendAction({draft: session.draft()}); + const draft = await DraftHelpers.draftPreparedForSyncback(session); + await sendAction.performSendAction({draft}); this._doneWithSession(session); if (NylasEnv.isComposerWindow()) {