mirror of
https://gitlab.opencode.de/bwi/bundesmessenger/clients/bundesmessenger-ios.git
synced 2026-04-21 09:02:44 +02:00
Merge branch 'develop' into alfogrillo/learn_more_sheet
# Conflicts: # RiotSwiftUI/Modules/UserSessions/UserOtherSessions/UserOtherSessionsModels.swift # RiotSwiftUI/Modules/UserSessions/UserOtherSessions/UserOtherSessionsViewModel.swift # RiotSwiftUI/Modules/UserSessions/UserSessionOverview/UserSessionOverviewModels.swift # RiotSwiftUI/Modules/UserSessions/UserSessionOverview/UserSessionOverviewViewModel.swift # RiotSwiftUI/Modules/UserSessions/UserSessionOverview/View/UserSessionOverview.swift
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
@@ -123,7 +123,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)))
|
||||
}
|
||||
|
||||
+5
-5
@@ -22,7 +22,7 @@ import XCTest
|
||||
class UserSessionOverviewViewModelTests: XCTestCase {
|
||||
func test_whenVerifyCurrentSessionProcessed_completionWithVerifyCurrentSessionCalled() {
|
||||
let sessionInfo = createUserSessionInfo()
|
||||
let sut = UserSessionOverviewViewModel(sessionInfo: sessionInfo, service: MockUserSessionOverviewService())
|
||||
let sut = UserSessionOverviewViewModel(sessionInfo: sessionInfo, service: MockUserSessionOverviewService(), settingsService: MockUserSessionSettings())
|
||||
|
||||
XCTAssertEqual(sut.state.isPusherEnabled, nil)
|
||||
var modelResult: UserSessionOverviewViewModelResult?
|
||||
@@ -35,7 +35,7 @@ class UserSessionOverviewViewModelTests: XCTestCase {
|
||||
|
||||
func test_whenViewSessionDetailsProcessed_completionWithShowSessionDetailsCalled() {
|
||||
let sessionInfo = createUserSessionInfo()
|
||||
let sut = UserSessionOverviewViewModel(sessionInfo: sessionInfo, service: MockUserSessionOverviewService())
|
||||
let sut = UserSessionOverviewViewModel(sessionInfo: sessionInfo, service: MockUserSessionOverviewService(), settingsService: MockUserSessionSettings())
|
||||
|
||||
XCTAssertEqual(sut.state.isPusherEnabled, nil)
|
||||
var modelResult: UserSessionOverviewViewModelResult?
|
||||
@@ -49,7 +49,7 @@ class UserSessionOverviewViewModelTests: XCTestCase {
|
||||
func test_whenViewSessionDetailsProcessed_toggleAvailablePusher() {
|
||||
let sessionInfo = createUserSessionInfo()
|
||||
let service = MockUserSessionOverviewService(pusherEnabled: true)
|
||||
let sut = UserSessionOverviewViewModel(sessionInfo: sessionInfo, service: service)
|
||||
let sut = UserSessionOverviewViewModel(sessionInfo: sessionInfo, service: service, settingsService: MockUserSessionSettings())
|
||||
|
||||
XCTAssertTrue(sut.state.remotelyTogglingPushersAvailable)
|
||||
XCTAssertEqual(sut.state.isPusherEnabled, true)
|
||||
@@ -62,7 +62,7 @@ class UserSessionOverviewViewModelTests: XCTestCase {
|
||||
func test_whenViewSessionDetailsProcessed_toggleNoPusher() {
|
||||
let sessionInfo = createUserSessionInfo()
|
||||
let service = MockUserSessionOverviewService(pusherEnabled: nil)
|
||||
let sut = UserSessionOverviewViewModel(sessionInfo: sessionInfo, service: service)
|
||||
let sut = UserSessionOverviewViewModel(sessionInfo: sessionInfo, service: service, settingsService: MockUserSessionSettings())
|
||||
|
||||
XCTAssertTrue(sut.state.remotelyTogglingPushersAvailable)
|
||||
XCTAssertEqual(sut.state.isPusherEnabled, nil)
|
||||
@@ -75,7 +75,7 @@ class UserSessionOverviewViewModelTests: XCTestCase {
|
||||
func test_whenViewSessionDetailsProcessed_remotelyTogglingPushersNotAvailable() {
|
||||
let sessionInfo = createUserSessionInfo()
|
||||
let service = MockUserSessionOverviewService(pusherEnabled: true, remotelyTogglingPushersAvailable: false)
|
||||
let sut = UserSessionOverviewViewModel(sessionInfo: sessionInfo, service: service)
|
||||
let sut = UserSessionOverviewViewModel(sessionInfo: sessionInfo, service: service, settingsService: MockUserSessionSettings())
|
||||
|
||||
XCTAssertFalse(sut.state.remotelyTogglingPushersAvailable)
|
||||
XCTAssertEqual(sut.state.isPusherEnabled, true)
|
||||
|
||||
@@ -44,6 +44,7 @@ struct UserSessionOverviewViewState: BindableState {
|
||||
var isPusherEnabled: Bool?
|
||||
var remotelyTogglingPushersAvailable: Bool
|
||||
var showLoadingIndicator: Bool
|
||||
var showLocationInfo: Bool
|
||||
}
|
||||
|
||||
enum UserSessionOverviewViewAction {
|
||||
@@ -52,5 +53,6 @@ enum UserSessionOverviewViewAction {
|
||||
case togglePushNotifications
|
||||
case renameSession
|
||||
case logoutOfSession
|
||||
case showLocationInfo
|
||||
case viewSessionInfo
|
||||
}
|
||||
|
||||
+9
-2
@@ -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()
|
||||
@@ -95,6 +99,9 @@ class UserSessionOverviewViewModel: UserSessionOverviewViewModelType, UserSessio
|
||||
completion?(.renameSession(sessionInfo))
|
||||
case .logoutOfSession:
|
||||
completion?(.logoutOfSession(sessionInfo))
|
||||
case .showLocationInfo:
|
||||
settingService.showIPAddressesInSessionsManager.toggle()
|
||||
state.showLocationInfo = settingService.showIPAddressesInSessionsManager
|
||||
case .viewSessionInfo:
|
||||
completion?(.showSessionStateInfo(sessionInfo))
|
||||
}
|
||||
|
||||
+10
-1
@@ -33,7 +33,8 @@ struct UserSessionOverview: View {
|
||||
},
|
||||
onLearnMoreAction: {
|
||||
viewModel.send(viewAction: .viewSessionInfo)
|
||||
}
|
||||
},
|
||||
showLocationInformations: viewModel.viewState.showLocationInfo
|
||||
)
|
||||
.padding(16)
|
||||
|
||||
@@ -75,6 +76,14 @@ struct UserSessionOverview: View {
|
||||
Label(VectorL10n.manageSessionRename, systemImage: "pencil")
|
||||
}
|
||||
.accessibilityIdentifier(VectorL10n.manageSessionRename)
|
||||
|
||||
if viewModel.viewState.isCurrentSession == false {
|
||||
Button {
|
||||
viewModel.send(viewAction: .showLocationInfo)
|
||||
} label: {
|
||||
Label(showLocationInfo: viewModel.viewState.showLocationInfo)
|
||||
}
|
||||
}
|
||||
}
|
||||
DestructiveButton {
|
||||
viewModel.send(viewAction: .logoutOfSession)
|
||||
|
||||
Reference in New Issue
Block a user