Spaces:
Sleeping
Sleeping
wuyiqunLu
commited on
fix: revalidatePath not work in api route handler (#95)
Browse fileshttps://nextjs.org/docs/app/building-your-application/caching#data-cache-and-client-side-router-cache
after ending, see the refreshed data
<img width="1524" alt="image"
src="https://github.com/landing-ai/vision-agent-ui/assets/132986242/65fb8076-26e9-4cb2-9e11-757a5db32a2c">
app/api/vision-agent/route.ts
CHANGED
@@ -118,7 +118,6 @@ export const POST = withLogging(
|
|
118 |
request,
|
119 |
) => {
|
120 |
const { apiMessages, mediaUrl, chatId, messageId } = json;
|
121 |
-
const messages: MessageUI[] = JSON.parse(apiMessages);
|
122 |
const user = session?.user?.email ?? 'anonymous';
|
123 |
|
124 |
const formData = new FormData();
|
@@ -323,6 +322,12 @@ export const POST = withLogging(
|
|
323 |
request,
|
324 |
'__AGENT_DONE',
|
325 |
);
|
|
|
|
|
|
|
|
|
|
|
|
|
326 |
controller.close();
|
327 |
}
|
328 |
}
|
|
|
118 |
request,
|
119 |
) => {
|
120 |
const { apiMessages, mediaUrl, chatId, messageId } = json;
|
|
|
121 |
const user = session?.user?.email ?? 'anonymous';
|
122 |
|
123 |
const formData = new FormData();
|
|
|
322 |
request,
|
323 |
'__AGENT_DONE',
|
324 |
);
|
325 |
+
// This is just using to trigger the onFinish event in useChat hooks
|
326 |
+
// but the message isn't used anywhere
|
327 |
+
// https://github.com/vercel/ai/blob/main/packages/ui-utils/src/call-chat-api.ts#L118
|
328 |
+
controller.enqueue(
|
329 |
+
encoder.encode('0:' + JSON.stringify('DONE') + '\n'),
|
330 |
+
);
|
331 |
controller.close();
|
332 |
}
|
333 |
}
|
lib/hooks/useVisionAgent.ts
CHANGED
@@ -6,6 +6,7 @@ import { convertDBMessageToAPIMessage } from '../utils/message';
|
|
6 |
import { useSetAtom } from 'jotai';
|
7 |
import { selectedMessageId } from '@/state/chat';
|
8 |
import { Message } from '@prisma/client';
|
|
|
9 |
|
10 |
const useVisionAgent = (chat: ChatWithMessages) => {
|
11 |
const { messages: dbMessages, id, mediaUrl } = chat;
|
@@ -15,6 +16,7 @@ const useVisionAgent = (chat: ChatWithMessages) => {
|
|
15 |
// Temporary solution for now while single we have to pass mediaUrl separately outside of the messages
|
16 |
const currMediaUrl = useRef<string>(mediaUrl);
|
17 |
const currMessageId = useRef<string>(latestDbMessage?.id);
|
|
|
18 |
|
19 |
const { append, isLoading, data, reload } = useChat({
|
20 |
api: '/api/vision-agent',
|
@@ -24,6 +26,7 @@ const useVisionAgent = (chat: ChatWithMessages) => {
|
|
24 |
}
|
25 |
},
|
26 |
onFinish: message => {
|
|
|
27 |
setMessageId(currMessageId.current);
|
28 |
},
|
29 |
body: {
|
|
|
6 |
import { useSetAtom } from 'jotai';
|
7 |
import { selectedMessageId } from '@/state/chat';
|
8 |
import { Message } from '@prisma/client';
|
9 |
+
import { useRouter } from 'next/navigation';
|
10 |
|
11 |
const useVisionAgent = (chat: ChatWithMessages) => {
|
12 |
const { messages: dbMessages, id, mediaUrl } = chat;
|
|
|
16 |
// Temporary solution for now while single we have to pass mediaUrl separately outside of the messages
|
17 |
const currMediaUrl = useRef<string>(mediaUrl);
|
18 |
const currMessageId = useRef<string>(latestDbMessage?.id);
|
19 |
+
const router = useRouter();
|
20 |
|
21 |
const { append, isLoading, data, reload } = useChat({
|
22 |
api: '/api/vision-agent',
|
|
|
26 |
}
|
27 |
},
|
28 |
onFinish: message => {
|
29 |
+
router.refresh();
|
30 |
setMessageId(currMessageId.current);
|
31 |
},
|
32 |
body: {
|