MCPcopy Create free account
hub / github.com/BingyanStudio/github-analyzer / Dashboard

Function Dashboard

web/src/pages/Dashboard.tsx:71–385  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

69}
70
71const Dashboard = () => {
72 const navigate = useNavigate();
73 const [userData, setUserData] = useState<GitHubUser | null>(null);
74 const [isLoading, setIsLoading] = useState(true);
75 const [presets, setPresets] = useState<Preset[]>([]);
76 const [selectedPreset, setSelectedPreset] = useState<string>("");
77
78 useEffect(() => {
79 const fetchData = async () => {
80 try {
81 setIsLoading(true);
82
83 // Fetch user data
84 const userResponse = await fetch("/api/user");
85 if (!userResponse.ok) {
86 throw new Error(`Failed to fetch user data: ${userResponse.status}`);
87 }
88 const userData = await userResponse.json();
89 setUserData(userData);
90
91 // Fetch presets
92 const presetsResponse = await fetch("/api/presets");
93 if (presetsResponse.ok) {
94 const presetsData = await presetsResponse.json();
95 setPresets(presetsData.presets || []);
96 if (presetsData.presets && presetsData.presets.length > 0) {
97 setSelectedPreset(presetsData.presets[0].name);
98 }
99 }
100 } catch (err) {
101 document.cookie =
102 "session=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;";
103 setTimeout(() => {
104 window.location.href = "/login";
105 }, 100);
106 console.error("Error fetching data:", err);
107 } finally {
108 setIsLoading(false);
109 }
110 };
111
112 fetchData();
113 }, []);
114
115 const handleLogout = () => {
116 document.cookie =
117 "session=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;";
118 setTimeout(() => {
119 window.location.href = "/login";
120 }, 100);
121 };
122
123 const handleGenerateReport = () => {
124 navigate(`/report${selectedPreset ? `?preset=${selectedPreset}` : ""}`);
125 };
126
127 if (isLoading) {
128 return (

Callers

nothing calls this directly

Calls 1

fetchDataFunction · 0.85

Tested by

no test coverage detected