Fixes
This commit is contained in:
@@ -62,15 +62,12 @@ public class ContentDialogHandler :
|
|||||||
dialog.Closing -= HandleClosing;
|
dialog.Closing -= HandleClosing;
|
||||||
if (dialog.DataContext is object content)
|
if (dialog.DataContext is object content)
|
||||||
{
|
{
|
||||||
bool cancelled = false;
|
|
||||||
if (content is IAsyncConfirmation confirmation)
|
if (content is IAsyncConfirmation confirmation)
|
||||||
{
|
{
|
||||||
Deferral deferral = args.GetDeferral();
|
Deferral deferral = args.GetDeferral();
|
||||||
if (!await confirmation.Confirm())
|
if (!await confirmation.Confirm())
|
||||||
{
|
{
|
||||||
args.Cancel = true;
|
args.Cancel = true;
|
||||||
cancelled = true;
|
|
||||||
|
|
||||||
dialog.Closing += HandleClosing;
|
dialog.Closing += HandleClosing;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -12,28 +12,24 @@ public class AsyncHandlerInitialization<TMessage, TResponse, THandler>(IServiceP
|
|||||||
if (!StrongReferenceMessenger.Default.IsRegistered<AsyncResponseEventArgs<TMessage, TResponse>>(provider))
|
if (!StrongReferenceMessenger.Default.IsRegistered<AsyncResponseEventArgs<TMessage, TResponse>>(provider))
|
||||||
{
|
{
|
||||||
StrongReferenceMessenger.Default.Register<IServiceProvider, AsyncResponseEventArgs<TMessage, TResponse>>(provider,
|
StrongReferenceMessenger.Default.Register<IServiceProvider, AsyncResponseEventArgs<TMessage, TResponse>>(provider,
|
||||||
async (provider, args) =>
|
(provider, args) =>
|
||||||
{
|
{
|
||||||
IEnumerable<IAsyncHandler<TMessage, TResponse>> handlers = provider.GetServices<IAsyncHandler<TMessage, TResponse>>();
|
IEnumerable<IAsyncHandler<TMessage, TResponse>> handlers = provider.GetServices<IAsyncHandler<TMessage, TResponse>>();
|
||||||
IEnumerable<IAsyncPipelineBehavior<TMessage, TResponse>> behaviors = provider.GetServices<IAsyncPipelineBehavior<TMessage, TResponse>>();
|
IEnumerable<IAsyncPipelineBehavior<TMessage, TResponse>> behaviors = provider.GetServices<IAsyncPipelineBehavior<TMessage, TResponse>>();
|
||||||
|
|
||||||
AsyncHandlerDelegate<TResponse> handlerDelegate = async () =>
|
foreach (IAsyncHandler<TMessage, TResponse> handler in handlers)
|
||||||
{
|
{
|
||||||
TResponse response = default!;
|
AsyncHandlerDelegate<TResponse> handlerDelegate = () =>
|
||||||
foreach (IAsyncHandler<TMessage, TResponse> handler in handlers)
|
handler.Handle(args.Message, args.CancellationToken);
|
||||||
|
|
||||||
|
foreach (IAsyncPipelineBehavior<TMessage, TResponse>? behavior in behaviors.Reverse())
|
||||||
{
|
{
|
||||||
response = await handler.Handle(args.Message, args.CancellationToken);
|
AsyncHandlerDelegate<TResponse> next = handlerDelegate;
|
||||||
|
handlerDelegate = () => behavior.Handle(args.Message, next);
|
||||||
}
|
}
|
||||||
return response;
|
|
||||||
};
|
|
||||||
|
|
||||||
foreach (IAsyncPipelineBehavior<TMessage, TResponse> behavior in behaviors.Reverse())
|
args.Reply(handlerDelegate());
|
||||||
{
|
|
||||||
AsyncHandlerDelegate<TResponse> next = handlerDelegate;
|
|
||||||
handlerDelegate = () => behavior.Handle(args.Message, next);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
args.Reply(await handlerDelegate());
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -48,29 +44,26 @@ public class AsyncHandlerInitialization<TMessage, THandler>(IServiceProvider pro
|
|||||||
if (!StrongReferenceMessenger.Default.IsRegistered<AsyncResponseEventArgs<TMessage, Unit>>(provider))
|
if (!StrongReferenceMessenger.Default.IsRegistered<AsyncResponseEventArgs<TMessage, Unit>>(provider))
|
||||||
{
|
{
|
||||||
StrongReferenceMessenger.Default.Register<IServiceProvider, AsyncResponseEventArgs<TMessage, Unit>>(provider,
|
StrongReferenceMessenger.Default.Register<IServiceProvider, AsyncResponseEventArgs<TMessage, Unit>>(provider,
|
||||||
async (provider, args) =>
|
(provider, args) =>
|
||||||
{
|
{
|
||||||
IEnumerable<IAsyncHandler<TMessage>> handlers = provider.GetServices<IAsyncHandler<TMessage>>();
|
IEnumerable<IAsyncHandler<TMessage>> handlers = provider.GetServices<IAsyncHandler<TMessage>>();
|
||||||
IEnumerable<IAsyncPipelineBehavior<TMessage, Unit>> behaviors = provider.GetServices<IAsyncPipelineBehavior<TMessage, Unit>>();
|
IEnumerable<IAsyncPipelineBehavior<TMessage, Unit>> behaviors = provider.GetServices<IAsyncPipelineBehavior<TMessage, Unit>>();
|
||||||
|
|
||||||
AsyncHandlerDelegate<Unit> handlerDelegate = async () =>
|
foreach (IAsyncHandler<TMessage> handler in handlers)
|
||||||
{
|
{
|
||||||
foreach (IAsyncHandler<TMessage> handler in handlers)
|
AsyncHandlerDelegate<Unit> handlerDelegate = () =>
|
||||||
|
handler.Handle(args.Message, args.CancellationToken).ContinueWith(_ => Unit.Value);
|
||||||
|
|
||||||
|
foreach (IAsyncPipelineBehavior<TMessage, Unit> behavior in behaviors.Reverse())
|
||||||
{
|
{
|
||||||
await handler.Handle(args.Message, args.CancellationToken);
|
AsyncHandlerDelegate<Unit> next = handlerDelegate;
|
||||||
|
handlerDelegate = () => behavior.Handle(args.Message, next);
|
||||||
}
|
}
|
||||||
return Unit.Value;
|
|
||||||
};
|
|
||||||
|
|
||||||
foreach (IAsyncPipelineBehavior<TMessage, Unit> behavior in behaviors.Reverse())
|
handlerDelegate();
|
||||||
{
|
args.Reply(Unit.Value);
|
||||||
AsyncHandlerDelegate<Unit> next = handlerDelegate;
|
|
||||||
handlerDelegate = () => behavior.Handle(args.Message, next);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
await handlerDelegate();
|
|
||||||
args.Reply(Unit.Value);
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -12,28 +12,25 @@ public class AsyncHandlerKeyedInitialization<TMessage, THandler>(string key, ISe
|
|||||||
if (!StrongReferenceMessenger.Default.IsRegistered<AsyncResponseEventArgs<TMessage, Unit>, string>(provider, key))
|
if (!StrongReferenceMessenger.Default.IsRegistered<AsyncResponseEventArgs<TMessage, Unit>, string>(provider, key))
|
||||||
{
|
{
|
||||||
StrongReferenceMessenger.Default.Register<IServiceProvider, AsyncResponseEventArgs<TMessage, Unit>, string>(provider, key,
|
StrongReferenceMessenger.Default.Register<IServiceProvider, AsyncResponseEventArgs<TMessage, Unit>, string>(provider, key,
|
||||||
async (provider, args) =>
|
(provider, args) =>
|
||||||
{
|
{
|
||||||
IEnumerable<IAsyncHandler<TMessage>> handlers = provider.GetKeyedServices<IAsyncHandler<TMessage>>(key);
|
IEnumerable<IAsyncHandler<TMessage>> handlers = provider.GetKeyedServices<IAsyncHandler<TMessage>>(key);
|
||||||
IEnumerable<IAsyncPipelineBehavior<TMessage, Unit>> behaviors = provider.GetServices<IAsyncPipelineBehavior<TMessage, Unit>>();
|
IEnumerable<IAsyncPipelineBehavior<TMessage, Unit>> behaviors = provider.GetServices<IAsyncPipelineBehavior<TMessage, Unit>>();
|
||||||
|
|
||||||
AsyncHandlerDelegate<Unit> handlerDelegate = async () =>
|
foreach (IAsyncHandler<TMessage> handler in handlers)
|
||||||
{
|
{
|
||||||
foreach (IAsyncHandler<TMessage> handler in handlers)
|
AsyncHandlerDelegate<Unit> handlerDelegate = () =>
|
||||||
|
handler.Handle(args.Message, args.CancellationToken).ContinueWith(_ => Unit.Value);
|
||||||
|
|
||||||
|
foreach (IAsyncPipelineBehavior<TMessage, Unit> behavior in behaviors.Reverse())
|
||||||
{
|
{
|
||||||
await handler.Handle(args.Message, args.CancellationToken);
|
AsyncHandlerDelegate<Unit> next = handlerDelegate;
|
||||||
|
handlerDelegate = () => behavior.Handle(args.Message, next);
|
||||||
}
|
}
|
||||||
return Unit.Value;
|
|
||||||
};
|
|
||||||
|
|
||||||
foreach (IAsyncPipelineBehavior<TMessage, Unit> behavior in behaviors.Reverse())
|
handlerDelegate();
|
||||||
{
|
args.Reply(Unit.Value);
|
||||||
AsyncHandlerDelegate<Unit> next = handlerDelegate;
|
|
||||||
handlerDelegate = () => behavior.Handle(args.Message, next);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
await handlerDelegate();
|
|
||||||
args.Reply(Unit.Value);
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -48,29 +45,25 @@ public class AsyncHandlerKeyedInitialization<TMessage, TResponse, THandler>(stri
|
|||||||
if (!StrongReferenceMessenger.Default.IsRegistered<AsyncResponseEventArgs<TMessage, TResponse>, string>(provider, key))
|
if (!StrongReferenceMessenger.Default.IsRegistered<AsyncResponseEventArgs<TMessage, TResponse>, string>(provider, key))
|
||||||
{
|
{
|
||||||
StrongReferenceMessenger.Default.Register<IServiceProvider, AsyncResponseEventArgs<TMessage, TResponse>, string>(provider, key,
|
StrongReferenceMessenger.Default.Register<IServiceProvider, AsyncResponseEventArgs<TMessage, TResponse>, string>(provider, key,
|
||||||
async (provider, args) =>
|
(provider, args) =>
|
||||||
{
|
{
|
||||||
IEnumerable<IAsyncHandler<TMessage, TResponse>> handlers = provider.GetKeyedServices<IAsyncHandler<TMessage, TResponse>>(key);
|
IEnumerable<IAsyncHandler<TMessage, TResponse>> handlers = provider.GetKeyedServices<IAsyncHandler<TMessage, TResponse>>(key);
|
||||||
IEnumerable<IAsyncPipelineBehavior<TMessage, TResponse>> behaviors = provider.GetServices<IAsyncPipelineBehavior<TMessage, TResponse>>();
|
IEnumerable<IAsyncPipelineBehavior<TMessage, TResponse>> behaviors = provider.GetServices<IAsyncPipelineBehavior<TMessage, TResponse>>();
|
||||||
|
|
||||||
AsyncHandlerDelegate<TResponse> handlerDelegate = async () =>
|
foreach (IAsyncHandler<TMessage, TResponse> handler in handlers)
|
||||||
{
|
{
|
||||||
TResponse response = default!;
|
AsyncHandlerDelegate<TResponse> handlerDelegate = () =>
|
||||||
foreach (IAsyncHandler<TMessage, TResponse> handler in handlers)
|
handler.Handle(args.Message, args.CancellationToken);
|
||||||
|
|
||||||
|
foreach (IAsyncPipelineBehavior<TMessage, TResponse> behavior in behaviors.Reverse())
|
||||||
{
|
{
|
||||||
response = await handler.Handle(args.Message, args.CancellationToken);
|
AsyncHandlerDelegate<TResponse> next = handlerDelegate;
|
||||||
|
handlerDelegate = () => behavior.Handle(args.Message, next);
|
||||||
}
|
}
|
||||||
return response;
|
|
||||||
};
|
|
||||||
|
|
||||||
foreach (IAsyncPipelineBehavior<TMessage, TResponse> behavior in behaviors.Reverse())
|
args.Reply(handlerDelegate());
|
||||||
{
|
|
||||||
AsyncHandlerDelegate<TResponse> next = handlerDelegate;
|
|
||||||
handlerDelegate = () => behavior.Handle(args.Message, next);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
args.Reply(await handlerDelegate());
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -22,6 +22,6 @@ public class ConfigurationInitializer<TConfiguration>(IConfigurationReader<TConf
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
messenger.Send(new ActivatedEventArgs<TConfiguration>(configuration));
|
messenger.Send(new ActivatedEventArgs<TConfiguration?>(configuration));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -14,7 +14,6 @@ public class EventListenerBehaviour :
|
|||||||
public static readonly StyledProperty<object> SourceProperty =
|
public static readonly StyledProperty<object> SourceProperty =
|
||||||
AvaloniaProperty.Register<EventListenerBehaviour, object>(nameof(Source));
|
AvaloniaProperty.Register<EventListenerBehaviour, object>(nameof(Source));
|
||||||
|
|
||||||
private readonly Delegate? eventHandler;
|
|
||||||
private object? resolvedSource;
|
private object? resolvedSource;
|
||||||
|
|
||||||
static EventListenerBehaviour()
|
static EventListenerBehaviour()
|
||||||
@@ -109,11 +108,6 @@ public class EventListenerBehaviour :
|
|||||||
|
|
||||||
private void UnregisterEvent(string eventName)
|
private void UnregisterEvent(string eventName)
|
||||||
{
|
{
|
||||||
if (eventHandler is null)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (eventName is { Length: 0 })
|
if (eventName is { Length: 0 })
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
|
|||||||
Reference in New Issue
Block a user