diff --git a/src/interface/desktop/chat.html b/src/interface/desktop/chat.html
index 2835f01d..9dbcf908 100644
--- a/src/interface/desktop/chat.html
+++ b/src/interface/desktop/chat.html
@@ -675,28 +675,35 @@
await loadChat();
});
- async function loadChat() {
- // Load chat history
+ async function getChatHistoryUrl() {
const hostURL = await window.hostURLAPI.getURL();
const khojToken = await window.tokenAPI.getToken();
const headers = { 'Authorization': `Bearer ${khojToken}` };
- let firstRunSetupMessageRendered = false;
let chatBody = document.getElementById("chat-body");
chatBody.innerHTML = "";
let chatHistoryUrl = `${hostURL}/api/chat/history?client=desktop`;
if (chatBody.dataset.conversationId) {
chatHistoryUrl += `&conversation_id=${chatBody.dataset.conversationId}`;
}
+ return { chatHistoryUrl, headers };
+ }
+
+ async function loadChat() {
+ // Load chat history and body
+ const hostURL = await window.hostURLAPI.getURL();
+ const { chatHistoryUrl, headers } = await getChatHistoryUrl();
// Create loading screen and add it to chat-body
let loadingScreen = document.createElement('div');
loadingScreen.classList.add("loading-spinner");
let yellowOrb = document.createElement('div');
loadingScreen.appendChild(yellowOrb);
+ let chatBody = document.getElementById("chat-body");
chatBody.appendChild(loadingScreen);
// Get the most recent 10 chat messages from conversation history
+ let firstRunSetupMessageRendered = false;
fetch(`${chatHistoryUrl}&n=10`, { headers })
.then(response => response.json())
.then(data => {
@@ -722,7 +729,7 @@
entries.forEach(entry => {
// If the element is in the viewport, fetch the remaining message and unobserve the element
if (entry.isIntersecting) {
- fetchRemainingChatMessages(chatHistoryUrl);
+ fetchRemainingChatMessages(chatHistoryUrl, headers);
observer.unobserve(entry.target);
}
});
@@ -817,7 +824,7 @@
}
}
- function fetchRemainingChatMessages(chatHistoryUrl) {
+ function fetchRemainingChatMessages(chatHistoryUrl, headers) {
// Create a new IntersectionObserver
let observer = new IntersectionObserver((entries, observer) => {
entries.forEach(entry => {
@@ -842,7 +849,7 @@
}, {rootMargin: '0px 0px 200px 0px'}); // Trigger when the element is within 200px of the viewport
// Fetch remaining chat messages from conversation history
- fetch(`${chatHistoryUrl}&n=-10`, { method: "GET" })
+ fetch(`${chatHistoryUrl}&n=-10`, { headers })
.then(response => response.json())
.then(data => {
if (data.status != "ok") {
@@ -1395,11 +1402,13 @@
.chat-message.khoj {
margin-left: auto;
text-align: left;
+ height: fit-content;
}
/* move message by you to right */
.chat-message.you {
margin-right: auto;
text-align: right;
+ height: fit-content;
}
/* basic style chat message text */
.chat-message-text {
diff --git a/src/interface/desktop/main.js b/src/interface/desktop/main.js
index eb3ceb37..978b8220 100644
--- a/src/interface/desktop/main.js
+++ b/src/interface/desktop/main.js
@@ -116,29 +116,41 @@ function filenameToMimeType (filename) {
}
function isSupportedFileType(filePath) {
- const fileExtension = filePath.split('.').pop();
+ const fileExtension = filePath.split('.').pop().toLowerCase();
return validFileTypes.includes(fileExtension);
}
function processDirectory(filesToPush, folder) {
- const files = fs.readdirSync(folder.path, { withFileTypes: true });
+ try {
+ const files = fs.readdirSync(folder.path, { withFileTypes: true });
- for (const file of files) {
- const filePath = path.join(file.path, file.name || '');
- // Skip hidden files and folders
- if (file.name.startsWith('.')) {
- continue;
+ for (const file of files) {
+ const filePath = path.join(file.path, file.name || '');
+ // Skip hidden files and folders
+ if (file.name.startsWith('.')) {
+ continue;
+ }
+ // Add supported files to index
+ if (file.isFile() && isSupportedFileType(filePath)) {
+ console.log(`Add ${file.name} in ${file.path} for indexing`);
+ filesToPush.push(filePath);
+ }
+ // Recursively process subdirectories
+ if (file.isDirectory()) {
+ processDirectory(filesToPush, {'path': filePath});
+ }
}
- // Add supported files to index
- if (file.isFile() && isSupportedFileType(filePath)) {
- console.log(`Add ${file.name} in ${file.path} for indexing`);
- filesToPush.push(filePath);
- }
- // Recursively process subdirectories
- if (file.isDirectory()) {
- processDirectory(filesToPush, {'path': filePath});
+ } catch (err) {
+ if (err.code === 'EACCES') {
+ console.error(`Access denied to ${folder.path}`);
+ } else if (err.code === 'ENOENT') {
+ console.error(`${folder.path} does not exist`);
+ } else {
+ console.error(`An error occurred while reading directory: ${error.message}`);
}
+ return;
}
+
}
function pushDataToKhoj (regenerate = false) {
diff --git a/src/khoj/interface/web/chat.html b/src/khoj/interface/web/chat.html
index 4ede4080..0d624713 100644
--- a/src/khoj/interface/web/chat.html
+++ b/src/khoj/interface/web/chat.html
@@ -2055,11 +2055,13 @@ To get started, just start typing below. You can also type / to see a list of co
.chat-message.khoj {
margin-left: auto;
text-align: left;
+ height: fit-content;
}
/* move message by you to right */
.chat-message.you {
margin-right: auto;
text-align: right;
+ height: fit-content;
}
/* basic style chat message text */
.chat-message-text {