-
Notifications
You must be signed in to change notification settings - Fork 3k
/
chatService.ts
45 lines (42 loc) 路 1.24 KB
/
chatService.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
import {
Message,
appendToNewChatSequence,
appendUserMessage,
takeOneTypeIt,
toggleTypingActive,
} from "#/state/chatSlice";
import store from "#/store";
import ActionType from "#/types/ActionType";
import { SocketMessage } from "#/types/ResponseType";
import { ActionMessage } from "#/types/Message";
import Socket from "./socket";
export function sendChatMessage(message: string): void {
store.dispatch(appendUserMessage(message));
const event = { action: ActionType.START, args: { task: message } };
const eventString = JSON.stringify(event);
Socket.send(eventString);
}
export function sendChatMessageFromEvent(event: string | SocketMessage): void {
try {
let data: ActionMessage;
if (typeof event === "string") {
data = JSON.parse(event);
} else {
data = event as ActionMessage;
}
if (data && data.args && data.args.task) {
store.dispatch(appendUserMessage(data.args.task));
}
} catch (error) {
//
}
}
export function setTypingActive(bool: boolean): void {
store.dispatch(toggleTypingActive(bool));
}
export function addAssistantMessageToChat(msg: Message): void {
store.dispatch(appendToNewChatSequence(msg));
}
export function takeOneAndType(): void {
store.dispatch(takeOneTypeIt());
}