front: refresh ref_resource before reporting watermark transcoding
Made-with: Cursor
This commit is contained in:
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user