@using EnvelopeGenerator.Server.Client.Services
@inherits LayoutComponentBase
@implements IDisposable
@inject ThemeService ThemeService
@code {
[Inject] IHttpClientFactory HttpClientFactory { get; set; } = default!;
private Action? _themeChangeHandler;
protected override async Task OnInitializedAsync()
{
await FontLoader.LoadFonts(HttpClientFactory, ["opensans.ttf"]);
_themeChangeHandler = () => InvokeAsync(StateHasChanged);
ThemeService.OnChange += _themeChangeHandler;
await base.OnInitializedAsync();
}
protected override async Task OnAfterRenderAsync(bool firstRender)
{
if (firstRender)
await ThemeService.InitializeAsync();
}
private async Task OnToggleDarkMode()
=> await ThemeService.ToggleDarkModeAsync();
private async Task OnThemeChanged(ChangeEventArgs e)
{
var value = e.Value?.ToString();
if (!string.IsNullOrEmpty(value))
await ThemeService.SetThemeAsync(value);
}
public void Dispose()
=> ThemeService.OnChange -= _themeChangeHandler;
}