LANCommander/LANCommander.Launcher/UI/Components/MediaImage.razor
Pat Hartl 9ba9887eb1 Rename project files, namespaces, artifacts
Client has been renamed to launcher, and thus namespaces and artifact names had to change. The server project has also had some artifacts renamed in order to create a more clear separation of builds. This will break auto-updates before v0.9.0.
2024-08-04 17:53:19 -05:00

56 lines
1.2 KiB
Text

@implements IDisposable
@using LANCommander.Launcher.Data.Models
@inject MediaService MediaService
@inject MessageBusService MessageBusService
<img @ref="Ref" @key="Id" src="@MediaUrl" class="@Class @HiddenClass" @onerror="Hide" />
@code {
[Parameter] public Guid Id { get; set; }
[Parameter] public string Class { get; set; }
string MediaUrl { get; set; }
string HiddenClass { get; set; }
ElementReference Ref;
protected override async Task OnInitializedAsync()
{
MessageBusService.OnMediaChanged += OnMediaChanged;
}
protected override async Task OnParametersSetAsync()
{
try {
var media = await MediaService.Get(Id);
UpdateMediaUrl(media);
}
catch { }
}
async Task OnMediaChanged(Media media)
{
if (media.Id == Id)
{
UpdateMediaUrl(media);
await InvokeAsync(StateHasChanged);
}
}
async Task Hide()
{
HiddenClass = "hidden";
}
void UpdateMediaUrl(Media media)
{
MediaUrl = $"media://{media?.FileId}-{media?.Crc32}?mime={media?.MimeType}";
}
public void Dispose()
{
MessageBusService.OnMediaChanged -= OnMediaChanged;
}
}