mirror of
https://github.com/Foundry376/Mailspring.git
synced 2024-09-21 07:46:06 +08:00
fix(tasks) ChangeMailTask should depend on EnsureMessagesInSentFolder
Summary: See title Add specs Test Plan: unit Reviewers: halla, evan Reviewed By: halla, evan Differential Revision: https://phab.nylas.com/D3805
This commit is contained in:
parent
bf69357c01
commit
82b3033861
|
@ -12,7 +12,9 @@ _ = require 'underscore'
|
|||
DatabaseTransaction,
|
||||
Task,
|
||||
Utils,
|
||||
ChangeMailTask} = require 'nylas-exports'
|
||||
ChangeMailTask,
|
||||
EnsureMessageInSentFolderTask,
|
||||
} = require 'nylas-exports'
|
||||
|
||||
xdescribe "ChangeMailTask", ->
|
||||
beforeEach ->
|
||||
|
@ -552,6 +554,26 @@ xdescribe "ChangeMailTask", ->
|
|||
expect( -> task.createUndoTask()).toThrow()
|
||||
|
||||
describe "isDependentOnTask", ->
|
||||
it "should return true if another EnsureMessageInSentFolderTask involves one of the ChangeMailTask's threads", ->
|
||||
a = new ChangeMailTask()
|
||||
a.threads = ['t1', 't2', 't3']
|
||||
s1 = new EnsureMessageInSentFolderTask({message: {threadId: 't1'}})
|
||||
s2 = new EnsureMessageInSentFolderTask({message: {threadId: 't100'}})
|
||||
expect(a.isDependentOnTask(s1)).toEqual(true)
|
||||
expect(a.isDependentOnTask(s2)).toEqual(false)
|
||||
|
||||
it "should return true if another EnsureMessageInSentFolderTask involves one of the ChangeMailTask's messages", ->
|
||||
a = new ChangeMailTask()
|
||||
a.messages = ['m1', 'm2', 'm3']
|
||||
s1 = new EnsureMessageInSentFolderTask({message: {clientId: 'm1'}})
|
||||
s2 = new EnsureMessageInSentFolderTask({message: {serverId: 'm1'}})
|
||||
s3 = new EnsureMessageInSentFolderTask({message: {clientId: 'm100'}})
|
||||
s4 = new EnsureMessageInSentFolderTask({message: {serverId: 'm100'}})
|
||||
expect(a.isDependentOnTask(s1)).toEqual(true)
|
||||
expect(a.isDependentOnTask(s2)).toEqual(true)
|
||||
expect(a.isDependentOnTask(s3)).toEqual(false)
|
||||
expect(a.isDependentOnTask(s4)).toEqual(false)
|
||||
|
||||
it "should return true if another, older ChangeMailTask involves the same threads", ->
|
||||
a = new ChangeMailTask()
|
||||
a.threads = ['t1', 't2', 't3']
|
||||
|
|
2
src/K2
2
src/K2
|
@ -1 +1 @@
|
|||
Subproject commit a3a962c55814823336f3b744d0fc7d2e34b9bea3
|
||||
Subproject commit 76664cb67df7d17d9ddeb79f899195b4bf808976
|
|
@ -6,6 +6,7 @@ import NylasAPI from '../nylas-api';
|
|||
import SyncbackTaskAPIRequest from '../syncback-task-api-request';
|
||||
import DatabaseStore from '../stores/database-store';
|
||||
import {APIError} from '../errors';
|
||||
import EnsureMessageInSentFolderTask from './ensure-message-in-sent-folder-task'
|
||||
|
||||
/*
|
||||
Public: The ChangeMailTask is a base class for all tasks that modify sets
|
||||
|
@ -307,6 +308,17 @@ export default class ChangeMailTask extends Task {
|
|||
// and removals need to be applied in order. (For example, star many threads,
|
||||
// and then unstar one.)
|
||||
isDependentOnTask(other) {
|
||||
// Wait on EnsureMessageInSentFolderTask if it involves a message that
|
||||
// belongs to a thread we are trying to operate on
|
||||
if (other instanceof EnsureMessageInSentFolderTask && other.message) {
|
||||
const objectIds = this.objectIds()
|
||||
if (objectIds.includes(other.message.threadId)) {
|
||||
return true;
|
||||
}
|
||||
if (objectIds.includes(other.message.clientId) || objectIds.includes(other.message.serverId)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
// Only wait on other tasks that are older and also involve the same threads
|
||||
if (!(other instanceof ChangeMailTask)) {
|
||||
return false;
|
||||
|
|
Loading…
Reference in a new issue