LANCommander/LANCommander.Launcher/UI/Components/MediaImage.razor

68 lines
1.8 KiB
Text
Raw Permalink Normal View History

@using LANCommander.Launcher.Data.Models
@namespace LANCommander.Launcher.UI
@implements IDisposable
2024-06-01 22:47:56 -05:00
@inject MediaService MediaService
2024-07-10 17:27:42 -05:00
@inject MessageBusService MessageBusService
@inject ILogger<MediaImage> Logger
2024-06-01 22:47:56 -05:00
<img @ref="Ref" @key="@(String.IsNullOrWhiteSpace(Key) ? Id.ToString() : Key)" src="@MediaUrl" class="@Class @HiddenClass" @onerror="Hide" />
2024-06-01 22:47:56 -05:00
@code {
[Parameter] public Guid Id { get; set; }
2024-06-02 17:39:32 -05:00
[Parameter] public string Class { get; set; }
[Parameter] public string Key { get; set; }
[CascadingParameter] public bool Connected { get; set; }
[CascadingParameter] public bool OfflineMode { get; set; }
2024-06-01 22:47:56 -05:00
2024-07-10 17:27:42 -05:00
string MediaUrl { get; set; }
2024-08-01 18:08:55 -05:00
string HiddenClass { get; set; }
2024-07-10 17:27:42 -05:00
ElementReference Ref;
protected override async Task OnInitializedAsync()
{
MessageBusService.OnMediaChanged += OnMediaChanged;
}
2024-06-01 22:47:56 -05:00
protected override async Task OnParametersSetAsync()
{
2024-06-24 18:28:00 -05:00
try {
var media = await MediaService.GetAsync(Id);
2024-07-10 17:27:42 -05:00
//if (media == null && (Connected || OfflineMode))
// media = await ImportService.ImportMediaAsync(Id);
2024-07-10 17:27:42 -05:00
UpdateMediaUrl(media);
2024-06-24 18:28:00 -05:00
}
catch (Exception ex)
{
Logger?.LogError(ex, "Could not load media with ID {MediaId}", Id);
}
2024-06-01 22:47:56 -05:00
}
2024-07-10 17:27:42 -05:00
async Task OnMediaChanged(Media media)
{
if (media.Id == Id)
{
UpdateMediaUrl(media);
await InvokeAsync(StateHasChanged);
}
}
2024-08-01 18:08:55 -05:00
async Task Hide()
{
HiddenClass = "hidden";
}
2024-07-10 17:27:42 -05:00
void UpdateMediaUrl(Media media)
{
MediaUrl = $"media://image?id={media?.Id}&fileId={media?.FileId}&crc32={media?.Crc32}&mime={media?.MimeType}";
2024-07-10 17:27:42 -05:00
}
public void Dispose()
{
MessageBusService.OnMediaChanged -= OnMediaChanged;
}
2024-06-01 22:47:56 -05:00
}