summaryrefslogtreecommitdiffstats
path: root/g4f/gui/client
diff options
context:
space:
mode:
authorunknown <alexey.verb.04@gmail.com>2023-10-27 22:35:10 +0200
committerunknown <alexey.verb.04@gmail.com>2023-10-27 22:35:10 +0200
commit03dc8532f9c83edcec0214f83445028f4766cf6f (patch)
tree0a2db6292a95c632ecd98f2a82fdca0b6d8021bd /g4f/gui/client
parent~ | g4f `v-0.1.7.8` (diff)
downloadgpt4free-03dc8532f9c83edcec0214f83445028f4766cf6f.tar
gpt4free-03dc8532f9c83edcec0214f83445028f4766cf6f.tar.gz
gpt4free-03dc8532f9c83edcec0214f83445028f4766cf6f.tar.bz2
gpt4free-03dc8532f9c83edcec0214f83445028f4766cf6f.tar.lz
gpt4free-03dc8532f9c83edcec0214f83445028f4766cf6f.tar.xz
gpt4free-03dc8532f9c83edcec0214f83445028f4766cf6f.tar.zst
gpt4free-03dc8532f9c83edcec0214f83445028f4766cf6f.zip
Diffstat (limited to '')
-rw-r--r--g4f/gui/client/css/style.css33
-rw-r--r--g4f/gui/client/js/chat.v1.js52
2 files changed, 69 insertions, 16 deletions
diff --git a/g4f/gui/client/css/style.css b/g4f/gui/client/css/style.css
index 59efeda0..c494de3a 100644
--- a/g4f/gui/client/css/style.css
+++ b/g4f/gui/client/css/style.css
@@ -260,6 +260,32 @@ body {
z-index: 10000;
}
+.message .assistant{
+ max-width: 48px;
+ max-height: 48px;
+ flex-shrink: 0;
+}
+
+.message .assistant img {
+ width: 100%;
+ height: 100%;
+ object-fit: cover;
+ border-radius: 8px;
+ outline: 1px solid var(--blur-border);
+}
+
+.message .assistant:after {
+ content: "63";
+ position: absolute;
+ bottom: 0;
+ right: 0;
+ height: 60%;
+ width: 60%;
+ background: var(--colour-3);
+ filter: blur(10px) opacity(0.5);
+ z-index: 10000;
+}
+
.message .content {
display: flex;
flex-direction: column;
@@ -280,6 +306,13 @@ body {
z-index: 1000;
}
+.message .assistant i {
+ position: absolute;
+ bottom: -6px;
+ right: -6px;
+ z-index: 1000;
+}
+
.new_convo {
padding: 8px 12px;
display: flex;
diff --git a/g4f/gui/client/js/chat.v1.js b/g4f/gui/client/js/chat.v1.js
index 233347ff..5b7a0bf0 100644
--- a/g4f/gui/client/js/chat.v1.js
+++ b/g4f/gui/client/js/chat.v1.js
@@ -31,12 +31,37 @@ const handle_ask = async () => {
message_input.style.height = `80px`;
message_input.focus();
+ let txtMsgs = [];
+ const divTags = document.getElementsByClassName("message");
+ for(let i=0;i<divTags.length;i++){
+ if(!divTags[i].children[1].classList.contains("welcome-message")){
+ if(divTags[i].children[0].className == "assistant"){
+ const msg = {
+ role: "assistant",
+ content: divTags[i].children[1].textContent+" "
+ };
+ txtMsgs.push(msg);
+ }else{
+ const msg = {
+ role: "user",
+ content: divTags[i].children[1].textContent+" "
+ };
+ txtMsgs.push(msg);
+ }
+ }
+ }
+
window.scrollTo(0, 0);
let message = message_input.value;
+ const msg = {
+ role: "user",
+ content: message
+ };
+ txtMsgs.push(msg);
if (message.length > 0) {
message_input.value = ``;
- await ask_gpt(message);
+ await ask_gpt(txtMsgs);
}
};
@@ -49,13 +74,13 @@ const remove_cancel_button = async () => {
}, 300);
};
-const ask_gpt = async (message) => {
+const ask_gpt = async (txtMsgs) => {
try {
message_input.value = ``;
message_input.innerHTML = ``;
message_input.innerText = ``;
- add_conversation(window.conversation_id, message);
+ add_conversation(window.conversation_id, txtMsgs[0].content);
window.scrollTo(0, 0);
window.controller = new AbortController();
@@ -75,7 +100,7 @@ const ask_gpt = async (message) => {
<i class="fa-regular fa-phone-arrow-up-right"></i>
</div>
<div class="content" id="user_${token}">
- ${format(message)}
+ ${format(txtMsgs[txtMsgs.length-1].content)}
</div>
</div>
`;
@@ -87,7 +112,7 @@ const ask_gpt = async (message) => {
message_box.innerHTML += `
<div class="message">
- <div class="user">
+ <div class="assistant">
${gpt_image} <i class="fa-regular fa-phone-arrow-down-left"></i>
</div>
<div class="content" id="gpt_${window.token}">
@@ -120,12 +145,7 @@ const ask_gpt = async (message) => {
conversation: await get_conversation(window.conversation_id),
internet_access: document.getElementById(`switch`).checked,
content_type: `text`,
- parts: [
- {
- content: message,
- role: `user`,
- },
- ],
+ parts: txtMsgs,
},
},
}),
@@ -154,7 +174,7 @@ const ask_gpt = async (message) => {
document.getElementById(`gpt_${window.token}`).innerHTML = "An error occured, please try again, if the problem persists, please reload / refresh cache or use a differnet browser";
}
- add_message(window.conversation_id, "user", message);
+ add_message(window.conversation_id, "user", txtMsgs[txtMsgs.length-1].content);
add_message(window.conversation_id, "assistant", text);
message_box.scrollTop = message_box.scrollHeight;
@@ -165,7 +185,7 @@ const ask_gpt = async (message) => {
window.scrollTo(0, 0);
} catch (e) {
- add_message(window.conversation_id, "user", message);
+ add_message(window.conversation_id, "user", txtMsgs[txtMsgs.length-1].content);
message_box.scrollTop = message_box.scrollHeight;
await remove_cancel_button();
@@ -279,7 +299,7 @@ const load_conversation = async (conversation_id) => {
for (item of conversation.items) {
message_box.innerHTML += `
<div class="message">
- <div class="user">
+ <div class=${item.role == "assistant" ? "assistant" : "user"}>
${item.role == "assistant" ? gpt_image : user_image}
${item.role == "assistant"
? `<i class="fa-regular fa-phone-arrow-down-left"></i>`
@@ -316,7 +336,7 @@ const get_conversation = async (conversation_id) => {
const add_conversation = async (conversation_id, content) => {
if (content.length > 17) {
- title = content.substring(0, 17) + '..'
+ title = content.substring(0, 17) + '...'
} else {
title = content + '&nbsp;'.repeat(19 - content.length)
}
@@ -461,7 +481,7 @@ const say_hello = async () => {
message_box.innerHTML += `
<div class="message">
- <div class="user">
+ <div class="assistant">
${gpt_image}
<i class="fa-regular fa-phone-arrow-down-left"></i>
</div>