Push route state on generation finish (#492)

This commit is contained in:
Jeremy 2024-11-05 23:25:26 +03:00 committed by GitHub
parent 5d6d0ed664
commit f45bfac32b
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 5 additions and 5 deletions

View file

@ -3,6 +3,7 @@
import { Attachment, Message } from 'ai'; import { Attachment, Message } from 'ai';
import { useChat } from 'ai/react'; import { useChat } from 'ai/react';
import { AnimatePresence } from 'framer-motion'; import { AnimatePresence } from 'framer-motion';
import { useRouter } from 'next/navigation';
import { useState } from 'react'; import { useState } from 'react';
import useSWR, { useSWRConfig } from 'swr'; import useSWR, { useSWRConfig } from 'swr';
import { useWindowSize } from 'usehooks-ts'; import { useWindowSize } from 'usehooks-ts';
@ -27,6 +28,7 @@ export function Chat({
initialMessages: Array<Message>; initialMessages: Array<Message>;
selectedModelId: string; selectedModelId: string;
}) { }) {
const router = useRouter();
const { mutate } = useSWRConfig(); const { mutate } = useSWRConfig();
const { const {
@ -44,6 +46,7 @@ export function Chat({
initialMessages, initialMessages,
onFinish: () => { onFinish: () => {
mutate('/api/history'); mutate('/api/history');
router.push(`/chat/${id}`);
}, },
}); });

View file

@ -2,7 +2,6 @@
import { Message } from 'ai'; import { Message } from 'ai';
import cx from 'classnames'; import cx from 'classnames';
import { motion } from 'framer-motion';
import { Sparkles } from 'lucide-react'; import { Sparkles } from 'lucide-react';
import { Dispatch, SetStateAction } from 'react'; import { Dispatch, SetStateAction } from 'react';
@ -31,10 +30,8 @@ export const PreviewMessage = ({
isLoading: boolean; isLoading: boolean;
}) => { }) => {
return ( return (
<motion.div <div
className="w-full mx-auto max-w-3xl px-4 group/message " className="w-full mx-auto max-w-3xl px-4 group/message "
initial={{ y: 5, opacity: 0 }}
animate={{ y: 0, opacity: 1 }}
data-role={message.role} data-role={message.role}
> >
<div <div
@ -145,6 +142,6 @@ export const PreviewMessage = ({
/> />
</div> </div>
</div> </div>
</motion.div> </div>
); );
}; };