@inject IInstallationService InstallationService @inject IJSRuntime JSRuntime @inject SiteState SiteState @if (_initialized) { @if (!_installation.Success) { } else { @if (string.IsNullOrEmpty(_installation.Message)) {
} else {
@_installation.Message
} } } @code { [Parameter] public string AntiForgeryToken { get; set; } [Parameter] public string Runtime { get; set; } [Parameter] public string RenderMode { get; set; } private bool _initialized = false; private string _display = "display: none;"; private Installation _installation = new Installation { Success = false, Message = "" }; private PageState PageState { get; set; } protected override async Task OnParametersSetAsync() { SiteState.AntiForgeryToken = AntiForgeryToken; InstallationService.SetAntiForgeryTokenHeader(AntiForgeryToken); _installation = await InstallationService.IsInstalled(); if (_installation.Alias != null) { SiteState.Alias = _installation.Alias; } else { _installation.Message = "Site Not Configured Correctly - No Matching Alias Exists For Host Name"; } _initialized = true; } protected override async Task OnAfterRenderAsync(bool firstRender) { if (firstRender) { if (string.IsNullOrEmpty(AntiForgeryToken)) { // parameter values are not set when running on WebAssembly (seems to be a .NET 5 bug) - need to retrieve using JSInterop var interop = new Interop(JSRuntime); SiteState.AntiForgeryToken = await interop.GetElementByName(Constants.RequestVerificationToken); InstallationService.SetAntiForgeryTokenHeader(SiteState.AntiForgeryToken); Runtime = await interop.GetElementByName("app_runtime"); RenderMode = await interop.GetElementByName("app_rendermode"); } _display = ""; StateHasChanged(); } } private void ChangeState(PageState pageState) { PageState = pageState; StateHasChanged(); } }