Skip to content
This repository was archived by the owner on Apr 18, 2024. It is now read-only.

Commit adbe756

Browse files
committed
refactor: rename api params and extract them into a map
Signed-off-by: teobler <teobler@163.com>
1 parent 04f3207 commit adbe756

File tree

8 files changed

+82
-163
lines changed

8 files changed

+82
-163
lines changed

packages/click-prompt-button/src/ClickPromptButton.tsx

Lines changed: 6 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -5,40 +5,25 @@ import { ClickPromptSmall } from "@/CustomIcon";
55
import { ButtonSize, StyledPromptButton } from "@/SharedButton";
66
import { LoggingDrawer } from "@/LoggingDrawer";
77
import { ClickPromptBird } from "@/ClickPromptBird";
8-
import type { Response, SharedApi } from "@/types/shared";
8+
import type { LlmServiceApi } from "@/types/llmServiceApi";
99

10-
interface ClickPromptButtonProps extends SharedApi {
10+
interface ClickPromptButtonProps {
1111
loading?: boolean;
1212
onClick?: MouseEventHandler;
1313
size?: ButtonSize;
1414
text: string;
1515
children?: React.ReactNode;
16-
loginApi: () => Promise<Response>;
16+
llmServiceApi: LlmServiceApi;
1717
}
1818

19-
export function ClickPromptButton({
20-
isLoggedInApi,
21-
children,
22-
size,
23-
text,
24-
onClick,
25-
loading,
26-
changeConversationNameApi,
27-
createConversationApi,
28-
getChatsByConversationIdApi,
29-
deleteConversationApi,
30-
deleteAllConversationsApi,
31-
sendMsgWithStreamResApi,
32-
logoutApi,
33-
loginApi,
34-
}: ClickPromptButtonProps) {
19+
export function ClickPromptButton({ children, size, text, onClick, loading, llmServiceApi }: ClickPromptButtonProps) {
3520
const [isLoading, setIsLoading] = useState(loading);
3621
const [isLoggedIn, setIsLoggedIn] = useState(false);
3722
const { isOpen, onOpen, onClose } = useDisclosure();
3823

3924
const handleClick = async (event: React.MouseEvent) => {
4025
setIsLoading(true);
41-
const isLoggedIn = await isLoggedInApi();
26+
const isLoggedIn = await llmServiceApi.isLoggedIn();
4227
setIsLoggedIn(isLoggedIn);
4328
onOpen();
4429
onClick && onClick(event);
@@ -85,14 +70,7 @@ export function ClickPromptButton({
8570
handleClose,
8671
isLoggedIn,
8772
initMessage: text,
88-
changeConversationNameApi,
89-
createConversationApi,
90-
getChatsByConversationIdApi,
91-
deleteConversationApi,
92-
deleteAllConversationsApi,
93-
sendMsgWithStreamResApi,
94-
logoutApi,
95-
loginApi,
73+
llmServiceApi,
9674
})}
9775
</Box>
9876
);

packages/click-prompt-button/src/ExecutePromptButton.tsx

Lines changed: 9 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,16 @@ import { BeatLoader } from "react-spinners";
44
import { StyledPromptButton } from "@/SharedButton";
55
import { LoggingDrawer } from "@/LoggingDrawer";
66
import { ClickPromptBird } from "@/ClickPromptBird";
7-
import type { Response, SharedApi } from "@/types/shared";
7+
import type { LlmServiceApi } from "@/types/llmServiceApi";
88

9-
interface ExecButtonProps extends SharedApi {
9+
interface ExecButtonProps {
1010
loading?: boolean;
1111
text: string;
1212
children?: React.ReactNode;
1313
handleResponse?: (response: ReadableStream<Uint8Array> | null) => void;
1414
conversationId?: number;
1515
updateConversationId?: (conversationId: number) => void;
16-
loginApi: () => Promise<Response>;
16+
llmServiceApi: LlmServiceApi;
1717
}
1818

1919
export const ExecutePromptButton = ({
@@ -23,15 +23,7 @@ export const ExecutePromptButton = ({
2323
handleResponse,
2424
conversationId,
2525
updateConversationId,
26-
isLoggedInApi,
27-
changeConversationNameApi,
28-
createConversationApi,
29-
getChatsByConversationIdApi,
30-
deleteConversationApi,
31-
deleteAllConversationsApi,
32-
sendMsgWithStreamResApi,
33-
logoutApi,
34-
loginApi,
26+
llmServiceApi,
3527
}: ExecButtonProps) => {
3628
const [isLoading, setIsLoading] = useState(loading);
3729
const { isOpen, onOpen, onClose } = useDisclosure();
@@ -41,8 +33,8 @@ export const ExecutePromptButton = ({
4133
setIsLoading(true);
4234

4335
try {
44-
const isLoggedIn = await isLoggedInApi();
45-
if (!isLoggedIn) {
36+
const isUserLoggedIn = await llmServiceApi.isLoggedIn();
37+
if (!isUserLoggedIn) {
4638
onOpen();
4739
setIsLoading(false);
4840
return;
@@ -54,7 +46,7 @@ export const ExecutePromptButton = ({
5446

5547
let newConversationId = conversationId;
5648
if (!conversationId) {
57-
const conversation = await createConversationApi();
49+
const conversation = await llmServiceApi.createConversation();
5850
if (!conversation) {
5951
return;
6052
}
@@ -64,7 +56,7 @@ export const ExecutePromptButton = ({
6456
}
6557

6658
if (newConversationId) {
67-
const response = await sendMsgWithStreamResApi(newConversationId, text);
59+
const response = await llmServiceApi.sendMsgWithStreamRes(newConversationId, text);
6860
if (response && handleResponse) {
6961
handleResponse(response);
7062
}
@@ -108,14 +100,7 @@ export const ExecutePromptButton = ({
108100
updateStatus: updateLoginStatus,
109101
isLoggedIn: hasLogin,
110102
initMessage: text,
111-
changeConversationNameApi,
112-
createConversationApi,
113-
getChatsByConversationIdApi,
114-
deleteConversationApi,
115-
deleteAllConversationsApi,
116-
sendMsgWithStreamResApi,
117-
logoutApi,
118-
loginApi,
103+
llmServiceApi,
119104
})}
120105
</>
121106
);

packages/click-prompt-button/src/LoggingDrawer.tsx

Lines changed: 5 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11
import { Drawer, DrawerBody, DrawerCloseButton, DrawerContent, DrawerOverlay } from "@chakra-ui/react";
22
import { ChatGPTApp } from "@/chatgpt/ChatGPTApp";
33
import React from "react";
4-
import type { Response, SharedApi } from "@/types/shared";
4+
import type { LlmServiceApi } from "@/types/llmServiceApi";
55

6-
interface LoggingDrawerProps extends Omit<SharedApi, "isLoggedInApi"> {
6+
interface LoggingDrawerProps {
77
isOpen: boolean;
88
handleClose: () => void;
99
isLoggedIn: boolean;
1010
updateStatus?: (loggedIn: boolean) => void;
1111
initMessage: string;
12-
loginApi: () => Promise<Response>;
12+
llmServiceApi: LlmServiceApi;
1313
}
1414

1515
export function LoggingDrawer({
@@ -18,14 +18,7 @@ export function LoggingDrawer({
1818
isLoggedIn,
1919
updateStatus,
2020
initMessage,
21-
changeConversationNameApi,
22-
createConversationApi,
23-
getChatsByConversationIdApi,
24-
deleteConversationApi,
25-
deleteAllConversationsApi,
26-
sendMsgWithStreamResApi,
27-
logoutApi,
28-
loginApi,
21+
llmServiceApi,
2922
}: LoggingDrawerProps) {
3023
return (
3124
<Drawer isOpen={isOpen} placement="right" onClose={handleClose} size={"2xl"}>
@@ -38,14 +31,7 @@ export function LoggingDrawer({
3831
loggedIn={isLoggedIn}
3932
initMessage={initMessage}
4033
updateLoginStatus={updateStatus}
41-
changeConversationNameApi={changeConversationNameApi}
42-
createConversationApi={createConversationApi}
43-
getChatsByConversationIdApi={getChatsByConversationIdApi}
44-
deleteConversationApi={deleteConversationApi}
45-
deleteAllConversationsApi={deleteAllConversationsApi}
46-
sendMsgWithStreamResApi={sendMsgWithStreamResApi}
47-
logoutApi={logoutApi}
48-
loginApi={loginApi}
34+
llmServiceApi={llmServiceApi}
4935
/>
5036
</div>
5137
</DrawerBody>
Lines changed: 6 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,15 @@
11
import { ChatRoom } from "@/chatgpt/ChatRoom";
22
import { LoginPage } from "@/chatgpt/LoginPage";
33
import React, { useEffect, useState } from "react";
4-
import type { Response, SharedApi } from "@/types/shared";
4+
import type { LlmServiceApi } from "@/types/llmServiceApi";
55

6-
interface ChatGPTAppProps extends Omit<SharedApi, "isLoggedInApi"> {
6+
interface ChatGPTAppProps {
77
loggedIn?: boolean;
88
updateLoginStatus?: (loggedIn: boolean) => void;
99
initMessage?: string;
10-
loginApi: () => Promise<Response>;
10+
llmServiceApi: LlmServiceApi;
1111
}
12-
export const ChatGPTApp = ({
13-
loggedIn,
14-
initMessage,
15-
updateLoginStatus,
16-
changeConversationNameApi,
17-
createConversationApi,
18-
getChatsByConversationIdApi,
19-
deleteConversationApi,
20-
deleteAllConversationsApi,
21-
sendMsgWithStreamResApi,
22-
logoutApi,
23-
loginApi,
24-
}: ChatGPTAppProps) => {
12+
export const ChatGPTApp = ({ loggedIn, initMessage, updateLoginStatus, llmServiceApi }: ChatGPTAppProps) => {
2513
const [isLoggedIn, setIsLoggedIn] = useState(loggedIn ?? false);
2614

2715
useEffect(() => {
@@ -31,18 +19,8 @@ export const ChatGPTApp = ({
3119
}, [isLoggedIn]);
3220

3321
return isLoggedIn ? (
34-
<ChatRoom
35-
setIsLoggedIn={setIsLoggedIn}
36-
initMessage={initMessage}
37-
changeConversationNameApi={changeConversationNameApi}
38-
createConversationApi={createConversationApi}
39-
getChatsByConversationIdApi={getChatsByConversationIdApi}
40-
deleteConversationApi={deleteConversationApi}
41-
deleteAllConversationsApi={deleteAllConversationsApi}
42-
sendMsgWithStreamResApi={sendMsgWithStreamResApi}
43-
logoutApi={logoutApi}
44-
/>
22+
<ChatRoom setIsLoggedIn={setIsLoggedIn} initMessage={initMessage} llmServiceApi={llmServiceApi} />
4523
) : (
46-
<LoginPage setIsLoggedIn={setIsLoggedIn} loginApi={loginApi} />
24+
<LoginPage setIsLoggedIn={setIsLoggedIn} login={llmServiceApi.login} />
4725
);
4826
};

packages/click-prompt-button/src/chatgpt/ChatRoom.tsx

Lines changed: 11 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import { BeatLoader } from "react-spinners";
1010
import { useDebouncedCallback } from "use-debounce";
1111
import { Input } from "@chakra-ui/react";
1212
import SimpleMarkdown from "@/markdown/SimpleMarkdown";
13-
import type { Chat, Conversation, SharedApi } from "@/types/shared";
13+
import type { Chat, Conversation, LlmServiceApi } from "@/types/llmServiceApi";
1414

1515
const ChatInput = styled("input")`
1616
background: #ffffff;
@@ -75,22 +75,13 @@ const ChatSendButton = styled("button")`
7575
outline: none;
7676
`;
7777

78-
interface ChatRoomProps extends Omit<SharedApi, "isLoggedInApi"> {
78+
interface ChatRoomProps {
7979
setIsLoggedIn: Dispatch<SetStateAction<boolean>>;
8080
initMessage?: string;
81+
llmServiceApi: Omit<LlmServiceApi, "isLoggedIn">;
8182
}
8283

83-
export const ChatRoom = ({
84-
setIsLoggedIn,
85-
initMessage,
86-
changeConversationNameApi,
87-
createConversationApi,
88-
getChatsByConversationIdApi,
89-
deleteConversationApi,
90-
deleteAllConversationsApi,
91-
sendMsgWithStreamResApi,
92-
logoutApi,
93-
}: ChatRoomProps) => {
84+
export const ChatRoom = ({ setIsLoggedIn, initMessage, llmServiceApi }: ChatRoomProps) => {
9485
const chatsWrapper = React.useRef<HTMLDivElement>(null);
9586
const [disable, setDisable] = React.useState(false);
9687
const [chatHistory, setChatHistory] = React.useState<Chat[]>([]);
@@ -143,7 +134,7 @@ export const ChatRoom = ({
143134
};
144135

145136
async function createConversation() {
146-
const data = await createConversationApi();
137+
const data = await llmServiceApi.createConversation();
147138
if (!data) {
148139
return;
149140
}
@@ -153,7 +144,7 @@ export const ChatRoom = ({
153144
}
154145

155146
async function changeConversationName(conversationId: number, name: string) {
156-
await changeConversationNameApi(conversationId, name);
147+
await changeConversationName(conversationId, name);
157148

158149
setConversations((c) =>
159150
c.map((conversation) => {
@@ -189,7 +180,7 @@ export const ChatRoom = ({
189180

190181
try {
191182
setCurrentConversation(conversationId);
192-
const data = await getChatsByConversationIdApi(conversationId);
183+
const data = await llmServiceApi.getChatsByConversationId(conversationId);
193184
if (!data) {
194185
return;
195186
}
@@ -204,15 +195,15 @@ export const ChatRoom = ({
204195
);
205196

206197
async function deleteConversation(conversationId: number) {
207-
const data = await deleteConversationApi(conversationId);
198+
const data = await llmServiceApi.deleteConversation(conversationId);
208199
if (!data) {
209200
return;
210201
}
211202
setConversations(conversations.filter((conversation) => conversation.id !== conversationId));
212203
}
213204

214205
async function deleteAllConversations() {
215-
const data = await deleteAllConversationsApi();
206+
const data = await llmServiceApi.deleteAllConversations();
216207
if (!data) {
217208
return;
218209
}
@@ -246,7 +237,7 @@ export const ChatRoom = ({
246237

247238
setChatHistory([...updatedHistory]);
248239

249-
const data = await sendMsgWithStreamResApi(currentConversation as number, message);
240+
const data = await llmServiceApi.sendMsgWithStreamRes(currentConversation as number, message);
250241
if (!data) {
251242
setDisable(false);
252243
setChatHistory([...updatedHistory.slice(0, updatedHistory.length - 1)]);
@@ -296,7 +287,7 @@ export const ChatRoom = ({
296287
}
297288

298289
async function logout() {
299-
await logoutApi();
290+
await logout();
300291
setIsLoggedIn(false);
301292
}
302293

packages/click-prompt-button/src/chatgpt/LoginPage.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
import React, { Dispatch, SetStateAction } from "react";
22
import { Button, Input } from "@chakra-ui/react";
3-
import type { Response } from "@/types/shared";
3+
import { LlmServiceApi } from "@/types/llmServiceApi";
44

55
export const LoginPage = ({
66
setIsLoggedIn,
7-
loginApi,
7+
login: loginApi,
88
}: {
99
setIsLoggedIn: Dispatch<SetStateAction<boolean>>;
10-
loginApi: (key: string) => Promise<Response>;
10+
login: LlmServiceApi["login"];
1111
}) => {
1212
const [openAiKey, setOpenAiKey] = React.useState("");
1313

0 commit comments

Comments
 (0)