feat: load legacy Cuts and Res runtime assets
This commit is contained in:
@@ -111,6 +111,8 @@ internal static class LegacyComparisonWorkflowCatalog
|
||||
|
||||
public static IReadOnlyList<LegacyComparisonTarget> FixedTargets => FixedTargetList;
|
||||
|
||||
internal static IReadOnlyList<LegacyComparisonActionDefinition> Actions => ActionList;
|
||||
|
||||
public static LegacyComparisonTarget? GetFixedTarget(string targetId) =>
|
||||
targetId is not null && FixedById.TryGetValue(targetId, out var target) ? target : null;
|
||||
|
||||
@@ -195,13 +197,31 @@ internal static class LegacyComparisonWorkflowCatalog
|
||||
LegacyComparisonTarget? first,
|
||||
LegacyComparisonTarget? second)
|
||||
{
|
||||
var views = ActionList.Select(action =>
|
||||
var placements = ActionList
|
||||
.Select(action => new LegacyComparisonActionPlacement(action.ActionId, action.Section))
|
||||
.ToArray();
|
||||
return CreateActionViews(first, second, placements);
|
||||
}
|
||||
|
||||
internal static IReadOnlyList<LegacyComparisonActionView> CreateActionViews(
|
||||
LegacyComparisonTarget? first,
|
||||
LegacyComparisonTarget? second,
|
||||
IReadOnlyList<LegacyComparisonActionPlacement> placements)
|
||||
{
|
||||
ArgumentNullException.ThrowIfNull(placements);
|
||||
var views = placements.Select(placement =>
|
||||
{
|
||||
if (!ActionsById.TryGetValue(placement.ActionId, out var action))
|
||||
{
|
||||
throw new InvalidOperationException(
|
||||
"The runtime comparison layout contains an unknown action.");
|
||||
}
|
||||
|
||||
var compatibility = GetCompatibility(action, first, second);
|
||||
return new LegacyComparisonActionView(
|
||||
action.ActionId,
|
||||
action.Label,
|
||||
action.Section,
|
||||
placement.Section,
|
||||
compatibility.IsAvailable,
|
||||
compatibility.Reason);
|
||||
}).ToArray();
|
||||
|
||||
@@ -11,6 +11,7 @@ public sealed class LegacyComparisonWorkflowController
|
||||
{
|
||||
private readonly ILegacyComparisonDataService _dataService;
|
||||
private readonly ILegacyComparisonPairStore _pairStore;
|
||||
private readonly LegacyComparisonUiLayout _uiLayout;
|
||||
private List<SearchResultState> _domesticResults = [];
|
||||
private List<SearchResultState> _worldResults = [];
|
||||
private List<SavedPairState> _savedPairs = [];
|
||||
@@ -38,10 +39,12 @@ public sealed class LegacyComparisonWorkflowController
|
||||
|
||||
public LegacyComparisonWorkflowController(
|
||||
ILegacyComparisonDataService dataService,
|
||||
ILegacyComparisonPairStore pairStore)
|
||||
ILegacyComparisonPairStore pairStore,
|
||||
LegacyComparisonUiLayout? uiLayout = null)
|
||||
{
|
||||
_dataService = dataService ?? throw new ArgumentNullException(nameof(dataService));
|
||||
_pairStore = pairStore ?? throw new ArgumentNullException(nameof(pairStore));
|
||||
_uiLayout = uiLayout ?? LegacyComparisonUiLayout.Default;
|
||||
}
|
||||
|
||||
public LegacyComparisonWorkflowSnapshot Current => CreateSnapshot();
|
||||
@@ -606,7 +609,7 @@ public sealed class LegacyComparisonWorkflowController
|
||||
result.Target,
|
||||
result.SelectionId))
|
||||
.ToArray();
|
||||
var fixedTargets = LegacyComparisonWorkflowCatalog.FixedTargets
|
||||
var fixedTargets = _uiLayout.FixedTargets
|
||||
.Select(target => LegacyComparisonWorkflowCatalog.ToView(target, target.TargetId))
|
||||
.ToArray();
|
||||
var savedPairs = _savedPairs.Select((pair, index) =>
|
||||
@@ -645,7 +648,7 @@ public sealed class LegacyComparisonWorkflowController
|
||||
: LegacyComparisonWorkflowCatalog.ToView(_secondTarget, "comparison-draft-second"),
|
||||
Array.AsReadOnly(savedPairs),
|
||||
_selectedPairId,
|
||||
LegacyComparisonWorkflowCatalog.CreateActionViews(
|
||||
_uiLayout.CreateActionViews(
|
||||
selectedPair?.First,
|
||||
selectedPair?.Second),
|
||||
_statusMessage,
|
||||
|
||||
Reference in New Issue
Block a user