mirror of
https://github.com/fawney19/Aether.git
synced 2026-09-01 17:00:21 +08:00
perf: Pool 账号删除后改用乐观更新替代全量重载
- PoolAccountBatchDialog: 批量删除全部成功时直接从本地列表移除,其余操作保留原重载逻辑 - PoolManagement: 单个删除后本地移除条目并更新 total,当前页为空时自动跳转前一页
This commit is contained in:
@@ -704,18 +704,20 @@ async function executeAction(): Promise<void> {
|
||||
if (failedCount > 0) warning(lastResultMessage.value)
|
||||
else success(lastResultMessage.value)
|
||||
|
||||
const shouldClearSelection = selectedAction.value === 'delete'
|
||||
const previousSelection = new Set(selectedKeyIds.value)
|
||||
actionPhaseMs = performance.now() - actionStartedAt
|
||||
const reloadStartedAt = performance.now()
|
||||
await loadAllKeys()
|
||||
reloadPhaseMs = performance.now() - reloadStartedAt
|
||||
if (shouldClearSelection) {
|
||||
if (selectedAction.value === 'delete' && successCount > 0 && failedCount === 0) {
|
||||
// 全部删除成功:直接从本地列表移除,不做全量重载
|
||||
const deletedIds = new Set(selectedKeys.map((key) => key.key_id))
|
||||
allKeys.value = allKeys.value.filter((key) => !deletedIds.has(key.key_id))
|
||||
selectedKeyIds.value = []
|
||||
} else {
|
||||
const previousSelection = new Set(selectedKeyIds.value)
|
||||
await loadAllKeys()
|
||||
const existingIds = new Set(allKeys.value.map((key) => key.key_id))
|
||||
selectedKeyIds.value = [...previousSelection].filter((id) => existingIds.has(id))
|
||||
}
|
||||
reloadPhaseMs = performance.now() - reloadStartedAt
|
||||
emit('changed')
|
||||
} catch (err) {
|
||||
showError(parseApiError(err, '批量操作失败'))
|
||||
|
||||
@@ -1885,7 +1885,13 @@ async function handleDeleteKey(key: PoolKeyDetail) {
|
||||
try {
|
||||
await deleteEndpointKey(key.key_id)
|
||||
success('账号已删除')
|
||||
await loadKeys()
|
||||
// 乐观更新:直接从本地列表移除,避免等待网络重载
|
||||
keyPage.value.keys = keyPage.value.keys.filter(k => k.key_id !== key.key_id)
|
||||
keyPage.value.total = Math.max(0, keyPage.value.total - 1)
|
||||
// 当前页已空且不是第一页时,自动跳转到前一页
|
||||
if (keyPage.value.keys.length === 0 && currentPage.value > 1) {
|
||||
currentPage.value--
|
||||
}
|
||||
} catch (err) {
|
||||
showError(parseApiError(err, '删除账号失败'))
|
||||
} finally {
|
||||
|
||||
Reference in New Issue
Block a user