diff --git a/spec-inbox/tasks/save-draft-spec.coffee b/spec-inbox/tasks/save-draft-spec.coffee index e1682c6b7..f6d684f6a 100644 --- a/spec-inbox/tasks/save-draft-spec.coffee +++ b/spec-inbox/tasks/save-draft-spec.coffee @@ -67,6 +67,12 @@ describe "SaveDraftTask", -> newBody = DatabaseStore.persistModel.calls[0].args[0].body expect(newBody).toBe "test body" + it "does nothing if no draft can be found in the db", -> + task = new SaveDraftTask("missingDraftId") + waitsForPromise => + task.performLocal().then -> + expect(DatabaseStore.persistModel).not.toHaveBeenCalled() + describe "performRemote", -> beforeEach -> spyOn(atom.inbox, 'makeRequest').andCallFake (opts) -> diff --git a/src/flux/tasks/save-draft.coffee b/src/flux/tasks/save-draft.coffee index 2041c9971..4c1457da0 100644 --- a/src/flux/tasks/save-draft.coffee +++ b/src/flux/tasks/save-draft.coffee @@ -35,8 +35,9 @@ class SaveDraftTask extends Task DatabaseStore.findByLocalId(Message, @draftLocalId).then (draft) => if not draft? - errMsg = "Cannot persist changes to non-existent draft #{@draftLocalId}" - reject(new Error(errMsg)) + # This can happen if a save draft task is queued after it has been + # destroyed. Nothing we can really do about it, so ignore this. + resolve() else if _.size(@changes) is 0 resolve() else