Add settings service in UserOtherSessionsViewModel

This commit is contained in:
Alfonso Grillo
2022-11-02 20:13:29 +01:00
parent 6eb67dbdd0
commit 2af87e91e2
4 changed files with 19 additions and 10 deletions
@@ -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)
@@ -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.
@@ -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 {
@@ -23,21 +23,25 @@ class UserOtherSessionsViewModel: UserOtherSessionsViewModelType, UserOtherSessi
private let sessionInfos: [UserSessionInfo]
private var selectedSessions: Set<SessionId> = []
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
}
}