Calendar rendering improvements.

This commit is contained in:
Burak Kaan Köse
2026-03-25 13:39:27 +01:00
parent 0056f372b9
commit 8c492bb094
20 changed files with 212 additions and 108 deletions
@@ -569,33 +569,39 @@ public partial class CalendarPageViewModel : CalendarBaseViewModel,
if (!IsPageActive(lifetimeVersion))
return;
RefreshSettings();
var currentSettings = CurrentSettings;
if (currentSettings == null)
{
RefreshSettings();
currentSettings = CurrentSettings;
}
var today = _dateContextProvider.GetToday();
var visibleRange = CalendarRangeResolver.Resolve(request, CurrentSettings, today);
var previousRange = CalendarRangeResolver.Navigate(visibleRange, -1, CurrentSettings, today);
var nextRange = CalendarRangeResolver.Navigate(visibleRange, 1, CurrentSettings, today);
var visibleRange = CalendarRangeResolver.Resolve(request, currentSettings, today);
var previousRange = CalendarRangeResolver.Navigate(visibleRange, -1, currentSettings, today);
var nextRange = CalendarRangeResolver.Navigate(visibleRange, 1, currentSettings, today);
var loadedDateWindow = new DateRange(
previousRange.StartDate.ToDateTime(TimeOnly.MinValue),
nextRange.EndDate.AddDays(1).ToDateTime(TimeOnly.MinValue));
var shouldReload = forceReload || !IsSameVisibleRange(CurrentVisibleRange, visibleRange) || !IsSameDateRange(LoadedDateWindow, loadedDateWindow);
List<CalendarItemViewModel> loadedItems = null;
if (shouldReload)
{
var loadedItems = await LoadCalendarItemsAsync(loadedDateWindow, lifetimeVersion).ConfigureAwait(false);
loadedItems = await LoadCalendarItemsAsync(loadedDateWindow, lifetimeVersion).ConfigureAwait(false);
if (!IsPageActive(lifetimeVersion))
return;
await ExecuteUIThreadIfActiveAsync(lifetimeVersion, () =>
{
_loadedCalendarItems = loadedItems;
CalendarItems = loadedItems;
}).ConfigureAwait(false);
}
await ExecuteUIThreadIfActiveAsync(lifetimeVersion, () =>
{
if (loadedItems != null)
{
_loadedCalendarItems = loadedItems;
CalendarItems = loadedItems;
}
CurrentVisibleRange = visibleRange;
LoadedDateWindow = loadedDateWindow;
VisibleDateRangeText = _calendarRangeTextFormatter.Format(visibleRange, _dateContextProvider);