diff --git a/crates/schema/database/sqlite_tasks/src/queries/list_tasks_by_provider_and_tokens.rs b/crates/schema/database/sqlite_tasks/src/queries/list_tasks_by_provider_and_tokens.rs index c2f0df08bc..5795f0c8bb 100644 --- a/crates/schema/database/sqlite_tasks/src/queries/list_tasks_by_provider_and_tokens.rs +++ b/crates/schema/database/sqlite_tasks/src/queries/list_tasks_by_provider_and_tokens.rs @@ -23,7 +23,7 @@ pub struct Task { pub id: TaskId, pub status: TaskStatus, pub task_type: TaskType, - pub model_type: TaskModelType, + pub model_type: Option, pub provider: GenerationProvider, pub provider_job_id: Option, pub frontend_caller: Option, @@ -37,7 +37,7 @@ struct RawTask { id: String, task_status: String, task_type: String, - model_type: String, + model_type: Option, provider: String, provider_job_id: Option, frontend_caller: Option, @@ -95,8 +95,10 @@ pub async fn list_tasks_by_provider_and_tokens( .map_err(|err| SqliteTasksError::TaskParseError(err))?, task_type: TaskType::from_str(&task.task_type) .map_err(|err| SqliteTasksError::TaskParseError(err))?, - model_type: TaskModelType::from_str(&task.model_type) - .map_err(|err| SqliteTasksError::TaskParseError(err))?, + model_type: task.model_type + .map(|model| TaskModelType::from_str(&model) + .map_err(|err| SqliteTasksError::TaskParseError(err))) + .transpose()?, provider: GenerationProvider::from_str(&task.provider) .map_err(|err| SqliteTasksError::TaskParseError(err))?, provider_job_id: task.provider_job_id, diff --git a/crates/schema/public/enums/src/tauri/tasks/task_model_type.rs b/crates/schema/public/enums/src/tauri/tasks/task_model_type.rs index 12e036f3f3..d65d80601d 100644 --- a/crates/schema/public/enums/src/tauri/tasks/task_model_type.rs +++ b/crates/schema/public/enums/src/tauri/tasks/task_model_type.rs @@ -98,7 +98,7 @@ impl TaskModelType { // 3D Object generation models "hunyuan_3d_2.0" => Ok(Self::Hunyuan3d2_0), "hunyuan_3d_2.1" => Ok(Self::Hunyuan3d2_1), - _ => Err(format!("invalid task_state: {:?}", job_status)), + _ => Err(format!("invalid task_model_type: {:?}", job_status)), } } diff --git a/crates/schema/public/enums/src/tauri/tasks/task_status.rs b/crates/schema/public/enums/src/tauri/tasks/task_status.rs index 01c1c6d659..542a4c6d65 100644 --- a/crates/schema/public/enums/src/tauri/tasks/task_status.rs +++ b/crates/schema/public/enums/src/tauri/tasks/task_status.rs @@ -59,7 +59,7 @@ impl TaskStatus { "cancelled_by_user" => Ok(Self::CancelledByUser), "cancelled_by_provider" => Ok(Self::CancelledByProvider), "cancelled_by_us" => Ok(Self::CancelledByUs), - _ => Err(format!("invalid task_state: {:?}", job_status)), + _ => Err(format!("invalid task_status: {:?}", job_status)), } } diff --git a/crates/schema/public/enums/src/tauri/tasks/task_type.rs b/crates/schema/public/enums/src/tauri/tasks/task_type.rs index 66864ec373..09bc69b549 100644 --- a/crates/schema/public/enums/src/tauri/tasks/task_type.rs +++ b/crates/schema/public/enums/src/tauri/tasks/task_type.rs @@ -38,7 +38,7 @@ impl TaskType { "video_generation" => Ok(Self::VideoGeneration), "object_generation" => Ok(Self::ObjectGeneration), "background_removal" => Ok(Self::BackgroundRemoval), - _ => Err(format!("invalid task_state: {:?}", job_status)), + _ => Err(format!("invalid task_type: {:?}", job_status)), } } diff --git a/frontend/apps/editor3d/app/src/pages/PageDraw/PageDraw.tsx b/frontend/apps/editor3d/app/src/pages/PageDraw/PageDraw.tsx index ab7c5fa8ad..ebdd58ad1a 100644 --- a/frontend/apps/editor3d/app/src/pages/PageDraw/PageDraw.tsx +++ b/frontend/apps/editor3d/app/src/pages/PageDraw/PageDraw.tsx @@ -15,6 +15,7 @@ import { setCanvasRenderBitmap } from "../../signals/canvasRenderBitmap"; import { captureStageImageBitmap } from "./hooks/useUpdateSnapshot"; import { ContextMenuContainer } from "./components/ui/ContextMenu"; import { FalBackgroundRemoval } from "@storyteller/tauri-api"; +import { EnqueueImageBgRemoval } from "@storyteller/tauri-api"; import { getCreatorIcon, IMAGE_MODELS_BY_LABEL, ModelCreator, ModelInfo } from "@storyteller/model-list"; import { instructiveImageEditModels, ModelCategory, ModelSelector, useModelSelectorStore } from "@storyteller/ui-model-selector"; @@ -385,6 +386,13 @@ const PageDraw = () => { // ... // Call API, on success, return a File object parsed from base64. // ... + + const response = await EnqueueImageBgRemoval({ + base64_image: image_base64, + }); + + + /* const response = await FalBackgroundRemoval({ base64_image: image_base64, }); @@ -407,6 +415,8 @@ const PageDraw = () => { type: blob.type, }); return { success: true, file }; + */ + return {} } catch (error) { console.error("Failed to remove background", error); return { success: false };