diff --git a/src/TextForEvent.js b/src/TextForEvent.js index 36b8b538a7..c8d0a0a0f7 100644 --- a/src/TextForEvent.js +++ b/src/TextForEvent.js @@ -134,6 +134,37 @@ function textForMessageEvent(ev) { return message; } +function textForRoomAliasesEvent(ev) { + const senderName = event.sender ? event.sender.name : event.getSender(); + const oldAliases = ev.getPrevContent().aliases || []; + const newAliases = ev.getContent().aliases || []; + + const addedAliases = newAliases.filter((x) => !oldAliases.includes(x)); + const removedAliases = oldAliases.filter((x) => !newAliases.includes(x)); + + if (!addedAliases.length && !removedAliases.length) { + return ''; + } + + if (addedAliases.length && !removedAliases.length) { + return _t('%(senderName)s added %(addedAddresses)s as addresses for this room.', { + senderName: senderName, + addedAddresses: addedAliases.join(', '), + }); + } else if (!addedAliases.length && removedAliases.length) { + return _t('%(senderName)s removed %(addresses)s as addresses for this room.', { + senderName: senderName, + removedAddresses: removedAliases.join(', '), + }); + } else { + return _t('%(senderName)s added %(addedAddresses)s and removed %(removedAddresses)s as addresses for this room.', { + senderName: senderName, + addedAddresses: addedAliases.join(', '), + removedAddresses: removedAliases.join(', '), + }); + } +} + function textForCallAnswerEvent(event) { var senderName = event.sender ? event.sender.name : _t('Someone'); var supported = MatrixClientPeg.get().supportsVoip() ? "" : _t('(not supported by this browser)'); @@ -280,6 +311,7 @@ function textForWidgetEvent(event) { var handlers = { 'm.room.message': textForMessageEvent, + 'm.room.aliases': textForRoomAliasesEvent, 'm.room.name': textForRoomNameEvent, 'm.room.topic': textForTopicEvent, 'm.room.member': textForMemberEvent, diff --git a/src/components/views/rooms/EventTile.js b/src/components/views/rooms/EventTile.js index a6f8ed5542..647b8a0f5d 100644 --- a/src/components/views/rooms/EventTile.js +++ b/src/components/views/rooms/EventTile.js @@ -33,6 +33,7 @@ var ObjectUtils = require('../../../ObjectUtils'); var eventTileTypes = { 'm.room.message': 'messages.MessageEvent', + 'm.room.aliases': 'messages.TextualEvent', 'm.room.member' : 'messages.TextualEvent', 'm.call.invite' : 'messages.TextualEvent', 'm.call.answer' : 'messages.TextualEvent',