feat(cms): medium-aware Add Track on Release Archive tabs (8.E)
Add Track now appears on every Release Archive tab and pre-selects the upload form's medium via ?medium=… (ALL→Cut); the selector stays user-changeable on landing.
This commit is contained in:
@@ -130,6 +130,25 @@
|
||||
private ReleaseType _releaseType = ReleaseType.Single;
|
||||
private ReleaseMedium _medium = ReleaseMedium.Cut;
|
||||
|
||||
// Optional pre-select from the Add-Track buttons (§8.E): /tracks/upload?medium=session lands the
|
||||
// form already in Session mode. A seed only — the medium selector stays user-changeable after load.
|
||||
// Unrecognised/absent values fall through to the Cut default (same defensive posture as the API's
|
||||
// TrackController.UploadTrack medium parse).
|
||||
[SupplyParameterFromQuery(Name = "medium")] public string? MediumParam { get; set; }
|
||||
|
||||
protected override void OnInitialized()
|
||||
{
|
||||
// Seed the medium from the query param so a pre-selected upload form (e.g. the Sessions tab's
|
||||
// Add Track) lands already showing that medium's conditional fields. Goes through OnMediumChanged
|
||||
// so the single-track collapse runs identically to a user selector change.
|
||||
if (!string.IsNullOrWhiteSpace(MediumParam)
|
||||
&& Enum.TryParse<ReleaseMedium>(MediumParam, ignoreCase: true, out var medium)
|
||||
&& Enum.IsDefined(medium))
|
||||
{
|
||||
OnMediumChanged(medium);
|
||||
}
|
||||
}
|
||||
|
||||
// Switching to a single-track medium collapses any multi-track selection to the first row so the
|
||||
// single-track invariant holds before submit. The predicate reads the same MediumRules cardinality
|
||||
// declaration the upload service enforces, so the form and the domain cannot drift.
|
||||
|
||||
Reference in New Issue
Block a user