diff --git a/RiotSwiftUI/Modules/UserSessions/UserOtherSessions/UserOtherSessionsModels.swift b/RiotSwiftUI/Modules/UserSessions/UserOtherSessions/UserOtherSessionsModels.swift index 80a6d0013..d143ceb97 100644 --- a/RiotSwiftUI/Modules/UserSessions/UserOtherSessions/UserOtherSessionsModels.swift +++ b/RiotSwiftUI/Modules/UserSessions/UserOtherSessions/UserOtherSessionsModels.swift @@ -40,12 +40,12 @@ struct UserOtherSessionsViewState: BindableState, Equatable { var emptyItemsTitle: String var allItemsSelected: Bool var enableSignOutButton: Bool + var showLocationInfo: Bool = RiotSettings.shared.showIPAddressesInSessionsManager } struct UserOtherSessionsBindings: Equatable { var filter: UserOtherSessionsFilter var isEditModeEnabled: Bool - var showLocationInfo = false } enum UserOtherSessionsViewAction { @@ -56,4 +56,5 @@ enum UserOtherSessionsViewAction { case toggleAllSelection case logoutAllUserSessions case logoutSelectedUserSessions + case showLocationInfo } diff --git a/RiotSwiftUI/Modules/UserSessions/UserOtherSessions/UserOtherSessionsViewModel.swift b/RiotSwiftUI/Modules/UserSessions/UserOtherSessions/UserOtherSessionsViewModel.swift index 1f21e1df4..48384ddc8 100644 --- a/RiotSwiftUI/Modules/UserSessions/UserOtherSessions/UserOtherSessionsViewModel.swift +++ b/RiotSwiftUI/Modules/UserSessions/UserOtherSessions/UserOtherSessionsViewModel.swift @@ -70,6 +70,9 @@ class UserOtherSessionsViewModel: UserOtherSessionsViewModelType, UserOtherSessi selectedSessions.contains(sessionInfo.id) } completion?(.logoutFromUserSessions(sessionInfos: selectedSessionInfos)) + case .showLocationInfo: + RiotSettings.shared.showIPAddressesInSessionsManager.toggle() + state.showLocationInfo = RiotSettings.shared.showIPAddressesInSessionsManager } } diff --git a/RiotSwiftUI/Modules/UserSessions/UserOtherSessions/View/UserOtherSessions.swift b/RiotSwiftUI/Modules/UserSessions/UserOtherSessions/View/UserOtherSessions.swift index 819bdbcb0..32f72f18c 100644 --- a/RiotSwiftUI/Modules/UserSessions/UserOtherSessions/View/UserOtherSessions.swift +++ b/RiotSwiftUI/Modules/UserSessions/UserOtherSessions/View/UserOtherSessions.swift @@ -52,7 +52,8 @@ struct UserOtherSessions: View { .toolbar { UserOtherSessionsToolbar(isEditModeEnabled: $viewModel.isEditModeEnabled, filter: $viewModel.filter, - isShowLocationEnabled: $viewModel.showLocationInfo, + isShowLocationEnabled: .init(get: { viewModel.viewState.showLocationInfo }, + set: { _ in viewModel.send(viewAction: .showLocationInfo) }), allItemsSelected: viewModel.viewState.allItemsSelected, sessionCount: viewModel.viewState.sessionItems.count, onToggleSelection: { viewModel.send(viewAction: .toggleAllSelection) }, @@ -89,7 +90,7 @@ struct UserOtherSessions: View { LazyVStack(spacing: 0) { ForEach(viewModel.viewState.sessionItems) { viewData in UserSessionListItem(viewData: viewData, - showsLocationInfo: viewModel.showLocationInfo, + showsLocationInfo: viewModel.viewState.showLocationInfo, isSeparatorHidden: viewData == viewModel.viewState.sessionItems.last, isEditModeEnabled: viewModel.isEditModeEnabled, onBackgroundTap: { sessionId in viewModel.send(viewAction: .userOtherSessionSelected(sessionId: sessionId)) }, diff --git a/RiotSwiftUI/Modules/UserSessions/UserSessionsOverview/UserSessionsOverviewViewModel.swift b/RiotSwiftUI/Modules/UserSessions/UserSessionsOverview/UserSessionsOverviewViewModel.swift index dbf0cd17e..fede79551 100644 --- a/RiotSwiftUI/Modules/UserSessions/UserSessionsOverview/UserSessionsOverviewViewModel.swift +++ b/RiotSwiftUI/Modules/UserSessions/UserSessionsOverview/UserSessionsOverviewViewModel.swift @@ -79,9 +79,8 @@ class UserSessionsOverviewViewModel: UserSessionsOverviewViewModelType, UserSess case .logoutOtherSessions: completion?(.logoutFromUserSessions(sessionInfos: userSessionsOverviewService.otherSessions)) case .showLocationInfo: - let newShowLocationInfo = !RiotSettings.shared.showIPAddressesInSessionsManager - RiotSettings.shared.showIPAddressesInSessionsManager = newShowLocationInfo - state.showLocationInfo = newShowLocationInfo + RiotSettings.shared.showIPAddressesInSessionsManager.toggle() + state.showLocationInfo = RiotSettings.shared.showIPAddressesInSessionsManager } }