forked from yingslim/OxBIG_hackathon
-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathsidepanel.js
More file actions
96 lines (77 loc) · 3.12 KB
/
sidepanel.js
File metadata and controls
96 lines (77 loc) · 3.12 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
// Create a WebSocket connection to the FastAPI WebSocket endpoint
const socket = new WebSocket('ws://localhost:8000/ws/chat');
socket.onmessage = function(e){ console.log(e.data); };
socket.onopen = () => socket.send('hello');
// This runs when the WebSocket connection is opened
socket.onopen = () => {
console.log('WebSocket connection established');
};
document.addEventListener('DOMContentLoaded', function() {
const userInput = document.getElementById('user-input');
const sendButton = document.getElementById('send-button');
const chatMessages = document.getElementById('chat-messages');
const questionElement = document.getElementById('question');
sendButton.addEventListener('click', sendMessage);
userInput.addEventListener('keypress', function(e) {
if (e.key === 'Enter')
sendMessage();
}
);
// Function to update the question dynamically
function updateQuestion(product) {
questionElement.textContent = `Is '${product}' an essential purchase?`;
}
function sendMessage() {
const message = userInput.value.trim();
if (message) {
appendMessage('You', message);
socket.send(message);
console.log(message);
userInput.value = '';
console.log('Message Sent');
}
}
function appendMessage(sender, message, isMarkdown = false) {
const messageElement = document.createElement('div');
messageElement.className = 'message';
const senderElement = document.createElement('strong');
senderElement.textContent = sender + ': ';
messageElement.appendChild(senderElement);
const contentElement = document.createElement('span');
if (isMarkdown) {
contentElement.innerHTML = marked.parse(message);
} else {
contentElement.textContent = message;
}
messageElement.appendChild(contentElement);
chatMessages.appendChild(messageElement);
chatMessages.scrollTop = chatMessages.scrollHeight;
}
// Listen for messages from the content script
chrome.runtime.onMessage.addListener((request, sender, sendResponse) => {
if (request.action === "updateProduct") {
updateQuestion(request.product);
}
});
// This runs when the WebSocket receives a message from the server
socket.onmessage = (event) => {
const message = event.data;
// If the message contains the system prompt, ignore it
if (message.includes("System Prompt:")) {
return; // Ignore the system prompt message, don't display it
}
appendMessage("Bot", message)
};
// This runs if the WebSocket connection is closed
socket.onclose = () => {
console.log('WebSocket connection closed');
};
// This runs if there's an error in the WebSocket connection
socket.onerror = (error) => {
console.error('WebSocket error:', error);
};
// Send query when the user clicks the send button
document.getElementById('send-button').addEventListener('click', async () => {
sendMessage();
});
});