This commit is contained in:
Aleksandrs Proskurins
2022-10-20 15:35:46 +03:00
parent b0d5accc2e
commit c98c22d103
8 changed files with 153 additions and 139 deletions
@@ -24,16 +24,41 @@ struct UserOtherSessions: View {
var body: some View {
ScrollView {
SwiftUI.Section {
LazyVStack(spacing: 0) {
ForEach(viewModel.items) { viewData in
UserSessionListItem(viewData: viewData, isEditModeEnabled: viewModel.isEditModeEnabled, onBackgroundTap: { sessionId in
viewModel.send(viewAction: .userOtherSessionSelected(sessionId: sessionId))
})
if viewModel.viewState.items.isEmpty {
VStack {
Text(viewModel.viewState.emptyItemsTitle)
.font(theme.fonts.footnote)
.foregroundColor(theme.colors.primaryContent)
.padding(.bottom, 20)
Button {
viewModel.send(viewAction: .clearFilter)
} label: {
VStack(spacing: 0) {
SeparatorLine()
Text(VectorL10n.userOtherSessionClearFilter)
.font(theme.fonts.body)
.foregroundColor(theme.colors.accent)
.frame(maxWidth: .infinity, alignment: .center)
.padding(.vertical, 11)
SeparatorLine()
}
.background(theme.colors.background)
}
}
} else {
LazyVStack(spacing: 0) {
ForEach(viewModel.viewState.items) { viewData in
UserSessionListItem(viewData: viewData, isEditModeEnabled: viewModel.isEditModeEnabled, onBackgroundTap: { sessionId in
viewModel.send(viewAction: .userOtherSessionSelected(sessionId: sessionId))
})
}
}
.background(theme.colors.background)
}
.background(theme.colors.background)
} header: {
headerView(header: viewModel.viewState.header)
UserOtherSessionsHeaderView(viewData: viewModel.viewState.header)
.frame(maxWidth: .infinity, alignment: .leading)
.padding(.top, 24.0)
}
}
.background(theme.colors.system.ignoresSafeArea())
@@ -54,6 +79,7 @@ struct UserOtherSessions: View {
} label: {
Image(viewModel.filter == .all ? Asset.Images.userOtherSessionsFilter.name : Asset.Images.userOtherSessionsFilterSelected.name)
}
.offset(x: 7)
.accessibilityLabel(VectorL10n.userOtherSessionFilter)
}
ToolbarItem(placement: .navigationBarTrailing) {
@@ -61,9 +87,9 @@ struct UserOtherSessions: View {
Button {
viewModel.isEditModeEnabled.toggle()
} label: {
Label("Select sessions", systemImage: "checkmark.circle")
Label(VectorL10n.userOtherSessionMenuSelectSessions, systemImage: "checkmark.circle")
}
.onChange(of: viewModel.isEditModeEnabled) { newValue in
.onChange(of: viewModel.isEditModeEnabled) { _ in
viewModel.send(viewAction: .editModeWasToggled)
}
} label: {
@@ -76,42 +102,6 @@ struct UserOtherSessions: View {
}
.accentColor(theme.colors.accent)
}
private func createEmptySessionsItemsSection(header: UserOtherSessionsHeaderViewData, title: String) -> some View {
SwiftUI.Section {
VStack {
Text(title)
.font(theme.fonts.footnote)
.foregroundColor(theme.colors.primaryContent)
.padding(.bottom, 20)
Button {
viewModel.send(viewAction: .clearFilter)
} label: {
VStack(spacing: 0) {
SeparatorLine()
Text(VectorL10n.userOtherSessionClearFilter)
.font(theme.fonts.body)
.foregroundColor(theme.colors.accent)
.frame(maxWidth: .infinity, alignment: .center)
.padding(.vertical, 11)
SeparatorLine()
}
.background(theme.colors.background)
}
}
} header: {
headerView(header: header)
}
}
private func headerView(header: UserOtherSessionsHeaderViewData) -> some View {
UserOtherSessionsHeaderView(viewData: header)
.frame(maxWidth: .infinity, alignment: .leading)
.padding(.top, 24.0)
}
}
// MARK: - Previews