jan/web/app/_hooks/useCreateConversation.ts
NamH 26f732d541
Add model screen and refactoring (#242)
* Add model screen and refactoring

Signed-off-by: James <james@jan.ai>
2023-10-02 10:10:32 -07:00

56 lines
1.7 KiB
TypeScript

// import useGetCurrentUser from "./useGetCurrentUser";
import { useAtom, useSetAtom } from "jotai";
import {
addNewConversationStateAtom,
currentProductAtom,
setActiveConvoIdAtom,
userConversationsAtom,
} from "@/_helpers/JotaiWrapper";
import { Conversation } from "@/_models/Conversation";
import { executeSerial } from "@/_services/pluginService";
import { DataService, InfereceService } from "../../shared/coreService";
import { Product } from "@/_models/Product";
const useCreateConversation = () => {
const [userConversations, setUserConversations] = useAtom(
userConversationsAtom
);
const setActiveConvoId = useSetAtom(setActiveConvoIdAtom);
const addNewConvoState = useSetAtom(addNewConversationStateAtom);
const setActiveProduct = useSetAtom(currentProductAtom);
const requestCreateConvo = async (model: Product) => {
const conv: Conversation = {
image: undefined,
model_id: model.id,
created_at: new Date().toISOString(),
updated_at: new Date().toISOString(),
name: "Conversation",
};
const id = await executeSerial(DataService.CREATE_CONVERSATION, conv);
await executeSerial(InfereceService.INIT_MODEL, model);
setActiveProduct(model);
const mappedConvo: Conversation = {
id,
model_id: model.id,
name: "Conversation",
created_at: new Date().toISOString(),
updated_at: new Date().toISOString(),
};
addNewConvoState(id ?? "", {
hasMore: true,
waitingForResponse: false,
});
setUserConversations([mappedConvo, ...userConversations]);
setActiveConvoId(id);
};
return {
requestCreateConvo,
};
};
export default useCreateConversation;