Added sanity checks in commands

pull/10/head
Emmanuel ROHEE 2014-09-05 17:23:41 +02:00
parent 3501478828
commit cf4c17deaf
1 changed files with 55 additions and 34 deletions

View File

@ -313,32 +313,44 @@ angular.module('RoomController', ['ngSanitize', 'matrixFilter', 'mFileInput'])
case "/nick": case "/nick":
// Change user display name // Change user display name
promise = matrixService.setDisplayName(args); if (args) {
promise = matrixService.setDisplayName(args);
}
else {
$scope.feedback = "Usage: /nick <display_name>";
}
break; break;
case "/kick": case "/kick":
var matches = args.match(/^(\S+?)( +(.*))?$/); // Kick a user from the room with an optional reason
if (matches.length === 2) { if (args) {
promise = matrixService.setMembership($scope.room_id, matches[1], "leave"); var matches = args.match(/^(\S+?)( +(.*))?$/);
if (matches.length === 2) {
promise = matrixService.setMembership($scope.room_id, matches[1], "leave");
}
else if (matches.length === 4) {
promise = matrixService.setMembershipObject($scope.room_id, matches[1], {
membership: "leave",
reason: matches[3] // TODO: we need to specify resaon in the spec
});
}
} }
else if (matches.length === 4) {
promise = matrixService.setMembershipObject($scope.room_id, matches[1], { if (!promise) {
membership: "leave",
reason: matches[3] // TODO: we need to specify resaon in the spec
});
}
else {
$scope.feedback = "Usage: /kick <userId> [<reason>]"; $scope.feedback = "Usage: /kick <userId> [<reason>]";
} }
break; break;
case "/ban": case "/ban":
// Ban a user from the room with optional reason // Ban a user from the room with an optional reason
var matches = args.match(/^(\S+?)( +(.*))?$/); if (args) {
if (matches) { var matches = args.match(/^(\S+?)( +(.*))?$/);
promise = matrixService.ban($scope.room_id, matches[1], matches[3]); if (matches) {
promise = matrixService.ban($scope.room_id, matches[1], matches[3]);
}
} }
else {
if (!promise) {
$scope.feedback = "Usage: /ban <userId> [<reason>]"; $scope.feedback = "Usage: /ban <userId> [<reason>]";
} }
break; break;
@ -348,29 +360,35 @@ angular.module('RoomController', ['ngSanitize', 'matrixFilter', 'mFileInput'])
// FIXME: this feels horribly asymmetrical - why are we banning via RPC // FIXME: this feels horribly asymmetrical - why are we banning via RPC
// and unbanning by editing the membership list? // and unbanning by editing the membership list?
// Why can't we specify a reason? // Why can't we specify a reason?
var matches = args.match(/^(\S+)$/); if (args) {
if (matches) { var matches = args.match(/^(\S+)$/);
// Reset the user membership to "leave" to unban him if (matches) {
promise = matrixService.setMembership($scope.room_id, matches[1], "leave"); // Reset the user membership to "leave" to unban him
promise = matrixService.setMembership($scope.room_id, matches[1], "leave");
}
} }
else {
if (!promise) {
$scope.feedback = "Usage: /unban <userId>"; $scope.feedback = "Usage: /unban <userId>";
} }
break; break;
case "/op": case "/op":
// Define the power level of a user // Define the power level of a user
var matches = args.match(/^(\S+?)( +(\d+))?$/); if (args) {
var powerLevel = 50; // default power level for op var matches = args.match(/^(\S+?)( +(\d+))?$/);
if (matches) { var powerLevel = 50; // default power level for op
var user_id = matches[1]; if (matches) {
if (matches.length === 4) { var user_id = matches[1];
powerLevel = parseInt(matches[3]); if (matches.length === 4) {
} powerLevel = parseInt(matches[3]);
if (powerLevel !== NaN) { }
promise = matrixService.setUserPowerLevel($scope.room_id, user_id, powerLevel); if (powerLevel !== NaN) {
promise = matrixService.setUserPowerLevel($scope.room_id, user_id, powerLevel);
}
} }
} }
if (!promise) { if (!promise) {
$scope.feedback = "Usage: /op <userId> [<power level>]"; $scope.feedback = "Usage: /op <userId> [<power level>]";
} }
@ -378,11 +396,14 @@ angular.module('RoomController', ['ngSanitize', 'matrixFilter', 'mFileInput'])
case "/deop": case "/deop":
// Reset the power level of a user // Reset the power level of a user
var matches = args.match(/^(\S+)$/); if (args) {
if (matches) { var matches = args.match(/^(\S+)$/);
promise = matrixService.setUserPowerLevel($scope.room_id, args, undefined); if (matches) {
promise = matrixService.setUserPowerLevel($scope.room_id, args, undefined);
}
} }
else {
if (!promise) {
$scope.feedback = "Usage: /deop <userId>"; $scope.feedback = "Usage: /deop <userId>";
} }
break; break;