- {project.giteaInfo.language && (
-
+ {project.giteaInfo.languages.map(
+ (language: string) => (
+
+
+ {language}
+
+ ),
)}
{project.giteaInfo.updatedAt && (
diff --git a/src/utils/gitea.ts b/src/utils/gitea.ts
index 87835f3..c74ea0b 100644
--- a/src/utils/gitea.ts
+++ b/src/utils/gitea.ts
@@ -1,7 +1,5 @@
export interface GiteaRepoInfo {
- commits: number;
- releases: number;
- language: string;
+ languages: string[];
updatedAt: string;
size: number;
defaultBranch: string;
@@ -51,44 +49,29 @@ export async function fetchGiteaRepoInfo(
const data = await response.json();
- let commitsCount = 0;
+ let languages: string[] = [];
try {
- const commitsUrl = `${config.domain}/api/v1/repos/${config.owner}/${config.repo}/commits?limit=1&stat=false`;
- const commitsResponse = await fetch(commitsUrl, {
+ const languagesUrl = `${config.domain}/api/v1/repos/${config.owner}/${config.repo}/languages`;
+ const languagesResponse = await fetch(languagesUrl, {
headers: {
Accept: "application/json",
},
signal: AbortSignal.timeout(5000),
});
- if (commitsResponse.ok) {
- const totalCount = commitsResponse.headers.get("X-Total-Count");
- commitsCount = totalCount ? parseInt(totalCount, 10) : 0;
- }
- } catch (error) {
- // Ignore
- }
-
- let releasesCount = 0;
- try {
- const releasesUrl = `${config.domain}/api/v1/repos/${config.owner}/${config.repo}/releases`;
- const releasesResponse = await fetch(releasesUrl, {
- headers: {
- Accept: "application/json",
- },
- signal: AbortSignal.timeout(5000),
- });
- if (releasesResponse.ok) {
- const releases = await releasesResponse.json();
- releasesCount = Array.isArray(releases) ? releases.length : 0;
+ if (languagesResponse.ok) {
+ const languagesData = await languagesResponse.json();
+ // Gitea returns an object like { "TypeScript": 12345, "JavaScript": 6789 }
+ // Sort by usage (bytes) and extract language names
+ languages = Object.keys(languagesData).sort(
+ (a, b) => languagesData[b] - languagesData[a],
+ );
}
} catch (error) {
// Ignore
}
return {
- commits: commitsCount,
- releases: releasesCount,
- language: data.language || "Unknown",
+ languages: languages.length > 0 ? languages : [],
updatedAt: data.updated_at || data.pushed_at || "",
size: data.size || 0,
defaultBranch: data.default_branch || "main",