From 015bd62937c478bc2de807943bb3f5a16818c441 Mon Sep 17 00:00:00 2001 From: Kartik Talwar Date: Wed, 18 Mar 2015 21:11:12 -0400 Subject: [PATCH] Added dequeueMatchingTask action to abort fileUploads Summary: Moved dequeing action in the same loop Added fix to delete multiple files Test Plan: None Reviewers: bengotow Reviewed By: bengotow Differential Revision: https://review.inboxapp.com/D1314 --- src/flux/actions.coffee | 1 + src/flux/stores/file-upload-store.coffee | 9 +++++---- src/flux/stores/task-queue.coffee | 22 +++++++++++++++++----- 3 files changed, 23 insertions(+), 9 deletions(-) diff --git a/src/flux/actions.coffee b/src/flux/actions.coffee index 943e9c748..f7d720404 100644 --- a/src/flux/actions.coffee +++ b/src/flux/actions.coffee @@ -39,6 +39,7 @@ mainWindowActions = [ "queueTask", "dequeueTask", "dequeueAllTasks", + "dequeueMatchingTask", "longPollStateChanged", "longPollReceivedRawDeltas", "longPollConnected", diff --git a/src/flux/stores/file-upload-store.coffee b/src/flux/stores/file-upload-store.coffee index 828fba9a3..3bf0bc0e0 100644 --- a/src/flux/stores/file-upload-store.coffee +++ b/src/flux/stores/file-upload-store.coffee @@ -46,7 +46,8 @@ FileUploadStore = Reflux.createStore _onAttachFilePath: ({messageLocalId, path}) -> @_verifyId(messageLocalId) - Actions.queueTask(new FileUploadTask(path, messageLocalId)) + @task = new FileUploadTask(path, messageLocalId) + Actions.queueTask(@task) # Receives: # uploadData: @@ -61,10 +62,10 @@ FileUploadStore = Reflux.createStore @trigger() _onAbortUpload: (uploadData) -> - Actions.abortTask({ + Actions.dequeueMatchingTask({ object: 'FileUploadTask', - filePath: uploadData.filePath, - messageLocalId: uploadData.messageLocalId + matchKey: "filePath" + matchValue: uploadData.filePath }) # Note that the MessageStore also receives the `fileUploaded` action. diff --git a/src/flux/stores/task-queue.coffee b/src/flux/stores/task-queue.coffee index bc0301e8e..853a74bd3 100644 --- a/src/flux/stores/task-queue.coffee +++ b/src/flux/stores/task-queue.coffee @@ -21,12 +21,13 @@ TaskQueue = Reflux.createStore @_restoreQueueFromDisk() - @listenTo(Actions.queueTask, @enqueue) - @listenTo(Actions.dequeueTask, @dequeue) - @listenTo(Actions.dequeueAllTasks, @dequeueAll) - @listenTo(Actions.logout, @dequeueAll) + @listenTo(Actions.queueTask, @enqueue) + @listenTo(Actions.dequeueTask, @dequeue) + @listenTo(Actions.dequeueAllTasks, @dequeueAll) + @listenTo(Actions.logout, @dequeueAll) + @listenTo(Actions.dequeueMatchingTask, @dequeueMatching) - @listenTo(Actions.clearDeveloperConsole, @clearCompleted) + @listenTo(Actions.clearDeveloperConsole, @clearCompleted) # TODO # @listenTo(OnlineStatusStore, @_onOnlineChange) @@ -74,6 +75,17 @@ TaskQueue = Reflux.createStore @dequeue(task, silent: true) if task? @_update() + dequeueMatching: (task) -> + identifier = task.matchKey + propValue = task.matchValue + + for other in @_queue by -1 + if task.object == task.object + if other[identifier] == propValue + @dequeue(other, silent: true) + + @_update() + clearCompleted: -> @_completed = [] @trigger()