Files
Nitrox/Nitrox.Launcher/Models/Extensions/MessageReceiverExtensions.cs
2025-07-06 00:23:46 +02:00

27 lines
1.0 KiB
C#

using System;
using System.Threading.Tasks;
using CommunityToolkit.Mvvm.Messaging;
namespace Nitrox.Launcher.Models.Extensions;
public static class MessageReceiverExtensions
{
public static void RegisterMessageListener<T, TReceiver>(this TReceiver receiver, Func<T, TReceiver, Task> asyncFunc) where T : class where TReceiver : IMessageReceiver
{
if (WeakReferenceMessenger.Default.IsRegistered<T>(receiver))
{
WeakReferenceMessenger.Default.Unregister<T>(receiver);
}
WeakReferenceMessenger.Default.Register<T>(receiver, (_, message) => asyncFunc(message, receiver));
}
public static void RegisterMessageListener<T, TReceiver>(this TReceiver receiver, Action<T, TReceiver> action) where T : class where TReceiver : IMessageReceiver
{
if (WeakReferenceMessenger.Default.IsRegistered<T>(receiver))
{
WeakReferenceMessenger.Default.Unregister<T>(receiver);
}
WeakReferenceMessenger.Default.Register<T>(receiver, (_, message) => action(message, receiver));
}
}