This commit is contained in:
Aleksandrs Proskurins
2022-10-04 09:38:53 +03:00
parent e9c21b5320
commit 8b8f0ca556
9 changed files with 93 additions and 48 deletions
@@ -25,26 +25,9 @@ struct UserOtherSessions: View {
var body: some View {
ScrollView {
ForEach(viewModel.viewState.sections) { section in
switch section {
case let .sessionItems(header: header, items: items):
SwiftUI.Section {
LazyVStack(spacing: 0) {
ForEach(items) { viewData in
UserSessionListItem(viewData: viewData, onBackgroundTap: { sessionId in
// viewModel.send(viewAction: .tapUserSession(sessionId))
})
}
}
.background(theme.colors.background)
} header: {
UserOtherSessionsHeaderView(viewData: header)
.frame(maxWidth: .infinity, alignment: .leading)
.padding(.top, 24.0)
}
case .clearFilter:
//TODO
EmptyView()
createSessionItemsSection(header: header, items: items)
}
}
@@ -53,13 +36,33 @@ struct UserOtherSessions: View {
.frame(maxHeight: .infinity)
.navigationTitle(viewModel.viewState.title)
}
private func createSessionItemsSection(header: UserOtherSessionsHeaderViewData, items: [UserSessionListItemViewData]) -> some View {
SwiftUI.Section {
LazyVStack(spacing: 0) {
ForEach(items) { viewData in
UserSessionListItem(viewData: viewData, onBackgroundTap: { sessionId in
viewModel.send(viewAction: .userOtherSessionSelected(sessionId: sessionId))
})
}
}
.background(theme.colors.background)
} header: {
UserOtherSessionsHeaderView(viewData: header)
.frame(maxWidth: .infinity, alignment: .leading)
.padding(.top, 24.0)
}
}
}
// MARK: - Previews
struct UserOtherSessions_Previews: PreviewProvider {
static let stateRenderer = MockUserOtherSessionsScreenState.stateRenderer
static var previews: some View {
stateRenderer.screenGroup()
stateRenderer.screenGroup(addNavigation: true).theme(.light).preferredColorScheme(.light)
stateRenderer.screenGroup(addNavigation: true).theme(.dark).preferredColorScheme(.dark)
}
}
@@ -47,12 +47,12 @@ struct UserOtherSessionsHeaderView: View {
Text(title)
.font(theme.fonts.calloutSB)
.foregroundColor(theme.colors.primaryContent)
.padding(.bottom, 9.0)
.padding(.vertical, 9.0)
}
Text(viewData.subtitle)
.font(theme.fonts.footnote)
.foregroundColor(theme.colors.secondaryContent)
.padding(.bottom, 12.0)
.padding(.bottom, 20.0)
})
.padding(.leading, 16)
}
@@ -65,7 +65,7 @@ struct UserOtherSessionsHeaderView: View {
struct UserOtherSessionsHeaderView_Previews: PreviewProvider {
private static let inactiveSessionViewData = UserOtherSessionsHeaderViewData(title: "Inactive sessions",
subtitle: "Consider signing out from old sessions (90 days or older) you dont use anymore. Learn more",
subtitle: "Consider signing out from old sessions (90 days or older) you dont use anymore.",
iconName: Asset.Images.userOtherSessionsInactive.name)