RTSDA-iOS/ViewModels/EventsViewModel.swift
2025-02-03 16:15:57 -05:00

41 lines
1.3 KiB
Swift

import SwiftUI
@MainActor
class EventsViewModel: ObservableObject {
@Published private(set) var events: [Event] = []
@Published private(set) var isLoading = false
@Published private(set) var error: Error?
private let pocketBaseService = PocketBaseService.shared
func loadEvents() async {
isLoading = true
error = nil
do {
let now = Date()
let calendar = Calendar.current
let todayStart = calendar.startOfDay(for: now)
// Keep events that either:
// 1. Start in the future (after today), or
// 2. Are today and haven't ended yet
events = try await pocketBaseService.fetchEvents()
.filter { event in
let eventStart = calendar.startOfDay(for: event.startDate)
if eventStart > todayStart {
return true // Future event
} else if eventStart == todayStart {
return event.endDate > now // Today's event that hasn't ended
}
return false
}
.sorted { $0.startDate < $1.startDate }
} catch {
self.error = error
}
isLoading = false
}
}