diff --git a/src/Shiny.Mediator/IRequestContext.cs b/src/Shiny.Mediator/IRequestContext.cs index 36fa883..8111be8 100644 --- a/src/Shiny.Mediator/IRequestContext.cs +++ b/src/Shiny.Mediator/IRequestContext.cs @@ -9,6 +9,8 @@ public interface IRequestContext IRequestHandler RequestHandler { get; } } +// TODO: middleware could ref the request handler, CT, request - all from the context +// TODO: result could/should(?) come back on context? how to protect it? // TODO: RequestStreamContext OR reuse IRequestContext? // public class EventContext // { diff --git a/src/Shiny.Mediator/Impl/RequestVoidWrapper.cs b/src/Shiny.Mediator/Impl/RequestVoidWrapper.cs index 6ae87a1..50b3a26 100644 --- a/src/Shiny.Mediator/Impl/RequestVoidWrapper.cs +++ b/src/Shiny.Mediator/Impl/RequestVoidWrapper.cs @@ -6,7 +6,7 @@ namespace Shiny.Mediator.Impl; class RequestVoidWrapper where TRequest : IRequest { - public async Task Handle(IServiceProvider services, TRequest request, CancellationToken cancellationToken) + public async Task Handle(IServiceProvider services, TRequest request, CancellationToken cancellationToken) { var requestHandler = services.GetService>(); if (requestHandler == null) diff --git a/src/Shiny.Mediator/Middleware/FlushAllStoresEvent.cs b/src/Shiny.Mediator/Middleware/FlushAllStoresEvent.cs index b1c2b8b..4b65398 100644 --- a/src/Shiny.Mediator/Middleware/FlushAllStoresEvent.cs +++ b/src/Shiny.Mediator/Middleware/FlushAllStoresEvent.cs @@ -3,7 +3,7 @@ namespace Shiny.Mediator.Middleware; public record FlushAllStoresEvent : IEvent; -public static class MiddlewareExtensions +public static partial class MiddlewareExtensions { /// /// All middleware within Shiny will respond to this event diff --git a/src/Shiny.Mediator/Middleware/FlushStoreByRequestKeyEvent.cs b/src/Shiny.Mediator/Middleware/FlushStoreByRequestKeyEvent.cs new file mode 100644 index 0000000..3930519 --- /dev/null +++ b/src/Shiny.Mediator/Middleware/FlushStoreByRequestKeyEvent.cs @@ -0,0 +1,16 @@ +namespace Shiny.Mediator.Middleware; + +public record FlushStoreByRequestKeyEvent(IRequestKey requestKey) : IEvent; + + +public static partial class MiddlewareExtensions +{ + /// + /// All middleware within Shiny will respond to this event + /// + /// + /// + /// + public static Task FlushStoreByRequest(this IMediator mediator, IRequestKey requestKey, CancellationToken cancellationToken = default) + => mediator.Publish(new FlushStoreByRequestKeyEvent(requestKey), cancellationToken); +} \ No newline at end of file