@inject ISnackbar Snackbar Danh sách script sẽ xóa @foreach (var file in DeleteList) { @file } Cancel Delete @code { [CascadingParameter] private IMudDialogInstance Dialog { get; set; } = null!; [Parameter] public ScriptWorkspace Workspace { get; set; } = null!; private IEnumerable DeleteList = []; protected override void OnInitialized() { base.OnInitialized(); if (Workspace.SelectedFile is not null) { DeleteList = [Workspace.SelectedFile.Path]; StateHasChanged(); } else if (Workspace.SelectedFolder is not null) { DeleteList = GetListFromFolder(Workspace.SelectedFolder); StateHasChanged(); } } private IEnumerable GetListFromFolder(ScriptFolderModel folder) { var list = new List(); list.Add(folder.Path); foreach (var dir in folder.Folders) { list.AddRange(GetListFromFolder(dir)); } foreach (var file in folder.Files) { list.Add(file.Path); } return list; } private void OnCancel() => Dialog.Cancel(); private async Task OnDelete() { if (Workspace.SelectedFile is not null) { var result = await Workspace.DeleteFile(Workspace.SelectedFile); if (result.IsSuccess) { Dialog.Close(); } else { Snackbar.Add(result.Message, Severity.Error); } } else if (Workspace.SelectedFolder is not null) { var result = await Workspace.DeleteFolder(Workspace.SelectedFolder); if (result.IsSuccess) { Dialog.Close(); } else { Snackbar.Add(result.Message, Severity.Error); } } } }