Files
LanMountainDesktop/LanMountainDesktop.Launcher/Startup/Phases/OobeGatePhase.cs

36 lines
1.4 KiB
C#
Raw Normal View History

2026-05-28 15:14:37 +08:00
using LanMountainDesktop.Launcher.Shell;
namespace LanMountainDesktop.Launcher.Startup;
internal sealed class OobeGatePhase : ILaunchPhase
{
public string Name => nameof(OobeGatePhase);
public async Task<LaunchPhaseResult> ExecuteAsync(LaunchContext context, CancellationToken cancellationToken = default)
{
if (context.OobeDecision.ShouldShowOobe)
{
2026-05-28 15:14:37 +08:00
await LaunchUiPresenter.HideSplashAsync(context.SplashWindow).ConfigureAwait(false);
foreach (var step in context.OobeSteps)
{
2026-06-05 11:08:11 +08:00
var stepResult = await step.RunAsync(cancellationToken).ConfigureAwait(false);
if (!stepResult.ContinueLaunch)
{
context.WindowsClosingByOrchestrator = true;
await LaunchUiPresenter.CloseWindowsAsync(context.SplashWindow, context.LoadingDetailsWindow).ConfigureAwait(false);
return new LaunchPhaseResult(
LaunchPhaseStatus.Completed,
stepResult.Result ?? LaunchResultBuilder.BuildFailure(
"oobe",
"oobe_cancelled",
"OOBE did not complete."));
}
}
2026-05-28 15:14:37 +08:00
await LaunchUiPresenter.ShowSplashAsync(context.SplashWindow).ConfigureAwait(false);
}
return new LaunchPhaseResult(LaunchPhaseStatus.Continue);
}
}