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

View File

@@ -240,8 +240,14 @@ class EventViewModel: ObservableObject, @unchecked Sendable {
}
}
func removeEvent(at index: IndexSet) {
events.remove(atOffsets: index)
func removeEvent(_ eventToRemove: Event) {
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
}