@ -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 >
< / d i v >
< div class = "content" id = "user_${token}" >
$ { format ( message ) }
$ { format ( txtMsgs[ txtMsgs . length - 1 ] . content ) }
< / d i v >
< / d i v >
` ;
@ -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 >
< / d i v >
< 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 + ' ' . 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 >
< / d i v >