()
| 5439 | } |
| 5440 | |
| 5441 | function bindEvents() { |
| 5442 | bindButtonFeedback(); |
| 5443 | $("languageSelect")?.addEventListener("change", (event) => setLocale(event.target.value)); |
| 5444 | document.querySelectorAll(".rail-item").forEach((button) => { |
| 5445 | button.addEventListener("click", () => setView(button.dataset.view)); |
| 5446 | }); |
| 5447 | window.addEventListener("hashchange", () => setView(window.location.hash.slice(1) || "papers", false)); |
| 5448 | $("refreshUsersBtn").addEventListener("click", () => runAction(async () => { |
| 5449 | await loadUsers(); |
| 5450 | await loadCurrentProfile(); |
| 5451 | }, "刷新用户")); |
| 5452 | $("userSelect").addEventListener("change", () => { |
| 5453 | state.dailyPollToken += 1; |
| 5454 | setDailyTaskState("", "", false); |
| 5455 | state.currentUser = currentUser(); |
| 5456 | runAction(async () => { |
| 5457 | startNewChat({ silent: true }); |
| 5458 | await loadLatestPush(); |
| 5459 | await loadWiki(); |
| 5460 | await loadCurrentProfile(); |
| 5461 | if (document.querySelector(".view.active")?.id === "chat") { |
| 5462 | await loadChatSessions({ openLatest: true }); |
| 5463 | } |
| 5464 | await resumeDailyTask(); |
| 5465 | }, "切换用户"); |
| 5466 | }); |
| 5467 | |
| 5468 | $("paperDate").value = todayDateValue(); |
| 5469 | syncDateControls(); |
| 5470 | $("prevDayBtn").addEventListener("click", () => shiftDate(-1)); |
| 5471 | $("nextDayBtn").addEventListener("click", () => shiftDate(1)); |
| 5472 | $("paperDate").addEventListener("change", syncDateControls); |
| 5473 | $("daysInput").addEventListener("change", syncDateControls); |
| 5474 | $("runDailyBtn").addEventListener("click", () => runAction(runDaily, "拉取论文")); |
| 5475 | $("sortRelevanceBtn")?.addEventListener("click", () => { |
| 5476 | if (!state.push?.papers?.length) { |
| 5477 | showFeedbackToast("warning", ui().papers.noSortableTitle, ui().papers.noSortableDetail); |
| 5478 | return; |
| 5479 | } |
| 5480 | state.push.papers.sort((a, b) => Number(b.score || 0) - Number(a.score || 0)); |
| 5481 | renderPush(state.push); |
| 5482 | showFeedbackToast("success", ui().papers.sortedTitle, ui().papers.sortedDetail(state.push.papers.length)); |
| 5483 | }); |
| 5484 | $("paperList").addEventListener("click", (event) => { |
| 5485 | const button = event.target.closest("[data-action]"); |
| 5486 | if (!button) return; |
| 5487 | const number = Number(button.dataset.number); |
| 5488 | if (button.dataset.action === "read") { |
| 5489 | runAction(() => readSinglePaper(number), "选择精读论文"); |
| 5490 | return; |
| 5491 | } else if (button.dataset.action === "skip") { |
| 5492 | setPaperDisposition(number, "skip"); |
| 5493 | } else if (button.dataset.action === "later") { |
| 5494 | setPaperDisposition(number, "later"); |
| 5495 | } |
| 5496 | }); |
| 5497 | $("selectAllSourcesBtn").addEventListener("click", () => { |
| 5498 | toggleAllSources(true); |
no test coverage detected