diff --git a/packages/api/src/router/widgets/releases.ts b/packages/api/src/router/widgets/releases.ts index b58fecd19..84e903627 100644 --- a/packages/api/src/router/widgets/releases.ts +++ b/packages/api/src/router/widgets/releases.ts @@ -45,7 +45,7 @@ export const releasesRouter = createTRPCRouter({ ) .query(async ({ ctx, input }) => { const tokensByProvider = new Map(); - let allowedRepoIds: Set | null = null; + const savedRepos = new Map(); if (input.itemId) { try { @@ -54,9 +54,15 @@ export const releasesRouter = createTRPCRouter({ await throwIfActionForbiddenAsync(ctx, eq(boards.id, item.boardId), "view"); const options = SuperJSON.parse>(item.options); - const repos = options.repositories as Array<{ id?: string }> | undefined; + const repos = options.repositories as + | Array<{ provider?: string; identifier: string; providerUrl?: string }> + | undefined; if (repos) { - allowedRepoIds = new Set(repos.map((r) => r.id).filter((id): id is string => Boolean(id))); + for (const repo of repos) { + if (repo.provider && repo.identifier) { + savedRepos.set(`${repo.provider}:${repo.identifier}`, { providerUrl: repo.providerUrl }); + } + } } const secrets = await ctx.db.query.widgetSecrets.findMany({ @@ -78,16 +84,16 @@ export const releasesRouter = createTRPCRouter({ return await Promise.all( input.repositories.map(async (repository) => { const repositoryId = repository.id ?? repository.identifier; + const savedRepo = savedRepos.get(`${repository.provider}:${repository.identifier}`); try { - const useToken = allowedRepoIds === null || allowedRepoIds.has(repositoryId); const response = await releasesRequestHandler .handler({ id: repositoryId, provider: repository.provider, identifier: repository.identifier, versionRegex: formatVersionFilterRegex(repository.versionFilter), - providerUrl: repository.providerUrl, - token: useToken ? tokensByProvider.get(repository.provider) : undefined, + providerUrl: savedRepo?.providerUrl ?? repository.providerUrl, + token: savedRepo ? tokensByProvider.get(repository.provider) : undefined, }) .getDataAsync(); diff --git a/packages/definitions/src/docs/homarr-docs-sitemap.ts b/packages/definitions/src/docs/homarr-docs-sitemap.ts index fb01c71b0..22bc5f75b 100644 --- a/packages/definitions/src/docs/homarr-docs-sitemap.ts +++ b/packages/definitions/src/docs/homarr-docs-sitemap.ts @@ -184,6 +184,7 @@ export type HomarrDocumentationPath = | "/docs/integrations/opnsense" | "/docs/integrations/overseerr" | "/docs/integrations/paperless-ngx" + | "/docs/integrations/patchmon" | "/docs/integrations/peanut" | "/docs/integrations/pi-hole" | "/docs/integrations/plex" @@ -256,6 +257,7 @@ export type HomarrDocumentationPath = | "/docs/widgets/notebook" | "/docs/widgets/notifications" | "/docs/widgets/paperless-ngx" + | "/docs/widgets/patchmon" | "/docs/widgets/releases" | "/docs/widgets/rss-feed" | "/docs/widgets/smart-home-entity-state" diff --git a/packages/request-handler/src/release-providers.ts b/packages/request-handler/src/release-providers.ts index f4a647668..d4a9dd2b3 100644 --- a/packages/request-handler/src/release-providers.ts +++ b/packages/request-handler/src/release-providers.ts @@ -134,7 +134,7 @@ const getGithubApi = (baseUrl: string, userAgent: string, token?: string) => baseUrl, auth: token, request: { fetch: fetchWithTrustedCertificatesAsync }, - throttle: { enabled: false }, + throttle: { enabled: true }, userAgent, });