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",
"dequeueTask",
"dequeueAllTasks",
"dequeueMatchingTask",
"longPollStateChanged",
"longPollReceivedRawDeltas",
"longPollConnected",

View file

@ -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.

View file

@ -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()