diff --git a/Config/BuildSettings.swift b/Config/BuildSettings.swift index 90d9b4ac4..9164309b7 100644 --- a/Config/BuildSettings.swift +++ b/Config/BuildSettings.swift @@ -153,6 +153,8 @@ final class BuildSettings: NSObject { "matrix.org" ] + // MARK: - Rooms Screen + static let roomsAllowToJoinPublicRooms: Bool = true // MARK: - Analytics static let analyticsServerUrl = URL(string: "https://piwik.riot.im/piwik.php") diff --git a/Riot/Managers/Settings/RiotSettings.swift b/Riot/Managers/Settings/RiotSettings.swift index 64c53025e..fa025f380 100644 --- a/Riot/Managers/Settings/RiotSettings.swift +++ b/Riot/Managers/Settings/RiotSettings.swift @@ -52,6 +52,7 @@ final class RiotSettings: NSObject { static let roomCreationScreenAllowRoomTypeConfiguration = "roomCreationScreenAllowRoomTypeConfiguration" static let roomCreationScreenRoomIsPublic = "roomCreationScreenRoomIsPublic" static let allowInviteExernalUsers = "allowInviteExernalUsers" + static let roomsAllowToJoinPublicRooms = "roomsAllowToJoinPublicRooms" } static let shared = RiotSettings() @@ -242,6 +243,18 @@ final class RiotSettings: NSObject { } } + // MARK: - Rooms Screen + var roomsAllowToJoinPublicRooms: Bool { + get { + guard defaults.object(forKey: UserDefaultsKeys.roomsAllowToJoinPublicRooms) != nil else { + return BuildSettings.roomsAllowToJoinPublicRooms + } + return defaults.bool(forKey: UserDefaultsKeys.roomsAllowToJoinPublicRooms) + } set { + defaults.set(newValue, forKey: UserDefaultsKeys.roomsAllowToJoinPublicRooms) + } + } + // MARK: - Room Creation Screen var roomCreationScreenAllowEncryptionConfiguration: Bool { diff --git a/Riot/Modules/Common/Recents/RecentsViewController.m b/Riot/Modules/Common/Recents/RecentsViewController.m index 464bdfd84..c396da4ff 100644 --- a/Riot/Modules/Common/Recents/RecentsViewController.m +++ b/Riot/Modules/Common/Recents/RecentsViewController.m @@ -1808,9 +1808,16 @@ return; } - self.roomsDirectoryCoordinatorBridgePresenter = [[RoomsDirectoryCoordinatorBridgePresenter alloc] initWithSession:self.mainSession dataSource:[self.recentsDataSource.publicRoomsDirectoryDataSource copy]]; - self.roomsDirectoryCoordinatorBridgePresenter.delegate = self; - [self.roomsDirectoryCoordinatorBridgePresenter presentFrom:self animated:YES]; + if (RiotSettings.shared.roomsAllowToJoinPublicRooms) + { + self.roomsDirectoryCoordinatorBridgePresenter = [[RoomsDirectoryCoordinatorBridgePresenter alloc] initWithSession:self.mainSession dataSource:[self.recentsDataSource.publicRoomsDirectoryDataSource copy]]; + self.roomsDirectoryCoordinatorBridgePresenter.delegate = self; + [self.roomsDirectoryCoordinatorBridgePresenter presentFrom:self animated:YES]; + } + else + { + [self createNewRoom]; + } } - (void)openPublicRoom:(MXPublicRoom *)publicRoom