blob: 400617c86c97f4e26578f47fb5bf1ce0e90dac00 [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
simon35378692022-10-02 23:25:57 -04004export const useConversationQuery = (accountId: string, conversationId: string) => {
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
simon35378692022-10-02 23:25:57 -040010export const useMessagesQuery = (accountId: string, conversationId: string) => {
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
simon35378692022-10-02 23:25:57 -040016export const useSendMessageMutation = (accountId: string, conversationId: string) => {
simond47ef9e2022-09-28 22:24:28 -040017 const queryClient = useQueryClient();
18 return useMutation(
simon35378692022-10-02 23:25:57 -040019 (message: string) => axios.post(`/api/accounts/${accountId}/conversations/${conversationId}`, { message }),
simond47ef9e2022-09-28 22:24:28 -040020 {
21 onSuccess: () => queryClient.invalidateQueries(['messages', accountId, conversationId]),
22 }
23 );
24};
idillonea465602022-09-13 19:58:51 -040025
simon35378692022-10-02 23:25:57 -040026const fetchConversation = (accountId: string, conversationId: string) =>
simond47ef9e2022-09-28 22:24:28 -040027 axios.get(`/api/accounts/${accountId}/conversations/${conversationId}`).then((result) => result.data);
idillon08f77172022-09-13 19:14:17 -040028
simon35378692022-10-02 23:25:57 -040029const fetchMessages = (accountId: string, conversationId: string) =>
simond47ef9e2022-09-28 22:24:28 -040030 axios.get(`/api/accounts/${accountId}/conversations/${conversationId}/messages`).then((result) => result.data);