Implementing Permalinks and jumping to post from search. Performance
improvements.
Этот коммит содержится в:
@@ -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);
|
||||
|
||||
Ссылка в новой задаче
Block a user