import React, { useEffect, useState } from 'react'; const GithubHistory = () => { const [events, setEvents] = useState([]); const [loading, setLoading] = useState(true); const [error, setError] = useState(null); useEffect(() => { const fetchEvents = async () => { try { const response = await fetch('https://api.github.com/users/MatissJurevics/events/public?per_page=5'); if (!response.ok) { throw new Error('Failed to fetch GitHub history'); } const data = await response.json(); setEvents(data); } catch (err) { setError(err.message); } finally { setLoading(false); } }; fetchEvents(); }, []); const getEventMessage = (event) => { switch (event.type) { case 'PushEvent': return `Pushed to ${event.repo.name.replace('MatissJurevics/', '')}`; case 'CreateEvent': return `Created ${event.payload.ref_type} in ${event.repo.name.replace('MatissJurevics/', '')}`; case 'WatchEvent': return `Starred ${event.repo.name.replace('MatissJurevics/', '')}`; case 'PullRequestEvent': return `${event.payload.action} PR in ${event.repo.name.replace('MatissJurevics/', '')}`; default: return `${event.type} on ${event.repo.name.replace('MatissJurevics/', '')}`; } }; const formatDate = (dateString) => { const date = new Date(dateString); return new Intl.DateTimeFormat('en-US', { month: 'short', day: 'numeric', hour: '2-digit', minute: '2-digit' }).format(date); }; if (loading) { return (
LOADING HISTORY...
); } if (error) { return (
ERROR LOAD GITHUB DATA
); } return (

Github
History

{events.map(event => (
e.currentTarget.style.borderColor = '#ff4d00'} onMouseLeave={(e) => e.currentTarget.style.borderColor = '#333'} >

{formatDate(event.created_at)}

{getEventMessage(event)}

))}
VIEW FULL PROFILE →
); }; export default GithubHistory;