export const SET_READ = ` mutation SetRead($chatId: ID!, $readIndex: Int!) { setRead(chatId: $chatId, readIndex: $readIndex) { id participants { id user { id } readIndex } } } `; export const DELETE_CHAT = ` mutation deleteChat($chatId: ID!) { deleteChat(chatId: $chatId) } `; export const UserFragment = { fragments: { full: ` fragment UserFragment on User { id username nickname tenantUserUniqueId iconUrl metadata roles remarkName remarkPhone remarkNote tenant { id } } `, }, }; export const ChatMemberFragment = { fragments: { full: ` fragment ChatMemberFragment on ChatMember { id user { ...UserFragment } readIndex dateCreated lastUpdated } `, }, }; export const ChatMessageFrag = { fragments: { full: ` fragment MessageFragment on ChatMessage { id sender { ...UserFragment } receiver { ...UserFragment } text dateCreated chatId chatIndex jsonContent picUrl } ${UserFragment.fragments.full} `, }, }; export const ChatFrag = { fragments: { full: ` fragment ChatFragment on Chat { id creator { ...UserFragment } partner { ...UserFragment } participants { ...ChatMemberFragment } lastEventIndex dateCreated } ${ChatMemberFragment.fragments.full} ${UserFragment.fragments.full} `, }, }; const ChatEventFrag = { fragments: { full: `fragment ChatEventFragment on ChatEvent { id creator { ...UserFragment } eventType customEventType data dateCreated chat { id } message { ...MessageFragment } relatedEvents { id eventType customEventType } } ${ChatMessageFrag.fragments.full} ${UserFragment.fragments.full} `, }, }; export const CHAT_SUBSCRIPTION = ` subscription ChatSubscription { stream { ...ChatEventFragment } } ${ChatEventFrag.fragments.full} ${ChatMessageFrag.fragments.full} `; export const GET_CHAT_LIST = ` query getChatList { chats { ...ChatFragment lastMessage { id text dateCreated sender { id nickname } } } } ${ChatFrag.fragments.full} `; export const GET_USER_CHAT = ` query getUserChat($userId: ID, $chatId: ID, $username: String) { userChat(partnerId: $userId, chatId: $chatId, partnerTenantUsername: $username) { ...ChatFragment events { ...ChatEventFragment } } } ${ChatFrag.fragments.full} ${ChatEventFrag.fragments.full} ${ChatMessageFrag.fragments.full} `; export const LOCAL_MESSAGES = ` query getMessages($after: DateTime!) { localMessages @client { id to from text time } } `; export const CHAT_EVENT = ` query chatEvent($chatId: ID!, $name: String!, $data: String) { chatEvent(chatId: $chatId, name: $name, data: $data) } `; export const CHAT_EVENTS = ` query chatEvents($chatId: ID!, $fromIndex: Int, $toIndex: Int) { chatEvents(chatId: $chatId, fromIndex: $fromIndex, toIndex: $toIndex) { ...ChatEventFragment } } ${ChatEventFrag.fragments.full} `; export const SAVE_CHAT_EVENT = ` mutation saveChatEvent($event: ChatEventInput) { saveChatEvent(event: $event) { ...ChatEventFragment } } ${UserFragment.fragments.full} ${ChatEventFrag.fragments.full} `; export const GET_CHAT_TOKEN = ` mutation getChatToken($chatId: ID!) { chatToken(chatId: $chatId) } `;