From 61dad360566ff473fb28a87f3e5fd3398b6eb553 Mon Sep 17 00:00:00 2001 From: PalmDevs Date: Sun, 26 Jul 2026 00:12:46 +0700 Subject: [PATCH] fix(plugins/settings.plugins): cache repo listings when building an alert to confirm an install plan --- src/plugins/start/settings.plugins/utils/repos.tsx | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/plugins/start/settings.plugins/utils/repos.tsx b/src/plugins/start/settings.plugins/utils/repos.tsx index 4b4b2a4..820fdd0 100644 --- a/src/plugins/start/settings.plugins/utils/repos.tsx +++ b/src/plugins/start/settings.plugins/utils/repos.tsx @@ -13,7 +13,10 @@ import { } from '@revenge-mod/plugins/_/repositories' import { lookupGeneratedIconComponent } from '@revenge-mod/utils/discord' import { PluginIcon } from '../components/PluginIcon' -import type { InstallPlan } from '@revenge-mod/plugins/_/repositories' +import type { + InstallPlan, + RepoPluginListing, +} from '@revenge-mod/plugins/_/repositories' const { AlertActionButton, AlertModal } = Design @@ -54,6 +57,7 @@ export async function confirmPlan(plan: InstallPlan): Promise { let resolve!: (value: boolean) => void const promise = new Promise(r => (resolve = r)) + const listingCache = new Map() const summary = await Promise.all( plan.actions.map(async action => { @@ -85,7 +89,9 @@ export async function confirmPlan(plan: InstallPlan): Promise { const repo = repos.find(r => r.url === action.repo) if (!repo) return row(action.id, action.repo) - const plugins = await listRepoPlugins(repo.url) + const plugins = + listingCache.get(repo.url) ?? (await listRepoPlugins(repo.url)) + const plugin = plugins.find(p => p.id === action.id) if (!plugin) return row(action.id, repo.name || action.repo)