summaryrefslogtreecommitdiffstats
path: root/web/react/utils
diff options
context:
space:
mode:
authorJoram Wilander <jwawilander@gmail.com>2015-11-04 09:43:06 -0500
committerJoram Wilander <jwawilander@gmail.com>2015-11-04 09:43:06 -0500
commit559ca09f2ce72306ea33366f2972be6d22656fc7 (patch)
treebc88626a1c47b9821e576c42fcee3f89f83f3b6c /web/react/utils
parent56ce3bc99735fe7ef7d4bf5f783c3d6f01a3a878 (diff)
parentee66b089349d46695bbe652b381da4be2b67954b (diff)
downloadchat-559ca09f2ce72306ea33366f2972be6d22656fc7.tar.gz
chat-559ca09f2ce72306ea33366f2972be6d22656fc7.tar.bz2
chat-559ca09f2ce72306ea33366f2972be6d22656fc7.zip
Merge pull request #1289 from mattermost/plt-516-2
PLT-516 Part 1 of performance fixes for large teams
Diffstat (limited to 'web/react/utils')
-rw-r--r--web/react/utils/async_client.jsx18
-rw-r--r--web/react/utils/client.jsx5
-rw-r--r--web/react/utils/constants.jsx1
3 files changed, 18 insertions, 6 deletions
diff --git a/web/react/utils/async_client.jsx b/web/react/utils/async_client.jsx
index 75dd35e3f..205c7461c 100644
--- a/web/react/utils/async_client.jsx
+++ b/web/react/utils/async_client.jsx
@@ -588,13 +588,23 @@ export function getMe() {
}
export function getStatuses() {
- if (isCallInProgress('getStatuses')) {
+ const directChannels = ChannelStore.getAll().filter((channel) => channel.type === Constants.DM_CHANNEL);
+
+ const teammateIds = [];
+ for (var i = 0; i < directChannels.length; i++) {
+ const teammate = utils.getDirectTeammate(directChannels[i].id);
+ if (teammate) {
+ teammateIds.push(teammate.id);
+ }
+ }
+
+ if (isCallInProgress('getStatuses') || teammateIds.length === 0) {
return;
}
callTracker.getStatuses = utils.getTimestamp();
- client.getStatuses(
- function getStatusesSuccess(data, textStatus, xhr) {
+ client.getStatuses(teammateIds,
+ (data, textStatus, xhr) => {
callTracker.getStatuses = 0;
if (xhr.status === 304 || !data) {
@@ -606,7 +616,7 @@ export function getStatuses() {
statuses: data
});
},
- function getStatusesFailure(err) {
+ (err) => {
callTracker.getStatuses = 0;
dispatchError(err, 'getStatuses');
}
diff --git a/web/react/utils/client.jsx b/web/react/utils/client.jsx
index 7ce1346f9..003e24d33 100644
--- a/web/react/utils/client.jsx
+++ b/web/react/utils/client.jsx
@@ -1069,12 +1069,13 @@ export function exportTeam(success, error) {
});
}
-export function getStatuses(success, error) {
+export function getStatuses(ids, success, error) {
$.ajax({
url: '/api/v1/users/status',
dataType: 'json',
contentType: 'application/json',
- type: 'GET',
+ type: 'POST',
+ data: JSON.stringify(ids),
success,
error: function onError(xhr, status, err) {
var e = handleError('getStatuses', xhr, status, err);
diff --git a/web/react/utils/constants.jsx b/web/react/utils/constants.jsx
index fd64b1554..39be577df 100644
--- a/web/react/utils/constants.jsx
+++ b/web/react/utils/constants.jsx
@@ -127,6 +127,7 @@ module.exports = {
MAX_DMS: 20,
DM_CHANNEL: 'D',
OPEN_CHANNEL: 'O',
+ PRIVATE_CHANNEL: 'P',
INVITE_TEAM: 'I',
OPEN_TEAM: 'O',
MAX_POST_LEN: 4000,