(taskId, immediatePush = null, userId = currentUser(), pollToken = state.dailyPollToken)
| 2349 | } |
| 2350 | |
| 2351 | async function pollDailyTask(taskId, immediatePush = null, userId = currentUser(), pollToken = state.dailyPollToken) { |
| 2352 | if (!taskId) { |
| 2353 | renderPush(immediatePush || { papers: [], metadata: { total_fetched: 0, paper_count: 0 } }); |
| 2354 | await loadWiki(); |
| 2355 | return; |
| 2356 | } |
| 2357 | setDailyTaskState(taskId, userId, true); |
| 2358 | while (pollToken === state.dailyPollToken) { |
| 2359 | const data = await api(`/api/daily/status?task_id=${encodeURIComponent(taskId)}&user_id=${encodeURIComponent(userId)}`); |
| 2360 | if (pollToken !== state.dailyPollToken || currentUser() !== userId) return; |
| 2361 | const task = data.task; |
| 2362 | if (!task) break; |
| 2363 | if (task.status === "completed") { |
| 2364 | renderPush(task.push || { papers: [], metadata: { total_fetched: 0, paper_count: 0 } }); |
| 2365 | await loadWiki(); |
| 2366 | return; |
| 2367 | } |
| 2368 | if (task.status === "failed") { |
| 2369 | throw new Error(task.error || ui().papers.pullFailed); |
| 2370 | } |
| 2371 | renderDailyTaskStatus(task); |
| 2372 | await new Promise((resolve) => window.setTimeout(resolve, 900)); |
| 2373 | } |
| 2374 | } |
| 2375 | |
| 2376 | async function resumeDailyTask() { |
| 2377 | if (state.dailyPolling) return; |
no test coverage detected