From 5738ab3f250f53fe80b161e9229fe4241b961173 Mon Sep 17 00:00:00 2001 From: maurin schickli Date: Thu, 5 Dec 2024 13:07:22 +0100 Subject: [PATCH 1/3] Fix moved hook --- src/features/persona-page/add-new-persona.tsx | 6 +++--- src/features/prompt-page/add-new-prompt.tsx | 6 +++--- src/features/ui/markdown/citation-slider.tsx | 5 ++--- 3 files changed, 8 insertions(+), 9 deletions(-) diff --git a/src/features/persona-page/add-new-persona.tsx b/src/features/persona-page/add-new-persona.tsx index 52cb67a94..48353c948 100644 --- a/src/features/persona-page/add-new-persona.tsx +++ b/src/features/persona-page/add-new-persona.tsx @@ -1,8 +1,8 @@ "use client"; import { useSession } from "next-auth/react"; -import { FC } from "react"; -import { useFormState, useFormStatus } from "react-dom"; +import { FC, useActionState } from "react"; +import { useFormStatus } from "react-dom"; import { ServerActionResponse } from "../common/server-action-response"; import { Button } from "../ui/button"; import { Input } from "../ui/input"; @@ -35,7 +35,7 @@ export const AddNewPersona: FC = (props) => { const { isOpened, persona } = usePersonaState(); - const [formState, formAction] = useFormState( + const [formState, formAction] = useActionState( addOrUpdatePersona, initialState ); diff --git a/src/features/prompt-page/add-new-prompt.tsx b/src/features/prompt-page/add-new-prompt.tsx index 57fc114f5..125e7041f 100644 --- a/src/features/prompt-page/add-new-prompt.tsx +++ b/src/features/prompt-page/add-new-prompt.tsx @@ -7,8 +7,8 @@ import { SheetTitle, } from "@/ui/sheet"; import { useSession } from "next-auth/react"; -import { FC } from "react"; -import { useFormState, useFormStatus } from "react-dom"; +import { FC, useActionState } from "react"; +import { useFormStatus } from "react-dom"; import { ServerActionResponse } from "../common/server-action-response"; import { Button } from "../ui/button"; import { Input } from "../ui/input"; @@ -26,7 +26,7 @@ export const AddPromptSlider: FC = (props) => { const { isOpened, prompt } = usePromptState(); - const [formState, formAction] = useFormState(addOrUpdatePrompt, initialState); + const [formState, formAction] = useActionState(addOrUpdatePrompt, initialState); const { data } = useSession(); diff --git a/src/features/ui/markdown/citation-slider.tsx b/src/features/ui/markdown/citation-slider.tsx index 1e3ab7c15..cf77e0247 100644 --- a/src/features/ui/markdown/citation-slider.tsx +++ b/src/features/ui/markdown/citation-slider.tsx @@ -6,8 +6,7 @@ import { SheetTitle, SheetTrigger, } from "@/ui/sheet"; -import { FC } from "react"; -import { useFormState } from "react-dom"; +import { FC, useActionState } from "react"; import { ScrollArea } from "../scroll-area"; import { useMarkdownContext } from "./markdown-context"; @@ -22,7 +21,7 @@ export const CitationSlider: FC = (props) => { if (!onCitationClick) throw new Error("onCitationClick is null"); - const [node, formAction] = useFormState(onCitationClick, null); + const [node, formAction] = useActionState(onCitationClick, null); return (
From 3dd811ea8064c56379b090ef9fc6be63acea2041 Mon Sep 17 00:00:00 2001 From: maurin schickli Date: Thu, 12 Dec 2024 17:44:03 +0100 Subject: [PATCH 2/3] Fix: Application crashes / ui --- src/features/chat-home-page/chat-home.tsx | 1 + .../chat-header/extension-detail.tsx | 3 ++- .../extensions-page/extension-page.tsx | 2 +- src/features/main-menu/main-menu.tsx | 20 ++++++++++++---- src/features/main-menu/menu-tray.tsx | 1 + src/features/persona-page/add-new-persona.tsx | 5 +--- .../persona-card/persona-card.tsx | 3 ++- src/features/persona-page/persona-page.tsx | 7 ++++-- src/features/persona-page/persona-store.ts | 23 +++++++++++-------- src/features/prompt-page/prompt-page.tsx | 2 +- .../reporting-page/reporting-page.tsx | 2 +- src/features/ui/hero.tsx | 2 +- 12 files changed, 46 insertions(+), 25 deletions(-) diff --git a/src/features/chat-home-page/chat-home.tsx b/src/features/chat-home-page/chat-home.tsx index 2996bbe0d..d7ecce624 100644 --- a/src/features/chat-home-page/chat-home.tsx +++ b/src/features/chat-home-page/chat-home.tsx @@ -64,6 +64,7 @@ export const ChatHome: FC = (props) => { persona={persona} key={persona.id} showContextMenu={false} + showActionMenu={false} /> ); })} diff --git a/src/features/chat-page/chat-header/extension-detail.tsx b/src/features/chat-page/chat-header/extension-detail.tsx index 7221ddc32..3af667339 100644 --- a/src/features/chat-page/chat-header/extension-detail.tsx +++ b/src/features/chat-page/chat-header/extension-detail.tsx @@ -46,7 +46,8 @@ export const ExtensionDetail: FC = (props) => { diff --git a/src/features/extensions-page/extension-page.tsx b/src/features/extensions-page/extension-page.tsx index f0a53d7af..85fb4541a 100644 --- a/src/features/extensions-page/extension-page.tsx +++ b/src/features/extensions-page/extension-page.tsx @@ -14,7 +14,7 @@ export const ExtensionPage: FC = (props) => {
-
+
{props.extensions.map((extension) => { return ( diff --git a/src/features/main-menu/main-menu.tsx b/src/features/main-menu/main-menu.tsx index 19279aaa8..156f8dc9d 100644 --- a/src/features/main-menu/main-menu.tsx +++ b/src/features/main-menu/main-menu.tsx @@ -39,24 +39,36 @@ export const MainMenu = async () => { - + - + - + {user.isAdmin && ( <> - + diff --git a/src/features/main-menu/menu-tray.tsx b/src/features/main-menu/menu-tray.tsx index 91710b4bf..483f9d5a7 100644 --- a/src/features/main-menu/menu-tray.tsx +++ b/src/features/main-menu/menu-tray.tsx @@ -9,6 +9,7 @@ export const MenuTray = React.forwardRef< React.HTMLAttributes >(({ className, ...props }, ref) => { const { isMenuOpen } = useMenuState(); + return (
= (props) => { const [formState, formAction] = useActionState( addOrUpdatePersona, - initialState + initialState, ); const { data } = useSession(); @@ -55,8 +55,6 @@ export const AddNewPersona: FC = (props) => { } }; - const store = personaStore; - return ( = (props) => { Persona - = (props) => { @@ -25,7 +26,7 @@ export const PersonaCard: FC = (props) => { {persona.name} - {props.showContextMenu && ( + {props.showActionMenu && (
diff --git a/src/features/persona-page/persona-page.tsx b/src/features/persona-page/persona-page.tsx index 415fcef41..627dcee49 100644 --- a/src/features/persona-page/persona-page.tsx +++ b/src/features/persona-page/persona-page.tsx @@ -5,6 +5,8 @@ import { PersonaCard } from "./persona-card/persona-card"; import { PersonaHero } from "./persona-hero/persona-hero"; import { PersonaModel } from "./persona-services/models"; import { ExtensionModel } from "../extensions-page/extension-services/models"; +import { useSession } from "next-auth/react"; +import { userHashedId } from "../auth-page/helpers"; interface ChatPersonaProps { personas: PersonaModel[]; @@ -16,14 +18,15 @@ export const ChatPersonaPage: FC = (props) => {
-
+
- {props.personas.map((persona) => { + {props.personas.map(async (persona) => { return ( ); })} diff --git a/src/features/persona-page/persona-store.ts b/src/features/persona-page/persona-store.ts index 2db4690f9..989e2323e 100644 --- a/src/features/persona-page/persona-store.ts +++ b/src/features/persona-page/persona-store.ts @@ -16,14 +16,14 @@ class PersonaState { isPublished: false, type: "PERSONA", userId: "", - extensionIds: [] + extensionIds: [], }; public isOpened: boolean = false; public errors: string[] = []; public persona: PersonaModel = { ...this.defaultModel }; - public addExtension(id: string): void{ + public addExtension(id: string): void { if (!this.persona.extensionIds) { this.persona.extensionIds = []; } @@ -34,8 +34,10 @@ class PersonaState { if (!this.persona.extensionIds) { return; } - this.persona.extensionIds = this.persona.extensionIds.filter((e) => e !== id); - }; + this.persona.extensionIds = this.persona.extensionIds.filter( + (e) => e !== id + ); + } public updateOpened(value: boolean) { this.isOpened = value; @@ -81,10 +83,14 @@ export const usePersonaState = () => { }; export const addOrUpdatePersona = async (previous: any, formData: FormData) => { - personaStore.updateErrors([]); - const model = FormDataToPersonaModel(formData); - model.extensionIds = personaStore.persona.extensionIds.map((e) => e); + + if (personaStore.persona.extensionIds) { + model.extensionIds = personaStore.persona.extensionIds.map((e) => e); + } + + console.log("model", model); + const response = model.id && model.id !== "" ? await UpsertPersona(model) @@ -95,9 +101,8 @@ export const addOrUpdatePersona = async (previous: any, formData: FormData) => { RevalidateCache({ page: "persona", }); - } else { - personaStore.updateErrors(response.errors.map((e) => e.message)); } + return response; }; diff --git a/src/features/prompt-page/prompt-page.tsx b/src/features/prompt-page/prompt-page.tsx index 29b68e1a1..75afc4bb9 100644 --- a/src/features/prompt-page/prompt-page.tsx +++ b/src/features/prompt-page/prompt-page.tsx @@ -22,7 +22,7 @@ export const ChatSamplePromptPage: FC = async (
-
+
{promptsResponse.response.map((prompt) => { return ( diff --git a/src/features/reporting-page/reporting-page.tsx b/src/features/reporting-page/reporting-page.tsx index 442e51cfe..83aac6fa5 100644 --- a/src/features/reporting-page/reporting-page.tsx +++ b/src/features/reporting-page/reporting-page.tsx @@ -52,7 +52,7 @@ async function ReportingContent(props: ChatReportingProps) { const chatThreads = chatHistoryResponse.response; const hasMoreResults = chatThreads.length === SEARCH_PAGE_SIZE; return ( -
+
diff --git a/src/features/ui/hero.tsx b/src/features/ui/hero.tsx index 72a3c6948..7bb4212da 100644 --- a/src/features/ui/hero.tsx +++ b/src/features/ui/hero.tsx @@ -8,7 +8,7 @@ interface HeroProps extends PropsWithChildren { export const Hero: FC = (props) => { return ( -
+

From 36e889d709bc33c7333056d36254b5cc4eba326f Mon Sep 17 00:00:00 2001 From: maurin schickli Date: Fri, 13 Dec 2024 08:24:15 +0100 Subject: [PATCH 3/3] Remove: Console.log --- src/features/persona-page/persona-store.ts | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/features/persona-page/persona-store.ts b/src/features/persona-page/persona-store.ts index 989e2323e..77ff0c125 100644 --- a/src/features/persona-page/persona-store.ts +++ b/src/features/persona-page/persona-store.ts @@ -89,8 +89,6 @@ export const addOrUpdatePersona = async (previous: any, formData: FormData) => { model.extensionIds = personaStore.persona.extensionIds.map((e) => e); } - console.log("model", model); - const response = model.id && model.id !== "" ? await UpsertPersona(model)