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