summaryrefslogtreecommitdiffstats
path: root/web/react/stores/channel_store.jsx
diff options
context:
space:
mode:
authorChristopher Speller <crspeller@gmail.com>2015-11-23 10:01:45 -0500
committerChristopher Speller <crspeller@gmail.com>2015-11-23 10:01:45 -0500
commit4b3a3941e04803539f39c057a5c0d44cd30699be (patch)
treefb6324a5896da7123b76854e7eb504c239113824 /web/react/stores/channel_store.jsx
parent5ee226d7f92d9408736b0e2a9ff105eb6f520a19 (diff)
parent9e8cd937908d5d2e730e94f761d6533eb2d95e28 (diff)
downloadchat-4b3a3941e04803539f39c057a5c0d44cd30699be.tar.gz
chat-4b3a3941e04803539f39c057a5c0d44cd30699be.tar.bz2
chat-4b3a3941e04803539f39c057a5c0d44cd30699be.zip
Merge pull request #1475 from mattermost/plt-90
PLT-90 PLT-88 PLT-1109 PLT-1167 Implementing Permalinks, Jump to post from search, Performace Improvements.
Diffstat (limited to 'web/react/stores/channel_store.jsx')
-rw-r--r--web/react/stores/channel_store.jsx86
1 files changed, 57 insertions, 29 deletions
diff --git a/web/react/stores/channel_store.jsx b/web/react/stores/channel_store.jsx
index 1d481ada4..dec4926f5 100644
--- a/web/react/stores/channel_store.jsx
+++ b/web/react/stores/channel_store.jsx
@@ -8,8 +8,6 @@ var Utils;
import Constants from '../utils/constants.jsx';
const ActionTypes = Constants.ActionTypes;
-import BrowserStore from '../stores/browser_store.jsx';
-
const CHANGE_EVENT = 'change';
const LEAVE_EVENT = 'leave';
const MORE_CHANGE_EVENT = 'change';
@@ -21,7 +19,38 @@ class ChannelStoreClass extends EventEmitter {
this.setMaxListeners(11);
+ this.emitChange = this.emitChange.bind(this);
+ this.addChangeListener = this.addChangeListener.bind(this);
+ this.removeChangeListener = this.removeChangeListener.bind(this);
+ this.emitMoreChange = this.emitMoreChange.bind(this);
+ this.addMoreChangeListener = this.addMoreChangeListener.bind(this);
+ this.removeMoreChangeListener = this.removeMoreChangeListener.bind(this);
+ this.emitExtraInfoChange = this.emitExtraInfoChange.bind(this);
+ this.addExtraInfoChangeListener = this.addExtraInfoChangeListener.bind(this);
+ this.removeExtraInfoChangeListener = this.removeExtraInfoChangeListener.bind(this);
+ this.emitLeave = this.emitLeave.bind(this);
+ this.addLeaveListener = this.addLeaveListener.bind(this);
+ this.removeLeaveListener = this.removeLeaveListener.bind(this);
+ this.findFirstBy = this.findFirstBy.bind(this);
+ this.get = this.get.bind(this);
+ this.getMember = this.getMember.bind(this);
+ this.getByName = this.getByName.bind(this);
+ this.pSetPostMode = this.pSetPostMode.bind(this);
+ this.getPostMode = this.getPostMode.bind(this);
+
this.currentId = null;
+ this.postMode = this.POST_MODE_CHANNEL;
+ this.channels = [];
+ this.channelMembers = {};
+ this.moreChannels = {};
+ this.moreChannels.loading = true;
+ this.extraInfos = {};
+ }
+ get POST_MODE_CHANNEL() {
+ return 1;
+ }
+ get POST_MODE_FOCUS() {
+ return 2;
}
emitChange() {
this.emit(CHANGE_EVENT);
@@ -90,16 +119,6 @@ class ChannelStoreClass extends EventEmitter {
setCurrentId(id) {
this.currentId = id;
}
- setLastVisitedName(name) {
- if (name == null) {
- BrowserStore.removeItem('last_visited_name');
- } else {
- BrowserStore.setItem('last_visited_name', name);
- }
- }
- getLastVisitedName() {
- return BrowserStore.getItem('last_visited_name');
- }
resetCounts(id) {
var cm = this.pGetChannelMembers();
for (var cmid in cm) {
@@ -192,10 +211,10 @@ class ChannelStoreClass extends EventEmitter {
this.pStoreChannels(channels);
}
pStoreChannels(channels) {
- BrowserStore.setItem('channels', channels);
+ this.channels = channels;
}
pGetChannels() {
- return BrowserStore.getItem('channels', []);
+ return this.channels;
}
pStoreChannelMember(channelMember) {
var members = this.pGetChannelMembers();
@@ -203,49 +222,58 @@ class ChannelStoreClass extends EventEmitter {
this.pStoreChannelMembers(members);
}
pStoreChannelMembers(channelMembers) {
- BrowserStore.setItem('channel_members', channelMembers);
+ this.channelMembers = channelMembers;
}
pGetChannelMembers() {
- return BrowserStore.getItem('channel_members', {});
+ return this.channelMembers;
}
pStoreMoreChannels(channels) {
- BrowserStore.setItem('more_channels', channels);
+ this.moreChannels = channels;
}
pGetMoreChannels() {
- var channels = BrowserStore.getItem('more_channels');
-
- if (channels == null) {
- channels = {};
- channels.loading = true;
- }
-
- return channels;
+ return this.moreChannels;
}
pStoreExtraInfos(extraInfos) {
- BrowserStore.setItem('extra_infos', extraInfos);
+ this.extraInfos = extraInfos;
}
pGetExtraInfos() {
- return BrowserStore.getItem('extra_infos', {});
+ return this.extraInfos;
}
isDefault(channel) {
return channel.name === Constants.DEFAULT_CHANNEL;
}
+
+ pSetPostMode(mode) {
+ this.postMode = mode;
+ }
+
+ getPostMode() {
+ return this.postMode;
+ }
}
var ChannelStore = new ChannelStoreClass();
-ChannelStore.dispatchToken = AppDispatcher.register(function handleAction(payload) {
+ChannelStore.dispatchToken = AppDispatcher.register((payload) => {
var action = payload.action;
var currentId;
switch (action.type) {
case ActionTypes.CLICK_CHANNEL:
ChannelStore.setCurrentId(action.id);
- ChannelStore.setLastVisitedName(action.name);
ChannelStore.resetCounts(action.id);
+ ChannelStore.pSetPostMode(ChannelStore.POST_MODE_CHANNEL);
ChannelStore.emitChange();
break;
+ case ActionTypes.RECIEVED_FOCUSED_POST: {
+ const post = action.post_list.posts[action.postId];
+ ChannelStore.setCurrentId(post.channel_id);
+ ChannelStore.pSetPostMode(ChannelStore.POST_MODE_FOCUS);
+ ChannelStore.emitChange();
+ break;
+ }
+
case ActionTypes.RECIEVED_CHANNELS:
ChannelStore.pStoreChannels(action.channels);
ChannelStore.pStoreChannelMembers(action.members);