Event details page improvements, calendar item update source.

This commit is contained in:
Burak Kaan Köse
2026-02-12 18:04:29 +01:00
parent 96dcdc8e03
commit b01fa4e4ba
26 changed files with 471 additions and 102 deletions
+13 -5
View File
@@ -1,5 +1,7 @@
using CommunityToolkit.Mvvm.Messaging;
using System;
using CommunityToolkit.Mvvm.Messaging;
using Wino.Core.Domain.Entities.Calendar;
using Wino.Core.Domain.Enums;
using Wino.Messaging.Client.Calendar;
namespace Wino.Core.ViewModels;
@@ -9,14 +11,19 @@ public class CalendarBaseViewModel : CoreBaseViewModel,
IRecipient<CalendarItemUpdated>,
IRecipient<CalendarItemDeleted>
{
public void Receive(CalendarItemAdded message) => OnCalendarItemAdded(message.CalendarItem);
public void Receive(CalendarItemUpdated message) => OnCalendarItemUpdated(message.CalendarItem);
public void Receive(CalendarItemDeleted message) => OnCalendarItemDeleted(message.CalendarItem);
public void Receive(CalendarItemAdded message) => DispatchToUIThread(() => OnCalendarItemAdded(message.CalendarItem));
public void Receive(CalendarItemUpdated message) => DispatchToUIThread(() => OnCalendarItemUpdated(message.CalendarItem, message.Source));
public void Receive(CalendarItemDeleted message) => DispatchToUIThread(() => OnCalendarItemDeleted(message.CalendarItem));
protected virtual void OnCalendarItemAdded(CalendarItem calendarItem) { }
protected virtual void OnCalendarItemUpdated(CalendarItem calendarItem) { }
protected virtual void OnCalendarItemUpdated(CalendarItem calendarItem, CalendarItemUpdateSource source) { }
protected virtual void OnCalendarItemDeleted(CalendarItem calendarItem) { }
private void DispatchToUIThread(Action action)
{
_ = ExecuteUIThread(action);
}
protected override void RegisterRecipients()
{
base.RegisterRecipients();
@@ -35,3 +42,4 @@ public class CalendarBaseViewModel : CoreBaseViewModel,
Messenger.Unregister<CalendarItemDeleted>(this);
}
}
+12 -1
View File
@@ -40,7 +40,18 @@ public class CoreBaseViewModel : ObservableRecipient, INavigationAware
public virtual void OnPageLoaded() { }
public async Task ExecuteUIThread(Action action) => await Dispatcher?.ExecuteOnUIThread(action);
public Task ExecuteUIThread(Action action)
{
if (action == null) return Task.CompletedTask;
if (Dispatcher == null)
{
action();
return Task.CompletedTask;
}
return Dispatcher.ExecuteOnUIThread(action);
}
public void ReportUIChange<TMessage>(TMessage message) where TMessage : class, IUIMessage => Messenger.Send(message);
protected virtual void OnDispatcherAssigned() { }