aboutsummaryrefslogtreecommitdiff
path: root/src/web/js/stores/MiddlePanelStore.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/web/js/stores/MiddlePanelStore.js')
-rw-r--r--src/web/js/stores/MiddlePanelStore.js68
1 files changed, 68 insertions, 0 deletions
diff --git a/src/web/js/stores/MiddlePanelStore.js b/src/web/js/stores/MiddlePanelStore.js
new file mode 100644
index 00000000..d5744e20
--- /dev/null
+++ b/src/web/js/stores/MiddlePanelStore.js
@@ -0,0 +1,68 @@
+var JarrDispatcher = require('../dispatcher/JarrDispatcher');
+var MiddlePanelActionTypes = require('../constants/JarrConstants').MiddlePanelActionTypes;
+var EventEmitter = require('events').EventEmitter;
+var CHANGE_EVENT = 'change_middle_panel';
+var assign = require('object-assign');
+
+
+var MiddlePanelStore = assign({}, EventEmitter.prototype, {
+ _datas: {filter: 'unread', articles: [],
+ parent_filter_type: null, parent_filter_id: null},
+ getAll: function() {
+ return this._datas;
+ },
+ setFilter: function(value) {
+ if(this._datas.filter != value) {
+ this._datas.filter = value;
+ this.emitChange();
+ }
+ },
+ setParentFilter: function(type, value) {
+ if(this._datas['parent_filter_id'] != value
+ || this._datas['parent_filter_type'] != type) {
+ this._datas['parent_filter_type'] = type;
+ this._datas['parent_filter_id'] = value;
+ this.emitChange();
+ }
+ },
+ emitChange: function() {
+ this.emit(CHANGE_EVENT);
+ },
+ addChangeListener: function(callback) {
+ this.on(CHANGE_EVENT, callback);
+ },
+ removeChangeListener: function(callback) {
+ this.removeListener(CHANGE_EVENT, callback);
+ },
+});
+
+
+MiddlePanelStore.dispatchToken = JarrDispatcher.register(function(action) {
+ switch(action.type) {
+ case MiddlePanelActionTypes.RELOAD_MIDDLE_PANEL:
+ MiddlePanelStore._datas['articles'] = action.articles;
+ MiddlePanelStore.emitChange();
+ break;
+ // PARENT FILTER
+ case MiddlePanelActionTypes.MIDDLE_PANEL_PARENT_FILTER:
+ MiddlePanelStore.setParentFilter(action.parent_type,
+ action.filter_id);
+ break;
+ // FILTER
+ case MiddlePanelActionTypes.MIDDLE_PANEL_FILTER_ALL:
+ MiddlePanelStore.setFilter('all');
+ break;
+ case MiddlePanelActionTypes.MIDDLE_PANEL_FILTER_UNREAD:
+ MiddlePanelStore.setFilter('unread');
+ break;
+ case MiddlePanelActionTypes.MIDDLE_PANEL_FILTER_LIKED:
+ MiddlePanelStore.setFilter('liked');
+ break;
+
+
+ default:
+ // do nothing
+ }
+});
+
+module.exports = MiddlePanelStore;
bgstack15