Files
Wino-Mail/Wino.Core.ViewModels/CalendarBaseViewModel.cs
T

46 lines
1.6 KiB
C#
Raw Normal View History

using System;
using CommunityToolkit.Mvvm.Messaging;
using Wino.Core.Domain.Entities.Calendar;
using Wino.Core.Domain.Enums;
2024-11-10 23:28:25 +01:00
using Wino.Messaging.Client.Calendar;
2025-02-16 11:54:23 +01:00
namespace Wino.Core.ViewModels;
public class CalendarBaseViewModel : CoreBaseViewModel,
IRecipient<CalendarItemAdded>,
IRecipient<CalendarItemUpdated>,
IRecipient<CalendarItemDeleted>
2024-11-10 23:28:25 +01:00
{
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));
2024-11-10 23:28:25 +01:00
2025-02-16 11:54:23 +01:00
protected virtual void OnCalendarItemAdded(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();
Messenger.Register<CalendarItemAdded>(this);
Messenger.Register<CalendarItemUpdated>(this);
Messenger.Register<CalendarItemDeleted>(this);
}
protected override void UnregisterRecipients()
{
base.UnregisterRecipients();
Messenger.Unregister<CalendarItemAdded>(this);
Messenger.Unregister<CalendarItemUpdated>(this);
Messenger.Unregister<CalendarItemDeleted>(this);
}
2024-11-10 23:28:25 +01:00
}