mirror of
https://gitlab.opencode.de/bwi/bundesmessenger/clients/bundesmessenger-ios.git
synced 2026-04-20 16:42:44 +02:00
Inject setting service in UserSessionOverviewViewModel
This commit is contained in:
+1
@@ -46,6 +46,7 @@ final class UserSessionOverviewCoordinator: Coordinator, Presentable {
|
||||
let service = UserSessionOverviewService(session: parameters.session, sessionInfo: parameters.sessionInfo)
|
||||
viewModel = UserSessionOverviewViewModel(sessionInfo: parameters.sessionInfo,
|
||||
service: service,
|
||||
settingsService: RiotSettings.shared,
|
||||
sessionsOverviewDataPublisher: parameters.sessionsOverviewDataPublisher)
|
||||
|
||||
hostingController = VectorHostingController(rootView: UserSessionOverview(viewModel: viewModel.context))
|
||||
|
||||
+1
-1
@@ -121,7 +121,7 @@ enum MockUserSessionOverviewScreenState: MockScreenState, CaseIterable {
|
||||
service = MockUserSessionOverviewService(pusherEnabled: true, remotelyTogglingPushersAvailable: false)
|
||||
}
|
||||
|
||||
let viewModel = UserSessionOverviewViewModel(sessionInfo: session, service: service)
|
||||
let viewModel = UserSessionOverviewViewModel(sessionInfo: session, service: service, settingsService: MockUserSessionSettings())
|
||||
// can simulate service and viewModel actions here if needs be.
|
||||
return ([viewModel], AnyView(UserSessionOverview(viewModel: viewModel.context)))
|
||||
}
|
||||
|
||||
+1
-1
@@ -42,7 +42,7 @@ struct UserSessionOverviewViewState: BindableState {
|
||||
var isPusherEnabled: Bool?
|
||||
var remotelyTogglingPushersAvailable: Bool
|
||||
var showLoadingIndicator: Bool
|
||||
var showLocationInfo = RiotSettings.shared.showIPAddressesInSessionsManager
|
||||
var showLocationInfo: Bool
|
||||
}
|
||||
|
||||
enum UserSessionOverviewViewAction {
|
||||
|
||||
+8
-4
@@ -22,13 +22,15 @@ typealias UserSessionOverviewViewModelType = StateStoreViewModel<UserSessionOver
|
||||
class UserSessionOverviewViewModel: UserSessionOverviewViewModelType, UserSessionOverviewViewModelProtocol {
|
||||
private let sessionInfo: UserSessionInfo
|
||||
private let service: UserSessionOverviewServiceProtocol
|
||||
|
||||
private let settingService: UserSessionSettingsProtocol
|
||||
|
||||
var completion: ((UserSessionOverviewViewModelResult) -> Void)?
|
||||
|
||||
// MARK: - Setup
|
||||
|
||||
init(sessionInfo: UserSessionInfo,
|
||||
service: UserSessionOverviewServiceProtocol,
|
||||
settingsService: UserSessionSettingsProtocol,
|
||||
sessionsOverviewDataPublisher: CurrentValueSubject<UserSessionsOverviewData, Never> = .init(.init(currentSession: nil,
|
||||
unverifiedSessions: [],
|
||||
inactiveSessions: [],
|
||||
@@ -36,13 +38,15 @@ class UserSessionOverviewViewModel: UserSessionOverviewViewModelType, UserSessio
|
||||
linkDeviceEnabled: false))) {
|
||||
self.sessionInfo = sessionInfo
|
||||
self.service = service
|
||||
self.settingService = settingsService
|
||||
|
||||
let cardViewData = UserSessionCardViewData(sessionInfo: sessionInfo)
|
||||
let state = UserSessionOverviewViewState(cardViewData: cardViewData,
|
||||
isCurrentSession: sessionInfo.isCurrent,
|
||||
isPusherEnabled: service.pusherEnabledSubject.value,
|
||||
remotelyTogglingPushersAvailable: service.remotelyTogglingPushersAvailableSubject.value,
|
||||
showLoadingIndicator: false)
|
||||
showLoadingIndicator: false,
|
||||
showLocationInfo: settingsService.showIPAddressesInSessionsManager)
|
||||
super.init(initialViewState: state)
|
||||
|
||||
startObservingService()
|
||||
@@ -96,8 +100,8 @@ class UserSessionOverviewViewModel: UserSessionOverviewViewModelType, UserSessio
|
||||
case .logoutOfSession:
|
||||
completion?(.logoutOfSession(sessionInfo))
|
||||
case .showLocationInfo:
|
||||
RiotSettings.shared.showIPAddressesInSessionsManager.toggle()
|
||||
state.showLocationInfo = RiotSettings.shared.showIPAddressesInSessionsManager
|
||||
settingService.showIPAddressesInSessionsManager.toggle()
|
||||
state.showLocationInfo = settingService.showIPAddressesInSessionsManager
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user