diff --git a/src/store/ref-resource.ts b/src/store/ref-resource.ts index d6deb9f..6a3eba5 100644 --- a/src/store/ref-resource.ts +++ b/src/store/ref-resource.ts @@ -152,11 +152,27 @@ export default function useRefResource() { if (result) { return result.watermarked_video_url || result.marked_url; } + // DONE but task_result missing: query task details once to recover embedded url result. + for (let i = doneTasks.length - 1; i >= 0; i--) { + const doneTask = doneTasks[i]; + if (!doneTask.task_id) continue; + const dbTask = await getTask(doneTask.task_id); + if (!dbTask) continue; + const recovered = get_task_result(dbTask); + if (recovered) { + doneTask.task_result = recovered as any; + await request({url: "/api/v1/ws/update_ref_resource", method: "POST", data: resource}); + return (recovered as any).watermarked_video_url || (recovered as any).marked_url; + } + } } if (tsTasks.every(t => t.task_status === TaskStatuses.FAILED)) { // retry task_submitted = false; + } else if (tsTasks.every(t => isTaskFinished(t.task_status))) { + // all finished but still no usable url -> allow re-submit watermark task + task_submitted = false; } else { // read new status let task_id = tsTasks.find(t => !isTaskFinished(t.task_status))?.task_id as string | undefined;