feat: job retry message

This commit is contained in:
Maya 2026-02-09 21:22:52 +03:00
parent 5ef8b4f34e
commit 1c5cd9ea17
No known key found for this signature in database
2 changed files with 26 additions and 5 deletions

View File

@ -108,6 +108,7 @@
"vertd_details_error_message": "<b>Error message:</b> [view_link]View error logs[/view_link]", "vertd_details_error_message": "<b>Error message:</b> [view_link]View error logs[/view_link]",
"vertd_details_close": "Close", "vertd_details_close": "Close",
"vertd_ratelimit": "Your video, '{filename}', has failed to convert a few times. To prevent server overload, further conversion attempts for this file have been temporarily blocked. Please try again later.", "vertd_ratelimit": "Your video, '{filename}', has failed to convert a few times. To prevent server overload, further conversion attempts for this file have been temporarily blocked. Please try again later.",
"vertd_retry": "Retrying video conversion for {filename} with different settings due to failure. This may take longer than usual.",
"unsupported_format": "Only image, video, audio, and document files are supported", "unsupported_format": "Only image, video, audio, and document files are supported",
"format_output_only": "This format can currently only be used as output (converted to), not as input.", "format_output_only": "This format can currently only be used as output (converted to), not as input.",
"vertd_not_found": "Could not find the vertd instance to start video conversion. Are you sure the instance URL is set correctly?", "vertd_not_found": "Could not find the vertd instance to start video conversion. Are you sure the instance URL is set correctly?",

View File

@ -6,6 +6,7 @@ import { VertdInstance } from "$lib/sections/settings/vertdSettings.svelte";
import { VertFile } from "$lib/types"; import { VertFile } from "$lib/types";
import { Converter, FormatInfo } from "./converter.svelte"; import { Converter, FormatInfo } from "./converter.svelte";
import { PUB_DISABLE_FAILURE_BLOCKS } from "$env/static/public"; import { PUB_DISABLE_FAILURE_BLOCKS } from "$env/static/public";
import { ToastManager } from "$lib/util/toast.svelte";
interface UploadResponse { interface UploadResponse {
id: string; id: string;
@ -124,6 +125,13 @@ interface JobCancelledMessage {
}; };
} }
interface JobRetriedMessage {
type: "jobRetried";
data: {
jobId: string;
};
}
interface FpsProgress { interface FpsProgress {
type: "fps"; type: "fps";
data: number; data: number;
@ -142,6 +150,7 @@ type VertdMessage =
| ProgressMessage | ProgressMessage
| CancelJobMessage | CancelJobMessage
| JobCancelledMessage | JobCancelledMessage
| JobRetriedMessage
| CompletedMessage; | CompletedMessage;
const progressEstimates = { const progressEstimates = {
@ -370,7 +379,7 @@ export class VertdConverter extends Converter {
ws.onopen = () => { ws.onopen = () => {
const speed = Settings.instance.settings.vertdSpeed; const speed = Settings.instance.settings.vertdSpeed;
const keepMetadata = Settings.instance.settings.metadata; const keepMetadata = Settings.instance.settings.metadata;
this.log("opened ws connection to vertd"); this.log(`opened ws connection to vertd for file ${input.name}`);
const msg: StartJobMessage = { const msg: StartJobMessage = {
type: "startJob", type: "startJob",
data: { data: {
@ -382,12 +391,12 @@ export class VertdConverter extends Converter {
}, },
}; };
ws.send(JSON.stringify(msg)); ws.send(JSON.stringify(msg));
this.log("sent startJob message"); this.log(`sent startJob message for file ${input.name}`);
}; };
ws.onmessage = async (e) => { ws.onmessage = async (e) => {
const msg: VertdMessage = JSON.parse(e.data); const msg: VertdMessage = JSON.parse(e.data);
this.log(`received message ${msg.type}`); this.log(`received message ${msg.type} for file ${input.name}`);
switch (msg.type) { switch (msg.type) {
case "progressUpdate": { case "progressUpdate": {
const data = msg.data; const data = msg.data;
@ -400,8 +409,19 @@ export class VertdConverter extends Converter {
break; break;
} }
case "jobRetried": {
this.log(`job retrying for file ${input.name}`);
ToastManager.add({
type: "error",
message: m["convert.errors.vertd_retry"]({
filename: input.name,
}),
});
break;
}
case "jobFinished": { case "jobFinished": {
this.log("job finished"); this.log(`job finished for file ${input.name}`);
ws.close(); ws.close();
this.activeConversions.delete(input.id); this.activeConversions.delete(input.id);
const url = `${apiUrl}/api/download/${msg.data.jobId}/${uploadRes.auth}`; const url = `${apiUrl}/api/download/${msg.data.jobId}/${uploadRes.auth}`;
@ -467,7 +487,7 @@ export class VertdConverter extends Converter {
}, },
}; };
ws.send(JSON.stringify(cancelMsg)); ws.send(JSON.stringify(cancelMsg));
this.log("sent cancelJob message"); this.log(`sent cancelJob message for file ${input.name}`);
} }
ws.close(); ws.close();