Final fixes for moving unread handling to client (#5392)

This commit is contained in:
Joram Wilander
2017-02-13 15:19:41 -05:00
committed by Corey Hulen
parent 892f8f4651
commit 06f89cea30
6 changed files with 70 additions and 1 deletions

View File

@@ -1469,6 +1469,15 @@ export default class Client {
end(this.handleResponse.bind(this, 'getMyChannelMembers', success, error));
}
getMyChannelMembersForTeam(teamId, success, error) {
request.
get(`${this.getTeamsRoute()}/${teamId}/channels/members`).
set(this.defaultHeaders).
type('application/json').
accept('application/json').
end(this.handleResponse.bind(this, 'getMyChannelMembersForTeam', success, error));
}
getChannelByName(channelName, success, error) {
request.
get(`${this.getChannelsRoute()}/name/${channelName}`).

View File

@@ -102,7 +102,12 @@ function preNeedsTeam(nextState, replace, callback) {
nextState.location.pathname.indexOf('/pl/') > -1) {
loadProfilesAndTeamMembersForDMSidebar();
AsyncClient.getMyTeamsUnread();
AsyncClient.getMyChannelMembers();
const teams = TeamStore.getAll();
for (const id in teams) {
if (teams.hasOwnProperty(id)) {
AsyncClient.getMyChannelMembersForTeam(id);
}
}
}
const d1 = $.Deferred(); //eslint-disable-line new-cap

View File

@@ -10,6 +10,7 @@ import UserStore from 'stores/user_store.jsx';
var Utils;
import {ActionTypes, Constants} from 'utils/constants.jsx';
const NotificationPrefs = Constants.NotificationPrefs;
const PostTypes = Constants.PostTypes;
const CHANGE_EVENT = 'change';
const STATS_EVENT = 'stats';
@@ -500,6 +501,10 @@ ChannelStore.dispatchToken = AppDispatcher.register((payload) => {
break;
case ActionTypes.RECEIVED_POST:
if (action.post.type === PostTypes.JOIN_LEAVE || action.post.type === PostTypes.JOIN_CHANNEL || action.post.type === PostTypes.LEAVE_CHANNEL) {
return;
}
var id = action.post.channel_id;
var teamId = action.websocketMessageProps ? action.websocketMessageProps.team_id : null;

View File

@@ -8,6 +8,8 @@ import ChannelStore from 'stores/channel_store.jsx';
import Constants from 'utils/constants.jsx';
const NotificationPrefs = Constants.NotificationPrefs;
const PostTypes = Constants.PostTypes;
import {getSiteURL} from 'utils/url.jsx';
const ActionTypes = Constants.ActionTypes;
@@ -395,6 +397,10 @@ TeamStore.dispatchToken = AppDispatcher.register((payload) => {
}
break;
case ActionTypes.RECEIVED_POST:
if (action.post.type === PostTypes.JOIN_LEAVE || action.post.type === PostTypes.JOIN_CHANNEL || action.post.type === PostTypes.LEAVE_CHANNEL) {
return;
}
var id = action.websocketMessageProps ? action.websocketMessageProps.team_id : '';
if (TeamStore.getCurrentId() !== id && id.length > 0) {
TeamStore.incrementMessages(id, action.post.channel_id);

View File

@@ -352,6 +352,21 @@ describe('Client.Channels', function() {
});
});
it('getMyChannelMembersForTeam', function(done) {
TestHelper.initBasic(() => {
TestHelper.basicClient().getMyChannelMembersForTeam(
TestHelper.basicTeam().id,
function(data) {
assert.equal(data.length > 0, true);
done();
},
function(err) {
done(new Error(err.message));
}
);
});
});
it('getChannelStats', function(done) {
TestHelper.initBasic(() => {
TestHelper.basicClient().getChannelStats(

View File

@@ -138,6 +138,35 @@ export function getMyChannelMembers() {
});
}
export function getMyChannelMembersForTeam(teamId) {
return new Promise((resolve, reject) => {
if (isCallInProgress(`getMyChannelMembers${teamId}`)) {
resolve();
return;
}
callTracker[`getMyChannelMembers${teamId}`] = utils.getTimestamp();
Client.getMyChannelMembersForTeam(
teamId,
(data) => {
callTracker[`getMyChannelMembers${teamId}`] = 0;
AppDispatcher.handleServerAction({
type: ActionTypes.RECEIVED_MY_CHANNEL_MEMBERS,
members: data
});
resolve();
},
(err) => {
callTracker[`getMyChannelMembers${teamId}`] = 0;
dispatchError(err, 'getMyChannelMembersForTeam');
reject();
}
);
});
}
export function viewChannel(channelId = ChannelStore.getCurrentId(), prevChannelId = '', time = 0) {
if (channelId == null || !Client.teamId) {
return;