added getChannel api service and use that over getChannels where appropriate on client
Этот коммит содержится в:
@@ -14,7 +14,7 @@ module.exports = React.createClass({
|
||||
Client.updateChannelDesc(data,
|
||||
function(data) {
|
||||
this.setState({ server_error: "" });
|
||||
AsyncClient.getChannels(true);
|
||||
AsyncClient.getChannel(this.state.channel_id);
|
||||
$(this.refs.modal.getDOMNode()).modal('hide');
|
||||
}.bind(this),
|
||||
function(err) {
|
||||
|
||||
@@ -157,9 +157,9 @@ module.exports = React.createClass({
|
||||
onSocketChange: function(msg) {
|
||||
if (msg.action === 'posted') {
|
||||
if (ChannelStore.getCurrentId() === msg.channel_id) {
|
||||
AsyncClient.getChannels(true, window.isActive);
|
||||
if (window.isActive) AsyncClient.updateLastViewedAt();
|
||||
} else {
|
||||
AsyncClient.getChannels(true);
|
||||
AsyncClient.getChannel(msg.channel_id);
|
||||
}
|
||||
|
||||
if (UserStore.getCurrentId() !== msg.user_id) {
|
||||
@@ -213,13 +213,13 @@ module.exports = React.createClass({
|
||||
utils.ding();
|
||||
}
|
||||
}
|
||||
} else if (msg.action === 'viewed') {
|
||||
if (ChannelStore.getCurrentId() != msg.channel_id) {
|
||||
AsyncClient.getChannels(true);
|
||||
} else if (msg.action === "viewed") {
|
||||
if (ChannelStore.getCurrentId() !== msg.channel_id && UserStore.getCurrentId() === msg.user_id) {
|
||||
AsyncClient.getChannel(msg.channel_id);
|
||||
}
|
||||
} else if (msg.action === 'user_added') {
|
||||
if (UserStore.getCurrentId() === msg.user_id) {
|
||||
AsyncClient.getChannels(true);
|
||||
AsyncClient.getChannel(msg.channel_id);
|
||||
}
|
||||
} else if (msg.action === 'user_removed') {
|
||||
if (msg.user_id === UserStore.getCurrentId()) {
|
||||
|
||||
@@ -146,12 +146,39 @@ var ChannelStore = assign({}, EventEmitter.prototype, {
|
||||
|
||||
return extra;
|
||||
},
|
||||
_storeChannel: function(channel) {
|
||||
var channels = this._getChannels();
|
||||
var found;
|
||||
|
||||
for (var i = 0; i < channels.length; i++) {
|
||||
if (channels[i].id == channel.id) {
|
||||
channels[i] = channel;
|
||||
found = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (!found) {
|
||||
channels.push(channel);
|
||||
channels.sort(function(a,b) {
|
||||
if (a.display_name < b.display_name) return -1;
|
||||
if (a.display_name > b.display_name) return 1;
|
||||
return 0;
|
||||
});
|
||||
}
|
||||
this._storeChannels(channels);
|
||||
},
|
||||
_storeChannels: function(channels) {
|
||||
BrowserStore.setItem("channels", channels);
|
||||
},
|
||||
_getChannels: function() {
|
||||
return BrowserStore.getItem("channels", []);
|
||||
},
|
||||
_storeChannelMember: function(channelMember) {
|
||||
var members = this._getChannelMembers();
|
||||
members[channelMember.channel_id] = channelMember;
|
||||
this._storeChannelMembers(members);
|
||||
},
|
||||
_storeChannelMembers: function(channelMembers) {
|
||||
BrowserStore.setItem("channel_members", channelMembers);
|
||||
},
|
||||
@@ -202,6 +229,14 @@ ChannelStore.dispatchToken = AppDispatcher.register(function(payload) {
|
||||
ChannelStore.emitChange();
|
||||
break;
|
||||
|
||||
case ActionTypes.RECIEVED_CHANNEL:
|
||||
ChannelStore._storeChannel(action.channel);
|
||||
ChannelStore._storeChannelMember(action.member);
|
||||
var currentId = ChannelStore.getCurrentId();
|
||||
if (currentId) ChannelStore.resetCounts(currentId);
|
||||
ChannelStore.emitChange();
|
||||
break;
|
||||
|
||||
case ActionTypes.RECIEVED_MORE_CHANNELS:
|
||||
ChannelStore._storeMoreChannels(action.channels);
|
||||
ChannelStore.emitMoreChange();
|
||||
@@ -218,4 +253,4 @@ ChannelStore.dispatchToken = AppDispatcher.register(function(payload) {
|
||||
}
|
||||
});
|
||||
|
||||
module.exports = ChannelStore;
|
||||
module.exports = ChannelStore;
|
||||
|
||||
@@ -81,6 +81,30 @@ module.exports.getChannels = function(force, updateLastViewed, checkVersion) {
|
||||
}
|
||||
}
|
||||
|
||||
module.exports.getChannel = function(id) {
|
||||
if (isCallInProgress("getChannel"+id)) return;
|
||||
|
||||
callTracker["getChannel"+id] = utils.getTimestamp();
|
||||
client.getChannel(id,
|
||||
function(data, textStatus, xhr) {
|
||||
callTracker["getChannel"+id] = 0;
|
||||
|
||||
if (xhr.status === 304 || !data) return;
|
||||
|
||||
AppDispatcher.handleServerAction({
|
||||
type: ActionTypes.RECIEVED_CHANNEL,
|
||||
channel: data.channel,
|
||||
member: data.member
|
||||
});
|
||||
|
||||
},
|
||||
function(err) {
|
||||
callTracker["getChannel"+id] = 0;
|
||||
dispatchError(err, "getChannel");
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
module.exports.updateLastViewedAt = function() {
|
||||
if (isCallInProgress("updateLastViewed")) return;
|
||||
|
||||
|
||||
@@ -554,6 +554,21 @@ module.exports.getChannels = function(success, error) {
|
||||
});
|
||||
};
|
||||
|
||||
module.exports.getChannel = function(id, success, error) {
|
||||
$.ajax({
|
||||
url: "/api/v1/channels/" + id + "/",
|
||||
dataType: 'json',
|
||||
type: 'GET',
|
||||
success: success,
|
||||
error: function(xhr, status, err) {
|
||||
e = handleError("getChannel", xhr, status, err);
|
||||
error(e);
|
||||
}
|
||||
});
|
||||
|
||||
module.exports.track('api', 'api_channel_get');
|
||||
};
|
||||
|
||||
module.exports.getMoreChannels = function(success, error) {
|
||||
$.ajax({
|
||||
url: "/api/v1/channels/more",
|
||||
|
||||
@@ -10,6 +10,7 @@ module.exports = {
|
||||
CLICK_CHANNEL: null,
|
||||
CREATE_CHANNEL: null,
|
||||
RECIEVED_CHANNELS: null,
|
||||
RECIEVED_CHANNEL: null,
|
||||
RECIEVED_MORE_CHANNELS: null,
|
||||
RECIEVED_CHANNEL_EXTRA_INFO: null,
|
||||
|
||||
|
||||
Ссылка в новой задаче
Block a user