extract delete event logic

trying to add swipe actions again
This commit is contained in:
neon443
2025-06-19 09:03:11 +01:00
parent 01ff82181a
commit 2b25ddf9b3
2 changed files with 16 additions and 19 deletions

View File

@@ -178,13 +178,14 @@ struct EventListView: View {
.fixedSize(horizontal: false, vertical: true) .fixedSize(horizontal: false, vertical: true)
.contextMenu() { .contextMenu() {
Button(role: .destructive) { Button(role: .destructive) {
let eventToModify = viewModel.events.firstIndex() { currEvent in viewModel.removeEvent(event)
currEvent.id == event.id } label: {
Label("Delete", systemImage: "trash")
} }
if let eventToModify = eventToModify {
viewModel.events.remove(at: eventToModify)
viewModel.saveEvents()
} }
.swipeActions(edge: .trailing, allowsFullSwipe: true) {
Button(role: .destructive) {
viewModel.removeEvent(event)
} label: { } label: {
Label("Delete", systemImage: "trash") Label("Delete", systemImage: "trash")
} }
@@ -196,16 +197,6 @@ struct EventListView: View {
#Preview("EventListView") { #Preview("EventListView") {
let vm = dummyEventViewModel() let vm = dummyEventViewModel()
ZStack { ZStack {
Color.black
VStack {
ForEach(0..<50) { _ in
Rectangle()
.foregroundStyle(randomColor().opacity(0.5))
.padding(-10)
}
.ignoresSafeArea(.all)
.blur(radius: 5)
}
VStack { VStack {
ForEach(vm.events) { event in ForEach(vm.events) { event in
EventListView( EventListView(

View File

@@ -240,8 +240,14 @@ class EventViewModel: ObservableObject, @unchecked Sendable {
} }
} }
func removeEvent(at index: IndexSet) { func removeEvent(_ eventToRemove: Event) {
events.remove(atOffsets: index) let eventToModify = self.events.firstIndex() { currEvent in
currEvent.id == eventToRemove.id
}
if let eventToModify = eventToModify {
self.events.remove(at: eventToModify)
self.saveEvents()
}
saveEvents() //sync local and icl saveEvents() //sync local and icl
} }