fetchEvents method
Implementation
Future<void> fetchEvents(DateTime displayDate) async {
debugPrint("Fetching events for $displayDate");
_displayDate = displayDate;
final selectedTemplateId = _templateProvider?.selectedTemplateId;
_isLoading = true;
_errorMessage = null;
notifyListeners();
try {
final calendarEvents = await _calendarRepository.fetchDayEvents(
templateId: selectedTemplateId,
displayDate: _displayDate,
parentElementsOnly: false,
);
_events = calendarEvents;
debugPrint("Events fetched: ${_events.length}");
_events.sort((a, b) => a.startDate.compareTo(b.startDate));
if (_isInitialLoad) {
final todayUtc = DateTime.now().toUtc(); // Compare with UTC today
final bool hasEventsToday = _events.any((event) =>
event.startDate.year == todayUtc.year &&
event.startDate.month == todayUtc.month &&
event.startDate.day == todayUtc.day);
if (!hasEventsToday && _events.isNotEmpty) {
// If no events today, jump to the first event's date (already UTC)
_displayDate = _events.first.startDate;
}
_isInitialLoad = false;
}
} catch (e) {
_errorMessage = 'Failed to load calendar events: $e';
debugPrint('Error fetching events in CalendarDayViewModel: $e');
_events = [];
} finally {
_isLoading = false;
notifyListeners();
}
}