Fix: Restore fallback to check recent downloads

When the persistent queue is empty (e.g., after extension reload),
fall back to checking recent downloads from Chrome downloads API.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
2026-01-15 15:14:04 +01:00
parent 3e86bb126b
commit 724940ebf7

View File

@@ -164,7 +164,6 @@ async function loadPDFQueue() {
const exists = pdfQueue.some(p => p.url === currentTabPDF.url);
if (!exists) {
console.log('[Popup] Adding current tab PDF to queue:', currentTabPDF.filename);
// Add to queue (will be added to persistent queue when user interacts)
const entry: PDFQueueEntry = {
...currentTabPDF,
status: 'pending'
@@ -173,10 +172,71 @@ async function loadPDFQueue() {
}
}
// Fallback: check recent downloads if queue is still empty
if (pdfQueue.length === 0) {
console.log('[Popup] Queue empty, checking recent downloads...');
const recentPDFs = await checkRecentDownloads();
for (const pdf of recentPDFs) {
const exists = pdfQueue.some(p => p.url === pdf.url);
if (!exists) {
pdfQueue.push({
...pdf,
status: 'pending'
});
}
}
}
// Render the list
renderPDFList();
}
/**
* Check recent downloads for PDFs (fallback mechanism)
*/
async function checkRecentDownloads(): Promise<DetectedPDF[]> {
return new Promise((resolve) => {
chrome.downloads.search(
{
limit: 20,
orderBy: ['-startTime']
},
(items) => {
console.log('[Popup] Checked recent downloads:', items.length, 'items');
const pdfs: DetectedPDF[] = [];
for (const item of items) {
if (
item.state === 'complete' &&
(item.filename.toLowerCase().endsWith('.pdf') || item.mime === 'application/pdf')
) {
let domain = 'unknown';
try {
const urlObj = new URL(item.url);
domain = urlObj.hostname;
} catch (e) {
// Keep default
}
pdfs.push({
id: `download-${item.id}`,
filename: item.filename.split('/').pop() || item.filename,
url: item.url,
size: item.fileSize,
timestamp: new Date(item.startTime).getTime(),
sourceDomain: domain
});
}
}
console.log('[Popup] Found', pdfs.length, 'PDF downloads');
resolve(pdfs);
}
);
});
}
/**
* Render the PDF list
*/