Fix gather extract: poll task status before download
This commit is contained in:
@@ -2594,7 +2594,23 @@ async function doExtract() {
|
|||||||
return;
|
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 url = URL.createObjectURL(blob);
|
||||||
var a = document.createElement('a');
|
var a = document.createElement('a');
|
||||||
a.href = url;
|
a.href = url;
|
||||||
@@ -2603,8 +2619,15 @@ async function doExtract() {
|
|||||||
a.click();
|
a.click();
|
||||||
document.body.removeChild(a);
|
document.body.removeChild(a);
|
||||||
URL.revokeObjectURL(url);
|
URL.revokeObjectURL(url);
|
||||||
|
|
||||||
setInfo('📥 Downloaded: ' + (blob.size / 1e6).toFixed(1) + ' MB');
|
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) {
|
} catch(e) {
|
||||||
setInfo('Extract error: ' + e.message);
|
setInfo('Extract error: ' + e.message);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user