From 767147c4d10acb2d0246a7e4103f17e245d517b4 Mon Sep 17 00:00:00 2001 From: Untone Date: Wed, 11 Oct 2023 17:25:59 +0300 Subject: [PATCH] add-fetch-eventsource --- package.json | 1 + src/context/inbox.tsx | 15 +++++++++++++-- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index e6d3f2bb..1d9dcfd2 100644 --- a/package.json +++ b/package.json @@ -46,6 +46,7 @@ "@graphql-tools/url-loader": "7.17.18", "@graphql-typed-document-node/core": "3.2.0", "@hocuspocus/provider": "2.0.6", + "@microsoft/fetch-event-source": "^2.0.1", "@nanostores/router": "0.8.3", "@nanostores/solid": "0.3.2", "@popperjs/core": "2.11.8", diff --git a/src/context/inbox.tsx b/src/context/inbox.tsx index a7a9dc3b..26291434 100644 --- a/src/context/inbox.tsx +++ b/src/context/inbox.tsx @@ -1,8 +1,9 @@ import type { Accessor, JSX } from 'solid-js' import { createContext, createSignal, useContext } from 'solid-js' +import { fetchEventSource } from '@microsoft/fetch-event-source' import type { Chat, Message, MutationCreateMessageArgs } from '../graphql/types.gen' import { inboxClient } from '../utils/apiClient' - +import { getToken } from '../graphql/privateGraphQLClient' import { loadMessages } from '../stores/inbox' type InboxContextType = { @@ -26,7 +27,17 @@ export function useInbox() { export const InboxProvider = (props: { children: JSX.Element }) => { const [chats, setChats] = createSignal([]) const [messages, setMessages] = createSignal([]) - const eventSource = new EventSource('https://testapi.discours.io/connect') + const eventSource = new fetchEventSource('https://testapi.discours.io/connect', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + 'Authorization': getToken() + }, + body: JSON.stringify({ + foo: 'bar' + }), + // signal: signal, TODO: sometimes need to call /disconnect + }) // TODO: call /disconnect some time // eslint-disable-next-line unicorn/prefer-add-event-listener eventSource.onmessage = function (event) {