From e33cfda024097895be75ec9a0a575e25f9c77440 Mon Sep 17 00:00:00 2001 From: Priyanshu Verma Date: Sun, 3 Nov 2024 10:03:16 +0000 Subject: [PATCH] fixes: Chatbot and Images Separation, UI fixes --- app/api_routes.py | 8 +- client/bun.lockb | Bin 327868 -> 328590 bytes client/package.json | 1 + client/src/components/ChatbotCard.tsx | 36 +++---- client/src/components/ImageCard.tsx | 2 +- client/src/components/ui/tabs.tsx | 53 ++++++++++ client/src/lib/queries.ts | 4 +- client/src/pages/Hub.tsx | 134 ++++++++++++++++---------- client/src/pages/Profile.tsx | 76 +++++++++++---- 9 files changed, 214 insertions(+), 100 deletions(-) create mode 100644 client/src/components/ui/tabs.tsx diff --git a/app/api_routes.py b/app/api_routes.py index 1372c59..e375463 100644 --- a/app/api_routes.py +++ b/app/api_routes.py @@ -267,9 +267,7 @@ def api_delete_chatbot(chatbot_id: int) -> Union[Response, tuple[Response, int]] db.session.commit() return ( - jsonify( - {"message": f"Chatbot '{chatbot.id}' has been deleted successfully."} - ), + jsonify({"message": f"Chatbot '{chatbot.id}' has been deleted successfully."}), 200, ) @@ -560,6 +558,7 @@ def api_get_data(): "user_bots", "trend_today", "leaderboard", + "user_images", } queues = [q for q in queues if q in valid_queues] response = {"success": True} @@ -593,6 +592,9 @@ def api_get_data(): Chatbot.user_id == o_uid ).all() response["user_bots"] = [bot.to_dict() for bot in o_chatbots] + if "user_images" in queues: + o_images: List[Image] = Image.query.filter(Image.user_id == o_uid).all() + response["user_images"] = [image.to_dict() for image in o_images] if "trend_today" in queues: chatbot_of_the_day: Chatbot = ( diff --git a/client/bun.lockb b/client/bun.lockb index ca1da321ea6cec44b0b1065dabeb83da45f74f40..a846132afee0f935ff7c3f7bf58b9c9531c8fcc4 100755 GIT binary patch delta 59916 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 aNsfN%#8k_E>PAX33Q*gpKJZs(FaJNbFn(tM delta 59668 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¬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 Yqr6%}?Yz{jDA!BfI3;a}IwSsn0Dhs%=Kufz diff --git a/client/package.json b/client/package.json index c76c390..bdddee9 100644 --- a/client/package.json +++ b/client/package.json @@ -24,6 +24,7 @@ "@radix-ui/react-select": "^2.1.2", "@radix-ui/react-slot": "^1.1.0", "@radix-ui/react-switch": "^1.1.1", + "@radix-ui/react-tabs": "^1.1.1", "@tanstack/react-query": "^5.59.15", "axios": "^1.7.7", "class-variance-authority": "^0.7.0", diff --git a/client/src/components/ChatbotCard.tsx b/client/src/components/ChatbotCard.tsx index 3d77f00..f56c1de 100644 --- a/client/src/components/ChatbotCard.tsx +++ b/client/src/components/ChatbotCard.tsx @@ -1,12 +1,11 @@ import { Flag, Heart, MessageSquare, Share2, Trash2 } from "lucide-react"; // Import the Trash icon -import { useShareModal } from "@/stores/modal-store"; +import { useDeleteChatbotModal, useShareModal } from "@/stores/modal-store"; import { useMutation, useQueryClient } from "@tanstack/react-query"; -import { likeAndReport, deleteChatbot } from "@/lib/queries"; // Ensure you have a deleteChatbot function +import { likeAndReport } from "@/lib/queries"; // Ensure you have a deleteChatbot function import { Card, CardContent, CardFooter, CardHeader } from "./ui/card"; import { Avatar, AvatarFallback, AvatarImage } from "./ui/avatar"; import { Button } from "./ui/button"; import { Link, useNavigate } from "react-router-dom"; -import { toast } from "react-hot-toast"; // Optional for notifications export function ChatbotCard({ chatbot, @@ -18,31 +17,14 @@ export function ChatbotCard({ const shareModel = useShareModal(); const rq = useQueryClient(); const navigate = useNavigate(); - + const deleteModal = useDeleteChatbotModal(); const likeMutation = useMutation({ mutationFn: likeAndReport, onSuccess: () => rq.invalidateQueries({ queryKey: queryKeys }), }); - const deleteMutation = useMutation({ - mutationFn: deleteChatbot, // Your API function to delete a chatbot - onSuccess: () => { - rq.invalidateQueries({ queryKey: queryKeys }); - toast.success("Chatbot deleted successfully!"); // Notify the user - }, - onError: () => { - toast.error("Failed to delete the chatbot."); // Error handling - }, - }); - - const handleDelete = () => { - if (window.confirm("Are you sure you want to delete this chatbot?")) { - deleteMutation.mutate(String(chatbot.id)); // Convert to string - } - }; - return ( - + @@ -55,7 +37,9 @@ export function ChatbotCard({
-

{chatbot.latest_version.name}

+

+ {chatbot.latest_version.name} +

Created by @{chatbot.latest_version.modified_by}

@@ -134,7 +118,11 @@ export function ChatbotCard({
); diff --git a/client/src/pages/Profile.tsx b/client/src/pages/Profile.tsx index b876c8c..4f98377 100644 --- a/client/src/pages/Profile.tsx +++ b/client/src/pages/Profile.tsx @@ -14,6 +14,8 @@ import { LogOut, Settings, } from "lucide-react"; +import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs"; + import { Navigate, useParams } from "react-router-dom"; import { useSettingsModal, useUpdateProfileModal } from "@/stores/modal-store"; import { ChatbotCard } from "@/components/ChatbotCard"; @@ -21,6 +23,7 @@ import moment from "moment"; import { Badge } from "@/components/ui/badge"; import { useEffect, useState } from "react"; import { Skeleton } from "@/components/ui/skeleton"; +import { ImageCard } from "@/components/ImageCard"; export default function ProfilePage() { const { username } = useParams(); @@ -59,6 +62,16 @@ export default function ProfilePage() { enabled: !!userId, }); + const { + data: imagesData, + isLoading: imagesLoading, + error: imagesError, + } = useQuery({ + queryKey: ["user_images"], + queryFn: () => fetchData({ queues: ["user_images"], uid: userId }), + enabled: !!userId, + }); + if (isError && (error as AxiosError).response?.status === 404) { return ; // Redirect to the 404 page } @@ -168,25 +181,52 @@ export default function ProfilePage() {
-
- {botsLoading ? ( - - ) : botsError ? ( -
- {botsError?.message} + + + Chatbots + Images + + +
+ {botsLoading ? ( + + ) : botsError ? ( +
+ {botsError?.message} +
+ ) : botsData && botsData.user_bots!.length > 0 ? ( + botsData.user_bots!.map((item) => ( + + )) + ) : ( +
No bots available.
+ )}
- ) : botsData && botsData.user_bots!.length > 0 ? ( - botsData.user_bots!.map((item) => ( - - )) - ) : ( -
No bots available.
- )} -
+ + +
+ {imagesLoading ? ( + + ) : imagesError ? ( +
+ {imagesError?.message} +
+ ) : imagesData && imagesData.user_images!.length > 0 ? ( + imagesData.user_images!.map((item) => ( + + )) + ) : ( +
+ No Images available. +
+ )} +
+
+
);