@using System.Collections.Concurrent @* * dbMango * * Copyright 2025 Deutsche Bank AG * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. *@
        @foreach (var m in _messages)
        {
            @m
}
@code { [CascadingParameter] BlazoredModalInstance BlazoredModal { get; set; } = null!; [Parameter] public Func Action { get; set; } = _ => Task.CompletedTask; [Parameter] public string TextEditorClass { get; set; } = "text-area"; private readonly ConcurrentQueue _messages = []; private bool _inProgress; private Task OnOK() => BlazoredModal.CloseAsync(ModalResult.Ok(true)); private void OnProgress(string message, bool isError = false, object? extraInfo = null) { foreach( var m in message.Split( "\n" )) _messages.Enqueue( m ); InvokeAsync(StateHasChanged); } private async Task DoAction() { _inProgress = true; await InvokeAsync(StateHasChanged); try { await Action(OnProgress); _messages.Enqueue("----------------------------- COMPLETE ----------------------------- "); _inProgress = false; await InvokeAsync(StateHasChanged); } catch ( Exception ex) { var text = ex.ToString().Split( '\n' ); _messages.Enqueue("----------------------------- ERROR ----------------------------- "); foreach (var s in text ) { _messages.Enqueue( s ); } _inProgress = false; await InvokeAsync(StateHasChanged); } } protected override async Task OnAfterRenderAsync( bool firstRender ) { if (!firstRender) return; _inProgress = true; await InvokeAsync(StateHasChanged); _ = Task.Run(DoAction); } }