From babede2474fc74d78fd910f4376025d6f4bc89ed Mon Sep 17 00:00:00 2001 From: Priyanshu Verma Date: Sun, 3 Nov 2024 12:06:02 +0000 Subject: [PATCH 1/3] feat: Image generation modal with enhanced feature --- app/api_routes.py | 1 - client/bun.lockb | Bin 328590 -> 330328 bytes client/package.json | 2 + client/src/components/Navbar.tsx | 6 +- .../src/components/modals/command-modal.tsx | 9 +- client/src/components/modals/imgine-modal.tsx | 166 ++++++++++++++++++ client/src/contexts/modals.tsx | 2 + client/src/stores/modal-store.ts | 1 + 8 files changed, 175 insertions(+), 12 deletions(-) create mode 100644 client/src/components/modals/imgine-modal.tsx diff --git a/app/api_routes.py b/app/api_routes.py index e375463..14778e9 100644 --- a/app/api_routes.py +++ b/app/api_routes.py @@ -479,7 +479,6 @@ def api_create_image() -> Response: else: data = request.get_json() prompt: str = data.get("query") - print(prompt, user.id) image: Image = Image( prompt=prompt, user_id=user.id, diff --git a/client/bun.lockb b/client/bun.lockb index a846132afee0f935ff7c3f7bf58b9c9531c8fcc4..da1cb57abe945794cb9bd28d31e01cd52d2918f0 100755 GIT binary patch delta 63099 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 K-XQ()+y5Uf))5Z? diff --git a/client/package.json b/client/package.json index bdddee9..4777af4 100644 --- a/client/package.json +++ b/client/package.json @@ -26,6 +26,7 @@ "@radix-ui/react-switch": "^1.1.1", "@radix-ui/react-tabs": "^1.1.1", "@tanstack/react-query": "^5.59.15", + "@types/react-lazy-load-image-component": "^1.6.4", "axios": "^1.7.7", "class-variance-authority": "^0.7.0", "clsx": "^2.1.1", @@ -38,6 +39,7 @@ "react-dom": "^18.3.1", "react-hook-form": "^7.53.1", "react-hot-toast": "^2.4.1", + "react-lazy-load-image-component": "^1.6.2", "react-markdown": "^9.0.1", "react-router-dom": "^6.27.0", "react-scroll-to-top": "^3.0.0", diff --git a/client/src/components/Navbar.tsx b/client/src/components/Navbar.tsx index b10e6a6..50ad163 100644 --- a/client/src/components/Navbar.tsx +++ b/client/src/components/Navbar.tsx @@ -24,11 +24,7 @@ export default function Navbar() { Hub -
  • - - Imagine - -
  • + {user == null ? ( <>
  • diff --git a/client/src/components/modals/command-modal.tsx b/client/src/components/modals/command-modal.tsx index 784553c..c554bc4 100644 --- a/client/src/components/modals/command-modal.tsx +++ b/client/src/components/modals/command-modal.tsx @@ -23,6 +23,7 @@ import { } from "lucide-react"; import { useCreateChatbotModal, + useImagineModal, useSettingsModal, useTranslateMagicModal, useTtsMagicModal, @@ -34,6 +35,7 @@ export function CommandModal() { const createBotModal = useCreateChatbotModal(); const settingsModal = useSettingsModal(); + const imagineModal = useImagineModal(); const ttsModal = useTtsMagicModal(); const translateModal = useTranslateMagicModal(); const navigate = useNavigate(); @@ -80,12 +82,7 @@ export function CommandModal() { Translate Magic - { - setOpen(false); - navigate("/imagine"); - }} - > + imagineModal.onOpen()}> Generate Images diff --git a/client/src/components/modals/imgine-modal.tsx b/client/src/components/modals/imgine-modal.tsx new file mode 100644 index 0000000..8e8e787 --- /dev/null +++ b/client/src/components/modals/imgine-modal.tsx @@ -0,0 +1,166 @@ +import { + AlertDialog, + AlertDialogContent, + AlertDialogDescription, + AlertDialogFooter, + AlertDialogHeader, + AlertDialogTitle, +} from "@/components/ui/alert-dialog"; +import { imageSrc, SERVER_URL } from "@/lib/utils"; +import { useImagineModal } from "@/stores/modal-store"; +import axios from "axios"; +import { Button } from "../ui/button"; +import toast from "react-hot-toast"; +import { Textarea } from "../ui/textarea"; +import { Pickaxe, X } from "lucide-react"; +import { useState } from "react"; +import { Skeleton } from "../ui/skeleton"; + +export default function ImagineModal() { + const modal = useImagineModal(); + const [text, setText] = useState(""); + const [loading, setLoading] = useState(false); + const [generated, setGenerated] = useState(false); + const [imagePrompt, setImagePrompt] = useState(null); + + const GenerateImage = async () => { + if (text.length <= 3) { + toast.error("Come on write something unique."); + return; + } + setGenerated(false); + setImagePrompt(""); + setImagePrompt(text); + setGenerated(true); + }; + + const SaveImage = async () => { + setLoading(true); + try { + if (imagePrompt && imagePrompt.length <= 3) { + toast.error("Come on write something unique."); + return; + } + const token = localStorage.getItem("token"); + + const authHeaders = { + Authorization: `Bearer ${token || ""}`, + }; + const response = await axios.post( + `${SERVER_URL}/api/imagine`, + { + query: imagePrompt, + }, + { + headers: authHeaders, + } + ); + if (response.data.success) { + setImagePrompt(""); + setGenerated(false); + setText(""); + } else { + toast.error("Error in saving image"); + } + } catch (error: any) { + const errorMessage = + error.response?.data?.message || + error.message || + "An unexpected error occurred."; + toast.error(errorMessage); + console.log("[GENERATION_ERROR]", error); + } finally { + setLoading(false); + } + }; + + return ( + modal.onClose()}> + + + +
    +

    Imgine a image and generate it

    + +
    +
    + + Let's see how you imagination is. I know you are creative enough. + +
    + {generated && imagePrompt && ( +
    + +
    + )} +
    +