Skip to content
This repository has been archived by the owner on Mar 13, 2024. It is now read-only.

Commit

Permalink
Final fixes for moving unread handling to client (#5392)
Browse files Browse the repository at this point in the history
  • Loading branch information
jwilander authored and coreyhulen committed Feb 13, 2017
1 parent 656a316 commit c3b161e
Show file tree
Hide file tree
Showing 6 changed files with 70 additions and 1 deletion.
9 changes: 9 additions & 0 deletions client/client.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -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}`).
Expand Down
7 changes: 6 additions & 1 deletion routes/route_team.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
5 changes: 5 additions & 0 deletions stores/channel_store.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -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';
Expand Down Expand Up @@ -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;

Expand Down
6 changes: 6 additions & 0 deletions stores/team_store.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand Down Expand Up @@ -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);
Expand Down
15 changes: 15 additions & 0 deletions tests/client_channel.test.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -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(
Expand Down
29 changes: 29 additions & 0 deletions utils/async_client.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down

0 comments on commit c3b161e

Please sign in to comment.