LANCommander/LANCommander.Client/UI/Components/MediaImage.razor
2024-07-10 17:27:42 -05:00

50 lines
1.1 KiB
Text

@implements IDisposable
@using LANCommander.Client.Data.Models
@inject MediaService MediaService
@inject MessageBusService MessageBusService
<img @ref="Ref" @key="Id" src="@MediaUrl" class="@Class" />
@code {
[Parameter] public Guid Id { get; set; }
[Parameter] public string Class { get; set; }
string MediaUrl { 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);
}
}
void UpdateMediaUrl(Media media)
{
MediaUrl = $"media://{media?.FileId}-{media?.Crc32}?mime={media?.MimeType}";
}
public void Dispose()
{
MessageBusService.OnMediaChanged -= OnMediaChanged;
}
}