blob: 4a6807764f58111b1ab59c269bf88b1601c2edd1 [file] [log] [blame]
idillon08f77172022-09-13 19:14:17 -04001import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query";
2import axios from "axios"
3
4export const useConversationQuery = (accountId, conversationId) => {
5 return useQuery(
6 ["conversation", accountId, conversationId],
7 () => fetchConversation(accountId, conversationId),
8 {
9 "enabled": !!(accountId && conversationId),
10 }
11 )
12}
13
14export const useMessagesQuery = (accountId, conversationId) => {
15 return useQuery(
16 ["messages", accountId, conversationId],
17 () => fetchMessages(accountId, conversationId),
18 {
19 "enabled": !!(accountId && conversationId),
20 }
21 )
22}
23
idillonea465602022-09-13 19:58:51 -040024export const useSendMessageMutation = (accountId, conversationId) => {
25 const queryClient = useQueryClient();
26 return useMutation(
27 (message) => (
28 axios.post(`/api/accounts/${accountId}/conversations/${conversationId}`, {message})
29 ),
30 {
31 "onSuccess": () => queryClient.invalidateQueries(["messages", accountId, conversationId]),
32 }
33 )
34}
35
idillon08f77172022-09-13 19:14:17 -040036const fetchConversation = (accountId, conversationId) => (
37 axios
38 .get(`/api/accounts/${accountId}/conversations/${conversationId}`)
39 .then((result) => result.data)
40)
41
42const fetchMessages = (accountId, conversationId) => (
43 axios
44 .get(`/api/accounts/${accountId}/conversations/${conversationId}/messages`)
45 .then((result) => result.data)
46)