Skip to content

Commit b2c604c

Browse files
committed
fix(failsafe): use uuid to failsafe the chatbox structure
1 parent c3ed1fc commit b2c604c

5 files changed

Lines changed: 41 additions & 17 deletions

File tree

web/package-lock.json

Lines changed: 13 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

web/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
"react-hook-form": "^7.53.2",
2323
"react-icons": "^5.3.0",
2424
"react-router-dom": "^6.27.0",
25+
"uuid": "^11.0.3",
2526
"zustand": "^5.0.1"
2627
},
2728
"devDependencies": {

web/src/components/internal-ui/ChatBox.tsx

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,19 +5,28 @@ import usePost from "../../hooks/usePost";
55
import { ENDPOINTS, UserType } from "../../features/constants";
66
import useGptStore from "../../utils/store";
77
import { useEffect } from "react";
8+
import { v4 as uuid } from "uuid";
89

910
interface Props {
1011
messageData: Message[];
1112
endpoint: ENDPOINTS;
1213
request: any;
1314
}
1415

16+
interface BasicGenApiResponse {
17+
output: string;
18+
}
19+
1520
const ChatBox = ({ messageData, endpoint, request }: Props) => {
1621
const addMessage = useGptStore((s) => s.addMessage);
17-
const { data, error, isPending } = usePost(endpoint, request);
22+
const { data, error, isLoading } = usePost<BasicGenApiResponse>(
23+
endpoint,
24+
request
25+
);
1826

1927
useEffect(() => {
20-
addMessage(UserType.BOT, data?.data.output);
28+
if (data?.data.output) addMessage(UserType.BOT, data?.data.output!, uuid());
29+
console.log(messageData);
2130
}, [request, data]);
2231

2332
return (
@@ -30,10 +39,10 @@ const ChatBox = ({ messageData, endpoint, request }: Props) => {
3039
p="1rem"
3140
overflowY="auto"
3241
>
33-
{messageData.map((message, index) => (
42+
{messageData.map((message) => (
3443
<ChatBubble
35-
isLoading={isPending}
36-
key={index}
44+
isLoading={isLoading}
45+
key={message.id}
3746
message={message.content}
3847
userType={message.user}
3948
/>

web/src/hooks/usePost.ts

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,18 @@ import apiClient from "../utils/apiClient";
33
import { useQuery } from "@tanstack/react-query";
44
import { ENDPOINTS } from "../features/constants";
55

6-
const usePost = (endpoint: ENDPOINTS, data: any) =>
6+
const usePost = <T>(endpoint: ENDPOINTS, data: T) =>
77
useQuery({
88
queryKey: [endpoint],
99
queryFn: () =>
10-
data ? apiClient.post(endpoint, data) : Promise.reject("No request data"),
11-
retry: 4,
12-
staleTime: 60,
10+
data
11+
? apiClient.post<T>(endpoint, data)
12+
: Promise.reject("No request data"),
13+
staleTime: 0,
14+
enabled: !!data && Object.keys(data).length > 0,
15+
refetchOnWindowFocus: false,
16+
gcTime: 0,
17+
retry: false,
1318
});
1419

1520
export default usePost;

web/src/utils/store.ts

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,13 @@
11
import { create } from "zustand";
22
import { UserType } from "../features/constants";
3-
4-
interface Message {
5-
user: UserType;
6-
content: string;
7-
}
3+
import { Message } from "../features/model";
84

95
interface DevOpsStore {
106
isOpen: boolean;
117
setIsOpen: (bool: boolean) => void;
128

139
messages: Message[];
14-
addMessage: (user: UserType, content: string) => void;
10+
addMessage: (user: UserType, content: string, id: string) => void;
1511
}
1612

1713
const initialState: Pick<DevOpsStore, "isOpen" | "messages"> = {
@@ -22,9 +18,9 @@ const initialState: Pick<DevOpsStore, "isOpen" | "messages"> = {
2218
const useGptStore = create<DevOpsStore>((set) => ({
2319
...initialState,
2420
setIsOpen: (bool) => set({ isOpen: bool }),
25-
addMessage: (user, content) =>
21+
addMessage: (user, content, id) =>
2622
set((state) => ({
27-
messages: [...state.messages, { user, content }],
23+
messages: [...state.messages, { user, content, id }],
2824
})),
2925
}));
3026

0 commit comments

Comments
 (0)