mirror of
https://github.com/element-hq/synapse.git
synced 2024-12-15 17:51:10 +00:00
Move getUserPowerLevel to modelService.
This commit is contained in:
parent
78bf5648e7
commit
b93804529d
5 changed files with 58 additions and 71 deletions
|
@ -546,27 +546,6 @@ function(matrixService, $rootScope, $q, $timeout, $filter, mPresence, notificati
|
||||||
}
|
}
|
||||||
|
|
||||||
return memberCount;
|
return memberCount;
|
||||||
},
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Return the power level of an user in a particular room
|
|
||||||
* @param {String} room_id the room id
|
|
||||||
* @param {String} user_id the user id
|
|
||||||
* @returns {Number} a value between 0 and 10
|
|
||||||
*/
|
|
||||||
getUserPowerLevel: function(room_id, user_id) {
|
|
||||||
var powerLevel = 0;
|
|
||||||
var room = modelService.getRoom(room_id).current_room_state;
|
|
||||||
if (room.state("m.room.power_levels")) {
|
|
||||||
if (user_id in room.state("m.room.power_levels").content) {
|
|
||||||
powerLevel = room.state("m.room.power_levels").content[user_id];
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
// Use the room default user power
|
|
||||||
powerLevel = room.state("m.room.power_levels").content["default"];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return powerLevel;
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
}]);
|
}]);
|
||||||
|
|
|
@ -118,7 +118,8 @@ angular.module('modelService', [])
|
||||||
},
|
},
|
||||||
|
|
||||||
storeStateEvent: function storeState(event) {
|
storeStateEvent: function storeState(event) {
|
||||||
this.state_events[event.type + event.state_key] = event;
|
var keyIndex = event.state_key === undefined ? event.type : event.type + event.state_key;
|
||||||
|
this.state_events[keyIndex] = event;
|
||||||
if (event.type === "m.room.member") {
|
if (event.type === "m.room.member") {
|
||||||
var userId = event.state_key;
|
var userId = event.state_key;
|
||||||
var rm = new RoomMember();
|
var rm = new RoomMember();
|
||||||
|
@ -262,6 +263,27 @@ angular.module('modelService', [])
|
||||||
rm.user = usr;
|
rm.user = usr;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return the power level of an user in a particular room
|
||||||
|
* @param {String} room_id the room id
|
||||||
|
* @param {String} user_id the user id
|
||||||
|
* @returns {Number}
|
||||||
|
*/
|
||||||
|
getUserPowerLevel: function(room_id, user_id) {
|
||||||
|
var powerLevel = 0;
|
||||||
|
var room = this.getRoom(room_id).current_room_state;
|
||||||
|
if (room.state("m.room.power_levels")) {
|
||||||
|
if (user_id in room.state("m.room.power_levels").content) {
|
||||||
|
powerLevel = room.state("m.room.power_levels").content[user_id];
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
// Use the room default user power
|
||||||
|
powerLevel = room.state("m.room.power_levels").content["default"];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return powerLevel;
|
||||||
}
|
}
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
|
@ -405,7 +405,6 @@ angular.module('RoomController', ['ngSanitize', 'matrixFilter', 'mFileInput', 'a
|
||||||
|
|
||||||
// The room members is available in the data fetched by initialSync
|
// The room members is available in the data fetched by initialSync
|
||||||
if ($scope.room) {
|
if ($scope.room) {
|
||||||
|
|
||||||
var messages = $scope.room.events;
|
var messages = $scope.room.events;
|
||||||
|
|
||||||
if (0 === messages.length
|
if (0 === messages.length
|
||||||
|
@ -578,7 +577,7 @@ angular.module('RoomController', ['ngSanitize', 'matrixFilter', 'mFileInput', 'a
|
||||||
|
|
||||||
// scope this so the template can check power levels and enable/disable
|
// scope this so the template can check power levels and enable/disable
|
||||||
// buttons
|
// buttons
|
||||||
$scope.pow = eventHandlerService.getUserPowerLevel;
|
$scope.pow = modelService.getUserPowerLevel;
|
||||||
|
|
||||||
var modalInstance = $modal.open({
|
var modalInstance = $modal.open({
|
||||||
templateUrl: 'eventInfoTemplate.html',
|
templateUrl: 'eventInfoTemplate.html',
|
||||||
|
|
|
@ -67,51 +67,4 @@ describe('EventHandlerService', function() {
|
||||||
var num = eventHandlerService.getUsersCountInRoom(roomId);
|
var num = eventHandlerService.getUsersCountInRoom(roomId);
|
||||||
expect(num).toEqual(2);
|
expect(num).toEqual(2);
|
||||||
}));
|
}));
|
||||||
|
|
||||||
it('should be able to get a users power level', inject(
|
|
||||||
function(eventHandlerService) {
|
|
||||||
var roomId = "!foo:matrix.org";
|
|
||||||
// set mocked data
|
|
||||||
modelService.getRoom = function(roomId) {
|
|
||||||
return {
|
|
||||||
room_id: roomId,
|
|
||||||
current_room_state: {
|
|
||||||
members: {
|
|
||||||
"@adam:matrix.org": {
|
|
||||||
event: {
|
|
||||||
content: { membership: "join" },
|
|
||||||
user_id: "@adam:matrix.org"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"@beth:matrix.org": {
|
|
||||||
event: {
|
|
||||||
content: { membership: "join" },
|
|
||||||
user_id: "@beth:matrix.org"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
s: {
|
|
||||||
"m.room.power_levels": {
|
|
||||||
content: {
|
|
||||||
"@adam:matrix.org": 90,
|
|
||||||
"default": 50
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
state: function(type, key) {
|
|
||||||
return key ? this.s[type+key] : this.s[type]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
var num = eventHandlerService.getUserPowerLevel(roomId, "@beth:matrix.org");
|
|
||||||
expect(num).toEqual(50);
|
|
||||||
|
|
||||||
num = eventHandlerService.getUserPowerLevel(roomId, "@adam:matrix.org");
|
|
||||||
expect(num).toEqual(90);
|
|
||||||
|
|
||||||
num = eventHandlerService.getUserPowerLevel(roomId, "@unknown:matrix.org");
|
|
||||||
expect(num).toEqual(50);
|
|
||||||
}));
|
|
||||||
});
|
});
|
||||||
|
|
|
@ -27,4 +27,38 @@ describe('ModelService', function() {
|
||||||
var user = modelService.getMember(roomId, userId);
|
var user = modelService.getMember(roomId, userId);
|
||||||
expect(user.event.state_key).toEqual(userId);
|
expect(user.event.state_key).toEqual(userId);
|
||||||
}));
|
}));
|
||||||
|
|
||||||
|
it('should be able to get a users power level', inject(
|
||||||
|
function(modelService) {
|
||||||
|
var roomId = "!foo:matrix.org";
|
||||||
|
|
||||||
|
var room = modelService.getRoom(roomId);
|
||||||
|
room.current_room_state.storeStateEvent({
|
||||||
|
content: { membership: "join" },
|
||||||
|
user_id: "@adam:matrix.org",
|
||||||
|
type: "m.room.member"
|
||||||
|
});
|
||||||
|
room.current_room_state.storeStateEvent({
|
||||||
|
content: { membership: "join" },
|
||||||
|
user_id: "@beth:matrix.org",
|
||||||
|
type: "m.room.member"
|
||||||
|
});
|
||||||
|
room.current_room_state.storeStateEvent({
|
||||||
|
content: {
|
||||||
|
"@adam:matrix.org": 90,
|
||||||
|
"default": 50
|
||||||
|
},
|
||||||
|
user_id: "@adam:matrix.org",
|
||||||
|
type: "m.room.power_levels"
|
||||||
|
});
|
||||||
|
|
||||||
|
var num = modelService.getUserPowerLevel(roomId, "@beth:matrix.org");
|
||||||
|
expect(num).toEqual(50);
|
||||||
|
|
||||||
|
num = modelService.getUserPowerLevel(roomId, "@adam:matrix.org");
|
||||||
|
expect(num).toEqual(90);
|
||||||
|
|
||||||
|
num = modelService.getUserPowerLevel(roomId, "@unknown:matrix.org");
|
||||||
|
expect(num).toEqual(50);
|
||||||
|
}));
|
||||||
});
|
});
|
||||||
|
|
Loading…
Reference in a new issue