Fix gather extract: poll task status before download
This commit is contained in:
@@ -2594,7 +2594,23 @@ async function doExtract() {
|
||||
return;
|
||||
}
|
||||
|
||||
var blob = await r.blob();
|
||||
var taskData = await r.json();
|
||||
if (!taskData.task_id) {
|
||||
setInfo('Extract error: no task_id returned');
|
||||
return;
|
||||
}
|
||||
var taskId = taskData.task_id;
|
||||
setInfo('📥 Processing extract task...');
|
||||
|
||||
// Poll until done
|
||||
while (true) {
|
||||
await new Promise(function(resolve) { setTimeout(resolve, 2000); });
|
||||
var sr = await fetch(API + '/tasks/' + taskId);
|
||||
var sd = await sr.json();
|
||||
if (sd.status === 'done') {
|
||||
setInfo('📥 Downloading ZIP...');
|
||||
var dr = await fetch(API + '/tasks/' + taskId + '/download');
|
||||
var blob = await dr.blob();
|
||||
var url = URL.createObjectURL(blob);
|
||||
var a = document.createElement('a');
|
||||
a.href = url;
|
||||
@@ -2603,8 +2619,15 @@ async function doExtract() {
|
||||
a.click();
|
||||
document.body.removeChild(a);
|
||||
URL.revokeObjectURL(url);
|
||||
|
||||
setInfo('📥 Downloaded: ' + (blob.size / 1e6).toFixed(1) + ' MB');
|
||||
break;
|
||||
} else if (sd.status === 'error') {
|
||||
setInfo('Extract error: ' + (sd.error || 'unknown'));
|
||||
break;
|
||||
} else {
|
||||
setInfo('📥 Processing... ' + (sd.progress || ''));
|
||||
}
|
||||
}
|
||||
} catch(e) {
|
||||
setInfo('Extract error: ' + e.message);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user