jan/web-client/app/_hooks/useGetUserConversations.ts
NamH d55a83888b
refactor: replacing mobx with jotai (#160)
* refactor: replacing mobx with jotai

Signed-off-by: James <james@jan.ai>
Co-authored-by: James <james@jan.ai>
Co-authored-by: Louis <louis@jan.ai>
2023-09-13 21:33:53 -07:00

41 lines
1.2 KiB
TypeScript

import { GetConversationsQuery, GetConversationsDocument } from "@/graphql";
import { useLazyQuery } from "@apollo/client";
import { ConversationState, toConversation } from "@/_models/Conversation";
import { useSetAtom } from "jotai";
import {
conversationStatesAtom,
userConversationsAtom,
} from "@/_helpers/JotaiWrapper";
const useGetUserConversations = () => {
const setConversationStates = useSetAtom(conversationStatesAtom);
const setConversations = useSetAtom(userConversationsAtom);
const [getConvos] = useLazyQuery<GetConversationsQuery>(
GetConversationsDocument
);
const getUserConversations = async () => {
const results = await getConvos();
if (!results || !results.data || results.data.conversations.length === 0) {
return;
}
const convos = results.data.conversations.map((e) => toConversation(e));
const convoStates: Record<string, ConversationState> = {};
convos.forEach((convo) => {
convoStates[convo.id] = {
hasMore: true,
waitingForResponse: false,
};
});
setConversationStates(convoStates);
setConversations(convos);
};
return {
getUserConversations,
};
};
export default useGetUserConversations;