/
onimor
/
ASWRemoteViewerRev
Обзор
Документация
Войти
/
onimor
/
ASWRemoteViewerRev
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
RemoteViewing/ASW.RemoteViewing/ASW.RemoteViewing.Client/Shared/Components/UiComponentBase.cs
67 строк
2 KB
onimor
- Исправлены опечатки
29 авг 2025, 10:09
29 авг 2025, 10:09
6a46675
Код
Авторство
О чём код?
using ASW.Shared.Extension; using Microsoft.AspNetCore.Components; using MudBlazor; namespace ASW.RemoteViewing.Client.Shared.Components; public abstract class UiComponentBase : ComponentBase { [Inject] protected ISnackbar SnackbarService { get; set; } = default!; protected void ShowError(string message) => SnackbarService.Add(message, Severity.Error); protected void ShowSuccess(string message) => SnackbarService.Add(message, Severity.Success); protected bool Processing { get; set; } protected async Task RunSafe(Func<Task> action, string? errorMessage = null, bool showProcessing = false) { if (showProcessing) StartProcessing(); try { await action(); } catch (Exception ex) { HandleException(ex, errorMessage); } finally { if (showProcessing) StopProcessing(); } } protected async Task<T?> RunSafe<T>(Func<Task<T?>> action, string? errorMessage = null, bool showProcessing = false) { if (showProcessing) StartProcessing(); try { return await action(); } catch (Exception ex) { HandleException(ex, errorMessage); return default; } finally { if (showProcessing) StopProcessing(); } } private void StartProcessing() { Processing = true; StateHasChanged(); } private void StopProcessing() { Processing = false; StateHasChanged(); } private void HandleException(Exception ex, string? errorMessage = null) { ShowError(ex is ValidationException ? ex.Message : string.IsNullOrEmpty(errorMessage) ? "Что-то пошло не так" : errorMessage); } }