mirror of
https://gitlab.opencode.de/bwi/bundesmessenger/clients/bundesmessenger-ios.git
synced 2026-04-21 17:12:45 +02:00
Add settings service in UserOtherSessionsViewModel
This commit is contained in:
+2
-1
@@ -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)
|
||||
|
||||
+8
-4
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user