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
This commit is contained in:
Kartik Talwar 2015-03-18 21:11:12 -04:00
parent b61863d332
commit 015bd62937
3 changed files with 23 additions and 9 deletions

View file

@ -39,6 +39,7 @@ mainWindowActions = [
"queueTask", "queueTask",
"dequeueTask", "dequeueTask",
"dequeueAllTasks", "dequeueAllTasks",
"dequeueMatchingTask",
"longPollStateChanged", "longPollStateChanged",
"longPollReceivedRawDeltas", "longPollReceivedRawDeltas",
"longPollConnected", "longPollConnected",

View file

@ -46,7 +46,8 @@ FileUploadStore = Reflux.createStore
_onAttachFilePath: ({messageLocalId, path}) -> _onAttachFilePath: ({messageLocalId, path}) ->
@_verifyId(messageLocalId) @_verifyId(messageLocalId)
Actions.queueTask(new FileUploadTask(path, messageLocalId)) @task = new FileUploadTask(path, messageLocalId)
Actions.queueTask(@task)
# Receives: # Receives:
# uploadData: # uploadData:
@ -61,10 +62,10 @@ FileUploadStore = Reflux.createStore
@trigger() @trigger()
_onAbortUpload: (uploadData) -> _onAbortUpload: (uploadData) ->
Actions.abortTask({ Actions.dequeueMatchingTask({
object: 'FileUploadTask', object: 'FileUploadTask',
filePath: uploadData.filePath, matchKey: "filePath"
messageLocalId: uploadData.messageLocalId matchValue: uploadData.filePath
}) })
# Note that the MessageStore also receives the `fileUploaded` action. # Note that the MessageStore also receives the `fileUploaded` action.

View file

@ -21,12 +21,13 @@ TaskQueue = Reflux.createStore
@_restoreQueueFromDisk() @_restoreQueueFromDisk()
@listenTo(Actions.queueTask, @enqueue) @listenTo(Actions.queueTask, @enqueue)
@listenTo(Actions.dequeueTask, @dequeue) @listenTo(Actions.dequeueTask, @dequeue)
@listenTo(Actions.dequeueAllTasks, @dequeueAll) @listenTo(Actions.dequeueAllTasks, @dequeueAll)
@listenTo(Actions.logout, @dequeueAll) @listenTo(Actions.logout, @dequeueAll)
@listenTo(Actions.dequeueMatchingTask, @dequeueMatching)
@listenTo(Actions.clearDeveloperConsole, @clearCompleted) @listenTo(Actions.clearDeveloperConsole, @clearCompleted)
# TODO # TODO
# @listenTo(OnlineStatusStore, @_onOnlineChange) # @listenTo(OnlineStatusStore, @_onOnlineChange)
@ -74,6 +75,17 @@ TaskQueue = Reflux.createStore
@dequeue(task, silent: true) if task? @dequeue(task, silent: true) if task?
@_update() @_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: -> clearCompleted: ->
@_completed = [] @_completed = []
@trigger() @trigger()