fix(plugins/settings.plugins): cache repo listings when building an alert to confirm an install plan
This commit is contained in:
parent
41e9186966
commit
61dad36056
1 changed files with 8 additions and 2 deletions
|
|
@ -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<boolean> {
|
|||
|
||||
let resolve!: (value: boolean) => void
|
||||
const promise = new Promise<boolean>(r => (resolve = r))
|
||||
const listingCache = new Map<string, RepoPluginListing[]>()
|
||||
|
||||
const summary = await Promise.all(
|
||||
plan.actions.map(async action => {
|
||||
|
|
@ -85,7 +89,9 @@ export async function confirmPlan(plan: InstallPlan): Promise<boolean> {
|
|||
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)
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue