From 3db889cdbc4b1a36ec63f3cc68f12e11b2452495 Mon Sep 17 00:00:00 2001 From: bflatastic Date: Mon, 21 Apr 2025 12:22:02 +0700 Subject: [PATCH] after ok is clicked open the mine tab and category of uploaded object --- .../reusable/UploadModal3D/UploadModal3D.tsx | 27 ++++++++++++++++++- .../PageEnigma/comps/AssetMenu/AssetModal.tsx | 14 ++++++++-- 2 files changed, 38 insertions(+), 3 deletions(-) diff --git a/frontend/apps/editor3d/app/src/components/reusable/UploadModal3D/UploadModal3D.tsx b/frontend/apps/editor3d/app/src/components/reusable/UploadModal3D/UploadModal3D.tsx index 486904c536..f3658dc39b 100644 --- a/frontend/apps/editor3d/app/src/components/reusable/UploadModal3D/UploadModal3D.tsx +++ b/frontend/apps/editor3d/app/src/components/reusable/UploadModal3D/UploadModal3D.tsx @@ -19,6 +19,7 @@ import { CHARACTER_MIXAMO_FILE_TYPE, IMAGEPLANE_FILE_TYPE, } from "~/enums"; +import { assetModalVisible } from "~/pages/PageEnigma/signals"; interface Props { onClose: () => void; @@ -43,6 +44,15 @@ const categoryFileTypes: Partial> = { [FilterEngineCategories.CREATURE]: Object.values(OBJECT_FILE_TYPE), }; +// Map engine categories to asset modal tabs +const categoryToAssetTab: Partial> = { + [FilterEngineCategories.OBJECT]: "objects", + [FilterEngineCategories.CHARACTER]: "character", + [FilterEngineCategories.IMAGE_PLANE]: "image-planes", + [FilterEngineCategories.LOCATION]: "sets", + [FilterEngineCategories.CREATURE]: "creatures", +}; + // Excluded category options for the upload modal const categoryOptions = Object.entries(FilterEngineCategories) .filter( @@ -139,10 +149,25 @@ export function UploadModal3D({ case UploaderStates.success: return ( { onSuccess(); onClose(); + // Store the selected category and tab in sessionStorage + const assetTab = categoryToAssetTab[selectedCategory]; + if (assetTab) { + sessionStorage.setItem( + "lastUploadedCategory", + selectedCategory, + ); + sessionStorage.setItem("lastUploadedTab", assetTab); + // Reopen the asset modal + assetModalVisible.value = true; + } else { + // Clear any existing stored values if we don't have a valid tab + sessionStorage.removeItem("lastUploadedCategory"); + sessionStorage.removeItem("lastUploadedTab"); + } }} /> ); diff --git a/frontend/apps/editor3d/app/src/pages/PageEnigma/comps/AssetMenu/AssetModal.tsx b/frontend/apps/editor3d/app/src/pages/PageEnigma/comps/AssetMenu/AssetModal.tsx index 24505ffc0d..dbb21cbbec 100644 --- a/frontend/apps/editor3d/app/src/pages/PageEnigma/comps/AssetMenu/AssetModal.tsx +++ b/frontend/apps/editor3d/app/src/pages/PageEnigma/comps/AssetMenu/AssetModal.tsx @@ -92,14 +92,24 @@ export const AssetModal = () => { useEffect(() => { if (assetModalVisible.value) { + // Check for stored category and tab from upload + const lastUploadedTab = sessionStorage.getItem("lastUploadedTab"); + if (lastUploadedTab) { + setActiveLibraryTab("mine"); + setActiveAssetTab(lastUploadedTab); + // Clear the stored values + sessionStorage.removeItem("lastUploadedTab"); + sessionStorage.removeItem("lastUploadedCategory"); + } // Small delay to ensure the modal is fully mounted const timer = setTimeout(() => { searchInputRef.current?.focus(); }, 100); return () => clearTimeout(timer); } - return undefined; // Return for the false case - }, []); + return undefined; + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [assetModalVisible.value]); // Fetch objects for different categories const {