added dynamic getMessages query

This commit is contained in:
Samuel Andert 2023-09-21 22:03:40 +02:00
parent 5e3631c49d
commit 19674310e7
4 changed files with 46 additions and 21 deletions

View File

@ -4,12 +4,12 @@ import axios from 'axios';
export default createOperation.query({ export default createOperation.query({
input: z.object({ input: z.object({
page: z.number().optional(),
}), }),
handler: async ({ page = 1 }) => { handler: async () => {
console.log('Making request to Chatwoot API'); console.log('Making request to Chatwoot API');
const { data } = await axios.get(`https://chatwoot.andert.me/api/v1/accounts/1/contacts?page=${page}`, { const { data } = await axios.get(`https://chatwoot.andert.me/api/v1/accounts/1/contacts`, {
headers: { headers: {
api_access_token: process.env.CHATWOOT_API_ACCESS_TOKEN api_access_token: process.env.CHATWOOT_API_ACCESS_TOKEN
}, },

View File

@ -0,0 +1,20 @@
// .wundergraph/operations/getChatwootMessages.ts
import { createOperation, z } from '../generated/wundergraph.factory';
import axios from 'axios';
export default createOperation.query({
input: z.object({
conversationId: z.string(),
}),
handler: async ({ input }) => {
console.log('Making request to Chatwoot API');
const { data } = await axios.get(`https://chatwoot.andert.me/api/v1/accounts/1/conversations/${input.conversationId}/messages`, {
headers: {
api_access_token: process.env.CHATWOOT_API_ACCESS_TOKEN
},
});
return data;
},
});

View File

@ -5,7 +5,6 @@
const contactsQuery = createQuery({ const contactsQuery = createQuery({
operationName: "getChatwootContacts", operationName: "getChatwootContacts",
variables: { page: 2 },
}); });
</script> </script>

View File

@ -8,6 +8,8 @@
}); });
let selectedConversation = null; let selectedConversation = null;
let messagesQuery;
function selectConversation(conversation) { function selectConversation(conversation) {
selectedConversation = conversation; selectedConversation = conversation;
} }
@ -15,6 +17,13 @@
$: if ($conversationsQuery.data && !selectedConversation) { $: if ($conversationsQuery.data && !selectedConversation) {
selectedConversation = $conversationsQuery.data.data.payload[0]; selectedConversation = $conversationsQuery.data.data.payload[0];
} }
$: if (selectedConversation) {
messagesQuery = createQuery({
operationName: "getChatwootMessages",
input: { conversationId: selectedConversation.id },
});
}
</script> </script>
<div class="h-full w-full overflow-scroll flex"> <div class="h-full w-full overflow-scroll flex">
@ -49,24 +58,21 @@
</div> </div>
<div class="space-y-4 px-4"> <div class="space-y-4 px-4">
{#each selectedConversation.messages as message (message.id)} {#if $messagesQuery && $messagesQuery.data}
{#if message.content_type == "incoming_email"} {#each $messagesQuery.data.payload as message (message.id)}
{#if selectedConversation.last_non_activity_message.content != message.content} {#if message.content_attributes.email && (message.content_attributes.email.content_type.includes("text/html") || message.content_attributes.email.content_type.includes("multipart/alternative"))}
<MailViewer <MailViewer
html={selectedConversation.last_non_activity_message html={message.content_attributes.email.html_content.full}
.content_attributes.email.html_content.full} />
/>{/if} {:else}
<MailViewer <div
html={message.content_attributes.email.html_content.full} class="p-4 max-w-xs mx-auto bg-blue-100 rounded-xl shadow-md flex items-center space-x-4"
/> >
{:else} <p class="text-black">{message.content}</p>
{#if selectedConversation.last_non_activity_message.content != message.content}{selectedConversation </div>
.last_non_activity_message.content}{/if} {/if}
<p class="bg-slate-400 py-1 px-2 rounded-sm my-2"> {/each}
{message.content} {/if}
</p>
{/if}
{/each}
</div> </div>
{:else} {:else}
<p>Select a conversation to view its details.</p> <p>Select a conversation to view its details.</p>