forked from React-Group/interstellar_ai
chat scroll trial 1
This commit is contained in:
parent
8c14760027
commit
853967f8e7
2 changed files with 18 additions and 14 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,34 @@ 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);
|
|
||||||
|
useEffect(() => {
|
||||||
|
if (ref && typeof ref !== 'function') {
|
||||||
|
const element = ref as React.RefObject<HTMLDivElement>;
|
||||||
|
if (element.current) {
|
||||||
|
element.current.scrollTop = element.current.scrollHeight;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}, [messages, ref]);
|
||||||
|
|
||||||
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" />
|
||||||
|
|
Loading…
Reference in a new issue