import React, { useState, useEffect, useCallback } from 'react'; import { useFetchGithubCommits } from '@/hooks/githubQueries/useFetchGithubCommits'; import { Tooltip } from 'primereact/tooltip'; const GithubContributionChart = ({ username }) => { const [contributionData, setContributionData] = useState({}); const [totalCommits, setTotalCommits] = useState(0); const { data: commits, isLoading, isFetching } = useFetchGithubCommits(username); const getColor = useCallback((count) => { if (count === 0) return 'bg-gray-100'; if (count < 5) return 'bg-green-300'; if (count < 10) return 'bg-green-400'; if (count < 20) return 'bg-green-600'; return 'bg-green-700'; }, []); const generateCalendar = useCallback(() => { const today = new Date(); const sixMonthsAgo = new Date(today.getFullYear(), today.getMonth() - 5, 1); const calendar = []; for (let d = new Date(sixMonthsAgo); d <= today; d.setDate(d.getDate() + 1)) { const dateString = d.toISOString().split('T')[0]; const count = contributionData[dateString] || 0; calendar.push({ date: new Date(d), count }); } return calendar; }, [contributionData]); useEffect(() => { if (commits) { let commitCount = 0; const newContributionData = {}; commits.forEach(commit => { const date = commit.commit.author.date.split('T')[0]; newContributionData[date] = (newContributionData[date] || 0) + 1; commitCount++; }); setContributionData(newContributionData); setTotalCommits(commitCount); console.log(`Total commits fetched: ${commitCount}`); } }, [commits]); const calendar = generateCalendar(); return (
Loading contribution data... ({totalCommits} commits fetched)
} {!isLoading && !isFetching &&Total commits: {totalCommits}