From 27f8cfd212ac1f0b3ee18a6b9737b7a7636bb03f Mon Sep 17 00:00:00 2001
From: ItzCrazyKns <kushagra20103@gmail.com>
Date: Thu, 25 Jul 2024 20:33:56 +0530
Subject: [PATCH 1/3] feat(toast): fix theme colors

---
 docs/installation/UPDATING.md | 1 +
 ui/app/layout.tsx             | 2 +-
 2 files changed, 2 insertions(+), 1 deletion(-)

diff --git a/docs/installation/UPDATING.md b/docs/installation/UPDATING.md
index fa89b41..df67775 100644
--- a/docs/installation/UPDATING.md
+++ b/docs/installation/UPDATING.md
@@ -17,6 +17,7 @@ To update Perplexica to the latest version, follow these steps:
 ```bash
 docker compose up -d --build
 ```
+
 4. Once the command completes running go to http://localhost:3000 and verify the latest changes.
 
 ## For non Docker users
diff --git a/ui/app/layout.tsx b/ui/app/layout.tsx
index 2edbf94..684a99c 100644
--- a/ui/app/layout.tsx
+++ b/ui/app/layout.tsx
@@ -34,7 +34,7 @@ export default function RootLayout({
               unstyled: true,
               classNames: {
                 toast:
-                  'bg-light-primary dark:bg-dark-primary text-white rounded-lg p-4 flex flex-row items-center space-x-2',
+                  'bg-light-primary dark:bg-dark-secondary dark:text-white/70 text-black-70 rounded-lg p-4 flex flex-row items-center space-x-2',
               },
             }}
           />

From cbce39a5ddb4cbca21ea75cba981b94187fbaef6 Mon Sep 17 00:00:00 2001
From: ItzCrazyKns <kushagra20103@gmail.com>
Date: Thu, 25 Jul 2024 20:34:49 +0530
Subject: [PATCH 2/3] feat(settings): fix `undefined` model for custom OpenAI

---
 ui/components/SettingsDialog.tsx | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

diff --git a/ui/components/SettingsDialog.tsx b/ui/components/SettingsDialog.tsx
index 788469b..171e812 100644
--- a/ui/components/SettingsDialog.tsx
+++ b/ui/components/SettingsDialog.tsx
@@ -225,9 +225,13 @@ const SettingsDialog = ({
                           value={selectedChatModelProvider ?? undefined}
                           onChange={(e) => {
                             setSelectedChatModelProvider(e.target.value);
-                            setSelectedChatModel(
-                              config.chatModelProviders[e.target.value][0],
-                            );
+                            if (e.target.value === 'custom_openai') {
+                              setSelectedChatModel('');
+                            } else {
+                              setSelectedChatModel(
+                                config.chatModelProviders[e.target.value][0],
+                              );
+                            }
                           }}
                           options={Object.keys(config.chatModelProviders).map(
                             (provider) => ({

From 08379fcad5a9cb40b66f48f3078aebb16c5fa6e5 Mon Sep 17 00:00:00 2001
From: ItzCrazyKns <kushagra20103@gmail.com>
Date: Thu, 25 Jul 2024 20:36:26 +0530
Subject: [PATCH 3/3] feat(ws-connector): fix `undefined` chat model

---
 ui/components/ChatWindow.tsx | 38 ++++++++++++++++++++++++++----------
 1 file changed, 28 insertions(+), 10 deletions(-)

diff --git a/ui/components/ChatWindow.tsx b/ui/components/ChatWindow.tsx
index f2c89a3..ea9a93d 100644
--- a/ui/components/ChatWindow.tsx
+++ b/ui/components/ChatWindow.tsx
@@ -54,13 +54,26 @@ const useSocket = (
           ).then(async (res) => await res.json());
 
           const chatModelProviders = providers.chatModelProviders;
-          const embeddingModelProviders = providers.embeddingModelProviders;
 
-          if (
-            !chatModelProviders ||
-            Object.keys(chatModelProviders).length === 0
-          )
-            return toast.error('No chat models available');
+          chatModelProvider = Object.keys(chatModelProviders)[0];
+
+          if (chatModelProvider === 'custom_openai') {
+            toast.error(
+              'Seems like you are using the custom OpenAI provider, please open the settings and configure the API key and base URL',
+            );
+            setError(true);
+            return;
+          } else {
+            chatModel = Object.keys(chatModelProviders[chatModelProvider])[0];
+
+            if (
+              !chatModelProviders ||
+              Object.keys(chatModelProviders).length === 0
+            )
+              return toast.error('No chat models available');
+          }
+
+          const embeddingModelProviders = providers.embeddingModelProviders;
 
           if (
             !embeddingModelProviders ||
@@ -68,9 +81,6 @@ const useSocket = (
           )
             return toast.error('No embedding models available');
 
-          chatModelProvider = Object.keys(chatModelProviders)[0];
-          chatModel = Object.keys(chatModelProviders[chatModelProvider])[0];
-
           embeddingModelProvider = Object.keys(embeddingModelProviders)[0];
           embeddingModel = Object.keys(
             embeddingModelProviders[embeddingModelProvider],
@@ -88,7 +98,7 @@ const useSocket = (
             `${process.env.NEXT_PUBLIC_API_URL}/models`,
             {
               headers: {
-                'Content-Type': 'application/json',
+                'Content-Type': 'app  lication/json',
               },
             },
           ).then(async (res) => await res.json());
@@ -106,6 +116,7 @@ const useSocket = (
 
           if (
             chatModelProvider &&
+            chatModelProvider != 'custom_openai' &&
             !chatModelProviders[chatModelProvider][chatModel]
           ) {
             chatModel = Object.keys(chatModelProviders[chatModelProvider])[0];
@@ -187,6 +198,13 @@ const useSocket = (
           console.log('[DEBUG] closed');
         };
 
+        ws.addEventListener('message', (e) => {
+          const data = JSON.parse(e.data);
+          if (data.type === 'error') {
+            toast.error(data.data);
+          }
+        });
+
         setWs(ws);
       };