diff --git a/appview/ogcard/client.go b/appview/ogcard/client.go index 44f019cf..98d6ba69 100644 --- a/appview/ogcard/client.go +++ b/appview/ogcard/client.go @@ -41,7 +41,7 @@ type RepositoryCardPayload struct { Stars int `json:"stars"` Pulls int `json:"pulls"` Issues int `json:"issues"` - UpdatedAt string `json:"updatedAt"` + CreatedAt string `json:"createdAt"` AvatarUrl string `json:"avatarUrl"` Languages []LanguageData `json:"languages"` } diff --git a/appview/ogcard/src/__tests__/fixtures.ts b/appview/ogcard/src/__tests__/fixtures.ts index c53fb02d..dce1f675 100644 --- a/appview/ogcard/src/__tests__/fixtures.ts +++ b/appview/ogcard/src/__tests__/fixtures.ts @@ -14,7 +14,7 @@ export const createRepoData = (avatarUrl: string): RepositoryCardData => ({ stars: 746, pulls: 82, issues: 176, - updatedAt: "updated 2 hours ago", + createdAt: "2026-01-29T00:00:00Z", avatarUrl, languages: [ { color: "#00ADD8", percentage: 50 }, @@ -43,7 +43,7 @@ export const createIssueData = ( ], commentCount: 12, reactionCount: 5, - createdAt: "29 jan 2026", + createdAt: "2026-01-29T00:00:00Z", ...overrides, }); @@ -64,7 +64,7 @@ export const createPullRequestData = ( rounds: 3, commentCount: 12, reactionCount: 31, - createdAt: "29 jan 2026", + createdAt: "2026-01-29T00:00:00Z", ...overrides, }); diff --git a/appview/ogcard/src/components/cards/repository.tsx b/appview/ogcard/src/components/cards/repository.tsx index 86810bc3..6459fff8 100644 --- a/appview/ogcard/src/components/cards/repository.tsx +++ b/appview/ogcard/src/components/cards/repository.tsx @@ -3,6 +3,7 @@ import { Avatar } from "../shared/avatar"; import { LanguageCircles } from "../shared/language-circles"; import { Metrics } from "../shared/metrics"; import { TangledLogo } from "../shared/logo"; +import { FooterStats } from "../shared/footer-stats"; import { TYPOGRAPHY } from "../shared/constants"; import type { RepositoryCardData } from "../../validation"; @@ -34,12 +35,10 @@ export function RepositoryCard(data: RepositoryCardData) { justifyContent: "space-between", flexGrow: 1, }}> -
- {data.updatedAt} -
+ ); -} \ No newline at end of file +} diff --git a/appview/ogcard/src/components/shared/footer-stats.tsx b/appview/ogcard/src/components/shared/footer-stats.tsx index 6e74f1f8..793819c9 100644 --- a/appview/ogcard/src/components/shared/footer-stats.tsx +++ b/appview/ogcard/src/components/shared/footer-stats.tsx @@ -4,8 +4,8 @@ import { StatItem } from "./stat-item"; interface FooterStatsProps { createdAt: string; - reactionCount: number; - commentCount: number; + reactionCount?: number; + commentCount?: number; } export function FooterStats({ @@ -13,9 +13,15 @@ export function FooterStats({ reactionCount, commentCount, }: FooterStatsProps) { + const formattedDate = new Intl.DateTimeFormat('en-GB', { + day: 'numeric', + month: 'short', + year: 'numeric', + }).format(new Date(createdAt)); + return ( - + {reactionCount ? ( ) : null} diff --git a/appview/ogcard/src/validation.ts b/appview/ogcard/src/validation.ts index 73f8b782..01f67f4e 100644 --- a/appview/ogcard/src/validation.ts +++ b/appview/ogcard/src/validation.ts @@ -14,7 +14,7 @@ export const repositoryCardSchema = z.object({ stars: z.number().int().min(0).max(1000000), pulls: z.number().int().min(0).max(100000), issues: z.number().int().min(0).max(100000), - updatedAt: z.string().max(100), + createdAt: z.string().max(100), avatarUrl: z.string().url(), languages: z.array(languageSchema).max(5), }); diff --git a/appview/repo/opengraph.go b/appview/repo/opengraph.go index b5e2bf52..46c677a6 100644 --- a/appview/repo/opengraph.go +++ b/appview/repo/opengraph.go @@ -80,8 +80,6 @@ func (rp *Repo) Opengraph(w http.ResponseWriter, r *http.Request) { }) } - updatedAt := f.Created - payload := ogcard.RepositoryCardPayload{ Type: "repository", RepoName: f.Name, @@ -89,7 +87,7 @@ func (rp *Repo) Opengraph(w http.ResponseWriter, r *http.Request) { Stars: f.RepoStats.StarCount, Pulls: f.RepoStats.PullCount.Open, Issues: f.RepoStats.IssueCount.Open, - UpdatedAt: updatedAt.Format(time.RFC3339), + CreatedAt: f.Created.Format(time.RFC3339), AvatarUrl: avatarUrl, Languages: ogLanguages, }