mirror of
https://git.anonymousland.org/anonymousland/synapse.git
synced 2024-09-09 15:02:37 +00:00
Fixed SYWEB-74: Emote desktop notifications sometimes lack a name: "undefined waves"
This commit is contained in:
parent
c7620cca6f
commit
432e8ef2bc
@ -213,11 +213,8 @@ function(matrixService, $rootScope, $q, $timeout, mPresence) {
|
|||||||
|
|
||||||
if (shouldBing && isIdle) {
|
if (shouldBing && isIdle) {
|
||||||
console.log("Displaying notification for "+JSON.stringify(event));
|
console.log("Displaying notification for "+JSON.stringify(event));
|
||||||
var member = $rootScope.events.rooms[event.room_id].members[event.user_id];
|
var member = getMember(event.room_id, event.user_id);
|
||||||
var displayname = undefined;
|
var displayname = getUserDisplayName(event.room_id, event.user_id);
|
||||||
if (member) {
|
|
||||||
displayname = member.displayname;
|
|
||||||
}
|
|
||||||
|
|
||||||
var message = event.content.body;
|
var message = event.content.body;
|
||||||
if (event.content.msgtype === "m.emote") {
|
if (event.content.msgtype === "m.emote") {
|
||||||
@ -225,7 +222,7 @@ function(matrixService, $rootScope, $q, $timeout, mPresence) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var notification = new window.Notification(
|
var notification = new window.Notification(
|
||||||
(displayname || event.user_id) +
|
displayname +
|
||||||
" (" + (matrixService.getRoomIdToAliasMapping(event.room_id) || event.room_id) + ")", // FIXME: don't leak room_ids here
|
" (" + (matrixService.getRoomIdToAliasMapping(event.room_id) || event.room_id) + ")", // FIXME: don't leak room_ids here
|
||||||
{
|
{
|
||||||
"body": message,
|
"body": message,
|
||||||
@ -347,6 +344,50 @@ function(matrixService, $rootScope, $q, $timeout, mPresence) {
|
|||||||
return index;
|
return index;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the member object of a room member
|
||||||
|
* @param {String} room_id the room id
|
||||||
|
* @param {String} user_id the id of the user
|
||||||
|
* @returns {undefined | Object} the member object of this user in this room if he is part of the room
|
||||||
|
*/
|
||||||
|
var getMember = function(room_id, user_id) {
|
||||||
|
var member;
|
||||||
|
|
||||||
|
var room = $rootScope.events.rooms[room_id];
|
||||||
|
if (room) {
|
||||||
|
member = room.members[user_id];
|
||||||
|
}
|
||||||
|
return member;
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return the display name of an user acccording to data already downloaded
|
||||||
|
* @param {String} room_id the room id
|
||||||
|
* @param {String} user_id the id of the user
|
||||||
|
* @returns {String} the user displayname or user_id if not available
|
||||||
|
*/
|
||||||
|
var getUserDisplayName = function(room_id, user_id) {
|
||||||
|
var displayName;
|
||||||
|
|
||||||
|
// Get the user display name from the member list of the room
|
||||||
|
var member = getMember(room_id, user_id);
|
||||||
|
if (member) {
|
||||||
|
displayName = member.content.displayname;
|
||||||
|
}
|
||||||
|
|
||||||
|
// The user may not have joined the room yet. So try to resolve display name from presence data
|
||||||
|
// Note: This data may not be available
|
||||||
|
if (undefined === displayName && user_id in $rootScope.presence) {
|
||||||
|
displayName = $rootScope.presence[user_id].content.displayname;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (undefined === displayName) {
|
||||||
|
// By default, use the user ID
|
||||||
|
displayName = user_id;
|
||||||
|
}
|
||||||
|
return displayName;
|
||||||
|
};
|
||||||
|
|
||||||
return {
|
return {
|
||||||
ROOM_CREATE_EVENT: ROOM_CREATE_EVENT,
|
ROOM_CREATE_EVENT: ROOM_CREATE_EVENT,
|
||||||
MSG_EVENT: MSG_EVENT,
|
MSG_EVENT: MSG_EVENT,
|
||||||
@ -538,13 +579,7 @@ function(matrixService, $rootScope, $q, $timeout, mPresence) {
|
|||||||
* @returns {undefined | Object} the member object of this user in this room if he is part of the room
|
* @returns {undefined | Object} the member object of this user in this room if he is part of the room
|
||||||
*/
|
*/
|
||||||
getMember: function(room_id, user_id) {
|
getMember: function(room_id, user_id) {
|
||||||
var member;
|
return getMember(room_id, user_id);
|
||||||
|
|
||||||
var room = $rootScope.events.rooms[room_id];
|
|
||||||
if (room) {
|
|
||||||
member = room.members[user_id];
|
|
||||||
}
|
|
||||||
return member;
|
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -554,25 +589,7 @@ function(matrixService, $rootScope, $q, $timeout, mPresence) {
|
|||||||
* @returns {String} the user displayname or user_id if not available
|
* @returns {String} the user displayname or user_id if not available
|
||||||
*/
|
*/
|
||||||
getUserDisplayName: function(room_id, user_id) {
|
getUserDisplayName: function(room_id, user_id) {
|
||||||
var displayName;
|
return getUserDisplayName(room_id, user_id);
|
||||||
|
|
||||||
// Get the user display name from the member list of the room
|
|
||||||
var member = this.getMember(room_id, user_id);
|
|
||||||
if (member) {
|
|
||||||
displayName = member.content.displayname;
|
|
||||||
}
|
|
||||||
|
|
||||||
// The user may not have joined the room yet. So try to resolve display name from presence data
|
|
||||||
// Note: This data may not be available
|
|
||||||
if (undefined === displayName && user_id in $rootScope.presence) {
|
|
||||||
displayName = $rootScope.presence[user_id].content.displayname;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (undefined === displayName) {
|
|
||||||
// By default, use the user ID
|
|
||||||
displayName = user_id;
|
|
||||||
}
|
|
||||||
return displayName;
|
|
||||||
},
|
},
|
||||||
|
|
||||||
setRoomVisibility: function(room_id, visible) {
|
setRoomVisibility: function(room_id, visible) {
|
||||||
|
Loading…
Reference in New Issue
Block a user