Skip to content

Commit c3d7d1e

Browse files
authored
Merge pull request #6035 from vector-im/yostyle/join_and_show_room
When accepting an invite, expecting to see the room
2 parents 8f86a65 + d01c1a3 commit c3d7d1e

File tree

7 files changed

+46
-13
lines changed

7 files changed

+46
-13
lines changed

Riot/Modules/Application/ScreenNavigation/RoomNavigationParameters.swift

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,24 +61,39 @@ class RoomNavigationParameters: NSObject {
6161
/// ID of the sender of the notification. Default `nil`
6262
let senderId: String?
6363

64+
/// If `true`, the invited room is automatically joined.
65+
let autoJoinInvitedRoom: Bool
66+
6467
// MARK: - Setup
6568

6669
init(roomId: String,
6770
eventId: String?,
6871
mxSession: MXSession,
6972
threadParameters: ThreadParameters?,
70-
presentationParameters: ScreenPresentationParameters) {
73+
presentationParameters: ScreenPresentationParameters,
74+
autoJoinInvitedRoom: Bool
75+
) {
7176
self.roomId = roomId
7277
self.eventId = eventId
7378
self.mxSession = mxSession
7479
self.threadParameters = threadParameters
7580
self.presentationParameters = presentationParameters
7681
self.showSettingsInitially = false
7782
self.senderId = nil
83+
self.autoJoinInvitedRoom = autoJoinInvitedRoom
7884

7985
super.init()
8086
}
8187

88+
convenience init(roomId: String,
89+
eventId: String?,
90+
mxSession: MXSession,
91+
threadParameters: ThreadParameters?,
92+
presentationParameters: ScreenPresentationParameters
93+
) {
94+
self.init(roomId: roomId, eventId: eventId, mxSession: mxSession, threadParameters: threadParameters, presentationParameters: presentationParameters, autoJoinInvitedRoom: false)
95+
}
96+
8297
init(roomId: String,
8398
eventId: String?,
8499
mxSession: MXSession,
@@ -92,6 +107,7 @@ class RoomNavigationParameters: NSObject {
92107
self.presentationParameters = presentationParameters
93108
self.showSettingsInitially = false
94109
self.senderId = senderId
110+
self.autoJoinInvitedRoom = false
95111

96112
super.init()
97113
}
@@ -108,6 +124,7 @@ class RoomNavigationParameters: NSObject {
108124
self.showSettingsInitially = showSettingsInitially
109125
self.threadParameters = nil
110126
self.senderId = nil
127+
self.autoJoinInvitedRoom = false
111128

112129
super.init()
113130
}

Riot/Modules/Common/Recents/RecentsViewController.m

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -895,6 +895,11 @@ - (void)showPublicRoomsDirectory
895895
}
896896

897897
- (void)showRoomWithRoomId:(NSString*)roomId inMatrixSession:(MXSession*)matrixSession
898+
{
899+
[self showRoomWithRoomId:roomId andAutoJoinInvitedRoom:false inMatrixSession:matrixSession];
900+
}
901+
902+
- (void)showRoomWithRoomId:(NSString*)roomId andAutoJoinInvitedRoom:(BOOL)autoJoinInvitedRoom inMatrixSession:(MXSession*)matrixSession
898903
{
899904
MXRoom *room = [matrixSession roomWithRoomId:roomId];
900905
if (room.summary.membership == MXMembershipInvite)
@@ -912,7 +917,8 @@ - (void)showRoomWithRoomId:(NSString*)roomId inMatrixSession:(MXSession*)matrixS
912917
eventId:nil
913918
mxSession:matrixSession
914919
threadParameters:nil
915-
presentationParameters:presentationParameters];
920+
presentationParameters:presentationParameters
921+
autoJoinInvitedRoom:autoJoinInvitedRoom];
916922

917923
[[AppDelegate theDelegate] showRoomWithParameters:parameters completion:^{
918924
self.userInteractionEnabled = YES;
@@ -1018,9 +1024,9 @@ - (void)dataSource:(MXKDataSource *)dataSource didRecognizeAction:(NSString *)ac
10181024
return;
10191025
}
10201026

1021-
// Accept invitation
1027+
// Accept invitation and display the room
10221028
Analytics.shared.joinedRoomTrigger = AnalyticsJoinedRoomTriggerInvite;
1023-
[self joinRoom:invitedRoom completion:nil];
1029+
[self showRoomWithRoomId:invitedRoom.roomId andAutoJoinInvitedRoom:true inMatrixSession:invitedRoom.mxSession];
10241030
}
10251031
else if ([actionIdentifier isEqualToString:kInviteRecentTableViewCellDeclineButtonPressed])
10261032
{

Riot/Modules/Room/RoomCoordinator.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -170,6 +170,7 @@ final class RoomCoordinator: NSObject, RoomCoordinatorProtocol {
170170
self.stopLoading()
171171

172172
if let roomDataSource = roomDataSource {
173+
self.roomViewController.autoJoinInvitedRoom = self.parameters.autoJoinInvitedRoom
173174
self.roomViewController.displayRoom(roomDataSource)
174175
}
175176

Riot/Modules/Room/RoomCoordinatorParameters.swift

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,9 @@ struct RoomCoordinatorParameters {
5555
/// If `true`, the room settings screen will be initially displayed. Default `false`
5656
let showSettingsInitially: Bool
5757

58+
/// If `true`, the invited room is automatically joined.
59+
let autoJoinInvitedRoom: Bool
60+
5861
// MARK: - Setup
5962

6063
private init(navigationRouter: NavigationRouterType?,
@@ -67,7 +70,8 @@ struct RoomCoordinatorParameters {
6770
threadId: String?,
6871
displayConfiguration: RoomDisplayConfiguration,
6972
previewData: RoomPreviewData?,
70-
showSettingsInitially: Bool) {
73+
showSettingsInitially: Bool,
74+
autoJoinInvitedRoom: Bool) {
7175
self.navigationRouter = navigationRouter
7276
self.navigationRouterStore = navigationRouterStore
7377
self.userIndicatorPresenter = userIndicatorPresenter
@@ -79,6 +83,7 @@ struct RoomCoordinatorParameters {
7983
self.displayConfiguration = displayConfiguration
8084
self.previewData = previewData
8185
self.showSettingsInitially = showSettingsInitially
86+
self.autoJoinInvitedRoom = autoJoinInvitedRoom
8287
}
8388

8489
/// Init to present a joined room
@@ -91,7 +96,8 @@ struct RoomCoordinatorParameters {
9196
eventId: String? = nil,
9297
threadId: String? = nil,
9398
showSettingsInitially: Bool,
94-
displayConfiguration: RoomDisplayConfiguration = .default) {
99+
displayConfiguration: RoomDisplayConfiguration = .default,
100+
autoJoinInvitedRoom: Bool = false) {
95101

96102
self.init(navigationRouter: navigationRouter,
97103
navigationRouterStore: navigationRouterStore,
@@ -103,7 +109,8 @@ struct RoomCoordinatorParameters {
103109
threadId: threadId,
104110
displayConfiguration: displayConfiguration,
105111
previewData: nil,
106-
showSettingsInitially: showSettingsInitially)
112+
showSettingsInitially: showSettingsInitially,
113+
autoJoinInvitedRoom: autoJoinInvitedRoom)
107114
}
108115

109116
/// Init to present a room preview
@@ -123,6 +130,7 @@ struct RoomCoordinatorParameters {
123130
threadId: nil,
124131
displayConfiguration: .default,
125132
previewData: previewData,
126-
showSettingsInitially: false)
133+
showSettingsInitially: false,
134+
autoJoinInvitedRoom: false)
127135
}
128136
}

Riot/Modules/Room/RoomViewController.m

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1066,10 +1066,8 @@ - (void)onRoomDataSourceReady
10661066
// Show preview header
10671067
[self showPreviewHeader:YES];
10681068
}
1069-
else
1070-
{
1071-
[super onRoomDataSourceReady];
1072-
}
1069+
1070+
[super onRoomDataSourceReady];
10731071
}
10741072

10751073
- (void)updateViewControllerAppearanceOnRoomDataSourceState

Riot/Modules/TabBar/TabBarCoordinator.swift

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -428,7 +428,9 @@ final class TabBarCoordinator: NSObject, TabBarCoordinatorType {
428428
roomId: roomNavigationParameters.roomId,
429429
eventId: roomNavigationParameters.eventId,
430430
threadId: threadId,
431-
showSettingsInitially: roomNavigationParameters.showSettingsInitially, displayConfiguration: displayConfig)
431+
showSettingsInitially: roomNavigationParameters.showSettingsInitially,
432+
displayConfiguration: displayConfig,
433+
autoJoinInvitedRoom: roomNavigationParameters.autoJoinInvitedRoom)
432434

433435
self.showRoom(with: roomCoordinatorParameters,
434436
stackOnSplitViewDetail: roomNavigationParameters.presentationParameters.stackAboveVisibleViews,

changelog.d/4986.change

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Open the room when user accepts an invite from the room list

0 commit comments

Comments
 (0)