This commit is contained in:
tonyrewin 2022-12-07 15:47:43 +03:00
parent 47822553bd
commit 7fda54636d
2 changed files with 26 additions and 13 deletions

View File

@ -4,6 +4,8 @@ import { createChatClient } from '../graphql/privateGraphQLClient'
import type { Chat } from '../graphql/types.gen'
import { apiClient } from '../utils/apiClient'
import newMessages from '../graphql/subs/new-messages'
import type { Client } from '@urql/core'
import { pipe, subscribe } from 'wonka'
type InboxContextType = {
chats: Accessor<Chat[]>
@ -23,7 +25,7 @@ export function useInbox() {
export const InboxProvider = (props: { children: JSX.Element }) => {
const [chats, setChats] = createSignal<Chat[]>([])
const [listener, setListener] = createSignal(console.debug)
const subclient = createMemo(() => createChatClient(listener()))
const subclient = createMemo<Client>(() => createChatClient(listener()))
const loadChats = async () => {
try {
const newChats = await apiClient.getChats({ limit: 50, offset: 0 })
@ -50,9 +52,15 @@ export const InboxProvider = (props: { children: JSX.Element }) => {
loadChats,
setListener // setting listening handler
}
onMount(() => {
const resp = subclient().subscription(newMessages, {})
console.debug(resp)
onMount(async () => {
const { unsubscribe } = pipe(
subclient().subscription(newMessages, {}),
subscribe((result) => {
console.debug(result) // { data: ... }
// TODO: handle data result
})
)
})
const value: InboxContextType = { chats, actions }
return <InboxContext.Provider value={value}>{props.children}</InboxContext.Provider>

View File

@ -54,9 +54,9 @@ export type AuthorsBy = {
}
export type Chat = {
admins?: Maybe<Array<Maybe<Scalars['String']>>>
admins?: Maybe<Array<Maybe<Scalars['Int']>>>
createdAt: Scalars['Int']
createdBy: Scalars['String']
createdBy: Scalars['Int']
description?: Maybe<Scalars['String']>
id: Scalars['String']
members?: Maybe<Array<Maybe<ChatMember>>>
@ -65,7 +65,7 @@ export type Chat = {
title?: Maybe<Scalars['String']>
unread?: Maybe<Scalars['Int']>
updatedAt: Scalars['Int']
users?: Maybe<Array<Maybe<Scalars['String']>>>
users?: Maybe<Array<Maybe<Scalars['Int']>>>
}
export type ChatInput = {
@ -78,6 +78,7 @@ export type ChatMember = {
id: Scalars['Int']
lastSeen?: Maybe<Scalars['DateTime']>
name: Scalars['String']
online?: Maybe<Scalars['Boolean']>
slug: Scalars['String']
userpic?: Maybe<Scalars['String']>
}
@ -139,12 +140,13 @@ export type LoadShoutsOptions = {
}
export type Message = {
author: Scalars['String']
author: Scalars['Int']
body: Scalars['String']
chatId: Scalars['String']
createdAt: Scalars['Int']
id: Scalars['Int']
replyTo?: Maybe<Scalars['String']>
seen?: Maybe<Scalars['Boolean']>
updatedAt?: Maybe<Scalars['Int']>
}
@ -353,6 +355,7 @@ export type Query = {
loadShout?: Maybe<Shout>
loadShouts: Array<Maybe<Shout>>
markdownBody: Scalars['String']
searchMessages: Result
searchRecipients: Result
signIn: AuthResult
signOut: AuthResult
@ -417,6 +420,12 @@ export type QueryMarkdownBodyArgs = {
body: Scalars['String']
}
export type QuerySearchMessagesArgs = {
by: MessagesBy
limit?: InputMaybe<Scalars['Int']>
offset?: InputMaybe<Scalars['Int']>
}
export type QuerySearchRecipientsArgs = {
limit?: InputMaybe<Scalars['Int']>
offset?: InputMaybe<Scalars['Int']>
@ -620,17 +629,13 @@ export type Stat = {
}
export type Subscription = {
newMessage: Message
newMessages: Message
onlineUpdated: Array<User>
reactionUpdated: ReactionUpdating
shoutUpdated: Shout
userUpdated: User
}
export type SubscriptionNewMessageArgs = {
chats?: InputMaybe<Array<Scalars['Int']>>
}
export type SubscriptionReactionUpdatedArgs = {
shout: Scalars['String']
}