mirror of
https://github.com/ascribe/onion.git
synced 2024-12-22 17:33:14 +01:00
Add error queue store
Allows errors to be queued for showing to the user, such as in the uploader’s error states.
This commit is contained in:
parent
dff180ff87
commit
01e3fd5fcd
13
js/actions/error_queue_actions.js
Normal file
13
js/actions/error_queue_actions.js
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
'use strict';
|
||||||
|
|
||||||
|
import { alt } from '../alt';
|
||||||
|
|
||||||
|
class ErrorQueueActions {
|
||||||
|
constructor() {
|
||||||
|
this.generateActions(
|
||||||
|
'shiftErrorQueue'
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export default alt.createActions(ErrorQueueActions);
|
@ -111,6 +111,17 @@ const ErrorClasses = {
|
|||||||
'are working to resolve them. Please try again in a few hours.'),
|
'are working to resolve them. Please try again in a few hours.'),
|
||||||
'test': 'Problem signing the chunk'
|
'test': 'Problem signing the chunk'
|
||||||
},
|
},
|
||||||
|
|
||||||
|
// Fallback error tips
|
||||||
|
'slowConnection': {
|
||||||
|
'prettifiedText': getLangText('Are you on a slow or unstable network? Uploading large files requires a fast Internet connection.')
|
||||||
|
},
|
||||||
|
'tryDifferentBrowser': {
|
||||||
|
'prettifiedText': getLangText("We still can't seem to upload your file. Maybe try another browser?")
|
||||||
|
},
|
||||||
|
'contactUs': {
|
||||||
|
'prettifiedText': getLangText("We're having a really hard time with your upload. Please contact us for more help.")
|
||||||
|
}
|
||||||
},
|
},
|
||||||
'default': {
|
'default': {
|
||||||
'default': {
|
'default': {
|
||||||
@ -120,10 +131,12 @@ const ErrorClasses = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
// Dynamically inject the name and group properties into the classes
|
// Dynamically inject the name and group properties into the classes
|
||||||
Object.keys(ErrorClasses).forEach((errorGroup) => {
|
Object.keys(ErrorClasses).forEach((errorGroupKey) => {
|
||||||
Object.keys(ErrorClasses[errorGroup]).forEach((errorClass) => {
|
const errorGroup = ErrorClasses[errorGroupKey];
|
||||||
errorClass.name = errorClass;
|
Object.keys(errorGroup).forEach((errorClassKey) => {
|
||||||
errorClass.group = errorGroup;
|
const errorClass = errorGroup[errorClassKey];
|
||||||
|
errorClass.name = errorClassKey;
|
||||||
|
errorClass.group = errorGroupKey;
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
52
js/stores/error_queue_store.js
Normal file
52
js/stores/error_queue_store.js
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
'use strict';
|
||||||
|
|
||||||
|
import { alt } from '../alt';
|
||||||
|
|
||||||
|
import ErrorQueueActions from '../actions/error_queue_actions.js';
|
||||||
|
|
||||||
|
import { ErrorClasses } from '../constants/error_constants.js';
|
||||||
|
|
||||||
|
class ErrorQueueStore {
|
||||||
|
constructor() {
|
||||||
|
const { upload: { slowConnection, tryDifferentBrowser } } = ErrorClasses;
|
||||||
|
|
||||||
|
this.errorQueue = {
|
||||||
|
'upload': {
|
||||||
|
queue: [slowConnection, tryDifferentBrowser],
|
||||||
|
loop: true
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// Add intial index to each error queue
|
||||||
|
Object
|
||||||
|
.keys(this.errorQueue)
|
||||||
|
.forEach((type) => {
|
||||||
|
this.errorQueue[type].index = 0;
|
||||||
|
});
|
||||||
|
|
||||||
|
this.exportPublicMethods({
|
||||||
|
getNextError: this.getNextError
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
getNextError(type) {
|
||||||
|
const errorQueue = this.errorQueues[type];
|
||||||
|
const { queue, index } = errorQueue;
|
||||||
|
|
||||||
|
ErrorQueueActions.shiftErrorQueue(type);
|
||||||
|
return queue[index];
|
||||||
|
}
|
||||||
|
|
||||||
|
onShiftQueue(type) {
|
||||||
|
const errorQueue = this.errorQueues[type];
|
||||||
|
const { queue, loop } = errorQueue;
|
||||||
|
|
||||||
|
++errorQueue.index;
|
||||||
|
if (loop) {
|
||||||
|
// Loop back to the beginning if all errors have been exhausted
|
||||||
|
errorQueue.index %= queue.length;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export default alt.createStore(ErrorQueueStore, 'ErrorQueueStore');
|
Loading…
Reference in New Issue
Block a user