forked from React-Group/interstellar_ai
		
	Merge pull request 'main' (#76) from YasinOnm08/interstellar_ai:main into main
Reviewed-on: https://interstellardevelopment.org/code/code/React-Group/interstellar_ai/pulls/76
This commit is contained in:
		
						commit
						ee6f699a8a
					
				
					 5 changed files with 29 additions and 24 deletions
				
			
		| 
						 | 
					@ -1,6 +1,6 @@
 | 
				
			||||||
"use client"
 | 
					"use client"
 | 
				
			||||||
import React, { use, useEffect, useRef, useState } from "react";
 | 
					import React, { use, useEffect, useRef, useState } from "react";
 | 
				
			||||||
import ConversationFrontend from "../components/ConversationFrontend";
 | 
					import ConversationFrontend from '../components/ConversationFrontend';
 | 
				
			||||||
import InputFrontend from "../components/InputFrontend";
 | 
					import InputFrontend from "../components/InputFrontend";
 | 
				
			||||||
import { sendToVoiceRecognition } from "./voice_backend"
 | 
					import { sendToVoiceRecognition } from "./voice_backend"
 | 
				
			||||||
import axios from "axios";
 | 
					import axios from "axios";
 | 
				
			||||||
| 
						 | 
					@ -52,6 +52,7 @@ const InputOutputBackend: React.FC = () => {
 | 
				
			||||||
  }, [preferredCurrency, preferredLanguage, timeFormat, dateFormat, preferredMeasurement, timeZone]);
 | 
					  }, [preferredCurrency, preferredLanguage, timeFormat, dateFormat, preferredMeasurement, timeZone]);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  const conversationRef = useRef<HTMLDivElement>(null)
 | 
				
			||||||
  const [copyClicked, setCopyClicked] = useState(false)
 | 
					  const [copyClicked, setCopyClicked] = useState(false)
 | 
				
			||||||
  const [accessToken, setAccessToken] = useState("")
 | 
					  const [accessToken, setAccessToken] = useState("")
 | 
				
			||||||
  const postWorkerRef = useRef<Worker | null>(null)
 | 
					  const postWorkerRef = useRef<Worker | null>(null)
 | 
				
			||||||
| 
						 | 
					@ -266,6 +267,7 @@ const InputOutputBackend: React.FC = () => {
 | 
				
			||||||
  return (
 | 
					  return (
 | 
				
			||||||
    <>
 | 
					    <>
 | 
				
			||||||
      <ConversationFrontend
 | 
					      <ConversationFrontend
 | 
				
			||||||
 | 
					        ref={conversationRef}
 | 
				
			||||||
        messages={messages}
 | 
					        messages={messages}
 | 
				
			||||||
        onResendClick={handleResendClick}
 | 
					        onResendClick={handleResendClick}
 | 
				
			||||||
        onEditClick={handleEditClick}
 | 
					        onEditClick={handleEditClick}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -14,32 +14,31 @@ interface ConversationProps {
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const ConversationFrontend = React.forwardRef<HTMLDivElement, ConversationProps>(
 | 
					const ConversationFrontend = React.forwardRef<HTMLDivElement, ConversationProps>(
 | 
				
			||||||
  ({ messages, onResendClick, onEditClick, onCopyClick, isClicked}, ref: ForwardedRef<HTMLDivElement>) => {
 | 
					  ({ messages, onResendClick, onEditClick, onCopyClick, isClicked }, ref: ForwardedRef<HTMLDivElement>) => {
 | 
				
			||||||
    const endOfMessagesRef = useRef<HTMLDivElement>(null);
 | 
					
 | 
				
			||||||
  
 | 
					    const messagesEndRef = useRef<HTMLDivElement|null>(null)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    useEffect(() => { 
 | 
				
			||||||
 | 
					      messagesEndRef.current?.scrollIntoView()
 | 
				
			||||||
 | 
					    },[messages])
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return (
 | 
					    return (
 | 
				
			||||||
      <div className="output">
 | 
					      <div className="output" ref={ref}>
 | 
				
			||||||
        <div className="conversation resize" id="conversation" ref={ref}>
 | 
					        <div className="conversation resize" id="conversation">
 | 
				
			||||||
          {messages.map((message, index) => {
 | 
					          {messages.map((message, index) => {
 | 
				
			||||||
            let isUserMessage
 | 
					 | 
				
			||||||
            if (message.role == "user") {
 | 
					 | 
				
			||||||
              isUserMessage = message
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
            if (index >= 1){
 | 
					            if (index >= 1){
 | 
				
			||||||
 | 
					
 | 
				
			||||||
              return (
 | 
					              return (
 | 
				
			||||||
                <div
 | 
					                <div
 | 
				
			||||||
                  key={index}
 | 
					                  key={index}
 | 
				
			||||||
                  className={isUserMessage ? 'user-message' : 'ai-message'}
 | 
					                  className={message.role === "user" ? 'user-message' : 'ai-message'}
 | 
				
			||||||
                  >
 | 
					                  >
 | 
				
			||||||
                  <p> {message.content}</p>
 | 
					                  <p> {message.content}</p>
 | 
				
			||||||
                </div>
 | 
					                </div>
 | 
				
			||||||
              );
 | 
					              );
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
          })}
 | 
					          })}
 | 
				
			||||||
        
 | 
					
 | 
				
			||||||
          {/* Dummy div to mark the end of the conversation for auto-scrolling */}
 | 
					 | 
				
			||||||
          <div ref={endOfMessagesRef} />
 | 
					 | 
				
			||||||
          <div className="button-container">
 | 
					          <div className="button-container">
 | 
				
			||||||
            <button type="button" onClick={onResendClick}>
 | 
					            <button type="button" onClick={onResendClick}>
 | 
				
			||||||
              <img src="/img/resend.svg" alt="resend" />
 | 
					              <img src="/img/resend.svg" alt="resend" />
 | 
				
			||||||
| 
						 | 
					@ -53,6 +52,7 @@ const ConversationFrontend = React.forwardRef<HTMLDivElement, ConversationProps>
 | 
				
			||||||
            <p id="copiedText" style={{opacity:isClicked?"1":"0", transition:"all 0.3s ease-in-out"}}>Copied!</p>
 | 
					            <p id="copiedText" style={{opacity:isClicked?"1":"0", transition:"all 0.3s ease-in-out"}}>Copied!</p>
 | 
				
			||||||
          </div>
 | 
					          </div>
 | 
				
			||||||
        </div>
 | 
					        </div>
 | 
				
			||||||
 | 
					          <div ref={messagesEndRef} />
 | 
				
			||||||
      </div>
 | 
					      </div>
 | 
				
			||||||
    );
 | 
					    );
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,7 +1,7 @@
 | 
				
			||||||
.history-background {
 | 
					.history-background {
 | 
				
			||||||
    grid-column: 1/2;
 | 
					    grid-column: 1/2;
 | 
				
			||||||
    grid-row: 1/2;
 | 
					    grid-row: 1/2;
 | 
				
			||||||
    height: 40dvh;
 | 
					    height: 35dvh;
 | 
				
			||||||
    overflow: hidden;
 | 
					    overflow: hidden;
 | 
				
			||||||
    background-color: var(--history-background-color);
 | 
					    background-color: var(--history-background-color);
 | 
				
			||||||
    padding: 1em;
 | 
					    padding: 1em;
 | 
				
			||||||
| 
						 | 
					@ -40,6 +40,6 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.history-models{
 | 
					.history-models{
 | 
				
			||||||
    position: relative;
 | 
					    position: relative;
 | 
				
			||||||
    height: 90dvh;
 | 
					    height: 86dvh;
 | 
				
			||||||
    /* padding-bottom: 3dvh; */
 | 
					    /* padding-bottom: 3dvh; */
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -4,6 +4,7 @@
 | 
				
			||||||
    grid-row: 1 / 4;
 | 
					    grid-row: 1 / 4;
 | 
				
			||||||
    background-color: var(--output-background-color);
 | 
					    background-color: var(--output-background-color);
 | 
				
			||||||
    margin: 1em;
 | 
					    margin: 1em;
 | 
				
			||||||
 | 
					    margin-bottom: 0;
 | 
				
			||||||
    padding-bottom: 14dvh;
 | 
					    padding-bottom: 14dvh;
 | 
				
			||||||
    display: flex;
 | 
					    display: flex;
 | 
				
			||||||
    flex-direction: column;
 | 
					    flex-direction: column;
 | 
				
			||||||
| 
						 | 
					@ -11,7 +12,7 @@
 | 
				
			||||||
    font-size: 1em;
 | 
					    font-size: 1em;
 | 
				
			||||||
    overflow-y: auto;
 | 
					    overflow-y: auto;
 | 
				
			||||||
    width: calc(100% - 2em); /* Corrected calculation for width */
 | 
					    width: calc(100% - 2em); /* Corrected calculation for width */
 | 
				
			||||||
    height: 90dvh;
 | 
					    height: 86dvh;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#conversation {
 | 
					#conversation {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -73,29 +73,31 @@
 | 
				
			||||||
  /* Input styles */
 | 
					  /* Input styles */
 | 
				
			||||||
  .input {
 | 
					  .input {
 | 
				
			||||||
    grid-column: 1 / -1;
 | 
					    grid-column: 1 / -1;
 | 
				
			||||||
    gap: 10px;
 | 
					    gap: 5px;
 | 
				
			||||||
    padding: 0.5em;
 | 
					    padding: 0.5em;
 | 
				
			||||||
    margin: 0 auto;
 | 
					    margin: 0 auto;
 | 
				
			||||||
    align-items: center;
 | 
					    align-items: center;
 | 
				
			||||||
    width: 90%;
 | 
					    bottom: 3dvh;
 | 
				
			||||||
    bottom: 10dvh
 | 
					    right: 2vw;
 | 
				
			||||||
 | 
					    left: 2vw;
 | 
				
			||||||
 | 
					    justify-content: flex-start;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  .input input {
 | 
					  .input input {
 | 
				
			||||||
    font-size: 1em; /* Adjust font size */
 | 
					    font-size: 1em; /* Adjust font size */
 | 
				
			||||||
    max-width: 65%;
 | 
					    max-width: 70%;
 | 
				
			||||||
    margin-right: 0;
 | 
					    margin-right: 0;
 | 
				
			||||||
    border-color: var(--input-border-color); /* Use variable for input border */
 | 
					    border-color: var(--input-border-color); /* Use variable for input border */
 | 
				
			||||||
    color: var(--text-color); /* Use variable for text color */
 | 
					    color: var(--text-color); /* Use variable for text color */
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  .input button {
 | 
					  .input button {
 | 
				
			||||||
    height: 40px; /* Adjust button height */
 | 
					    height: 100%; /* Adjust button height */
 | 
				
			||||||
    width: 40px; /* Adjust button width */
 | 
					    width: 15%; /* Adjust button width */
 | 
				
			||||||
    font-size: 1.2em; /* Adjust button font size */
 | 
					    font-size: 1.2em; /* Adjust button font size */
 | 
				
			||||||
    margin: auto;
 | 
					 | 
				
			||||||
    background-color: var(--input-button-color); /* Use variable for button color */
 | 
					    background-color: var(--input-button-color); /* Use variable for button color */
 | 
				
			||||||
    color: var(--user-message-text-color); /* Use variable for button text color */
 | 
					    color: var(--user-message-text-color); /* Use variable for button text color */
 | 
				
			||||||
 | 
					    margin: 0;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  .header-logo{
 | 
					  .header-logo{
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue