taevas.xyz/src/Infos/Coding/GitHub.tsx
Taevas a4496117f8 Replace some ButtonLinks with Links in Infos
(Coding's GitHub & Anime's AniList)
2025-02-26 20:26:39 +01:00

55 lines
1.5 KiB
TypeScript

import React, {useState, useEffect} from "react";
import Website from "../Website.js";
import DataHandler from "#Infos/DataHandler.js";
import Link from "#parts/Link.js";
export interface GithubInfo {
public?: {
repo: string;
date: string;
};
private?: {
date: string;
};
}
export default function GitHub() {
const {data, error, setError} = DataHandler<GithubInfo>("/.netlify/functions/github", 60 * 20);
const [elements, setElements] = useState([] as React.JSX.Element[]);
useEffect(() => {
if (data && (data.private ?? data.public)) {
try {
const elms: React.JSX.Element[] = [];
if (data.private) {
elms.push(
<p key={"github-date-private"} className={data.public ? "mb-2" : ""}>Latest <strong>private</strong> push: <strong>{data.private.date}</strong></p>,
);
}
if (data.public) {
elms.push(
<p key={"github-date-public"}>Latest <strong>public</strong> push: <strong>{data.public.date}</strong></p>,
);
elms.push(
<Link classes="mt-1 px-1 py-2 inline-block w-full font-bold leading-[18px] bg-white text-blue-800" link={`https://github.com/${data.public.repo}`} text={data.public.repo}/>
);
}
setElements(elms);
} catch {
setError(true);
}
}
}, [data]);
return (
<Website
name="GitHub"
link="https://github.com/TTTaevas"
elements={elements}
error={error}
/>
);
}