mirror of
https://gitlab.opencode.de/bwi/bundesmessenger/clients/bundesmessenger-ios.git
synced 2026-04-21 17:12:45 +02:00
Hide sign out x/all buttons in the Device Manager when using OIDC. (#7674)
This commit is contained in:
+4
-1
@@ -39,7 +39,10 @@ final class UserSessionsOverviewCoordinator: Coordinator, Presentable {
|
||||
self.parameters = parameters
|
||||
service = parameters.service
|
||||
|
||||
viewModel = UserSessionsOverviewViewModel(userSessionsOverviewService: parameters.service, settingsService: RiotSettings.shared)
|
||||
let shouldShowDeviceLogout = parameters.session.homeserverWellknown.authentication == nil
|
||||
viewModel = UserSessionsOverviewViewModel(userSessionsOverviewService: parameters.service,
|
||||
settingsService: RiotSettings.shared,
|
||||
showDeviceLogout: shouldShowDeviceLogout)
|
||||
|
||||
hostingViewController = VectorHostingController(rootView: UserSessionsOverview(viewModel: viewModel.context))
|
||||
hostingViewController.vc_setLargeTitleDisplayMode(.never)
|
||||
|
||||
+1
-1
@@ -51,7 +51,7 @@ enum MockUserSessionsOverviewScreenState: MockScreenState, CaseIterable {
|
||||
fatalError()
|
||||
}
|
||||
|
||||
let viewModel = UserSessionsOverviewViewModel(userSessionsOverviewService: service, settingsService: MockUserSessionSettings())
|
||||
let viewModel = UserSessionsOverviewViewModel(userSessionsOverviewService: service, settingsService: MockUserSessionSettings(), showDeviceLogout: true)
|
||||
|
||||
return (
|
||||
[service, viewModel],
|
||||
|
||||
+12
-4
@@ -21,7 +21,9 @@ import XCTest
|
||||
|
||||
class UserSessionsOverviewViewModelTests: XCTestCase {
|
||||
func testInitialStateEmpty() {
|
||||
let viewModel = UserSessionsOverviewViewModel(userSessionsOverviewService: MockUserSessionsOverviewService(), settingsService: MockUserSessionSettings())
|
||||
let viewModel = UserSessionsOverviewViewModel(userSessionsOverviewService: MockUserSessionsOverviewService(),
|
||||
settingsService: MockUserSessionSettings(),
|
||||
showDeviceLogout: true)
|
||||
|
||||
XCTAssertNil(viewModel.state.currentSessionViewData)
|
||||
XCTAssertTrue(viewModel.state.unverifiedSessionsViewData.isEmpty)
|
||||
@@ -31,7 +33,9 @@ class UserSessionsOverviewViewModelTests: XCTestCase {
|
||||
}
|
||||
|
||||
func testLoadOnDidAppear() {
|
||||
let viewModel = UserSessionsOverviewViewModel(userSessionsOverviewService: MockUserSessionsOverviewService(), settingsService: MockUserSessionSettings())
|
||||
let viewModel = UserSessionsOverviewViewModel(userSessionsOverviewService: MockUserSessionsOverviewService(),
|
||||
settingsService: MockUserSessionSettings(),
|
||||
showDeviceLogout: true)
|
||||
viewModel.process(viewAction: .viewAppeared)
|
||||
|
||||
XCTAssertNotNil(viewModel.state.currentSessionViewData)
|
||||
@@ -42,7 +46,9 @@ class UserSessionsOverviewViewModelTests: XCTestCase {
|
||||
}
|
||||
|
||||
func testSimpleActionProcessing() {
|
||||
let viewModel = UserSessionsOverviewViewModel(userSessionsOverviewService: MockUserSessionsOverviewService(), settingsService: MockUserSessionSettings())
|
||||
let viewModel = UserSessionsOverviewViewModel(userSessionsOverviewService: MockUserSessionsOverviewService(),
|
||||
settingsService: MockUserSessionSettings(),
|
||||
showDeviceLogout: true)
|
||||
|
||||
var result: UserSessionsOverviewViewModelResult?
|
||||
viewModel.completion = { action in
|
||||
@@ -69,7 +75,9 @@ class UserSessionsOverviewViewModelTests: XCTestCase {
|
||||
let service = MockUserSessionsOverviewService()
|
||||
service.updateOverviewData { _ in }
|
||||
|
||||
let viewModel = UserSessionsOverviewViewModel(userSessionsOverviewService: service, settingsService: MockUserSessionSettings())
|
||||
let viewModel = UserSessionsOverviewViewModel(userSessionsOverviewService: service,
|
||||
settingsService: MockUserSessionSettings(),
|
||||
showDeviceLogout: true)
|
||||
|
||||
var result: UserSessionsOverviewViewModelResult?
|
||||
viewModel.completion = { action in
|
||||
|
||||
@@ -51,6 +51,7 @@ struct UserSessionsOverviewViewState: BindableState {
|
||||
var showLoadingIndicator = false
|
||||
var linkDeviceButtonVisible = false
|
||||
var showLocationInfo: Bool
|
||||
var showDeviceLogout: Bool
|
||||
}
|
||||
|
||||
enum UserSessionsOverviewViewAction {
|
||||
|
||||
+2
-2
@@ -24,11 +24,11 @@ class UserSessionsOverviewViewModel: UserSessionsOverviewViewModelType, UserSess
|
||||
|
||||
var completion: ((UserSessionsOverviewViewModelResult) -> Void)?
|
||||
|
||||
init(userSessionsOverviewService: UserSessionsOverviewServiceProtocol, settingsService: UserSessionSettingsProtocol) {
|
||||
init(userSessionsOverviewService: UserSessionsOverviewServiceProtocol, settingsService: UserSessionSettingsProtocol, showDeviceLogout: Bool) {
|
||||
self.userSessionsOverviewService = userSessionsOverviewService
|
||||
self.settingsService = settingsService
|
||||
|
||||
super.init(initialViewState: .init(showLocationInfo: settingsService.showIPAddressesInSessionsManager))
|
||||
super.init(initialViewState: .init(showLocationInfo: settingsService.showIPAddressesInSessionsManager, showDeviceLogout: showDeviceLogout))
|
||||
|
||||
userSessionsOverviewService.overviewDataPublisher.sink { [weak self] overviewData in
|
||||
self?.updateViewState(with: overviewData)
|
||||
|
||||
+7
-5
@@ -125,7 +125,7 @@ struct UserSessionsOverview: View {
|
||||
Label(VectorL10n.signOut, systemImage: "rectangle.portrait.and.arrow.right.fill")
|
||||
}
|
||||
}
|
||||
if viewModel.viewState.otherSessionsViewData.count > 0 {
|
||||
if viewModel.viewState.otherSessionsViewData.count > 0, viewModel.viewState.showDeviceLogout {
|
||||
DestructiveButton {
|
||||
viewModel.send(viewAction: .logoutOtherSessions)
|
||||
} label: {
|
||||
@@ -149,10 +149,12 @@ struct UserSessionsOverview: View {
|
||||
Label(showLocationInfo: viewModel.viewState.showLocationInfo)
|
||||
}
|
||||
|
||||
DestructiveButton {
|
||||
viewModel.send(viewAction: .logoutOtherSessions)
|
||||
} label: {
|
||||
Label(VectorL10n.userOtherSessionMenuSignOutSessions(String(viewModel.viewState.otherSessionsViewData.count)), systemImage: "rectangle.portrait.and.arrow.forward.fill")
|
||||
if viewModel.viewState.showDeviceLogout {
|
||||
DestructiveButton {
|
||||
viewModel.send(viewAction: .logoutOtherSessions)
|
||||
} label: {
|
||||
Label(VectorL10n.userOtherSessionMenuSignOutSessions(String(viewModel.viewState.otherSessionsViewData.count)), systemImage: "rectangle.portrait.and.arrow.forward.fill")
|
||||
}
|
||||
}
|
||||
} label: {
|
||||
menuImage
|
||||
|
||||
Reference in New Issue
Block a user