diff --git a/apps/ai-game-creator-shell/src-tauri/src/commands.rs b/apps/ai-game-creator-shell/src-tauri/src/commands.rs index 85115930e..a4aa7e7e0 100644 --- a/apps/ai-game-creator-shell/src-tauri/src/commands.rs +++ b/apps/ai-game-creator-shell/src-tauri/src/commands.rs @@ -7,7 +7,7 @@ const UI_EDITOR_FONT_MAX_COUNT: usize = 64; #[derive(Clone, Debug, Deserialize)] #[serde(rename_all = "camelCase")] -struct AssetImportRequirements { +pub(crate) struct AssetImportRequirements { max_items: usize, max_file_size_bytes: Option, max_total_size_bytes: Option, @@ -15,15 +15,19 @@ struct AssetImportRequirements { #[derive(Clone, Debug, Deserialize)] #[serde(rename_all = "camelCase")] -struct AssetImportPolicy { +pub(crate) struct AssetImportPolicy { destination: String, accepted_media_types: Vec, accepted_extensions: Vec, } #[derive(Debug, Deserialize)] -#[serde(tag = "source", rename_all = "camelCase")] -pub enum UiEditorAssetImportRequest { +#[serde( + tag = "source", + rename_all = "camelCase", + rename_all_fields = "camelCase" +)] +pub(crate) enum UiEditorAssetImportRequest { Local { project_path: String, local_source_paths: Vec, @@ -38,6 +42,29 @@ pub enum UiEditorAssetImportRequest { }, } +#[cfg(test)] +mod ui_editor_asset_import_request_tests { + use super::UiEditorAssetImportRequest; + + #[test] + fn local_request_accepts_tauri_camel_case_fields() { + let request = serde_json::from_value::(serde_json::json!({ + "source": "local", + "projectPath": "/project", + "localSourcePaths": ["/source/font.ttf"], + "localPolicy": { + "destination": "assets/fonts", + "acceptedMediaTypes": ["font/ttf"], + "acceptedExtensions": ["ttf"] + }, + "localRequirements": { "maxItems": 64 } + })) + .expect("deserialize local import request"); + + assert!(matches!(request, UiEditorAssetImportRequest::Local { .. })); + } +} + fn validate_asset_import_policy(policy: &AssetImportPolicy) -> Result { let normalized_destination = policy.destination.trim(); let is_font = normalized_destination == "assets/fonts"; diff --git a/apps/ai-game-creator-shell/src/components/AssetImporter/index.tsx b/apps/ai-game-creator-shell/src/components/AssetImporter/index.tsx index 9b6493369..8e560bc7b 100644 --- a/apps/ai-game-creator-shell/src/components/AssetImporter/index.tsx +++ b/apps/ai-game-creator-shell/src/components/AssetImporter/index.tsx @@ -38,7 +38,7 @@ export type { RemoteAssetCandidate, } from './utils'; -const ROOT_PATH = '/'; +const ROOT_PATH = ''; export type AssetImporterProps = { open: boolean; @@ -387,7 +387,7 @@ export function AssetImporter({ panelClassName="flex h-[min(760px,92dvh)] w-[min(1100px,96vw)] min-w-0 flex-col overflow-hidden rounded-2xl shadow-2xl" >
-

+

{settings.icon} {settings.title}

@@ -412,6 +412,7 @@ export function AssetImporter({ ) : null}