账号列表增强:全选/反选/批量删除已选账号
This commit is contained in:
1 parent
e601f0fa56
commit
aec5b6f6b1
1 file changed
+68
@@ -28,6 +28,18 @@
|
||||
<MudTextField @bind-Value="searchString" Placeholder="搜索账号..." Adornment="Adornment.Start"
|
||||
AdornmentIcon="@Icons.Material.Filled.Search" IconSize="Size.Medium" Class="mt-0"
|
||||
Immediate="true" />
|
||||
<MudButton Variant="Variant.Outlined" Color="Color.Primary" StartIcon="@Icons.Material.Filled.SelectAll"
|
||||
Disabled="@loading" OnClick="SelectAllFiltered" Class="ml-2">
|
||||
全选
|
||||
</MudButton>
|
||||
<MudButton Variant="Variant.Outlined" Color="Color.Primary" StartIcon="@Icons.Material.Filled.Flip"
|
||||
Disabled="@loading" OnClick="InvertSelection" Class="ml-2">
|
||||
反选
|
||||
</MudButton>
|
||||
<MudButton Variant="Variant.Outlined" Color="Color.Error" StartIcon="@Icons.Material.Filled.Delete"
|
||||
Disabled="@(loading || selectedAccounts.Count == 0)" OnClick="DeleteSelectedAccounts" Class="ml-2">
|
||||
删除已选
|
||||
</MudButton>
|
||||
<MudButton Variant="Variant.Outlined" Color="Color.Info" StartIcon="@Icons.Material.Filled.Sync"
|
||||
Disabled="@loading" OnClick="BatchRefreshTelegramStatus" Class="ml-2">
|
||||
批量刷新状态
|
||||
@@ -263,6 +275,62 @@
|
||||
}
|
||||
}
|
||||
|
||||
private Task SelectAllFiltered()
|
||||
{
|
||||
selectedAccounts = filteredAccounts.ToHashSet();
|
||||
return Task.CompletedTask;
|
||||
}
|
||||
|
||||
private Task InvertSelection()
|
||||
{
|
||||
var targets = filteredAccounts.ToList();
|
||||
foreach (var a in targets)
|
||||
{
|
||||
if (selectedAccounts.Contains(a))
|
||||
selectedAccounts.Remove(a);
|
||||
else
|
||||
selectedAccounts.Add(a);
|
||||
}
|
||||
return Task.CompletedTask;
|
||||
}
|
||||
|
||||
private async Task DeleteSelectedAccounts()
|
||||
{
|
||||
var targets = selectedAccounts.ToList();
|
||||
if (targets.Count == 0)
|
||||
{
|
||||
Snackbar.Add("未选择任何账号", Severity.Info);
|
||||
return;
|
||||
}
|
||||
|
||||
bool? result = await DialogService.ShowMessageBox(
|
||||
"确认删除",
|
||||
$"确定要删除已选账号({targets.Count} 个)吗?将同时清理 sessions 文件,且不可恢复。",
|
||||
yesText: "删除", cancelText: "取消");
|
||||
|
||||
if (result != true)
|
||||
return;
|
||||
|
||||
loading = true;
|
||||
try
|
||||
{
|
||||
foreach (var a in targets)
|
||||
await AccountManagement.DeleteAccountAsync(a.Id);
|
||||
|
||||
selectedAccounts.Clear();
|
||||
await LoadAccounts();
|
||||
Snackbar.Add("删除完成", Severity.Success);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Snackbar.Add($"删除失败:{ex.Message}", Severity.Error);
|
||||
}
|
||||
finally
|
||||
{
|
||||
loading = false;
|
||||
}
|
||||
}
|
||||
|
||||
private void ExportSelectedAccounts()
|
||||
{
|
||||
var ids = selectedAccounts.Select(a => a.Id).Distinct().ToList();
|
||||
|
||||
Reference in new issue
Block a user