MCPcopy Create free account
hub / github.com/OpenRaiser/PaperFlow / submitFeedback

Function submitFeedback

deployments/desktop/static/desktop.js:2530–2597  ·  view source on GitHub ↗
(generateReports)

Source from the content-addressed store, hash-verified

2528 }
2529
2530 async function submitFeedback(generateReports) {
2531 if (!state.push?.push_id) {
2532 showPaperFeedback("error", ui().papers.submitUnavailableTitle, ui().papers.submitUnavailableDetail);
2533 throw new Error(ui().papers.loadPushFirst);
2534 }
2535 const selectedNumbers = Array.from(state.selected);
2536 if (generateReports && !selectedNumbers.length) {
2537 showPaperFeedback("warning", ui().papers.chooseReadTitle, ui().papers.chooseReadDetail);
2538 showFeedbackToast("warning", ui().papers.chooseReadTitle, ui().papers.chooseReadToast);
2539 return;
2540 }
2541 if (generateReports && !(await ensureLlmReadyForReading())) {
2542 return;
2543 }
2544 const endpoint = generateReports ? "/api/submit" : "/api/feedback";
2545 const readingKeys = generateReports ? selectedNumbers.map((number) => paperReportKey(number)) : [];
2546 setSubmitButtonsBusy(true, generateReports);
2547 readingKeys.forEach((key) => state.paperReading.add(key));
2548 updateSelectionSummary();
2549 showPaperFeedback(
2550 "pending",
2551 generateReports ? ui().papers.submittingReportTitle : ui().papers.submittingFeedbackTitle,
2552 ui().papers.submittingDetail
2553 );
2554 try {
2555 const data = await api(endpoint, {
2556 method: "POST",
2557 body: JSON.stringify({
2558 user_id: currentUser(),
2559 push_id: state.push.push_id,
2560 selected_numbers: selectedNumbers,
2561 skipped_numbers: Array.from(state.skipped),
2562 later_numbers: Array.from(state.later),
2563 generate_reports: generateReports,
2564 write_feishu: $("writeFeishuReports")?.checked || false,
2565 response_language: responseLanguage()
2566 })
2567 });
2568 if (generateReports) {
2569 (data.reports?.created_docs || []).forEach((doc, index) => {
2570 const number = selectedNumbers[index];
2571 if (number && doc?.report_id) state.paperReports.set(paperReportKey(number), doc.report_id);
2572 });
2573 }
2574 showSubmitResult(data, generateReports);
2575 await loadWiki();
2576 if (generateReports) {
2577 const docs = data.reports?.created_docs || [];
2578 if (docs[0]?.report_id) {
2579 await openReport(docs[0].report_id);
2580 if (data.reports?.task?.task_id) {
2581 pollReadingTask(data.reports.task.task_id, docs[0].report_id).catch((error) => {
2582 showFeedbackToast("warning", "精读进度刷新失败", error.message || String(error));
2583 });
2584 }
2585 } else {
2586 setView("reports");
2587 }

Callers 1

bindEventsFunction · 0.85

Calls 15

showPaperFeedbackFunction · 0.85
uiFunction · 0.85
showFeedbackToastFunction · 0.85
ensureLlmReadyForReadingFunction · 0.85
paperReportKeyFunction · 0.85
setSubmitButtonsBusyFunction · 0.85
currentUserFunction · 0.85
responseLanguageFunction · 0.85
showSubmitResultFunction · 0.85
loadWikiFunction · 0.85
openReportFunction · 0.85
pollReadingTaskFunction · 0.85

Tested by

no test coverage detected