diff --git a/src/app/api/activities/route.ts b/src/app/api/activities/route.ts new file mode 100644 index 0000000..cd54e71 --- /dev/null +++ b/src/app/api/activities/route.ts @@ -0,0 +1,9 @@ +export async function GET() { + try { + const res = await fetch("https://git.dvorakmortonxd.dev/api/v1/users/dvorakmortonxd/activities/feeds?limit=20"); + const data = await res.json(); + return Response.json(data); + } catch (e) { + return Response.json({ error: "failed to load" }, { status: 500 }); + } +} diff --git a/src/app/components/ContributionHeatmap.tsx b/src/app/components/ContributionHeatmap.tsx index d944ddb..3fa0bd6 100644 --- a/src/app/components/ContributionHeatmap.tsx +++ b/src/app/components/ContributionHeatmap.tsx @@ -12,6 +12,7 @@ export default function ContributionHeatmap() { const [loading, setLoading] = useState(true); const [error, setError] = useState(false); const [totalContribs, setTotalContribs] = useState(0); + const [activities, setActivities] = useState([]); useEffect(() => { async function fetchHeatmap() { @@ -73,7 +74,22 @@ export default function ContributionHeatmap() { } } + async function fetchActivities() { + try { + const res = await fetch("/api/activities"); + if (res.ok) { + const data = await res.json(); + // Filter to just standard push/commit events + const valid = data.filter((d: any) => d.op_type === "commit_repo" || d.op_type === "push_repo").slice(0, 3); + setActivities(valid); + } + } catch (err) { + console.error("Failed to load activities:", err); + } + } + fetchHeatmap(); + fetchActivities(); }, []); if (loading) { @@ -116,6 +132,41 @@ export default function ContributionHeatmap() {
More + + {activities.length > 0 && ( +
+
+ martin@git.dvorakmortonxd.dev:~$ git log -n 3 #displays my 3 latest contributions +
+ {activities.map((act, idx) => { + let msg = "No message"; + try { + if (act.content) { + const parsed = JSON.parse(act.content); + if (parsed.Commits && parsed.Commits.length > 0) { + msg = parsed.Commits[0].Message.split("\n")[0]; + } else if (parsed.HeadCommit) { + msg = parsed.HeadCommit.Message.split("\n")[0]; + } + } + } catch (e) {} + + return ( +
+
+ repo: {act.repo?.full_name || "unknown"} + + {new Date(act.created).toLocaleDateString()}-{new Date(act.created).toLocaleTimeString()} + +
+
+ {msg} +
+
+ ); + })} +
+ )} ); }