From 066efa80e20f97d319def02fe787169a91637d39 Mon Sep 17 00:00:00 2001 From: Aeon Date: Sat, 20 Jun 2026 01:24:30 +0200 Subject: [PATCH] Add service for resolving on-app-ready callback --- .../Services/AppReadyCallbackResolver.cs | 37 +++++++++++++++++++ .../Services/IAppReadyCallbackResolver.cs | 11 ++++++ 2 files changed, 48 insertions(+) create mode 100644 src/ElectronNET.AspNet/Runtime/Services/AppReadyCallbackResolver.cs create mode 100644 src/ElectronNET.AspNet/Runtime/Services/IAppReadyCallbackResolver.cs diff --git a/src/ElectronNET.AspNet/Runtime/Services/AppReadyCallbackResolver.cs b/src/ElectronNET.AspNet/Runtime/Services/AppReadyCallbackResolver.cs new file mode 100644 index 0000000..b1e9544 --- /dev/null +++ b/src/ElectronNET.AspNet/Runtime/Services/AppReadyCallbackResolver.cs @@ -0,0 +1,37 @@ +using System; +using System.Threading.Tasks; + +namespace ElectronNET.AspNet.Runtime +{ + internal class AppReadyCallbackResolver : IAppReadyCallbackResolver + { + private readonly Func _callback; + + public AppReadyCallbackResolver() + { } + + public AppReadyCallbackResolver(Func callback) + { + _callback = callback; + } + + public AppReadyCallbackResolver(string[] args, Func callback) + { + _callback = () => callback.Invoke(args); + } + + public AppReadyCallbackResolver(IServiceProvider serviceProvider, Func callback) + { + _callback = () => callback.Invoke(serviceProvider); + } + + public AppReadyCallbackResolver(IServiceProvider serviceProvider, string[] args, Func callback) + { + _callback = () => callback.Invoke(serviceProvider, args); + } + + public bool HasCallback => _callback != null; + + public Task Invoke() => _callback?.Invoke() ?? Task.CompletedTask; + } +} diff --git a/src/ElectronNET.AspNet/Runtime/Services/IAppReadyCallbackResolver.cs b/src/ElectronNET.AspNet/Runtime/Services/IAppReadyCallbackResolver.cs new file mode 100644 index 0000000..7fc8494 --- /dev/null +++ b/src/ElectronNET.AspNet/Runtime/Services/IAppReadyCallbackResolver.cs @@ -0,0 +1,11 @@ +using System.Threading.Tasks; + +namespace ElectronNET.AspNet.Runtime +{ + internal interface IAppReadyCallbackResolver + { + public bool HasCallback { get; } + + public Task Invoke(); + } +}