LANCommander/LANCommander.UI/Components/SafeImage/SafeImage.razor
2025-09-06 13:09:47 -05:00

50 lines
No EOL
1.2 KiB
Text

@using LANCommander.SDK.Models
@inject SDK.Client Client
@namespace LANCommander.UI.Components
<Spin Spinning="_loading" WrapperClassName="@Class safe-image">
@if (!_error)
{
if (!String.IsNullOrWhiteSpace(Source))
{
<img src="@Source" @onload="OnLoad" @onerror="OnError" class="@Class" style="@Style" />
}
else if (Media != null)
{
<img src="@(Client.Media.GetAbsoluteThumbnailUrl(Media))" @onload="OnLoad" @onerror="OnError" class="@Class" style="@Style" />
}
else
{
@ChildContent
}
}
else
{
@ChildContent
}
</Spin>
@code {
[Parameter] public string Source { get; set; }
[Parameter] public Media Media { get; set; }
[Parameter] public string Class { get; set; }
[Parameter] public string Style { get; set; }
[Parameter] public RenderFragment ChildContent { get; set; }
bool _loading = true;
bool _error = false;
void OnLoad()
{
_loading = false;
Console.WriteLine("Image error " + Source);
StateHasChanged();
}
void OnError()
{
_error = true;
_loading = false;
StateHasChanged();
}
}