fix(cms): stabilize _specialColumns allocation and refresh stale comments

Allocate _specialColumns once in OnInitialized; update RowActions references to SpecialColumns in the medium browsers and base class.
This commit is contained in:
daniel-c-harvey
2026-06-15 11:26:21 -04:00
parent 5941f1f23a
commit 31084b09a4
4 changed files with 29 additions and 17 deletions
@@ -8,9 +8,10 @@
@* Embedded as the MIXES tab content of the Release Archive (Phase 9 §8.A), and still routable at
/tracks/mixes for direct-URL access. The grid is the rich CmsAlbumBrowser filtered to Mixes (§8.C
parity: expand-tracks, delete, Type chip, per-row edit), with the Mix waveform generate supplied as
its medium-specific RowActions slot so that affordance survives the move off the thin table. When
embedded, the page chrome (title, container, the now-meaningless "Back to Release Archive" button) is
suppressed; the standalone route keeps it. The waveform affordance (9.5.E) is preserved in both. *@
its medium-specific special-action column so that affordance survives the move off the thin table.
When embedded, the page chrome (title, container, the now-meaningless "Back to Release Archive"
button) is suppressed; the standalone route keeps it. The waveform affordance (9.5.E) is preserved
in both. *@
@if (Embedded)
{
@GridContent
@@ -60,10 +61,15 @@ else
OnReleasesChanged="ReloadAsync"
SpecialColumns="_specialColumns" />;
private IReadOnlyList<SpecialActionColumn> _specialColumns => new[]
// Allocated once per component instance in OnInitialized (field initializers cannot reference
// instance members, so initialization is deferred to the first lifecycle hook).
private IReadOnlyList<SpecialActionColumn> _specialColumns = Array.Empty<SpecialActionColumn>();
protected override void OnInitialized()
{
new SpecialActionColumn("Waveform", WaveformCell)
};
_specialColumns = new[] { new SpecialActionColumn("Waveform", WaveformCell) };
base.OnInitialized();
}
// Per-row cell for the dedicated "Waveform" column: status icon plus generate/regenerate button with
// progress. Recovers the typed MixRow via RowFor; skips rendering for a release not on the page.