Switch out dotnet ctk messenger for source gen Meditor

This commit is contained in:
Daniel Clark
2022-12-07 19:30:31 +00:00
parent 1cd2141ad5
commit 6df08fc42c
22 changed files with 280 additions and 192 deletions
@@ -1,22 +1,22 @@
using CommunityToolkit.Mvvm.Messaging;
using Mediator;
namespace Toolkit.Foundation
{
public class ConfigurationInitializer<TConfiguration> : IInitializer where TConfiguration : class, new()
{
private readonly TConfiguration configuration;
private readonly IMessenger messenger;
private readonly IMediator mediator;
public ConfigurationInitializer(TConfiguration configuration,
IMessenger messenger)
IMediator mediator)
{
this.configuration = configuration;
this.messenger = messenger;
this.mediator = mediator;
}
public async Task InitializeAsync()
{
messenger.Send(configuration);
await mediator.Send(configuration);
await Task.CompletedTask;
}
}
+4 -2
View File
@@ -1,4 +1,6 @@
namespace Toolkit.Foundation
using Mediator;
namespace Toolkit.Foundation
{
public record Write<TConfiguration>(string Section, Action<TConfiguration> UpdateDelegate) where TConfiguration : class;
public abstract record Write<TConfiguration>(string Section, Action<TConfiguration> UpdateDelegate) : IRequest where TConfiguration : class;
}
@@ -1,28 +1,30 @@
using CommunityToolkit.Mvvm.Messaging;
using Mediator;
namespace Toolkit.Foundation
{
public class WriteHandler<TConfiguration> : IRecipient<Write<TConfiguration>> where TConfiguration : class
public class WriteHandler<TConfiguration> : IRequestHandler<Write<TConfiguration>> where TConfiguration : class
{
private readonly IMessenger messenger;
private readonly IMediator mediator;
private readonly TConfiguration configuration;
private readonly IConfigurationWriter<TConfiguration> writer;
public WriteHandler(TConfiguration configuration,
IConfigurationWriter<TConfiguration> writer,
IMessenger messenger)
IMediator mediator)
{
this.messenger = messenger;
this.mediator = mediator;
this.configuration = configuration;
this.writer = writer;
}
public void Receive(Write<TConfiguration> request)
public async ValueTask<Unit> Handle(Write<TConfiguration> request, CancellationToken cancellationToken)
{
request.UpdateDelegate.Invoke(configuration);
writer.Write(request.Section, configuration);
messenger.Send(new ConfigurationChanged<TConfiguration>(configuration));
await mediator.Send(new ConfigurationChanged<TConfiguration>(configuration), cancellationToken);
return default;
}
}
}