diff options
Diffstat (limited to 'webapp/stores/modal_store.jsx')
-rw-r--r-- | webapp/stores/modal_store.jsx | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/webapp/stores/modal_store.jsx b/webapp/stores/modal_store.jsx new file mode 100644 index 000000000..2a7921c40 --- /dev/null +++ b/webapp/stores/modal_store.jsx @@ -0,0 +1,47 @@ +// Copyright (c) 2015 Mattermost, Inc. All Rights Reserved. +// See License.txt for license information. + +import AppDispatcher from '../dispatcher/app_dispatcher.jsx'; +import EventEmitter from 'events'; + +import Constants from 'utils/constants.jsx'; +const ActionTypes = Constants.ActionTypes; + +class ModalStoreClass extends EventEmitter { + constructor() { + super(); + + this.addModalListener = this.addModalListener.bind(this); + this.removeModalListener = this.removeModalListener.bind(this); + + this.handleEventPayload = this.handleEventPayload.bind(this); + this.dispatchToken = AppDispatcher.register(this.handleEventPayload); + } + + addModalListener(action, callback) { + this.on(action, callback); + } + + removeModalListener(action, callback) { + this.removeListener(action, callback); + } + + handleEventPayload(payload) { + // toggle event handlers should accept a boolean show/hide value and can accept a map of arguments + const {type, value, ...args} = payload.action; //eslint-disable-line no-use-before-define + + switch (type) { + case ActionTypes.TOGGLE_IMPORT_THEME_MODAL: + case ActionTypes.TOGGLE_INVITE_MEMBER_MODAL: + case ActionTypes.TOGGLE_DELETE_POST_MODAL: + case ActionTypes.TOGGLE_GET_POST_LINK_MODAL: + case ActionTypes.TOGGLE_GET_TEAM_INVITE_LINK_MODAL: + case ActionTypes.TOGGLE_REGISTER_APP_MODAL: + this.emit(type, value, args); + break; + } + } +} + +const ModalStore = new ModalStoreClass(); +export default ModalStore; |