From d18fe388324a557125def2e5061c9d8d1543ffba Mon Sep 17 00:00:00 2001 From: Maya Date: Tue, 10 Mar 2026 21:40:17 +0300 Subject: [PATCH] feat: add "partially ready" status checks if one or the other of mediabunny/vertd is ready and shows "partially ready" --- messages/en.json | 1 + src/lib/converters/converter.svelte.ts | 2 +- src/lib/converters/mediabunny.svelte.ts | 9 +++++++++ src/routes/+page.svelte | 17 +++++++++++++++-- src/routes/convert/+page.svelte | 12 ------------ 5 files changed, 26 insertions(+), 15 deletions(-) diff --git a/messages/en.json b/messages/en.json index 73ce8d1..de1c67d 100644 --- a/messages/en.json +++ b/messages/en.json @@ -31,6 +31,7 @@ "status": { "text": "Status: {status}", "ready": "ready", + "partially_ready": "partially ready", "not_ready": "not ready", "not_initialized": "not initialized", "downloading": "downloading...", diff --git a/src/lib/converters/converter.svelte.ts b/src/lib/converters/converter.svelte.ts index 10313eb..76a2315 100644 --- a/src/lib/converters/converter.svelte.ts +++ b/src/lib/converters/converter.svelte.ts @@ -6,7 +6,7 @@ import type { SettingDefinition, } from "$lib/types/conversion-settings"; -export type WorkerStatus = "not-ready" | "downloading" | "ready" | "error"; +export type WorkerStatus = "not-ready" | "downloading" | "ready" | "partially-ready" | "error"; export class FormatInfo { public name: string; diff --git a/src/lib/converters/mediabunny.svelte.ts b/src/lib/converters/mediabunny.svelte.ts index d0171c0..cf5a1a8 100644 --- a/src/lib/converters/mediabunny.svelte.ts +++ b/src/lib/converters/mediabunny.svelte.ts @@ -225,6 +225,15 @@ export class MediabunnyConverter extends Converter { // additional mediabunny coders // currently the official ones -- maybe add our own in the future this.initializeCodecs(); + + // don't know how to check if mediabunny is ready rn, maybe test smol conversion or run some other method? shrug + if (typeof Conversion === "undefined") { + this.status = "not-ready"; + this.error("Mediabunny failed to load"); + } else { + this.status = "ready"; + this.log("Mediabunny loaded successfully"); + } } private async initializeCodecs(): Promise { diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte index 954ad0d..90a669d 100644 --- a/src/routes/+page.svelte +++ b/src/routes/+page.svelte @@ -75,12 +75,23 @@ .filter((f) => f !== "none") .join(", "); + const mediabunnyStatus = converters.find( + (c) => c.name === "mediabunny", + )?.status; + const vertdReady = $vertdLoaded === true; + const mediabunnyReady = mediabunnyStatus === "ready"; + const videoStatus = + vertdReady && mediabunnyReady + ? "ready" + : vertdReady || mediabunnyReady + ? "partially-ready" + : "not-ready"; + output.Video = { formats, icon: Film, title: m["upload.cards.video"](), - // TODO: add "partial" state? somehow figure out diff between vertd and mediabunny - status: $vertdLoaded === true ? "ready" : "not-ready", // not using converter.status for this + status: videoStatus as WorkerStatus, }; } @@ -109,6 +120,8 @@ switch (status) { case "downloading": return m["upload.cards.status.downloading"](); + case "partially-ready": + return m["upload.cards.status.partially_ready"](); case "ready": return m["upload.cards.status.ready"](); default: diff --git a/src/routes/convert/+page.svelte b/src/routes/convert/+page.svelte index 533d1a3..d47f983 100644 --- a/src/routes/convert/+page.svelte +++ b/src/routes/convert/+page.svelte @@ -15,7 +15,6 @@ files, gradientColor, showGradient, - vertdLoaded, dropdownStates, } from "$lib/store/index.svelte"; import { VertFile } from "$lib/types"; @@ -335,17 +334,6 @@ })}

- {:else if isVideo && !$vertdLoaded && !isAudio && !isImage && !isDocument} -
-

- {m["convert.errors.cant_convert"]()} -

-

- {m["convert.errors.vertd_not_found"]()} -

-
{:else}