diff --git a/RiotSwiftUI/Modules/UserSessions/UserOtherSessions/Coordinator/UserOtherSessionsCoordinator.swift b/RiotSwiftUI/Modules/UserSessions/UserOtherSessions/Coordinator/UserOtherSessionsCoordinator.swift index d1519c0a3..98dbb144e 100644 --- a/RiotSwiftUI/Modules/UserSessions/UserOtherSessions/Coordinator/UserOtherSessionsCoordinator.swift +++ b/RiotSwiftUI/Modules/UserSessions/UserOtherSessions/Coordinator/UserOtherSessionsCoordinator.swift @@ -39,7 +39,8 @@ final class UserOtherSessionsCoordinator: Coordinator, Presentable { let viewModel = UserOtherSessionsViewModel(sessionInfos: parameters.sessionInfos, filter: parameters.filter, - title: parameters.title) + title: parameters.title, + settingService: RiotSettings.shared) let view = UserOtherSessions(viewModel: viewModel.context) userOtherSessionsViewModel = viewModel userOtherSessionsHostingController = VectorHostingController(rootView: view) diff --git a/RiotSwiftUI/Modules/UserSessions/UserOtherSessions/MockUserOtherSessionsScreenState.swift b/RiotSwiftUI/Modules/UserSessions/UserOtherSessions/MockUserOtherSessionsScreenState.swift index 7b9a6d4fb..a4b3e38ce 100644 --- a/RiotSwiftUI/Modules/UserSessions/UserOtherSessions/MockUserOtherSessionsScreenState.swift +++ b/RiotSwiftUI/Modules/UserSessions/UserOtherSessions/MockUserOtherSessionsScreenState.swift @@ -47,19 +47,23 @@ enum MockUserOtherSessionsScreenState: MockScreenState, CaseIterable { case .all: viewModel = UserOtherSessionsViewModel(sessionInfos: allSessions(), filter: .all, - title: VectorL10n.userSessionsOverviewOtherSessionsSectionTitle) + title: VectorL10n.userSessionsOverviewOtherSessionsSectionTitle, + settingService: MockUserSessionSettings()) case .inactiveSessions: viewModel = UserOtherSessionsViewModel(sessionInfos: inactiveSessions(), filter: .inactive, - title: VectorL10n.userOtherSessionSecurityRecommendationTitle) + title: VectorL10n.userOtherSessionSecurityRecommendationTitle, + settingService: MockUserSessionSettings()) case .unverifiedSessions: viewModel = UserOtherSessionsViewModel(sessionInfos: unverifiedSessions(), filter: .unverified, - title: VectorL10n.userOtherSessionSecurityRecommendationTitle) + title: VectorL10n.userOtherSessionSecurityRecommendationTitle, + settingService: MockUserSessionSettings()) case .verifiedSessions: viewModel = UserOtherSessionsViewModel(sessionInfos: verifiedSessions(), filter: .verified, - title: VectorL10n.userOtherSessionSecurityRecommendationTitle) + title: VectorL10n.userOtherSessionSecurityRecommendationTitle, + settingService: MockUserSessionSettings()) } // can simulate service and viewModel actions here if needs be. diff --git a/RiotSwiftUI/Modules/UserSessions/UserOtherSessions/UserOtherSessionsModels.swift b/RiotSwiftUI/Modules/UserSessions/UserOtherSessions/UserOtherSessionsModels.swift index d143ceb97..b3b4efa00 100644 --- a/RiotSwiftUI/Modules/UserSessions/UserOtherSessions/UserOtherSessionsModels.swift +++ b/RiotSwiftUI/Modules/UserSessions/UserOtherSessions/UserOtherSessionsModels.swift @@ -40,7 +40,7 @@ struct UserOtherSessionsViewState: BindableState, Equatable { var emptyItemsTitle: String var allItemsSelected: Bool var enableSignOutButton: Bool - var showLocationInfo: Bool = RiotSettings.shared.showIPAddressesInSessionsManager + var showLocationInfo: Bool } struct UserOtherSessionsBindings: Equatable { diff --git a/RiotSwiftUI/Modules/UserSessions/UserOtherSessions/UserOtherSessionsViewModel.swift b/RiotSwiftUI/Modules/UserSessions/UserOtherSessions/UserOtherSessionsViewModel.swift index 48384ddc8..980a980f4 100644 --- a/RiotSwiftUI/Modules/UserSessions/UserOtherSessions/UserOtherSessionsViewModel.swift +++ b/RiotSwiftUI/Modules/UserSessions/UserOtherSessions/UserOtherSessionsViewModel.swift @@ -23,21 +23,25 @@ class UserOtherSessionsViewModel: UserOtherSessionsViewModelType, UserOtherSessi private let sessionInfos: [UserSessionInfo] private var selectedSessions: Set = [] private let defaultTitle: String + private let settingsService: UserSessionSettingsProtocol init(sessionInfos: [UserSessionInfo], filter: UserOtherSessionsFilter, - title: String) { + title: String, + settingService: UserSessionSettingsProtocol) { self.sessionInfos = sessionInfos defaultTitle = title let bindings = UserOtherSessionsBindings(filter: filter, isEditModeEnabled: false) let sessionItems = filter.filterSessionInfos(sessionInfos: sessionInfos, selectedSessions: selectedSessions) + self.settingsService = settingService super.init(initialViewState: UserOtherSessionsViewState(bindings: bindings, title: title, sessionItems: sessionItems, header: filter.userOtherSessionsViewHeader, emptyItemsTitle: filter.userOtherSessionsViewEmptyResultsTitle, allItemsSelected: false, - enableSignOutButton: false)) + enableSignOutButton: false, + showLocationInfo: settingService.showIPAddressesInSessionsManager)) } // MARK: - Public @@ -71,8 +75,8 @@ class UserOtherSessionsViewModel: UserOtherSessionsViewModelType, UserOtherSessi } completion?(.logoutFromUserSessions(sessionInfos: selectedSessionInfos)) case .showLocationInfo: - RiotSettings.shared.showIPAddressesInSessionsManager.toggle() - state.showLocationInfo = RiotSettings.shared.showIPAddressesInSessionsManager + settingsService.showIPAddressesInSessionsManager.toggle() + state.showLocationInfo = settingsService.showIPAddressesInSessionsManager } }