fix(releases-widget): improved provider parsing of missing properties (#2964)
Co-authored-by: Andre Silva <asilva01@acuitysso.com> Co-authored-by: Meier Lukas <meierschlumpf@gmail.com>
This commit is contained in:
@@ -80,7 +80,7 @@ export const Providers: ProvidersProps = {
|
|||||||
return z
|
return z
|
||||||
.object({
|
.object({
|
||||||
html_url: z.string(),
|
html_url: z.string(),
|
||||||
description: z.string(),
|
description: z.string().nullable(),
|
||||||
fork: z.boolean(),
|
fork: z.boolean(),
|
||||||
archived: z.boolean(),
|
archived: z.boolean(),
|
||||||
created_at: z.string().transform((value) => new Date(value)),
|
created_at: z.string().transform((value) => new Date(value)),
|
||||||
@@ -90,7 +90,7 @@ export const Providers: ProvidersProps = {
|
|||||||
})
|
})
|
||||||
.transform((resp) => ({
|
.transform((resp) => ({
|
||||||
projectUrl: resp.html_url,
|
projectUrl: resp.html_url,
|
||||||
projectDescription: resp.description,
|
projectDescription: resp.description ?? undefined,
|
||||||
isFork: resp.fork,
|
isFork: resp.fork,
|
||||||
isArchived: resp.archived,
|
isArchived: resp.archived,
|
||||||
createdAt: resp.created_at,
|
createdAt: resp.created_at,
|
||||||
@@ -111,7 +111,7 @@ export const Providers: ProvidersProps = {
|
|||||||
tag_name: z.string(),
|
tag_name: z.string(),
|
||||||
published_at: z.string().transform((value) => new Date(value)),
|
published_at: z.string().transform((value) => new Date(value)),
|
||||||
html_url: z.string(),
|
html_url: z.string(),
|
||||||
body: z.string(),
|
body: z.string().nullable(),
|
||||||
prerelease: z.boolean(),
|
prerelease: z.boolean(),
|
||||||
})
|
})
|
||||||
.transform((tag) => ({
|
.transform((tag) => ({
|
||||||
@@ -119,7 +119,7 @@ export const Providers: ProvidersProps = {
|
|||||||
latestRelease: tag.tag_name,
|
latestRelease: tag.tag_name,
|
||||||
latestReleaseAt: tag.published_at,
|
latestReleaseAt: tag.published_at,
|
||||||
releaseUrl: tag.html_url,
|
releaseUrl: tag.html_url,
|
||||||
releaseDescription: tag.body,
|
releaseDescription: tag.body ?? undefined,
|
||||||
isPreRelease: tag.prerelease,
|
isPreRelease: tag.prerelease,
|
||||||
})),
|
})),
|
||||||
)
|
)
|
||||||
@@ -135,17 +135,17 @@ export const Providers: ProvidersProps = {
|
|||||||
.object({
|
.object({
|
||||||
web_url: z.string(),
|
web_url: z.string(),
|
||||||
description: z.string(),
|
description: z.string(),
|
||||||
forked_from_project: z.object({ id: z.number() }).nullable(),
|
forked_from_project: z.object({ id: z.number() }).optional(),
|
||||||
archived: z.boolean(),
|
archived: z.boolean().optional(),
|
||||||
created_at: z.string().transform((value) => new Date(value)),
|
created_at: z.string().transform((value) => new Date(value)),
|
||||||
star_count: z.number(),
|
star_count: z.number(),
|
||||||
open_issues_count: z.number(),
|
open_issues_count: z.number().optional(),
|
||||||
forks_count: z.number(),
|
forks_count: z.number(),
|
||||||
})
|
})
|
||||||
.transform((resp) => ({
|
.transform((resp) => ({
|
||||||
projectUrl: resp.web_url,
|
projectUrl: resp.web_url,
|
||||||
projectDescription: resp.description,
|
projectDescription: resp.description,
|
||||||
isFork: resp.forked_from_project !== null,
|
isFork: resp.forked_from_project !== undefined,
|
||||||
isArchived: resp.archived,
|
isArchived: resp.archived,
|
||||||
createdAt: resp.created_at,
|
createdAt: resp.created_at,
|
||||||
starsCount: resp.star_count,
|
starsCount: resp.star_count,
|
||||||
|
|||||||
@@ -71,7 +71,7 @@ export const releasesRequestHandler = createCachedWidgetRequestHandler({
|
|||||||
detailsResult = parsedDetails.data;
|
detailsResult = parsedDetails.data;
|
||||||
} else {
|
} else {
|
||||||
detailsResult = undefined;
|
detailsResult = undefined;
|
||||||
logger.warn("Failed to parse details response", {
|
logger.warn(`Failed to parse details response for ${input.identifier} on ${input.providerKey}`, {
|
||||||
provider: input.providerKey,
|
provider: input.providerKey,
|
||||||
identifier: input.identifier,
|
identifier: input.identifier,
|
||||||
detailsUrl,
|
detailsUrl,
|
||||||
|
|||||||
@@ -253,12 +253,12 @@ const DetailsDisplay = ({ repository, toggleExpandedRepository }: DetailsDisplay
|
|||||||
<Group gap={5}>
|
<Group gap={5}>
|
||||||
<IconStar
|
<IconStar
|
||||||
size={12}
|
size={12}
|
||||||
color={repository.starsCount === 0 ? "var(--mantine-color-dimmed)" : "var(--mantine-color-text)"}
|
color={!repository.starsCount ? "var(--mantine-color-dimmed)" : "var(--mantine-color-text)"}
|
||||||
/>
|
/>
|
||||||
<Text size="xs" c={repository.starsCount === 0 ? "dimmed" : ""}>
|
<Text size="xs" c={!repository.starsCount ? "dimmed" : ""}>
|
||||||
{repository.starsCount === 0
|
{!repository.starsCount
|
||||||
? "-"
|
? "-"
|
||||||
: formatter.number(repository.starsCount ?? 0, {
|
: formatter.number(repository.starsCount, {
|
||||||
notation: "compact",
|
notation: "compact",
|
||||||
maximumFractionDigits: 1,
|
maximumFractionDigits: 1,
|
||||||
})}
|
})}
|
||||||
@@ -270,12 +270,12 @@ const DetailsDisplay = ({ repository, toggleExpandedRepository }: DetailsDisplay
|
|||||||
<Group gap={5}>
|
<Group gap={5}>
|
||||||
<IconGitFork
|
<IconGitFork
|
||||||
size={12}
|
size={12}
|
||||||
color={repository.forksCount === 0 ? "var(--mantine-color-dimmed)" : "var(--mantine-color-text)"}
|
color={!repository.forksCount ? "var(--mantine-color-dimmed)" : "var(--mantine-color-text)"}
|
||||||
/>
|
/>
|
||||||
<Text size="xs" c={repository.forksCount === 0 ? "dimmed" : ""}>
|
<Text size="xs" c={!repository.forksCount ? "dimmed" : ""}>
|
||||||
{repository.forksCount === 0
|
{!repository.forksCount
|
||||||
? "-"
|
? "-"
|
||||||
: formatter.number(repository.forksCount ?? 0, {
|
: formatter.number(repository.forksCount, {
|
||||||
notation: "compact",
|
notation: "compact",
|
||||||
maximumFractionDigits: 1,
|
maximumFractionDigits: 1,
|
||||||
})}
|
})}
|
||||||
@@ -287,12 +287,12 @@ const DetailsDisplay = ({ repository, toggleExpandedRepository }: DetailsDisplay
|
|||||||
<Group gap={5}>
|
<Group gap={5}>
|
||||||
<IconCircleDot
|
<IconCircleDot
|
||||||
size={12}
|
size={12}
|
||||||
color={repository.openIssues === 0 ? "var(--mantine-color-dimmed)" : "var(--mantine-color-text)"}
|
color={!repository.openIssues ? "var(--mantine-color-dimmed)" : "var(--mantine-color-text)"}
|
||||||
/>
|
/>
|
||||||
<Text size="xs" c={repository.openIssues === 0 ? "dimmed" : ""}>
|
<Text size="xs" c={!repository.openIssues ? "dimmed" : ""}>
|
||||||
{repository.openIssues === 0
|
{!repository.openIssues
|
||||||
? "-"
|
? "-"
|
||||||
: formatter.number(repository.openIssues ?? 0, {
|
: formatter.number(repository.openIssues, {
|
||||||
notation: "compact",
|
notation: "compact",
|
||||||
maximumFractionDigits: 1,
|
maximumFractionDigits: 1,
|
||||||
})}
|
})}
|
||||||
|
|||||||
Reference in New Issue
Block a user