From 99019595a26f1319cc15042bc3d704ccedd7ec1a Mon Sep 17 00:00:00 2001 From: Adrien Date: Sun, 16 Jun 2024 13:44:28 +0200 Subject: [PATCH] Selection button event now send an htmx request --- Chat.go | 104 ++++++++++++++++++++++++++++++++++----------- Request.go | 36 +--------------- RequestFirework.go | 10 ++++- main.go | 1 + 4 files changed, 91 insertions(+), 60 deletions(-) diff --git a/Chat.go b/Chat.go index 91ac065..a0d6a29 100644 --- a/Chat.go +++ b/Chat.go @@ -18,30 +18,6 @@ func ChatPageHandler(c *fiber.Ctx) error { return c.Render("chat", fiber.Map{}, "layouts/main") } -func DeleteMessageHandler(c *fiber.Ctx) error { - messageId := c.FormValue("id") - - messageUUID, err := edgedb.ParseUUID(messageId) - if err != nil { - fmt.Println("Error parsing UUID") - panic(err) - } - - // Delete all messages - err = edgeGlobalClient.WithGlobals(map[string]interface{}{"ext::auth::client_token": c.Cookies("jade-edgedb-auth-token")}).Execute(edgeCtx, ` - WITH - messageArea := (SELECT Message FILTER .id = $0).area - DELETE Area - FILTER .position >= messageArea.position AND .conversation = messageArea.conversation; - `, messageUUID) - if err != nil { - fmt.Println("Error deleting messages") - panic(err) - } - - return c.SendString(generateChatHTML(c)) -} - func LoadChatHandler(c *fiber.Ctx) error { deleteLLMtoDelete(c) @@ -531,7 +507,87 @@ func generateLimitReachedChatHTML(c *fiber.Ctx) string { return htmlString } +func GetSelectionBtnHandler(c *fiber.Ctx) error { + messageId := c.FormValue("id") + messageUUID, err := edgedb.ParseUUID(messageId) + if err != nil { + fmt.Println("Error parsing UUID") + panic(err) + } + + var message Message + err = edgeGlobalClient.WithGlobals(map[string]interface{}{"ext::auth::client_token": c.Cookies("jade-edgedb-auth-token")}).QuerySingle(edgeCtx, ` + SELECT Message { + id, + content, + area : { + id, + position + }, + llm : { + modelInfo : { + modelID, + name, + company : { + icon, + } + } + } + } + FILTER .id = $0; + `, &message, messageUUID) + if err != nil { + fmt.Println("Error getting message") + panic(err) + } + + templateMessage := TemplateMessage{ + Icon: message.LLM.Model.Company.Icon, + Content: message.Content, + Hidden: false, + Id: message.ID.String(), + Name: message.LLM.Model.Name, + ModelID: message.LLM.Model.ModelID, + } + + outBtn, err := selectBtnTmpl.Execute(map[string]interface{}{ + "message": templateMessage, + "ConversationAreaId": message.Area.Position, + }) + if err != nil { + fmt.Println("Error generating HTML content") + panic(err) + } + outBtn = strings.ReplaceAll(outBtn, "\n", "") + + return c.SendString(outBtn) +} + // Button actions +func DeleteMessageHandler(c *fiber.Ctx) error { + messageId := c.FormValue("id") + + messageUUID, err := edgedb.ParseUUID(messageId) + if err != nil { + fmt.Println("Error parsing UUID") + panic(err) + } + + // Delete all messages + err = edgeGlobalClient.WithGlobals(map[string]interface{}{"ext::auth::client_token": c.Cookies("jade-edgedb-auth-token")}).Execute(edgeCtx, ` + WITH + messageArea := (SELECT Message FILTER .id = $0).area + DELETE Area + FILTER .position >= messageArea.position AND .conversation = messageArea.conversation; + `, messageUUID) + if err != nil { + fmt.Println("Error deleting messages") + panic(err) + } + + return c.SendString(generateChatHTML(c)) +} + func GetEditMessageFormHandler(c *fiber.Ctx) error { id := c.FormValue("id") idUUID, _ := edgedb.ParseUUID(id) diff --git a/Request.go b/Request.go index 0603d95..f98650a 100644 --- a/Request.go +++ b/Request.go @@ -14,7 +14,6 @@ import ( "context" "encoding/json" "fmt" - "strings" "sync" "time" @@ -199,15 +198,6 @@ func GenerateMultipleMessagesHandler(c *fiber.Ctx) error { panic(err) } - templateMessage := TemplateMessage{ - Icon: message.LLM.Model.Company.Icon, - Content: message.Content, - Hidden: false, - Id: message.ID.String(), - Name: message.LLM.Model.Name, - ModelID: message.LLM.Model.ModelID, - } - // Check if the context's deadline is exceeded select { case <-ctx.Done(): @@ -219,16 +209,6 @@ func GenerateMultipleMessagesHandler(c *fiber.Ctx) error { case firstDone <- idx: // Generate the HTML content - outBtn, err := selectBtnTmpl.Execute(map[string]interface{}{ - "message": templateMessage, - "ConversationAreaId": message.Area.Position, - }) - if err != nil { - fmt.Println("Error generating HTML content") - panic(err) - } - outBtn = strings.ReplaceAll(outBtn, "\n", "") - outIcon := `User Image` go func() { @@ -241,7 +221,7 @@ func GenerateMultipleMessagesHandler(c *fiber.Ctx) error { sendEvent( user.ID.String(), "swapSelectionBtn-"+selectedLLMs[idx].ID.String(), - outBtn, + ``, ) sendEvent( user.ID.String(), @@ -250,24 +230,12 @@ func GenerateMultipleMessagesHandler(c *fiber.Ctx) error { ) }() default: - out, err := selectBtnTmpl.Execute(map[string]interface{}{ - "message": templateMessage, - "ConversationAreaId": message.Area.Position, - }) - if err != nil { - fmt.Println("Error generating HTML content") - panic(err) - } - - // Replace newline characters to prevent premature termination - outBtn := strings.ReplaceAll(out, "\n", "") - // Send Content event go func() { sendEvent( user.ID.String(), "swapSelectionBtn-"+selectedLLMs[idx].ID.String(), - outBtn, + ``, ) }() } diff --git a/RequestFirework.go b/RequestFirework.go index 407f93d..8726f97 100644 --- a/RequestFirework.go +++ b/RequestFirework.go @@ -46,7 +46,7 @@ func addFireworkMessage(c *fiber.Ctx, llm LLM, selected bool) edgedb.UUID { fmt.Println("Error fetching user profile") panic(err) } else if len(chatCompletion.Choices) == 0 { - fmt.Println("No response from OpenAI") + fmt.Println("No response from Firework") id := insertBotMessage(c, "No response from Firework", selected, llm.ID) return id } else { @@ -119,7 +119,7 @@ func RequestFirework(c *fiber.Ctx, model string, messages []Message, temperature } filter .company.name = $0 AND .