From 1ef1e176293561376ba8afe444511dcab2acc3d8 Mon Sep 17 00:00:00 2001 From: pablodanswer Date: Wed, 16 Oct 2024 12:00:29 -0700 Subject: [PATCH] validated --- backend/danswer/configs/app_configs.py | 2 +- .../server/features/notifications/api.py | 2 - .../danswer/server/features/persona/api.py | 3 - .../docker_compose/docker-compose.dev.yml | 2 +- .../docker_compose/docker-compose.gpu-dev.yml | 2 +- .../docker-compose.search-testing.yml | 2 +- .../app/assistants/mine/AssistantsList.tsx | 66 ++++++++++--------- web/src/app/chat/ChatPage.tsx | 4 -- .../components/chat_search/Notification.tsx | 1 - .../components/context/AssisantsContext.tsx | 50 +++++++++----- web/src/components/user/UserProvider.tsx | 1 - 11 files changed, 74 insertions(+), 61 deletions(-) diff --git a/backend/danswer/configs/app_configs.py b/backend/danswer/configs/app_configs.py index 2497730bf..0d8b7da70 100644 --- a/backend/danswer/configs/app_configs.py +++ b/backend/danswer/configs/app_configs.py @@ -134,7 +134,7 @@ POSTGRES_PASSWORD = urllib.parse.quote_plus( os.environ.get("POSTGRES_PASSWORD") or "password" ) POSTGRES_HOST = os.environ.get("POSTGRES_HOST") or "localhost" -POSTGRES_PORT = os.environ.get("POSTGRES_PORT") or "5433" +POSTGRES_PORT = os.environ.get("POSTGRES_PORT") or "5432" POSTGRES_DB = os.environ.get("POSTGRES_DB") or "postgres" POSTGRES_API_SERVER_POOL_SIZE = int( diff --git a/backend/danswer/server/features/notifications/api.py b/backend/danswer/server/features/notifications/api.py index 61f2f36a0..c0ae1483d 100644 --- a/backend/danswer/server/features/notifications/api.py +++ b/backend/danswer/server/features/notifications/api.py @@ -26,8 +26,6 @@ def get_notifications_api( NotificationModel.from_model(notif) for notif in get_notifications(user, db_session, include_dismissed=False) ] - print(user) - print(len(notificatinos)) return notificatinos diff --git a/backend/danswer/server/features/persona/api.py b/backend/danswer/server/features/persona/api.py index b9f00c1e1..4168a7995 100644 --- a/backend/danswer/server/features/persona/api.py +++ b/backend/danswer/server/features/persona/api.py @@ -232,8 +232,6 @@ def list_personas( include_deleted: bool = False, persona_ids: list[int] = Query(None), ) -> list[PersonaSnapshot]: - print("LISTING PERSONAS") - print("user", user) personas = get_personas( user=user, include_deleted=include_deleted, @@ -254,7 +252,6 @@ def list_personas( and not is_image_generation_available(db_session=db_session) ) ] - print(len(personas)) return [PersonaSnapshot.from_model(p) for p in personas] diff --git a/deployment/docker_compose/docker-compose.dev.yml b/deployment/docker_compose/docker-compose.dev.yml index 910e2934c..6f4619f83 100644 --- a/deployment/docker_compose/docker-compose.dev.yml +++ b/deployment/docker_compose/docker-compose.dev.yml @@ -312,7 +312,7 @@ services: - POSTGRES_USER=${POSTGRES_USER:-postgres} - POSTGRES_PASSWORD=${POSTGRES_PASSWORD:-password} ports: - - "5433:5432" + - "5432:5432" volumes: - db_volume:/var/lib/postgresql/data diff --git a/deployment/docker_compose/docker-compose.gpu-dev.yml b/deployment/docker_compose/docker-compose.gpu-dev.yml index 03e436a2e..6397f657c 100644 --- a/deployment/docker_compose/docker-compose.gpu-dev.yml +++ b/deployment/docker_compose/docker-compose.gpu-dev.yml @@ -312,7 +312,7 @@ services: - POSTGRES_USER=${POSTGRES_USER:-postgres} - POSTGRES_PASSWORD=${POSTGRES_PASSWORD:-password} ports: - - "5433:5432" + - "5432:5432" volumes: - db_volume:/var/lib/postgresql/data diff --git a/deployment/docker_compose/docker-compose.search-testing.yml b/deployment/docker_compose/docker-compose.search-testing.yml index 2afd54e02..fab950c06 100644 --- a/deployment/docker_compose/docker-compose.search-testing.yml +++ b/deployment/docker_compose/docker-compose.search-testing.yml @@ -157,7 +157,7 @@ services: - POSTGRES_USER=${POSTGRES_USER:-postgres} - POSTGRES_PASSWORD=${POSTGRES_PASSWORD:-password} ports: - - "5433" + - "5432" volumes: - db_volume:/var/lib/postgresql/data diff --git a/web/src/app/assistants/mine/AssistantsList.tsx b/web/src/app/assistants/mine/AssistantsList.tsx index b4200b635..4834079cf 100644 --- a/web/src/app/assistants/mine/AssistantsList.tsx +++ b/web/src/app/assistants/mine/AssistantsList.tsx @@ -1,6 +1,12 @@ "use client"; -import React, { Dispatch, SetStateAction, useEffect, useState } from "react"; +import React, { + Dispatch, + SetStateAction, + use, + useEffect, + useState, +} from "react"; import { MinimalUserSnapshot, User } from "@/lib/types"; import { Persona } from "@/app/admin/assistants/interfaces"; import { Button, Divider } from "@tremor/react"; @@ -62,6 +68,7 @@ import { } from "@/lib/assistants/utils"; import { CustomTooltip } from "@/components/tooltip/CustomTooltip"; import { useAssistants } from "@/components/context/AssisantsContext"; +import { useUser } from "@/components/user/UserProvider"; function DraggableAssistantListItem(props: any) { const { @@ -285,27 +292,20 @@ function AssistantListItem({ ); } -export function AssistantsList({ user }: { user: User | null }) { - const { assistants } = useAssistants(); - // Define the distinct groups of assistants - const { visibleAssistants, hiddenAssistants } = classifyAssistants( - user, - assistants - ); +export function AssistantsList() { + const { + assistants, + ownedButHiddenAssistants, + finalAssistants, + refreshAssistants, + } = useAssistants(); - const [currentlyVisibleAssistants, setCurrentlyVisibleAssistants] = useState< - Persona[] - >([]); + const [currentlyVisibleAssistants, setCurrentlyVisibleAssistants] = + useState(finalAssistants); useEffect(() => { - const orderedAssistants = orderAssistantsForUser(visibleAssistants, user); - setCurrentlyVisibleAssistants(orderedAssistants); - }, [assistants, user]); - - const ownedButHiddenAssistants = getUserCreatedAssistants( - user, - hiddenAssistants - ); + setCurrentlyVisibleAssistants(finalAssistants); + }, [finalAssistants]); const allAssistantIds = assistants.map((assistant) => assistant.id.toString() @@ -316,6 +316,8 @@ export function AssistantsList({ user }: { user: User | null }) { null ); + const { refreshUser, user } = useUser(); + const { popup, setPopup } = usePopup(); const router = useRouter(); const { data: users } = useSWR( @@ -334,18 +336,22 @@ export function AssistantsList({ user }: { user: User | null }) { const { active, over } = event; if (over && active.id !== over.id) { - setCurrentlyVisibleAssistants((assistants) => { - const oldIndex = assistants.findIndex( - (a) => a.id.toString() === active.id - ); - const newIndex = assistants.findIndex( - (a) => a.id.toString() === over.id - ); - const newAssistants = arrayMove(assistants, oldIndex, newIndex); + const oldIndex = currentlyVisibleAssistants.findIndex( + (item) => item.id.toString() === active.id + ); + const newIndex = currentlyVisibleAssistants.findIndex( + (item) => item.id.toString() === over.id + ); + const updatedAssistants = arrayMove( + currentlyVisibleAssistants, + oldIndex, + newIndex + ); - updateUserAssistantList(newAssistants.map((a) => a.id)); - return newAssistants; - }); + setCurrentlyVisibleAssistants(updatedAssistants); + await updateUserAssistantList(updatedAssistants.map((a) => a.id)); + await refreshUser(); + await refreshAssistants(); } } diff --git a/web/src/app/chat/ChatPage.tsx b/web/src/app/chat/ChatPage.tsx index ff7a385cf..890062767 100644 --- a/web/src/app/chat/ChatPage.tsx +++ b/web/src/app/chat/ChatPage.tsx @@ -101,10 +101,6 @@ import ExceptionTraceModal from "@/components/modals/ExceptionTraceModal"; import { SEARCH_TOOL_NAME } from "./tools/constants"; import { useUser } from "@/components/user/UserProvider"; import { ApiKeyModal } from "@/components/llm/ApiKeyModal"; -import { - classifyAssistants, - orderAssistantsForUser, -} from "@/lib/assistants/utils"; import BlurBackground from "./shared_chat_search/BlurBackground"; import { NoAssistantModal } from "@/components/modals/NoAssistantModal"; import { useAssistants } from "@/components/context/AssisantsContext"; diff --git a/web/src/components/chat_search/Notification.tsx b/web/src/components/chat_search/Notification.tsx index 4170beae9..ab4405013 100644 --- a/web/src/components/chat_search/Notification.tsx +++ b/web/src/components/chat_search/Notification.tsx @@ -8,7 +8,6 @@ import { import { errorHandlingFetcher } from "@/lib/fetcher"; import { AssistantIcon } from "@/components/assistants/AssistantIcon"; import { addAssistantToList } from "@/lib/assistants/updateAssistantPreferences"; -import { useChatContext } from "../context/ChatContext"; import { useAssistants } from "../context/AssisantsContext"; import { useUser } from "../user/UserProvider"; diff --git a/web/src/components/context/AssisantsContext.tsx b/web/src/components/context/AssisantsContext.tsx index edf70276b..52b698115 100644 --- a/web/src/components/context/AssisantsContext.tsx +++ b/web/src/components/context/AssisantsContext.tsx @@ -1,22 +1,19 @@ "use client"; -import React, { - createContext, - useState, - useEffect, - useContext, - useMemo, -} from "react"; +import React, { createContext, useState, useContext, useMemo } from "react"; import { Persona } from "@/app/admin/assistants/interfaces"; -import { User } from "@/lib/types"; import { classifyAssistants, orderAssistantsForUser, + getUserCreatedAssistants, } from "@/lib/assistants/utils"; import { useUser } from "../user/UserProvider"; interface AssistantsContextProps { assistants: Persona[]; + visibleAssistants: Persona[]; + hiddenAssistants: Persona[]; finalAssistants: Persona[]; + ownedButHiddenAssistants: Persona[]; refreshAssistants: () => Promise; } @@ -43,27 +40,48 @@ export const AssistantsProvider: React.FC<{ }); if (!response.ok) throw new Error("Failed to fetch assistants"); const assistants = await response.json(); - console.log("ASSISTANTS ARE", assistants); setAssistants(assistants); } catch (error) { console.error("Error refreshing assistants:", error); } }; - const { finalAssistants } = useMemo(() => { - const { visibleAssistants } = classifyAssistants(user, assistants); - console.log("VISIBLE ASSISTANTS", visibleAssistants); - + const { + visibleAssistants, + hiddenAssistants, + finalAssistants, + ownedButHiddenAssistants, + } = useMemo(() => { + const { visibleAssistants, hiddenAssistants } = classifyAssistants( + user, + assistants + ); const finalAssistants = user ? orderAssistantsForUser(visibleAssistants, user) : visibleAssistants; - console.log("FINAL ASSISTANTS", finalAssistants); - return { finalAssistants }; + const ownedButHiddenAssistants = getUserCreatedAssistants( + user, + hiddenAssistants + ); + + return { + visibleAssistants, + hiddenAssistants, + finalAssistants, + ownedButHiddenAssistants, + }; }, [user, assistants]); return ( {children} diff --git a/web/src/components/user/UserProvider.tsx b/web/src/components/user/UserProvider.tsx index 04d7aec20..5e7bb7535 100644 --- a/web/src/components/user/UserProvider.tsx +++ b/web/src/components/user/UserProvider.tsx @@ -24,7 +24,6 @@ export function UserProvider({ children }: { children: React.ReactNode }) { try { const user = await getCurrentUser(); setUser(user); - console.log("user has been updated"); setIsAdmin(user?.role === UserRole.ADMIN); setIsCurator( user?.role === UserRole.CURATOR || user?.role == UserRole.GLOBAL_CURATOR