Fix double init on calendar days.

This commit is contained in:
Burak Kaan Köse
2026-02-19 01:37:43 +01:00
parent ab0810f710
commit 564cb0b16f
2 changed files with 52 additions and 22 deletions
@@ -168,29 +168,28 @@ public partial class CalendarPageViewModel : CalendarBaseViewModel,
AccountCalendarStateService.AccountCalendarSelectionStateChanged += UpdateAccountCalendarRequested;
AccountCalendarStateService.CollectiveAccountGroupSelectionStateChanged += AccountCalendarStateCollectivelyChanged;
// We don't register on navigation here. This page is cached.
RegisterRecipients();
}
protected override void RegisterRecipients()
{
base.RegisterRecipients();
Messenger.Register<LoadCalendarMessage>(this);
Messenger.Register<CalendarSettingsUpdatedMessage>(this);
Messenger.Register<CalendarItemTappedMessage>(this);
Messenger.Register<CalendarItemDoubleTappedMessage>(this);
Messenger.Register<CalendarItemRightTappedMessage>(this);
Messenger.Register<AccountRemovedMessage>(this);
}
protected override void UnregisterRecipients()
{
base.UnregisterRecipients();
Messenger.Unregister<LoadCalendarMessage>(this);
Messenger.Unregister<CalendarSettingsUpdatedMessage>(this);
Messenger.Unregister<CalendarItemTappedMessage>(this);
Messenger.Unregister<CalendarItemDoubleTappedMessage>(this);
Messenger.Unregister<CalendarItemRightTappedMessage>(this);
Messenger.Unregister<AccountRemovedMessage>(this);
Messenger.Register<LoadCalendarMessage>(this);
Messenger.Register<CalendarSettingsUpdatedMessage>(this);
Messenger.Register<CalendarItemTappedMessage>(this);
Messenger.Register<CalendarItemDoubleTappedMessage>(this);
Messenger.Register<CalendarItemRightTappedMessage>(this);
Messenger.Register<AccountRemovedMessage>(this);
}
private void AccountCalendarStateCollectivelyChanged(object sender, GroupedAccountCalendarViewModel e)
@@ -234,19 +233,10 @@ public partial class CalendarPageViewModel : CalendarBaseViewModel,
public override void OnNavigatedTo(NavigationMode mode, object parameters)
{
base.OnNavigatedTo(mode, parameters);
if (mode == NavigationMode.Back)
{
// We unregister recipients on navigate-away, so mutations that happened while this page
// was not active (e.g. CalendarItemDeleted from details page) can be missed.
// Rehydrate currently visible ranges to guarantee UI and DB are consistent on return.
_ = RefreshVisibleRangesAsync();
return;
}
RefreshSettings();
if (mode == NavigationMode.Back) return;
// Automatically select the first primary calendar for quick event dialog.
SelectedQuickEventAccountCalendar = AccountCalendarStateService.ActiveCalendars.FirstOrDefault(a => a.IsPrimary);
}