mirror of
https://mau.dev/maunium/synapse.git
synced 2024-10-01 01:36:05 -04:00
Show room name updates in room history and recents.
Update it with the latest value
This commit is contained in:
parent
8b3ce85183
commit
6ea20f3503
@ -60,7 +60,7 @@ angular.module('eventHandlerService', [])
|
|||||||
// Pagination information
|
// Pagination information
|
||||||
$rootScope.events.rooms[room_id].pagination = {
|
$rootScope.events.rooms[room_id].pagination = {
|
||||||
earliest_token: "END" // how far back we've paginated
|
earliest_token: "END" // how far back we've paginated
|
||||||
}
|
};
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -70,6 +70,36 @@ angular.module('eventHandlerService', [])
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// Generic method to handle events data
|
||||||
|
var handleRoomDateEvent = function(event, isLiveEvent, addToRoomMessages) {
|
||||||
|
// Add topic changes as if they were a room message
|
||||||
|
if (addToRoomMessages) {
|
||||||
|
if (isLiveEvent) {
|
||||||
|
$rootScope.events.rooms[event.room_id].messages.push(event);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$rootScope.events.rooms[event.room_id].messages.unshift(event);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// live events always update, but non-live events only update if the
|
||||||
|
// ts is later.
|
||||||
|
var latestData = true;
|
||||||
|
if (!isLiveEvent) {
|
||||||
|
var eventTs = event.ts;
|
||||||
|
var storedEvent = $rootScope.events.rooms[event.room_id][event.type];
|
||||||
|
if (storedEvent) {
|
||||||
|
if (storedEvent.ts > eventTs) {
|
||||||
|
// ignore it, we have a newer one already.
|
||||||
|
latestData = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (latestData) {
|
||||||
|
$rootScope.events.rooms[event.room_id][event.type] = event;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
var handleRoomCreate = function(event, isLiveEvent) {
|
var handleRoomCreate = function(event, isLiveEvent) {
|
||||||
// For now, we do not use the event data. Simply signal it to the app controllers
|
// For now, we do not use the event data. Simply signal it to the app controllers
|
||||||
$rootScope.$broadcast(ROOM_CREATE_EVENT, event, isLiveEvent);
|
$rootScope.$broadcast(ROOM_CREATE_EVENT, event, isLiveEvent);
|
||||||
@ -153,44 +183,16 @@ angular.module('eventHandlerService', [])
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
var handleRoomName = function(event, isLiveEvent) {
|
var handleRoomName = function(event, isLiveEvent, isStateEvent) {
|
||||||
console.log("handleRoomName " + isLiveEvent);
|
console.log("handleRoomName room_id: " + event.room_id + " - isLiveEvent: " + isLiveEvent + " - name: " + event.content.name);
|
||||||
|
handleRoomDateEvent(event, isLiveEvent, !isStateEvent);
|
||||||
$rootScope.events.rooms[event.room_id][event.type] = event;
|
|
||||||
$rootScope.$broadcast(NAME_EVENT, event, isLiveEvent);
|
$rootScope.$broadcast(NAME_EVENT, event, isLiveEvent);
|
||||||
};
|
};
|
||||||
|
|
||||||
// TODO: Can this just be a generic "I am a room state event, can haz store?"
|
|
||||||
var handleRoomTopic = function(event, isLiveEvent, isStateEvent) {
|
var handleRoomTopic = function(event, isLiveEvent, isStateEvent) {
|
||||||
console.log("handleRoomTopic live="+isLiveEvent);
|
console.log("handleRoomTopic room_id: " + event.room_id + " - isLiveEvent: " + isLiveEvent + " - topic: " + event.content.topic);
|
||||||
|
handleRoomDateEvent(event, isLiveEvent, !isStateEvent);
|
||||||
// Add topic changes as if they were a room message
|
|
||||||
if (!isStateEvent) {
|
|
||||||
if (isLiveEvent) {
|
|
||||||
$rootScope.events.rooms[event.room_id].messages.push(event);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
$rootScope.events.rooms[event.room_id].messages.unshift(event);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// live events always update, but non-live events only update if the
|
|
||||||
// ts is later.
|
|
||||||
var latestData = true;
|
|
||||||
if (!isLiveEvent) {
|
|
||||||
var eventTs = event.ts;
|
|
||||||
var storedEvent = $rootScope.events.rooms[event.room_id][event.type];
|
|
||||||
if (storedEvent) {
|
|
||||||
if (storedEvent.ts > eventTs) {
|
|
||||||
// ignore it, we have a newer one already.
|
|
||||||
latestData = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (latestData) {
|
|
||||||
$rootScope.events.rooms[event.room_id][event.type] = event;
|
|
||||||
}
|
|
||||||
|
|
||||||
$rootScope.$broadcast(TOPIC_EVENT, event, isLiveEvent);
|
$rootScope.$broadcast(TOPIC_EVENT, event, isLiveEvent);
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -286,7 +288,7 @@ angular.module('eventHandlerService', [])
|
|||||||
handlePowerLevels(event, isLiveEvent);
|
handlePowerLevels(event, isLiveEvent);
|
||||||
break;
|
break;
|
||||||
case 'm.room.name':
|
case 'm.room.name':
|
||||||
handleRoomName(event, isLiveEvent);
|
handleRoomName(event, isLiveEvent, isStateEvent);
|
||||||
break;
|
break;
|
||||||
case 'm.room.topic':
|
case 'm.room.topic':
|
||||||
handleRoomTopic(event, isLiveEvent, isStateEvent);
|
handleRoomTopic(event, isLiveEvent, isStateEvent);
|
||||||
|
@ -31,15 +31,17 @@ angular.module('matrixFilter', [])
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (undefined === roomName) {
|
if (undefined === roomName) {
|
||||||
// Else, build the name from its users
|
|
||||||
var room = $rootScope.events.rooms[room_id];
|
var room = $rootScope.events.rooms[room_id];
|
||||||
if (room) {
|
if (room) {
|
||||||
|
// Get name from room state date
|
||||||
var room_name_event = room["m.room.name"];
|
var room_name_event = room["m.room.name"];
|
||||||
|
|
||||||
if (room_name_event) {
|
if (room_name_event) {
|
||||||
roomName = room_name_event.content.name;
|
roomName = room_name_event.content.name;
|
||||||
}
|
}
|
||||||
else if (room.members) {
|
else if (room.members) {
|
||||||
|
// Else, build the name from its users
|
||||||
|
// FIXME: Is it still required?
|
||||||
// Limit the room renaming to 1:1 room
|
// Limit the room renaming to 1:1 room
|
||||||
if (2 === Object.keys(room.members).length) {
|
if (2 === Object.keys(room.members).length) {
|
||||||
for (var i in room.members) {
|
for (var i in room.members) {
|
||||||
|
@ -80,6 +80,10 @@
|
|||||||
{{ room.lastMsg.user_id | mUserDisplayName: room.room_id }} changed the topic to: {{ room.lastMsg.content.topic }}
|
{{ room.lastMsg.user_id | mUserDisplayName: room.room_id }} changed the topic to: {{ room.lastMsg.content.topic }}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div ng-switch-when="m.room.name">
|
||||||
|
{{ room.lastMsg.user_id | mUserDisplayName: room.room_id }} changed the room name to: {{ room.lastMsg.content.name }}
|
||||||
|
</div>
|
||||||
|
|
||||||
<div ng-switch-default>
|
<div ng-switch-default>
|
||||||
<div ng-if="room.lastMsg.type.indexOf('m.call.') === 0">
|
<div ng-if="room.lastMsg.type.indexOf('m.call.') === 0">
|
||||||
Call
|
Call
|
||||||
|
@ -118,6 +118,10 @@
|
|||||||
{{ members[msg.user_id].displayname || msg.user_id }} changed the topic to: {{ msg.content.topic }}
|
{{ members[msg.user_id].displayname || msg.user_id }} changed the topic to: {{ msg.content.topic }}
|
||||||
</span>
|
</span>
|
||||||
|
|
||||||
|
<span ng-if="'m.room.name' === msg.type">
|
||||||
|
{{ members[msg.user_id].displayname || msg.user_id }} changed the room name to: {{ msg.content.name }}
|
||||||
|
</span>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
<td class="rightBlock">
|
<td class="rightBlock">
|
||||||
|
Loading…
Reference in New Issue
Block a user