Resume-able processes for loading library

This commit is contained in:
James Barnsley
2017-08-16 12:40:27 +12:00
parent 5b5e4a2351
commit 8e030cc936
10 changed files with 155 additions and 157 deletions

View File

@ -177,6 +177,13 @@ export function startProcess(key,message,data = {}){
}
}
export function resumeProcess(key,message,data = {}){
return {
type: 'RESUME_PROCESS',
key: key
}
}
export function updateProcess(key,message,data = {}){
return {
type: 'UPDATE_PROCESS',

View File

@ -127,6 +127,18 @@ const UIMiddleware = (function(){
type: action.key,
data: action.data
})
store.dispatch({
type: action.key+'_STARTED'
})
next(action)
break
case 'RESUME_PROCESS':
store.dispatch({
type: action.key,
data: store.getState().ui.processes[action.key].data
})
console.log('resuming',store.getState().ui.processes[action.key].data)
next(action)
break

View File

@ -136,28 +136,36 @@ export default function reducer(ui = {}, action){
processes[action.key] = {
key: action.key,
message: action.message,
status: 'running',
data: data
}
return Object.assign({}, ui, {processes: processes})
case 'RESUME_PROCESS':
var processes = Object.assign({}, (ui.processes ? ui.processes : {}))
if (processes[action.key]){
processes[action.key] = Object.assign({}, processes[action.key], {status: 'running'})
}
return Object.assign({}, ui, {processes: processes})
case 'CANCEL_PROCESS':
var processes = Object.assign({}, (ui.processes ? ui.processes : {}))
if (processes[action.key]){
processes[action.key] = Object.assign(
{},
processes[action.key],
{
cancelling: true
}
)
processes[action.key] = Object.assign({}, processes[action.key], {status: 'cancelling'})
}
return Object.assign({}, ui, {processes: processes})
case 'PROCESS_CANCELLED':
var processes = Object.assign({}, (ui.processes ? ui.processes : {}))
if (processes[action.key]){
processes[action.key] = Object.assign({}, processes[action.key], {status: 'cancelled'})
}
return Object.assign({}, ui, {processes: processes})
case 'PROCESS_FINISHED':
var processes = Object.assign({}, (ui.processes ? ui.processes : {}))
if (processes[action.key]){
delete processes[action.key]
processes[action.key] = Object.assign({}, processes[action.key], {status: 'finished'})
}
return Object.assign({}, ui, {processes: processes})