Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions src/components/header/SubHeader.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ const SubHeader = ({
const isChatPage = pathname === "/chat";
const isFirstQuestionPage = currentPage === 1;
const mode = state?.mode;
const chatId = state?.id;

const handleGoBack = () => {
if (isProgressPage && !isFirstQuestionPage) {
Expand All @@ -45,6 +46,10 @@ const SubHeader = ({
const handleCancel = () => setIsLeaveChatModalOpen(false);

const handleConfirm = () => {
if (chatId) {
sessionStorage.removeItem(`chatMessages_${chatId}`);
}

setIsLeaveChatModalOpen(false);
navigate("/");
};
Expand Down
12 changes: 11 additions & 1 deletion src/pages/Chat.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ interface ChatResponse {

const Chat = () => {
const { state } = useLocation();
const { mbti, mode, id } = state;
const { mbti, mode, id = Date.now().toString() } = state;

const [messages, setMessages] = useState<Message[]>([]);
const [input, setInput] = useState("");
Expand All @@ -30,11 +30,21 @@ const Chat = () => {
const chatTitle = `${mbti}와 대화`;
const assistantInfo = mbti;
const assistantImgUrl = pickMbtiImage(assistantInfo);
const storageKey = `chatMessages_${id}`;

useEffect(() => {
bottomRef.current?.scrollIntoView({ behavior: "smooth" });
}, [messages, isOpen]);

useEffect(() => {
const stored = sessionStorage.getItem(storageKey);
if (stored) setMessages(JSON.parse(stored));
}, [storageKey]);

useEffect(() => {
sessionStorage.setItem(storageKey, JSON.stringify(messages));
}, [messages, storageKey]);

const handleToggleTips = () => {
const nextAction = !isOpen;

Expand Down