fix: 密钥管理排除站点列表缺少无账号站点

loadExclusionSources() 原只从 accounts 提取站点,
新增的/无关联账号的站点不显示。
增加 api.getSites() 调用,合并所有站点到排除选项。
This commit is contained in:
boos
2026-05-19 02:33:18 +08:00
parent c8a523d973
commit ba07517974
+13 -1
View File
@@ -518,17 +518,29 @@ export default function DownstreamKeys() {
if (exclusionSourceLoading || exclusionSourceLoaded) return; if (exclusionSourceLoading || exclusionSourceLoaded) return;
setExclusionSourceLoading(true); setExclusionSourceLoading(true);
try { try {
const [accountsSnapshotRes, tokensRes] = await Promise.all([ const [accountsSnapshotRes, tokensRes, sitesRes] = await Promise.all([
api.getAccountsSnapshot(), api.getAccountsSnapshot(),
api.getAccountTokens(), api.getAccountTokens(),
api.getSites(),
]); ]);
const accountRows = Array.isArray(accountsSnapshotRes?.accounts) const accountRows = Array.isArray(accountsSnapshotRes?.accounts)
? accountsSnapshotRes.accounts ? accountsSnapshotRes.accounts
: []; : [];
const tokenRows = Array.isArray(tokensRes) ? tokensRes : []; const tokenRows = Array.isArray(tokensRes) ? tokensRes : [];
const siteRows = Array.isArray(sitesRes) ? sitesRes : [];
const siteMap = new Map<number, { siteId: number; siteName: string; accountIds: Set<number> }>(); const siteMap = new Map<number, { siteId: number; siteName: string; accountIds: Set<number> }>();
for (const site of siteRows) {
const siteId = Number(site?.id);
if (!Number.isFinite(siteId) || siteId <= 0) continue;
const siteName = String(site?.name || `站点 ${siteId}`).trim() || `站点 ${siteId}`;
if (!siteMap.has(siteId)) {
siteMap.set(siteId, { siteId, siteName, accountIds: new Set<number>() });
}
}
for (const account of accountRows) { for (const account of accountRows) {
const siteId = Number(account?.site?.id); const siteId = Number(account?.site?.id);
const accountId = Number(account?.id); const accountId = Number(account?.id);