fetchEvents method

Future<void> fetchEvents(
  1. DateTime displayDate
)

Fetches the events for the specified date.

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();
      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) {
        _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();
  }
}