forked from React-Group/interstellar_ai
delete chats
This commit is contained in:
parent
939cdd4497
commit
a1c0bf1294
4 changed files with 99 additions and 12 deletions
|
@ -2,10 +2,11 @@ import React, { useState } from 'react';
|
|||
import { useChatHistory } from '../hooks/useChatHistory';
|
||||
|
||||
const History: React.FC = () => {
|
||||
const [chatHistory, setSelectedIndex] = useChatHistory()
|
||||
const [chatHistory, setSelectedIndex, setChatHistory] = useChatHistory()
|
||||
const [isEditing, setIsEditing] = useState(false);
|
||||
const [inputValue, setInputValue] = useState<string>('');
|
||||
|
||||
const [hoveredIndex, setHoveredIndex] = useState<number | null>(null)
|
||||
|
||||
|
||||
const handleEditButtonClick = () => {
|
||||
setIsEditing(true);
|
||||
|
@ -24,23 +25,73 @@ const History: React.FC = () => {
|
|||
const handleHistoryClick = (index: number) => {
|
||||
setSelectedIndex(index)
|
||||
console.log("index",index);
|
||||
|
||||
}
|
||||
|
||||
const handleHistoryHover = (index:number) => {
|
||||
setHoveredIndex(index)
|
||||
}
|
||||
|
||||
const handleHistoryNotHover = () => {
|
||||
setHoveredIndex(null)
|
||||
}
|
||||
|
||||
console.log("chat length",chatHistory.chats.length)
|
||||
console.log("index",chatHistory.selectedIndex)
|
||||
|
||||
const handleHistoryDeletion = (index: number) => {
|
||||
const currentIndex = chatHistory.selectedIndex;
|
||||
|
||||
// Create a new copy of the current chat history
|
||||
const copyChats = { ...chatHistory };
|
||||
copyChats.chats = [...chatHistory.chats]
|
||||
|
||||
// Remove the chat at the specified index
|
||||
copyChats.chats.splice(index,1)
|
||||
|
||||
// Determine new selectedIndex
|
||||
let newSelectedIndex = currentIndex;
|
||||
|
||||
// Adjust selectedIndex based on the deletion
|
||||
if (index === currentIndex) {
|
||||
// If the deleted index is the currently selected one, reset the selected index
|
||||
newSelectedIndex = copyChats.chats.length > 0 ? (index > 0 ? index - 1 : 0) : -1; // Set to previous or first chat or -1 if no chats left
|
||||
} else if (index < currentIndex) {
|
||||
// If the deleted chat is before the current selected index, decrement the selected index
|
||||
newSelectedIndex = currentIndex - 1;
|
||||
}
|
||||
|
||||
copyChats.selectedIndex = newSelectedIndex
|
||||
|
||||
console.log(copyChats)
|
||||
|
||||
// Set the updated chat history
|
||||
setChatHistory(copyChats);
|
||||
};
|
||||
|
||||
return (
|
||||
<div className="history-background">
|
||||
<div className="history">
|
||||
<ul>
|
||||
{/* Populate with history items */}
|
||||
{chatHistory.chats.map((chats, index) => (
|
||||
<li key={index}>
|
||||
<li key={index} onMouseOver={()=>handleHistoryHover(index)} onMouseOut={handleHistoryNotHover} >
|
||||
<a href="#" onClick={() => handleHistoryClick(index)} style={{
|
||||
backgroundColor: chatHistory.selectedIndex == index ? "var(--input-button-color)" : "",
|
||||
borderRadius:"5px"
|
||||
borderRadius: "5px",
|
||||
width: index==hoveredIndex && chatHistory.chats.length >1 ? "85%":"100%"
|
||||
}}>
|
||||
{chatHistory.chats[index].name}
|
||||
</a>
|
||||
<button id="delete-chat-button"
|
||||
onClick={()=>handleHistoryDeletion(index)}
|
||||
disabled={(index == hoveredIndex && chatHistory.chats.length >1) ? false : true}
|
||||
style={{
|
||||
width: index == hoveredIndex && chatHistory.chats.length >1 ? "15%" : "0",
|
||||
visibility: index == hoveredIndex && chatHistory.chats.length >1 ? "visible" : "hidden",
|
||||
marginLeft: index == hoveredIndex && chatHistory.chats.length >1? "0.5em":0
|
||||
}}>
|
||||
<svg viewBox="0 0 448 512"><path d="M135.2 17.7L128 32 32 32C14.3 32 0 46.3 0 64S14.3 96 32 96l384 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-96 0-7.2-14.3C307.4 6.8 296.3 0 284.2 0L163.8 0c-12.1 0-23.2 6.8-28.6 17.7zM416 128L32 128 53.2 467c1.6 25.3 22.6 45 47.9 45l245.8 0c25.3 0 46.3-19.7 47.9-45L416 128z"/></svg>
|
||||
</button>
|
||||
</li>
|
||||
))}
|
||||
<li>
|
||||
|
@ -52,7 +103,7 @@ const History: React.FC = () => {
|
|||
onChange={handleInputChange}
|
||||
placeholder="Enter text"
|
||||
className="chat-input"
|
||||
/>
|
||||
/>
|
||||
<button onClick={handleSaveButtonClick} className="save-btn">
|
||||
Save
|
||||
</button>
|
||||
|
@ -67,6 +118,6 @@ const History: React.FC = () => {
|
|||
</div>
|
||||
</div>
|
||||
);
|
||||
};
|
||||
}
|
||||
|
||||
export default History;
|
||||
export default History;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue