summaryrefslogtreecommitdiffstats
path: root/web/react/stores/error_store.jsx
diff options
context:
space:
mode:
Diffstat (limited to 'web/react/stores/error_store.jsx')
-rw-r--r--web/react/stores/error_store.jsx59
1 files changed, 59 insertions, 0 deletions
diff --git a/web/react/stores/error_store.jsx b/web/react/stores/error_store.jsx
new file mode 100644
index 000000000..82170034a
--- /dev/null
+++ b/web/react/stores/error_store.jsx
@@ -0,0 +1,59 @@
+// Copyright (c) 2015 Spinpunch, Inc. All Rights Reserved.
+// See License.txt for license information.
+
+var AppDispatcher = require('../dispatcher/app_dispatcher.jsx');
+var EventEmitter = require('events').EventEmitter;
+var assign = require('object-assign');
+
+var Constants = require('../utils/constants.jsx');
+var ActionTypes = Constants.ActionTypes;
+
+var CHANGE_EVENT = 'change';
+
+var ErrorStore = assign({}, EventEmitter.prototype, {
+
+ emitChange: function() {
+ this.emit(CHANGE_EVENT);
+ },
+
+ addChangeListener: function(callback) {
+ this.on(CHANGE_EVENT, callback);
+ },
+
+ removeChangeListener: function(callback) {
+ this.removeListener(CHANGE_EVENT, callback);
+ },
+ handledError: function() {
+ sessionStorage.removeItem("last_error");
+ },
+ getLastError: function() {
+ var error = null;
+ try {
+ error = JSON.parse(sessionStorage.last_error);
+ }
+ catch (err) {
+ }
+
+ return error;
+ },
+
+ _storeLastError: function(error) {
+ sessionStorage.setItem("last_error", JSON.stringify(error));
+ },
+});
+
+ErrorStore.dispatchToken = AppDispatcher.register(function(payload) {
+ var action = payload.action;
+ switch(action.type) {
+ case ActionTypes.RECIEVED_ERROR:
+ ErrorStore._storeLastError(action.err);
+ ErrorStore.emitChange();
+ break;
+
+ default:
+ }
+});
+
+module.exports = ErrorStore;
+
+