diff --git a/Riot/Modules/Application/LegacyAppDelegate.m b/Riot/Modules/Application/LegacyAppDelegate.m index 668a41903..d664ca4c6 100644 --- a/Riot/Modules/Application/LegacyAppDelegate.m +++ b/Riot/Modules/Application/LegacyAppDelegate.m @@ -1280,6 +1280,7 @@ NSString *const AppDelegateUniversalLinkDidChangeNotification = @"AppDelegateUni } NSString *roomIdOrAlias; + NSString *threadId; NSString *eventId; NSString *userId; NSString *groupId; @@ -1361,7 +1362,16 @@ NSString *const AppDelegateUniversalLinkDidChangeNotification = @"AppDelegateUni else { // Open the room page - RoomNavigationParameters *roomNavigationParameters = [[RoomNavigationParameters alloc] initWithRoomId:roomId eventId:eventId mxSession:account.mxSession presentationParameters: screenPresentationParameters]; + if (eventId) + { + MXEvent *event = [account.mxSession.store eventWithEventId:eventId inRoom:roomId]; + threadId = event.threadIdentifier; + } + RoomNavigationParameters *roomNavigationParameters = [[RoomNavigationParameters alloc] initWithRoomId:roomId + threadId:threadId + eventId:eventId + mxSession:account.mxSession + presentationParameters:screenPresentationParameters]; [self showRoomWithParameters:roomNavigationParameters]; } @@ -2883,7 +2893,10 @@ NSString *const AppDelegateUniversalLinkDidChangeNotification = @"AppDelegateUni ScreenPresentationParameters *presentationParameters = [[ScreenPresentationParameters alloc] initWithRestoreInitialDisplay:YES]; RoomNavigationParameters *parameters = [[RoomNavigationParameters alloc] initWithRoomId:roomId - eventId:eventId mxSession:mxSession presentationParameters:presentationParameters]; + threadId:nil + eventId:eventId + mxSession:mxSession + presentationParameters:presentationParameters]; [self showRoomWithParameters:parameters]; } diff --git a/Riot/Modules/Application/ScreenNavigation/RoomNavigationParameters.swift b/Riot/Modules/Application/ScreenNavigation/RoomNavigationParameters.swift index 7308a5701..2c1880279 100644 --- a/Riot/Modules/Application/ScreenNavigation/RoomNavigationParameters.swift +++ b/Riot/Modules/Application/ScreenNavigation/RoomNavigationParameters.swift @@ -25,6 +25,9 @@ class RoomNavigationParameters: NSObject { /// The room identifier let roomId: String + /// If not nil, the thread will be opened on this room + let threadId: String? + /// If not nil, the room will be opened on this event. let eventId: String? @@ -37,10 +40,12 @@ class RoomNavigationParameters: NSObject { // MARK: - Setup init(roomId: String, + threadId: String?, eventId: String?, mxSession: MXSession, presentationParameters: ScreenPresentationParameters) { self.roomId = roomId + self.threadId = threadId self.eventId = eventId self.mxSession = mxSession self.presentationParameters = presentationParameters diff --git a/Riot/Modules/Application/ScreenNavigation/RoomPreviewNavigationParameters.swift b/Riot/Modules/Application/ScreenNavigation/RoomPreviewNavigationParameters.swift index e59d2687f..4a3137136 100644 --- a/Riot/Modules/Application/ScreenNavigation/RoomPreviewNavigationParameters.swift +++ b/Riot/Modules/Application/ScreenNavigation/RoomPreviewNavigationParameters.swift @@ -32,6 +32,7 @@ class RoomPreviewNavigationParameters: RoomNavigationParameters { self.previewData = previewData super.init(roomId: previewData.roomId, + threadId: nil, eventId: previewData.eventId, mxSession: previewData.mxSession, presentationParameters: presentationParameters) diff --git a/Riot/Modules/Common/Recents/RecentsViewController.m b/Riot/Modules/Common/Recents/RecentsViewController.m index c9b9bb3c0..f843d1c6c 100644 --- a/Riot/Modules/Common/Recents/RecentsViewController.m +++ b/Riot/Modules/Common/Recents/RecentsViewController.m @@ -880,6 +880,7 @@ NSString *const RecentsViewControllerDataReadyNotification = @"RecentsViewContro ScreenPresentationParameters *presentationParameters = [[ScreenPresentationParameters alloc] initWithRestoreInitialDisplay:NO stackAboveVisibleViews:NO]; RoomNavigationParameters *parameters = [[RoomNavigationParameters alloc] initWithRoomId:roomId + threadId:nil eventId:nil mxSession:matrixSession presentationParameters:presentationParameters]; diff --git a/Riot/Modules/GlobalSearch/Files/HomeFilesSearchViewController.m b/Riot/Modules/GlobalSearch/Files/HomeFilesSearchViewController.m index 63035f726..1fa201e3c 100644 --- a/Riot/Modules/GlobalSearch/Files/HomeFilesSearchViewController.m +++ b/Riot/Modules/GlobalSearch/Files/HomeFilesSearchViewController.m @@ -146,6 +146,7 @@ ScreenPresentationParameters *presentationParameters = [[ScreenPresentationParameters alloc] initWithRestoreInitialDisplay:NO stackAboveVisibleViews:NO]; RoomNavigationParameters *parameters = [[RoomNavigationParameters alloc] initWithRoomId:roomId + threadId:nil eventId:eventId mxSession:session presentationParameters:presentationParameters]; diff --git a/Riot/Modules/GlobalSearch/Messages/HomeMessagesSearchViewController.m b/Riot/Modules/GlobalSearch/Messages/HomeMessagesSearchViewController.m index 00fd9d20d..be56333a9 100644 --- a/Riot/Modules/GlobalSearch/Messages/HomeMessagesSearchViewController.m +++ b/Riot/Modules/GlobalSearch/Messages/HomeMessagesSearchViewController.m @@ -153,6 +153,7 @@ ScreenPresentationParameters *presentationParameters = [[ScreenPresentationParameters alloc] initWithRestoreInitialDisplay:NO stackAboveVisibleViews:NO]; RoomNavigationParameters *parameters = [[RoomNavigationParameters alloc] initWithRoomId:roomId + threadId:nil eventId:eventId mxSession:session presentationParameters:presentationParameters]; diff --git a/Riot/Modules/GlobalSearch/Rooms/DirectoryViewController.m b/Riot/Modules/GlobalSearch/Rooms/DirectoryViewController.m index 47300a956..cf364a6a4 100644 --- a/Riot/Modules/GlobalSearch/Rooms/DirectoryViewController.m +++ b/Riot/Modules/GlobalSearch/Rooms/DirectoryViewController.m @@ -237,6 +237,7 @@ ScreenPresentationParameters *presentationParameters = [[ScreenPresentationParameters alloc] initWithRestoreInitialDisplay:NO stackAboveVisibleViews:NO]; RoomNavigationParameters *parameters = [[RoomNavigationParameters alloc] initWithRoomId:roomId + threadId:nil eventId:nil mxSession:mxSession presentationParameters:presentationParameters]; diff --git a/Riot/Modules/TabBar/TabBarCoordinator.swift b/Riot/Modules/TabBar/TabBarCoordinator.swift index fafea903c..141fb5688 100644 --- a/Riot/Modules/TabBar/TabBarCoordinator.swift +++ b/Riot/Modules/TabBar/TabBarCoordinator.swift @@ -395,7 +395,8 @@ final class TabBarCoordinator: NSObject, TabBarCoordinatorType { let roomCoordinatorParameters = RoomCoordinatorParameters(navigationRouterStore: NavigationRouterStore.shared, session: roomNavigationParameters.mxSession, roomId: roomNavigationParameters.roomId, - eventId: roomNavigationParameters.eventId) + eventId: roomNavigationParameters.eventId, + threadId: roomNavigationParameters.threadId) self.showRoom(with: roomCoordinatorParameters, stackOnSplitViewDetail: roomNavigationParameters.presentationParameters.stackAboveVisibleViews,