SP2: Adding Rooms to Spaces element-ios#5230

- Added room ID to cancel callback as the room may have been upgraded
This commit is contained in:
Gil Eluard
2022-01-17 22:11:12 +01:00
parent 29e558ed9e
commit f98053e77a
6 changed files with 37 additions and 16 deletions
@@ -21,7 +21,7 @@ import UIKit
/// Actions returned by the coordinator callback
enum RoomAccessCoordinatorCoordinatorAction {
case done(String)
case cancel
case cancel(String)
}
@objcMembers
@@ -32,6 +32,7 @@ final class RoomAccessCoordinator: Coordinator {
// MARK: Private
private let parameters: RoomAccessCoordinatorParameters
private var upgradedRoomId: String?
private var navigationRouter: NavigationRouterType {
return self.parameters.navigationRouter
@@ -44,6 +45,13 @@ final class RoomAccessCoordinator: Coordinator {
var callback: ((RoomAccessCoordinatorCoordinatorAction) -> Void)?
var currentRoomId: String {
if let upgradedRoomId = upgradedRoomId {
return upgradedRoomId
}
return parameters.room.roomId
}
// MARK: - Setup
init(parameters: RoomAccessCoordinatorParameters) {
@@ -99,9 +107,10 @@ final class RoomAccessCoordinator: Coordinator {
switch result {
case .done(let roomId):
self.callback?(.done(roomId))
case .cancel:
self.callback?(.cancel)
case .cancel(let roomId):
self.callback?(.cancel(roomId))
case .spaceSelection(let roomId, _):
self.upgradedRoomId = roomId
self.pushScreen(with: self.createRestrictedAccessSpaceChooserCoordinator(with: roomId))
}
}
@@ -122,7 +131,7 @@ final class RoomAccessCoordinator: Coordinator {
case .back:
self.navigationRouter.popModule(animated: true)
case .cancel:
self.callback?(.cancel)
self.callback?(.cancel(roomId))
case .done:
self.callback?(.done(roomId))
}
@@ -16,7 +16,7 @@
import UIKit
@objc protocol RoomAccessCoordinatorBridgePresenterDelegate {
func roomAccessCoordinatorBridgePresenterDelegateDidCancel(_ coordinatorBridgePresenter: RoomAccessCoordinatorBridgePresenter)
func roomAccessCoordinatorBridgePresenterDelegate(_ coordinatorBridgePresenter: RoomAccessCoordinatorBridgePresenter, didCancelRoomWithId roomId: String)
func roomAccessCoordinatorBridgePresenterDelegate(_ coordinatorBridgePresenter: RoomAccessCoordinatorBridgePresenter, didCompleteRoomWithId roomId: String)
}
@@ -54,8 +54,8 @@ final class RoomAccessCoordinatorBridgePresenter: NSObject {
guard let self = self else { return }
switch result {
case .cancel:
self.delegate?.roomAccessCoordinatorBridgePresenterDelegateDidCancel(self)
case .cancel(let roomId):
self.delegate?.roomAccessCoordinatorBridgePresenterDelegate(self, didCancelRoomWithId: roomId)
case .done(let roomId):
self.delegate?.roomAccessCoordinatorBridgePresenterDelegate(self, didCompleteRoomWithId: roomId)
}
@@ -88,7 +88,11 @@ final class RoomAccessCoordinatorBridgePresenter: NSObject {
extension RoomAccessCoordinatorBridgePresenter: UIAdaptivePresentationControllerDelegate {
func roomNotificationSettingsCoordinatorDidComplete(_ presentationController: UIPresentationController) {
self.delegate?.roomAccessCoordinatorBridgePresenterDelegateDidCancel(self)
if let roomId = self.coordinator?.currentRoomId {
self.delegate?.roomAccessCoordinatorBridgePresenterDelegate(self, didCancelRoomWithId: roomId)
} else {
self.delegate?.roomAccessCoordinatorBridgePresenterDelegate(self, didCancelRoomWithId: self.room.roomId)
}
}
}
@@ -61,8 +61,8 @@ final class RoomAccessTypeChooserCoordinator: Coordinator, Presentable {
self.callback?(.spaceSelection(roomId, accessType))
case .done(let roomId):
self.callback?(.done(roomId))
case .cancel:
self.callback?(.cancel)
case .cancel(let roomId):
self.callback?(.cancel(roomId))
}
}
}
@@ -36,7 +36,7 @@ struct RoomAccessTypeChooserAccessItem: Identifiable, Equatable {
enum RoomAccessTypeChooserCoordinatorAction {
case spaceSelection(String, RoomAccessTypeChooserAccessType)
case done(String)
case cancel
case cancel(String)
}
// MARK: - View model
@@ -52,7 +52,7 @@ enum RoomAccessTypeChooserStateAction {
enum RoomAccessTypeChooserViewModelAction {
case spaceSelection(String, RoomAccessTypeChooserAccessType)
case done(String)
case cancel
case cancel(String)
}
// MARK: - View
@@ -112,7 +112,7 @@ class RoomAccessTypeChooserViewModel: RoomAccessTypeChooserViewModelType, RoomAc
}
private func cancel() {
callback?(.cancel)
callback?(.cancel(roomAccessTypeChooserService.currentRoomId))
}
private func didSelect(accessType: RoomAccessTypeChooserAccessType) {