diff --git a/RiotSwiftUI/Modules/UserSessions/UserOtherSessions/View/UserOtherSessions.swift b/RiotSwiftUI/Modules/UserSessions/UserOtherSessions/View/UserOtherSessions.swift index 47a128487..8703bfb59 100644 --- a/RiotSwiftUI/Modules/UserSessions/UserOtherSessions/View/UserOtherSessions.swift +++ b/RiotSwiftUI/Modules/UserSessions/UserOtherSessions/View/UserOtherSessions.swift @@ -88,6 +88,7 @@ struct UserOtherSessions: View { LazyVStack(spacing: 0) { ForEach(viewModel.viewState.sessionItems) { viewData in UserSessionListItem(viewData: viewData, + showsLocationInfo: false, 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/View/UserSessionListItem.swift b/RiotSwiftUI/Modules/UserSessions/UserSessionsOverview/View/UserSessionListItem.swift index afe0f8bec..bad2d2edb 100644 --- a/RiotSwiftUI/Modules/UserSessions/UserSessionsOverview/View/UserSessionListItem.swift +++ b/RiotSwiftUI/Modules/UserSessions/UserSessionsOverview/View/UserSessionListItem.swift @@ -20,6 +20,8 @@ struct UserSessionListItem: View { @Environment(\.theme) private var theme: ThemeSwiftUI let viewData: UserSessionListItemViewData + let showsLocationInfo: Bool + var isSeparatorHidden = false var isEditModeEnabled = false var onBackgroundTap: ((String) -> Void)? @@ -76,6 +78,13 @@ struct UserSessionListItem: View { .frame(maxWidth: .infinity, alignment: .leading) .accessibilityIdentifier("UserSessionListItem_\(viewData.sessionId)") } + + private var ipText: String? { + guard let lastSeenIp = viewData.lastSeenIP, !lastSeenIp.isEmpty else { + return nil + } + return viewData.lastSeenIPLocation.map { "\(lastSeenIp) (\($0))" } ?? lastSeenIp + } } struct UserSessionListPreview: View { @@ -86,7 +95,7 @@ struct UserSessionListPreview: View { VStack(alignment: .leading, spacing: 0) { ForEach(userSessionsOverviewService.otherSessions) { userSessionInfo in let viewData = UserSessionListItemViewDataFactory().create(from: userSessionInfo) - UserSessionListItem(viewData: viewData, isEditModeEnabled: isEditModeEnabled, onBackgroundTap: { _ in + UserSessionListItem(viewData: viewData, showsLocationInfo: true, isEditModeEnabled: isEditModeEnabled, onBackgroundTap: { _ in }) } } diff --git a/RiotSwiftUI/Modules/UserSessions/UserSessionsOverview/View/UserSessionListItemViewData.swift b/RiotSwiftUI/Modules/UserSessions/UserSessionsOverview/View/UserSessionListItemViewData.swift index 872df857c..6a041ac41 100644 --- a/RiotSwiftUI/Modules/UserSessions/UserSessionsOverview/View/UserSessionListItemViewData.swift +++ b/RiotSwiftUI/Modules/UserSessions/UserSessionsOverview/View/UserSessionListItemViewData.swift @@ -25,14 +25,12 @@ struct UserSessionListItemViewData: Identifiable, Hashable { } let sessionId: SessionId - let sessionName: String - let sessionDetails: String - + let highlightSessionDetails: Bool let deviceAvatarViewData: DeviceAvatarViewData - let sessionDetailsIcon: String? - let isSelected: Bool + let lastSeenIP: String? + let lastSeenIPLocation: String? } diff --git a/RiotSwiftUI/Modules/UserSessions/UserSessionsOverview/View/UserSessionListItemViewDataFactory.swift b/RiotSwiftUI/Modules/UserSessions/UserSessionsOverview/View/UserSessionListItemViewDataFactory.swift index fe6e1abb7..250283410 100644 --- a/RiotSwiftUI/Modules/UserSessions/UserSessionsOverview/View/UserSessionListItemViewDataFactory.swift +++ b/RiotSwiftUI/Modules/UserSessions/UserSessionsOverview/View/UserSessionListItemViewDataFactory.swift @@ -29,7 +29,9 @@ struct UserSessionListItemViewDataFactory { sessionDetails: sessionDetails, deviceAvatarViewData: deviceAvatarViewData, sessionDetailsIcon: getSessionDetailsIcon(isActive: sessionInfo.isActive), - isSelected: isSelected) + isSelected: isSelected, + lastSeenIP: sessionInfo.lastSeenIP, + lastSeenIPLocation: sessionInfo.lastSeenIPLocation) } private func buildSessionDetails(sessionInfo: UserSessionInfo) -> String { diff --git a/RiotSwiftUI/Modules/UserSessions/UserSessionsOverview/View/UserSessionsOverview.swift b/RiotSwiftUI/Modules/UserSessions/UserSessionsOverview/View/UserSessionsOverview.swift index 5fb4fa675..5bbc2b592 100644 --- a/RiotSwiftUI/Modules/UserSessions/UserSessionsOverview/View/UserSessionsOverview.swift +++ b/RiotSwiftUI/Modules/UserSessions/UserSessionsOverview/View/UserSessionsOverview.swift @@ -38,11 +38,6 @@ struct UserSessionsOverview: View { } } .readableFrame() - -// if viewModel.viewState.linkDeviceButtonVisible { -// linkDeviceView -// .padding(.bottom, geometry.safeAreaInsets.bottom > 0 ? 20 : 36) -// } } } .background(theme.colors.system.ignoresSafeArea()) @@ -155,6 +150,7 @@ struct UserSessionsOverview: View { LazyVStack(spacing: 0) { ForEach(viewModel.viewState.otherSessionsViewData.prefix(maxOtherSessionsToDisplay)) { viewData in UserSessionListItem(viewData: viewData, + showsLocationInfo: false, isSeparatorHidden: viewData == viewModel.viewState.otherSessionsViewData.last, onBackgroundTap: { sessionId in viewModel.send(viewAction: .tapUserSession(sessionId)) }) }