Refactor: add FileCardWrapper to prevent state sharing
This commit is contained in:
parent
ac932e9904
commit
0522195a49
2 changed files with 42 additions and 17 deletions
|
|
@ -0,0 +1,35 @@
|
||||||
|
import { useState } from "react";
|
||||||
|
import ForwardedIconComponent from "../../../../../../../components/genericIconComponent";
|
||||||
|
import formatFileName from "../../../filePreviewChat/utils/format-file-name";
|
||||||
|
import FileCard from "../../../fileComponent";
|
||||||
|
|
||||||
|
export default function FileCardWrapper({
|
||||||
|
index,
|
||||||
|
name,
|
||||||
|
type,
|
||||||
|
path,
|
||||||
|
}: {
|
||||||
|
index: number;
|
||||||
|
name: string;
|
||||||
|
type: string;
|
||||||
|
path: string;
|
||||||
|
}) {
|
||||||
|
const [show, setShow] = useState<boolean>(true);
|
||||||
|
return (
|
||||||
|
<div key={index} className="flex flex-col gap-2">
|
||||||
|
<span
|
||||||
|
onClick={() => setShow(!show)}
|
||||||
|
className="flex cursor-pointer gap-2 text-sm text-muted-foreground"
|
||||||
|
>
|
||||||
|
{formatFileName(name, 50)}
|
||||||
|
<ForwardedIconComponent name={show ? "ChevronDown" : "ChevronRight"} />
|
||||||
|
</span>
|
||||||
|
<FileCard
|
||||||
|
showFile={show}
|
||||||
|
fileName={name}
|
||||||
|
fileType={type}
|
||||||
|
content={path}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
@ -17,6 +17,7 @@ import { chatMessagePropsType } from "../../../../../types/components";
|
||||||
import { classNames, cn } from "../../../../../utils/utils";
|
import { classNames, cn } from "../../../../../utils/utils";
|
||||||
import FileCard from "../fileComponent";
|
import FileCard from "../fileComponent";
|
||||||
import formatFileName from "../filePreviewChat/utils/format-file-name";
|
import formatFileName from "../filePreviewChat/utils/format-file-name";
|
||||||
|
import FileCardWrapper from "./components/fileCardWrapper";
|
||||||
|
|
||||||
export default function ChatMessage({
|
export default function ChatMessage({
|
||||||
chat,
|
chat,
|
||||||
|
|
@ -325,23 +326,12 @@ dark:prose-invert"
|
||||||
<div className="my-2 flex flex-col gap-5">
|
<div className="my-2 flex flex-col gap-5">
|
||||||
{chat.files.map((file, index) => {
|
{chat.files.map((file, index) => {
|
||||||
return (
|
return (
|
||||||
<div key={index} className="flex flex-col gap-2">
|
<FileCardWrapper
|
||||||
<span
|
index={index}
|
||||||
onClick={() => setShowFile(!showFile)}
|
name={file.name}
|
||||||
className="flex cursor-pointer gap-2 text-sm text-muted-foreground"
|
type={file.type}
|
||||||
>
|
path={file.path}
|
||||||
{formatFileName(file.name, 50)}
|
/>
|
||||||
<ForwardedIconComponent
|
|
||||||
name={showFile ? "ChevronDown" : "ChevronRight"}
|
|
||||||
/>
|
|
||||||
</span>
|
|
||||||
<FileCard
|
|
||||||
showFile={showFile}
|
|
||||||
fileName={file.name}
|
|
||||||
fileType={file.type}
|
|
||||||
content={file.path}
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
);
|
);
|
||||||
})}
|
})}
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue