Refactor bumper template background management: rename background upload endpoint to reflect new functionality, update related command and handler to use image ID instead of extension, and adjust data models to support image references. Remove obsolete background handling code and enhance UI components for improved image selection and display.
This commit is contained in:
@@ -216,6 +216,25 @@ public sealed class ScheduleGenerator(
|
||||
)
|
||||
posterByShow[p.Id] = (p.ImageId, abs);
|
||||
|
||||
// Фон-картинки блоков (из реестра) — абсолютные пути по id.
|
||||
var bgImageIds = channel.BumperTemplates
|
||||
.Where(t => t.BackgroundImageId != null)
|
||||
.Select(t => t.BackgroundImageId!.Value)
|
||||
.Distinct()
|
||||
.ToList();
|
||||
var bgExtById = await dbContext.Images.AsNoTracking()
|
||||
.Where(i => bgImageIds.Contains(i.Id))
|
||||
.Select(i => new { i.Id, i.FileExtension })
|
||||
.ToDictionaryAsync(i => i.Id, i => i.FileExtension, cancellationToken);
|
||||
var bgByTemplate = new Dictionary<Guid, string>();
|
||||
foreach (var t in channel.BumperTemplates)
|
||||
if (
|
||||
t.BackgroundImageId is { } bgId
|
||||
&& bgExtById.TryGetValue(bgId, out var bgExt)
|
||||
&& imageStore.ResolvePath(bgId, bgExt) is { } bgAbs
|
||||
)
|
||||
bgByTemplate[t.Id] = bgAbs;
|
||||
|
||||
// Кандидаты из кэша + статусы их ассетов (годятся только Ready — файлы могли удалить).
|
||||
var cached = await dbContext.BumperAssets.AsNoTracking()
|
||||
.Where(b => fromIds.Contains(b.FromShowId) && toIds.Contains(b.ToShowId))
|
||||
@@ -245,6 +264,7 @@ public sealed class ScheduleGenerator(
|
||||
var poster = posterByShow.TryGetValue(combo.To, out var pr) ? pr : default;
|
||||
var posterToken = poster.ImageId == Guid.Empty ? "-" : poster.ImageId.ToString();
|
||||
var posterAbs = poster.ImageId == Guid.Empty ? null : poster.AbsPath;
|
||||
var bgAbs = bgByTemplate.GetValueOrDefault(template.Id);
|
||||
var aligned = AlignedDurationSeconds(TemplateDurationSeconds(template));
|
||||
var signature = ComputeSignature(channel, template, fromName, toName, aligned, posterToken);
|
||||
|
||||
@@ -272,6 +292,7 @@ public sealed class ScheduleGenerator(
|
||||
aligned,
|
||||
signature,
|
||||
posterAbs,
|
||||
bgAbs,
|
||||
cancellationToken
|
||||
);
|
||||
result[combo] = assetId;
|
||||
@@ -300,14 +321,22 @@ public sealed class ScheduleGenerator(
|
||||
int alignedDurationSeconds,
|
||||
string signature,
|
||||
string? posterAbsolutePath,
|
||||
string? backgroundAbsolutePath,
|
||||
CancellationToken cancellationToken
|
||||
)
|
||||
{
|
||||
var asset = MediaAsset.RegisterGenerated($"Заставка: {fromName} → {toName}");
|
||||
var posterAbs = posterAbsolutePath;
|
||||
var render = await bumperRenderer.RenderAsync(
|
||||
asset.Id,
|
||||
BuildSpec(channel, template, alignedDurationSeconds, fromName, toName, posterAbs),
|
||||
BuildSpec(
|
||||
channel,
|
||||
template,
|
||||
alignedDurationSeconds,
|
||||
fromName,
|
||||
toName,
|
||||
posterAbsolutePath,
|
||||
backgroundAbsolutePath
|
||||
),
|
||||
cancellationToken
|
||||
);
|
||||
|
||||
@@ -335,7 +364,8 @@ public sealed class ScheduleGenerator(
|
||||
int alignedDurationSeconds,
|
||||
string fromName,
|
||||
string toName,
|
||||
string? posterAbsolutePath
|
||||
string? posterAbsolutePath,
|
||||
string? backgroundAbsolutePath
|
||||
) =>
|
||||
new(
|
||||
alignedDurationSeconds,
|
||||
@@ -350,7 +380,7 @@ public sealed class ScheduleGenerator(
|
||||
fromName,
|
||||
channel.BumperNextLabel,
|
||||
toName,
|
||||
bumperStorage.BackgroundPath(template.Id, template.BackgroundImageExtension),
|
||||
backgroundAbsolutePath,
|
||||
bumperStorage.AudioPath(template.Id, template.AudioExtension),
|
||||
posterAbsolutePath
|
||||
);
|
||||
@@ -397,7 +427,7 @@ public sealed class ScheduleGenerator(
|
||||
template.AccentColor,
|
||||
template.TextColor,
|
||||
template.Revision,
|
||||
template.BackgroundImageExtension ?? "-",
|
||||
template.BackgroundImageId?.ToString() ?? "-",
|
||||
template.AudioExtension ?? "-",
|
||||
fromName,
|
||||
toName,
|
||||
|
||||
Reference in New Issue
Block a user