From c93d7996f6f5a39b41d57f046b375db0a726a9b2 Mon Sep 17 00:00:00 2001 From: Chris Moos Date: Sun, 22 Dec 2019 14:37:39 -0700 Subject: [PATCH] Fix issue with joining public rooms with no guest access. This fixes #2888. Signed-off-by: Chris Moos --- CHANGES.rst | 6 ++++++ Riot/Model/Room/RoomPreviewData.m | 11 +++++++++-- Riot/Modules/Rooms/RoomsViewController.m | 5 ++--- 3 files changed, 17 insertions(+), 5 deletions(-) diff --git a/CHANGES.rst b/CHANGES.rst index 3349c7ebf..c2153c78b 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -1,3 +1,9 @@ +Changes in 0.10.5 (TBD) +=============================================== + +Bug fix: +* Fix error when joining some public rooms. (#2888). + Changes in 0.10.4 (2019-12-11) =============================================== diff --git a/Riot/Model/Room/RoomPreviewData.m b/Riot/Model/Room/RoomPreviewData.m index a55c0eae2..b86f1b7ef 100644 --- a/Riot/Model/Room/RoomPreviewData.m +++ b/Riot/Model/Room/RoomPreviewData.m @@ -51,12 +51,17 @@ if (self) { // Report public room data - _roomName = publicRoom.name; + _roomName = publicRoom.displayname; _roomAvatarUrl = publicRoom.avatarUrl; _roomTopic = publicRoom.topic; _roomAliases = publicRoom.aliases; _numJoinedMembers = publicRoom.numJoinedMembers; + // First try to fallback to the name if displayname isn't present + if (!_roomName.length) { + _roomName = publicRoom.name; + } + if (!_roomName.length) { // Consider the room aliases to define a default room name. @@ -109,7 +114,9 @@ } failure:^(NSError *error) { MXStrongifyAndReturnIfNil(self); - self->_roomName = self->_roomId; + if(self->_roomName == nil || self->_roomName.length == 0) { + self->_roomName = self->_roomId; + } completion(NO); }]; } diff --git a/Riot/Modules/Rooms/RoomsViewController.m b/Riot/Modules/Rooms/RoomsViewController.m index e7cab93b4..09f15cc14 100644 --- a/Riot/Modules/Rooms/RoomsViewController.m +++ b/Riot/Modules/Rooms/RoomsViewController.m @@ -267,13 +267,12 @@ // Preview the public room if (publicRoom.worldReadable) { - RoomPreviewData *roomPreviewData = [[RoomPreviewData alloc] initWithRoomId:publicRoom.roomId andSession:recentsDataSource.publicRoomsDirectoryDataSource.mxSession]; - + RoomPreviewData *roomPreviewData = [[RoomPreviewData alloc] initWithPublicRoom:publicRoom andSession:recentsDataSource.publicRoomsDirectoryDataSource.mxSession]; + [self startActivityIndicator]; // Try to get more information about the room before opening its preview [roomPreviewData peekInRoom:^(BOOL succeeded) { - [self stopActivityIndicator]; [[AppDelegate theDelegate].masterTabBarController showRoomPreview:roomPreviewData];