Skip to content

Commit 93f266a

Browse files
committed
Update to new memberlist api and hopefully sort out presence (list wasn't being re-sorted at the right time)
Hopefully fix element-hq#11
1 parent aed1fe9 commit 93f266a

File tree

1 file changed

+26
-3
lines changed

1 file changed

+26
-3
lines changed

src/skins/vector/views/organisms/MemberList.js

Lines changed: 26 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,15 +33,38 @@ module.exports = React.createClass({
3333
return { editing: false };
3434
},
3535

36+
memberSort: function(userIdA, userIdB) {
37+
var userA = this.memberDict[userIdA].user;
38+
var userB = this.memberDict[userIdB].user;
39+
40+
var presenceMap = {
41+
online: 3,
42+
unavailable: 2,
43+
offline: 1
44+
};
45+
46+
var presenceOrdA = userA ? presenceMap[userA.presence] : 0;
47+
var presenceOrdB = userB ? presenceMap[userB.presence] : 0;
48+
49+
if (presenceOrdA != presenceOrdB) {
50+
return presenceOrdB - presenceOrdA;
51+
}
52+
53+
var latA = userA ? (userA.lastPresenceTs - (userA.lastActiveAgo || userA.lastPresenceTs)) : 0;
54+
var latB = userB ? (userB.lastPresenceTs - (userB.lastActiveAgo || userB.lastPresenceTs)) : 0;
55+
56+
return latB - latA;
57+
},
58+
3659
makeMemberTiles: function(membership) {
3760
var MemberTile = sdk.getComponent("molecules.MemberTile");
3861

3962
var self = this;
40-
return Object.keys(self.state.memberDict).filter(function(userId) {
41-
var m = self.state.memberDict[userId];
63+
return self.state.members.filter(function(userId) {
64+
var m = self.memberDict[userId];
4265
return m.membership == membership;
4366
}).map(function(userId) {
44-
var m = self.state.memberDict[userId];
67+
var m = self.memberDict[userId];
4568
return (
4669
<MemberTile key={userId} member={m} ref={userId} />
4770
);

0 commit comments

Comments
 (0)