inbox-client

This commit is contained in:
Tony Rewin 2023-10-09 18:30:52 +03:00
parent 82411d1a11
commit f4336b40f6
3 changed files with 16 additions and 10 deletions

View File

@ -1,7 +1,7 @@
import type { Accessor, JSX } from 'solid-js' import type { Accessor, JSX } from 'solid-js'
import { createContext, createSignal, useContext } from 'solid-js' import { createContext, createSignal, useContext } from 'solid-js'
import type { Chat, Message, MutationCreateMessageArgs } from '../graphql/types.gen' import type { Chat, Message, MutationCreateMessageArgs } from '../graphql/types.gen'
import { apiClient } from '../utils/apiClient' import { inboxClient } from '../utils/apiClient'
import { loadMessages } from '../stores/inbox' import { loadMessages } from '../stores/inbox'
@ -26,7 +26,7 @@ export function useInbox() {
export const InboxProvider = (props: { children: JSX.Element }) => { export const InboxProvider = (props: { children: JSX.Element }) => {
const [chats, setChats] = createSignal<Chat[]>([]) const [chats, setChats] = createSignal<Chat[]>([])
const [messages, setMessages] = createSignal<Message[]>([]) const [messages, setMessages] = createSignal<Message[]>([])
const eventSource = new EventSource('testapi.discours.io/connect') const eventSource = new EventSource('chat.discours.io/connect')
// TODO: call /disconnect some time // TODO: call /disconnect some time
// eslint-disable-next-line unicorn/prefer-add-event-listener // eslint-disable-next-line unicorn/prefer-add-event-listener
eventSource.onmessage = function (event) { eventSource.onmessage = function (event) {

View File

@ -45,3 +45,8 @@ const options: ClientOptions = {
} }
export const privateGraphQLClient = createClient(options) export const privateGraphQLClient = createClient(options)
export const privateInboxGraphQLClient = createClient({
...options,
url: 'https://chat.discours.io'
})

View File

@ -18,7 +18,7 @@ import type {
Shout Shout
} from '../graphql/types.gen' } from '../graphql/types.gen'
import { publicGraphQLClient } from '../graphql/publicGraphQLClient' import { publicGraphQLClient } from '../graphql/publicGraphQLClient'
import { getToken, privateGraphQLClient } from '../graphql/privateGraphQLClient' import { getToken, privateGraphQLClient, privateInboxGraphQLClient } from '../graphql/privateGraphQLClient'
import topicsAll from '../graphql/query/topics-all' import topicsAll from '../graphql/query/topics-all'
import mySession from '../graphql/mutation/my-session' import mySession from '../graphql/mutation/my-session'
import authLogoutQuery from '../graphql/mutation/auth-logout' import authLogoutQuery from '../graphql/mutation/auth-logout'
@ -349,30 +349,31 @@ export const apiClient = {
.toPromise() .toPromise()
// console.debug(resp) // console.debug(resp)
return resp.data.loadReactionsBy return resp.data.loadReactionsBy
}, }
}
// inbox export const inboxClient = {
getChats: async (options: QueryLoadChatsArgs): Promise<Chat[]> => { getChats: async (options: QueryLoadChatsArgs): Promise<Chat[]> => {
const resp = await privateGraphQLClient.query(myChats, options).toPromise() const resp = await privateInboxGraphQLClient.query(myChats, options).toPromise()
return resp.data.loadChats.chats return resp.data.loadChats.chats
}, },
createChat: async (options: MutationCreateChatArgs) => { createChat: async (options: MutationCreateChatArgs) => {
const resp = await privateGraphQLClient.mutation(createChat, options).toPromise() const resp = await privateInboxGraphQLClient.mutation(createChat, options).toPromise()
return resp.data.createChat return resp.data.createChat
}, },
createMessage: async (options: MutationCreateMessageArgs) => { createMessage: async (options: MutationCreateMessageArgs) => {
const resp = await privateGraphQLClient.mutation(createMessage, options).toPromise() const resp = await privateInboxGraphQLClient.mutation(createMessage, options).toPromise()
return resp.data.createMessage.message return resp.data.createMessage.message
}, },
getChatMessages: async (options: QueryLoadMessagesByArgs) => { getChatMessages: async (options: QueryLoadMessagesByArgs) => {
const resp = await privateGraphQLClient.query(chatMessagesLoadBy, options).toPromise() const resp = await privateInboxGraphQLClient.query(chatMessagesLoadBy, options).toPromise()
return resp.data.loadMessagesBy.messages return resp.data.loadMessagesBy.messages
}, },
getRecipients: async (options: QueryLoadRecipientsArgs) => { getRecipients: async (options: QueryLoadRecipientsArgs) => {
const resp = await privateGraphQLClient.query(loadRecipients, options).toPromise() const resp = await privateInboxGraphQLClient.query(loadRecipients, options).toPromise()
return resp.data.loadRecipients.members return resp.data.loadRecipients.members
} }
} }