@namespace Oqtane.UI @inject IStringLocalizer Localizer @inject ILogService LoggingService @inherits ErrorBoundary @if (CurrentException is null) { @if (ModuleType != null) { @if (_progressIndicator) {
} } } else { @if (!string.IsNullOrEmpty(_error)) { } } @code { private string _message; private string _error; private MessageType _messageType; private bool _progressIndicator = false; private Type ModuleType { get; set; } private IDictionary ModuleParameters { get; set; } [CascadingParameter] protected PageState PageState { get; set; } [CascadingParameter] private Module ModuleState { get; set; } private ModuleMessage ModuleMessage { get; set; } protected override void OnParametersSet() { _message = ""; if (!string.IsNullOrEmpty(ModuleState.ModuleType)) { ModuleType = Type.GetType(ModuleState.ModuleType); if (ModuleType != null) { ModuleParameters = new Dictionary { { "ModuleInstance", this } }; return; } // module does not exist with typename specified _message = string.Format(Localizer["Error.Module.InvalidName"], Utilities.GetTypeNameLastSegment(ModuleState.ModuleType, 0)); _messageType = MessageType.Error; } else { _message = string.Format(Localizer["Error.Module.InvalidType"], ModuleState.ModuleDefinitionName); _messageType = MessageType.Error; } } public void AddModuleMessage(string message, MessageType type) { _message = message; _messageType = type; _progressIndicator = false; StateHasChanged(); } public void ShowProgressIndicator() { _progressIndicator = true; StateHasChanged(); } public void HideProgressIndicator() { _progressIndicator = false; StateHasChanged(); } protected override async Task OnErrorAsync(Exception exception) { // retrieve friendly localized error _error = Localizer["Error.Module.Exception"]; // log error int? userId = (PageState.User != null) ? PageState.User.UserId : null; string category = GetType().AssemblyQualifiedName; string feature = Utilities.GetTypeNameLastSegment(category, 1); await LoggingService.Log(null, ModuleState.PageId, ModuleState.ModuleId, userId, category, feature, LogFunction.Other, LogLevel.Error, exception, "An Unexpected Error Has Occurred In {ModuleDefinitionName}: {Error}", ModuleState.ModuleDefinitionName, exception.Message); await base.OnErrorAsync(exception); return; } public new void Recover() { _error = ""; base.Recover(); } }