mirror of
https://github.com/vector-im/element-ios.git
synced 2024-09-28 23:32:41 +00:00
Merge pull request #509 from vector-im/vector_443
Redacting membership events should immediately reset the displayname …
This commit is contained in:
commit
2b94bd5544
2 changed files with 37 additions and 0 deletions
|
@ -1361,6 +1361,15 @@ NSString *const kAppDelegateNetworkStatusDidChangeNotification = @"kAppDelegateN
|
|||
|
||||
}];
|
||||
|
||||
[[NSNotificationCenter defaultCenter] addObserverForName:kMXSessionDidCorruptDataNotification object:nil queue:[NSOperationQueue mainQueue] usingBlock:^(NSNotification * _Nonnull notif) {
|
||||
|
||||
NSLog(@"[AppDelegate] kMXSessionDidCorruptDataNotification received. Reload the app");
|
||||
|
||||
// Reload entirely the app when a session has corrupted its data
|
||||
[[AppDelegate theDelegate] reloadMatrixSessions:YES];
|
||||
|
||||
}];
|
||||
|
||||
// Observe settings changes
|
||||
[[MXKAppSettings standardAppSettings] addObserver:self forKeyPath:@"showAllEventsInRoomHistory" options:0 context:nil];
|
||||
|
||||
|
|
|
@ -58,6 +58,9 @@
|
|||
|
||||
// Observe kMXSessionWillLeaveRoomNotification to be notified if the user leaves the current room.
|
||||
id leaveRoomNotificationObserver;
|
||||
|
||||
// Observe kMXRoomDidFlushDataNotification to take into account the updated room members when the room history is flushed.
|
||||
id roomDidFlushDataNotificationObserver;
|
||||
|
||||
RoomMemberDetailsViewController *memberDetailsViewController;
|
||||
|
||||
|
@ -151,6 +154,12 @@
|
|||
leaveRoomNotificationObserver = nil;
|
||||
}
|
||||
|
||||
if (roomDidFlushDataNotificationObserver)
|
||||
{
|
||||
[[NSNotificationCenter defaultCenter] removeObserver:roomDidFlushDataNotificationObserver];
|
||||
roomDidFlushDataNotificationObserver = nil;
|
||||
}
|
||||
|
||||
if (membersListener)
|
||||
{
|
||||
[self.mxRoom.liveTimeline removeListener:membersListener];
|
||||
|
@ -257,6 +266,11 @@
|
|||
[[NSNotificationCenter defaultCenter] removeObserver:leaveRoomNotificationObserver];
|
||||
leaveRoomNotificationObserver = nil;
|
||||
}
|
||||
if (roomDidFlushDataNotificationObserver)
|
||||
{
|
||||
[[NSNotificationCenter defaultCenter] removeObserver:roomDidFlushDataNotificationObserver];
|
||||
roomDidFlushDataNotificationObserver = nil;
|
||||
}
|
||||
if (membersListener)
|
||||
{
|
||||
[_mxRoom.liveTimeline removeListener:membersListener];
|
||||
|
@ -285,6 +299,20 @@
|
|||
}
|
||||
}];
|
||||
|
||||
// Observe room history flush (sync with limited timeline, or state event redaction)
|
||||
roomDidFlushDataNotificationObserver = [[NSNotificationCenter defaultCenter] addObserverForName:kMXRoomDidFlushDataNotification object:nil queue:[NSOperationQueue mainQueue] usingBlock:^(NSNotification *notif) {
|
||||
|
||||
MXRoom *room = notif.object;
|
||||
if (_mxRoom.mxSession == room.mxSession && [_mxRoom.state.roomId isEqualToString:room.state.roomId])
|
||||
{
|
||||
// The existing room history has been flushed during server sync. Take into account the updated room members list.
|
||||
[self refreshParticipantsFromRoomMembers];
|
||||
|
||||
[self.tableView reloadData];
|
||||
}
|
||||
|
||||
}];
|
||||
|
||||
// Register a listener for events that concern room members
|
||||
NSArray *mxMembersEvents = @[kMXEventTypeStringRoomMember, kMXEventTypeStringRoomThirdPartyInvite, kMXEventTypeStringRoomPowerLevels];
|
||||
membersListener = [_mxRoom.liveTimeline listenToEventsOfTypes:mxMembersEvents onEvent:^(MXEvent *event, MXTimelineDirection direction, id customObject) {
|
||||
|
|
Loading…
Reference in a new issue