blob: 1caa40e9146af5593688a8997b996d18aaa2f74b [file] [log] [blame]
simond47ef9e2022-09-28 22:24:28 -04001import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query';
2import axios from 'axios';
idillon08f77172022-09-13 19:14:17 -04003
4export const useConversationQuery = (accountId, conversationId) => {
simond47ef9e2022-09-28 22:24:28 -04005 return useQuery(['conversation', accountId, conversationId], () => fetchConversation(accountId, conversationId), {
6 enabled: !!(accountId && conversationId),
7 });
8};
idillon08f77172022-09-13 19:14:17 -04009
10export const useMessagesQuery = (accountId, conversationId) => {
simond47ef9e2022-09-28 22:24:28 -040011 return useQuery(['messages', accountId, conversationId], () => fetchMessages(accountId, conversationId), {
12 enabled: !!(accountId && conversationId),
13 });
14};
idillon08f77172022-09-13 19:14:17 -040015
idillonea465602022-09-13 19:58:51 -040016export const useSendMessageMutation = (accountId, conversationId) => {
simond47ef9e2022-09-28 22:24:28 -040017 const queryClient = useQueryClient();
18 return useMutation(
19 (message) => axios.post(`/api/accounts/${accountId}/conversations/${conversationId}`, { message }),
20 {
21 onSuccess: () => queryClient.invalidateQueries(['messages', accountId, conversationId]),
22 }
23 );
24};
idillonea465602022-09-13 19:58:51 -040025
simond47ef9e2022-09-28 22:24:28 -040026const fetchConversation = (accountId, conversationId) =>
27 axios.get(`/api/accounts/${accountId}/conversations/${conversationId}`).then((result) => result.data);
idillon08f77172022-09-13 19:14:17 -040028
simond47ef9e2022-09-28 22:24:28 -040029const fetchMessages = (accountId, conversationId) =>
30 axios.get(`/api/accounts/${accountId}/conversations/${conversationId}/messages`).then((result) => result.data);