1
0
mirror of https://github.com/matrix-org/matrix-js-sdk.git synced 2025-11-25 05:23:13 +03:00

check whether notif level is undefined, because 0 is falsey (#651)

* check whether notif level is undefined, because `0` is falsey and it failed

Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>

* improve number check for all m.room.power_levels related stuffs

Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
This commit is contained in:
Michael Telatynski
2018-05-29 12:11:29 +01:00
committed by Luke Barnard
parent 67876bab4c
commit 172044a1cb
2 changed files with 15 additions and 5 deletions

View File

@@ -329,7 +329,7 @@ RoomState.prototype._hasSufficientPowerLevelFor = function(action, powerLevel) {
} }
let requiredLevel = 50; let requiredLevel = 50;
if (powerLevels[action] !== undefined) { if (utils.isNumber(powerLevels[action])) {
requiredLevel = powerLevels[action]; requiredLevel = powerLevels[action];
} }
@@ -417,18 +417,18 @@ RoomState.prototype._maySendEventOfType = function(eventType, userId, state) {
power_levels = power_levels_event.getContent(); power_levels = power_levels_event.getContent();
events_levels = power_levels.events || {}; events_levels = power_levels.events || {};
if (power_levels.state_default !== undefined) { if (utils.isNumber(power_levels.state_default)) {
state_default = power_levels.state_default; state_default = power_levels.state_default;
} else { } else {
state_default = 50; state_default = 50;
} }
if (power_levels.events_default !== undefined) { if (utils.isNumber(power_levels.events_default)) {
events_default = power_levels.events_default; events_default = power_levels.events_default;
} }
} }
let required_level = state ? state_default : events_default; let required_level = state ? state_default : events_default;
if (events_levels[eventType] !== undefined) { if (utils.isNumber(events_levels[eventType])) {
required_level = events_levels[eventType]; required_level = events_levels[eventType];
} }
return member.powerLevel >= required_level; return member.powerLevel >= required_level;
@@ -455,7 +455,7 @@ RoomState.prototype.mayTriggerNotifOfType = function(notifLevelKey, userId) {
powerLevelsEvent && powerLevelsEvent &&
powerLevelsEvent.getContent() && powerLevelsEvent.getContent() &&
powerLevelsEvent.getContent().notifications && powerLevelsEvent.getContent().notifications &&
powerLevelsEvent.getContent().notifications[notifLevelKey] utils.isNumber(powerLevelsEvent.getContent().notifications[notifLevelKey])
) { ) {
notifLevel = powerLevelsEvent.getContent().notifications[notifLevelKey]; notifLevel = powerLevelsEvent.getContent().notifications[notifLevelKey];
} }

View File

@@ -652,3 +652,13 @@ module.exports.inherits = function(ctor, superCtor) {
}, },
}); });
}; };
/**
* Returns whether the given value is a finite number without type-coercion
*
* @param {*} value the value to test
* @return {boolean} whether or not value is a finite number without type-coercion
*/
module.exports.isNumber = function(value) {
return typeof value === 'number' && isFinite(value);
};