Forge
csharpdeeb25a2
1#nullable enable
2
3using System.Collections.ObjectModel;
4using CascadeIDE.Cockpit.Channels.EnvironmentReadiness;
5using CascadeIDE.Cockpit.Composition.EnvironmentReadiness;
6using CascadeIDE.Contracts;
7using CascadeIDE.Models;
8
9namespace CascadeIDE.Features.EnvironmentReadiness.Application;
10
11/// <summary>
12/// Сценарий обновления страницы «готовность окружения» (ADR 0023/0102): канал → снимок, затем маршалинг <see cref="IEnvironmentReadinessSurfaceCompositor.Compose"/> на UI.
13/// </summary>
14[ApplicationOrchestrator]
15[UiThreadMarshal("UiScheduler.InvokeAsync compositor")]
16public static class EnvironmentReadinessRefreshOrchestrator
17{
18 public static async Task RunAsync(
19 IEnvironmentReadinessChannel channel,
20 IEnvironmentReadinessSurfaceCompositor compositor,
21 ObservableCollection<AnnunciatorLampItem> items,
22 EnvironmentReadinessChannelContext context)
23 {
24 var rows = await channel.Build(context).ConfigureAwait(false);
25 await UiScheduler.Default.InvokeAsync(() =>
26 {
27 compositor.Compose(
28 items,
29 rows,
30 new EnvironmentReadinessSurfaceDecision(Enabled: true));
31 });
32 }
33}
34
View only · write via MCP/CIDE