diff --git a/Riot/Modules/Common/Recents/RecentsViewController.m b/Riot/Modules/Common/Recents/RecentsViewController.m index 67b797e67..6b4d6fc62 100644 --- a/Riot/Modules/Common/Recents/RecentsViewController.m +++ b/Riot/Modules/Common/Recents/RecentsViewController.m @@ -1989,7 +1989,8 @@ NSString *const RecentsViewControllerDataReadyNotification = @"RecentsViewContro // Sanity check if (self.mainSession) { - self.createRoomCoordinatorBridgePresenter = [[CreateRoomCoordinatorBridgePresenter alloc] initWithSession:self.mainSession parentSpace: self.dataSource.currentSpace]; + CreateRoomCoordinatorParameter *parameters = [[CreateRoomCoordinatorParameter alloc] initWithSession:self.mainSession parentSpace: self.dataSource.currentSpace]; + self.createRoomCoordinatorBridgePresenter = [[CreateRoomCoordinatorBridgePresenter alloc] initWithParameters:parameters]; self.createRoomCoordinatorBridgePresenter.delegate = self; [self.createRoomCoordinatorBridgePresenter presentFrom:self animated:YES]; } diff --git a/Riot/Modules/CreateRoom/CreateRoomCoordinator.swift b/Riot/Modules/CreateRoom/CreateRoomCoordinator.swift index 5ef975845..8bc2f96d5 100644 --- a/Riot/Modules/CreateRoom/CreateRoomCoordinator.swift +++ b/Riot/Modules/CreateRoom/CreateRoomCoordinator.swift @@ -18,6 +18,21 @@ import UIKit +@objcMembers +class CreateRoomCoordinatorParameter: NSObject { + /// Instance of the current MXSession + let session: MXSession + + /// Instance of the parent space. `nil` if home space + let parentSpace: MXSpace? + + init(session: MXSession, + parentSpace: MXSpace?) { + self.session = session + self.parentSpace = parentSpace + } +} + @objcMembers final class CreateRoomCoordinator: CreateRoomCoordinatorType { @@ -27,8 +42,7 @@ final class CreateRoomCoordinator: CreateRoomCoordinatorType { private let navigationRouter: NavigationRouterType private let tabRouter: TabbedRouterType - private let session: MXSession - private(set) var parentSpace: MXSpace? + private let parameters: CreateRoomCoordinatorParameter // MARK: Public @@ -37,15 +51,18 @@ final class CreateRoomCoordinator: CreateRoomCoordinatorType { weak var delegate: CreateRoomCoordinatorDelegate? + var parentSpace: MXSpace? { + parameters.parentSpace + } + // MARK: - Setup - init(session: MXSession, parentSpace: MXSpace?) { + init(parameters: CreateRoomCoordinatorParameter) { self.navigationRouter = NavigationRouter(navigationController: RiotNavigationController()) - let segmentedController = RiotSegmentedController.instantiate() + let segmentedController = SegmentedController.instantiate() segmentedController.title = VectorL10n.spacesAddRoom self.tabRouter = SegmentedRouter(segmentedController: segmentedController) - self.session = session - self.parentSpace = parentSpace + self.parameters = parameters } // MARK: - Public methods @@ -91,14 +108,14 @@ final class CreateRoomCoordinator: CreateRoomCoordinatorType { // MARK: - Private methods private func createEnterNewRoomDetailsCoordinator() -> EnterNewRoomDetailsCoordinator { - let coordinator = EnterNewRoomDetailsCoordinator(session: self.session, parentSpace: self.parentSpace) + let coordinator = EnterNewRoomDetailsCoordinator(session: self.parameters.session, parentSpace: self.parentSpace) coordinator.delegate = self return coordinator } @available(iOS 14.0, *) private func createRoomSelectorCoordinator(parentSpace: MXSpace) -> MatrixItemChooserCoordinator { - let paramaters = MatrixItemChooserCoordinatorParameters(session: self.session, viewProvider: AddRoomSelectorViewProvider(), itemsProcessor: AddRoomItemsProcessor(parentSpace: parentSpace)) + let paramaters = MatrixItemChooserCoordinatorParameters(session: self.parameters.session, viewProvider: AddRoomSelectorViewProvider(), itemsProcessor: AddRoomItemsProcessor(parentSpace: parentSpace)) let coordinator = MatrixItemChooserCoordinator(parameters: paramaters) return coordinator } diff --git a/Riot/Modules/CreateRoom/CreateRoomCoordinatorBridgePresenter.swift b/Riot/Modules/CreateRoom/CreateRoomCoordinatorBridgePresenter.swift index 9b26146da..24efedb4c 100644 --- a/Riot/Modules/CreateRoom/CreateRoomCoordinatorBridgePresenter.swift +++ b/Riot/Modules/CreateRoom/CreateRoomCoordinatorBridgePresenter.swift @@ -33,8 +33,7 @@ final class CreateRoomCoordinatorBridgePresenter: NSObject { // MARK: Private - private let session: MXSession - private let parentSpace: MXSpace? + private let parameters: CreateRoomCoordinatorParameter private var coordinator: CreateRoomCoordinator? // MARK: Public @@ -43,9 +42,8 @@ final class CreateRoomCoordinatorBridgePresenter: NSObject { // MARK: - Setup - init(session: MXSession, parentSpace: MXSpace?) { - self.session = session - self.parentSpace = parentSpace + init(parameters: CreateRoomCoordinatorParameter) { + self.parameters = parameters super.init() } @@ -57,7 +55,7 @@ final class CreateRoomCoordinatorBridgePresenter: NSObject { // } func present(from viewController: UIViewController, animated: Bool) { - let createRoomCoordinator = CreateRoomCoordinator(session: self.session, parentSpace: self.parentSpace) + let createRoomCoordinator = CreateRoomCoordinator(parameters: self.parameters) createRoomCoordinator.delegate = self let presentable = createRoomCoordinator.toPresentable() presentable.presentationController?.delegate = self diff --git a/Riot/Modules/SideMenu/SideMenuCoordinator.swift b/Riot/Modules/SideMenu/SideMenuCoordinator.swift index 19341a342..ad883ac34 100644 --- a/Riot/Modules/SideMenu/SideMenuCoordinator.swift +++ b/Riot/Modules/SideMenu/SideMenuCoordinator.swift @@ -291,7 +291,7 @@ final class SideMenuCoordinator: NSObject, SideMenuCoordinatorType { private func showAddRoom(spaceId: String, session: MXSession) { let space = session.spaceService.getSpace(withId: spaceId) - let createRoomCoordinator = CreateRoomCoordinator(session: session, parentSpace: space) + let createRoomCoordinator = CreateRoomCoordinator(parameters: CreateRoomCoordinatorParameter(session: session, parentSpace: space)) createRoomCoordinator.delegate = self let presentable = createRoomCoordinator.toPresentable() presentable.presentationController?.delegate = self diff --git a/Riot/Modules/Spaces/SpaceRoomList/ExploreRoomCoordinator.swift b/Riot/Modules/Spaces/SpaceRoomList/ExploreRoomCoordinator.swift index f60caf368..82c207ecc 100644 --- a/Riot/Modules/Spaces/SpaceRoomList/ExploreRoomCoordinator.swift +++ b/Riot/Modules/Spaces/SpaceRoomList/ExploreRoomCoordinator.swift @@ -154,7 +154,7 @@ final class ExploreRoomCoordinator: NSObject, ExploreRoomCoordinatorType { private func presentRoomCreation() { let space = session.spaceService.getSpace(withId: spaceIdStack.last ?? "") - let createRoomCoordinator = CreateRoomCoordinator(session: self.session, parentSpace: space) + let createRoomCoordinator = CreateRoomCoordinator(parameters: CreateRoomCoordinatorParameter(session: self.session, parentSpace: space)) createRoomCoordinator.delegate = self let presentable = createRoomCoordinator.toPresentable() presentable.presentationController?.delegate = self diff --git a/Riot/Routers/TabRouters/RiotSegmentedController.storyboard b/Riot/Routers/TabRouters/SegmentedController.storyboard similarity index 94% rename from Riot/Routers/TabRouters/RiotSegmentedController.storyboard rename to Riot/Routers/TabRouters/SegmentedController.storyboard index f497a0a3b..a723e4c31 100644 --- a/Riot/Routers/TabRouters/RiotSegmentedController.storyboard +++ b/Riot/Routers/TabRouters/SegmentedController.storyboard @@ -1,18 +1,18 @@ - + - + - + - + diff --git a/Riot/Routers/TabRouters/RiotSegmentedController.swift b/Riot/Routers/TabRouters/SegmentedController.swift similarity index 91% rename from Riot/Routers/TabRouters/RiotSegmentedController.swift rename to Riot/Routers/TabRouters/SegmentedController.swift index 5bbcf61ee..07ec308e5 100644 --- a/Riot/Routers/TabRouters/RiotSegmentedController.swift +++ b/Riot/Routers/TabRouters/SegmentedController.swift @@ -16,12 +16,12 @@ import Foundation -struct RiotSegmentedControllerTab { +struct SegmentedControllerTab { let title: String? let viewController: UIViewController } -class RiotSegmentedController: UIViewController, Themable { +class SegmentedController: UIViewController, Themable { // MARK: Outlets @@ -57,7 +57,7 @@ class RiotSegmentedController: UIViewController, Themable { // MARK: Properties - var tabs: [RiotSegmentedControllerTab] = [] { + var tabs: [SegmentedControllerTab] = [] { didSet { if isViewLoaded { populateSegmentedControl() @@ -67,9 +67,9 @@ class RiotSegmentedController: UIViewController, Themable { // MARK: Setup - class func instantiate() -> RiotSegmentedController { - let storyboard = UIStoryboard(name: "RiotSegmentedController", bundle: nil) - let viewController = storyboard.instantiateInitialViewController() as? RiotSegmentedController ?? RiotSegmentedController() + class func instantiate() -> SegmentedController { + let storyboard = UIStoryboard(name: "SegmentedController", bundle: nil) + let viewController = storyboard.instantiateInitialViewController() as? SegmentedController ?? SegmentedController() viewController.theme = ThemeService.shared().theme return viewController } diff --git a/Riot/Routers/TabRouters/SegmentedRouter.swift b/Riot/Routers/TabRouters/SegmentedRouter.swift index 995f052d3..6cf7bf8ca 100644 --- a/Riot/Routers/TabRouters/SegmentedRouter.swift +++ b/Riot/Routers/TabRouters/SegmentedRouter.swift @@ -20,7 +20,7 @@ class SegmentedRouter: NSObject, TabbedRouterType { // MARK: - Private - let segmentedController: RiotSegmentedController + let segmentedController: SegmentedController /// Returns the presentables associated to each view controller var tabs: [TabbedRouterTab] = [] { @@ -32,12 +32,12 @@ class SegmentedRouter: NSObject, TabbedRouterType { return nil } - return RiotSegmentedControllerTab(title: tab.title, viewController: viewController) + return SegmentedControllerTab(title: tab.title, viewController: viewController) }) } } - init(segmentedController: RiotSegmentedController = RiotSegmentedController.instantiate()) { + init(segmentedController: SegmentedController = SegmentedController.instantiate()) { self.segmentedController = segmentedController } diff --git a/Riot/Routers/TabRouters/TabBarRouter.swift b/Riot/Routers/TabRouters/TabBarRouter.swift index f65797bff..356b6420d 100644 --- a/Riot/Routers/TabRouters/TabBarRouter.swift +++ b/Riot/Routers/TabRouters/TabBarRouter.swift @@ -23,7 +23,6 @@ class TabBarRouter: NSObject, TabbedRouterType { // MARK: Private - private var completions: [UIViewController : () -> Void] private let tabBarController: UITabBarController /// Stores the association between the added Presentable and his view controller. @@ -66,7 +65,6 @@ class TabBarRouter: NSObject, TabbedRouterType { init(tabBarController: UITabBarController = UITabBarController(), tabs: [TabbedRouterTab]? = nil) { self.tabBarController = tabBarController - self.completions = [:] super.init() self.tabBarController.delegate = self