Session selection state

This commit is contained in:
Aleksandrs Proskurins
2022-10-19 17:02:48 +03:00
parent 3df643ef68
commit 344bf3db7b
6 changed files with 46 additions and 15 deletions
@@ -39,7 +39,7 @@ struct UserSessionListItem: View {
VStack(alignment: .leading, spacing: LayoutConstants.verticalPadding) {
HStack(spacing: LayoutConstants.avatarRightMargin) {
if isEditModeEnabled {
Image(Asset.Images.userSessionListItemNotSelected.name)
Image(viewData.isSelected ? Asset.Images.userSessionListItemSelected.name : Asset.Images.userSessionListItemNotSelected.name)
}
DeviceAvatarView(viewData: viewData.deviceAvatarViewData)
VStack(alignment: .leading, spacing: 2) {
@@ -16,13 +16,15 @@
import Foundation
typealias SessionId = String
/// View data for UserSessionListItem
struct UserSessionListItemViewData: Identifiable, Hashable {
var id: String {
sessionId
}
let sessionId: String
let sessionId: SessionId
let sessionName: String
@@ -33,4 +35,6 @@ struct UserSessionListItemViewData: Identifiable, Hashable {
let deviceAvatarViewData: DeviceAvatarViewData
let sessionDetailsIcon: String?
let isSelected: Bool
}
@@ -17,7 +17,9 @@
import Foundation
struct UserSessionListItemViewDataFactory {
func create(from sessionInfo: UserSessionInfo, highlightSessionDetails: Bool = false) -> UserSessionListItemViewData {
func create(from sessionInfo: UserSessionInfo,
highlightSessionDetails: Bool = false,
isSelected: Bool = false) -> UserSessionListItemViewData {
let sessionName = UserSessionNameFormatter.sessionName(deviceType: sessionInfo.deviceType,
sessionDisplayName: sessionInfo.name)
let sessionDetails = buildSessionDetails(sessionInfo: sessionInfo)
@@ -28,7 +30,8 @@ struct UserSessionListItemViewDataFactory {
sessionDetails: sessionDetails,
highlightSessionDetails: highlightSessionDetails,
deviceAvatarViewData: deviceAvatarViewData,
sessionDetailsIcon: getSessionDetailsIcon(isActive: sessionInfo.isActive))
sessionDetailsIcon: getSessionDetailsIcon(isActive: sessionInfo.isActive),
isSelected: isSelected)
}
private func buildSessionDetails(sessionInfo: UserSessionInfo) -> String {