front: refresh ref_resource before reporting watermark transcoding

Made-with: Cursor
This commit is contained in:
2026-04-27 10:53:05 +08:00
parent f5ad926bf9
commit 968ed4ab09
+25 -1
View File
@@ -22,6 +22,18 @@ export default function useRefResource() {
store.dataset[resource.resource_url] = resource;
}
const normalize_resource_url = (value?: string) => (value || '').split('?')[0].trim();
const resolve_resource_by_url = (url: string): RefResource | undefined => {
const direct = store.dataset[url];
if (direct) return direct;
const normalized = normalize_resource_url(url);
if (!normalized) return undefined;
const keyMatch = Object.keys(store.dataset).find(k => normalize_resource_url(k) === normalized);
if (keyMatch) return store.dataset[keyMatch];
return Object.values(store.dataset).find(r => normalize_resource_url(r.resource_url) === normalized);
}
const get_task_result = (dbTask: CommonTask) => {
try {
if (dbTask.payload) {
@@ -106,12 +118,24 @@ export default function useRefResource() {
};
const recur_check = async (url: string, user_id: string): Promise<string | undefined> => {
let resource = store.dataset[url];
let resource = resolve_resource_by_url(url);
if (!resource) return undefined;
let tasks = (resource.tasks?.vals || []).filter(t => t.task_type === TaskTypes.WATERMARK);
const from_embedded = extract_watermark_url_from_vals(resource.tasks?.vals);
if (from_embedded) return from_embedded;
// local cache may lag behind DB (e.g. only TS row with null task_result). refresh once from ws.
if (resource.id) {
const fresh = await request({url: `/api/v1/ws/find_ref_resource_by_id/${resource.id}`});
if (fresh.r && fresh.d) {
resource = fresh.d;
push(resource);
const refreshed = extract_watermark_url_from_vals(resource.tasks?.vals);
if (refreshed) return refreshed;
tasks = (resource.tasks?.vals || []).filter(t => t.task_type === TaskTypes.WATERMARK);
}
}
let task_submitted = false;
if (tasks.length > 0) {
let tsTasks = tasks.filter(t => t.task_from === TaskFrom.TaskServer);