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

Function handleRegenerateReport

web/src/pages/Report.tsx:168–270  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

166
167 // Function to handle report regeneration
168 const handleRegenerateReport = async () => {
169 try {
170 setIsLoading(true);
171 setError(null);
172 setReport("");
173 setStatusMessage("准备重新生成报告...");
174
175 const url = selectedPreset
176 ? `/api/report?preset=${encodeURIComponent(
177 selectedPreset
178 )}&force_regen=true`
179 : "/api/report?force_regen=true";
180
181 // Check if the browser supports EventSource
182 if (typeof EventSource !== "undefined") {
183 setIsStreaming(true);
184
185 const eventSource = new EventSource(url + "&stream=true", {
186 withCredentials: true,
187 });
188
189 // Handle different event types
190 eventSource.addEventListener("chunk", (event) => {
191 try {
192 const data = JSON.parse(event.data);
193 setReport((prev) => (prev || "") + data.content);
194 } catch (err) {
195 console.log(err);
196 // If it's not valid JSON, treat it as plain text
197 setReport((prev) => (prev || "") + event.data);
198 }
199 });
200
201 eventSource.addEventListener("status", (event) => {
202 try {
203 const data = JSON.parse(event.data);
204 setStatusMessage(data.message);
205 } catch (err) {
206 console.error("Error parsing status message:", err);
207 }
208 });
209
210 eventSource.addEventListener("complete", (event) => {
211 try {
212 const data = JSON.parse(event.data);
213 if (data.message) {
214 setReport(data.message);
215 }
216 setStatusMessage("报告重新生成完成");
217 setTimeout(() => setStatusMessage(null), 3000);
218 } catch (err) {
219 console.error("Error parsing complete message:", err);
220 } finally {
221 eventSource.close();
222 setIsStreaming(false);
223 setIsLoading(false);
224 }
225 });

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected