import { RequestApi } from '@/constant/api'; import OpenIMSDK from '.'; import type { GetOneConversationParams, PinConversationParams, SetBurnDurationParams, SetConversationDraftParams, SetConversationPrivateParams, SetConversationRecvOptParams, SplitConversationParams, } from '@/types/params'; import type { ConversationItem, WsResponse } from '@/types/entity'; export function setupConversation(openIMSDK: OpenIMSDK) { return { getAllConversationList: openIMSDK.createRequestFunctionWithoutParams< ConversationItem[] >(RequestApi.GetAllConversationList), getConversationListSplit: openIMSDK.createRequestFunction< SplitConversationParams, ConversationItem[] >(RequestApi.GetConversationListSplit, data => JSON.stringify([data.offset, data.count]) ), getOneConversation: openIMSDK.createRequestFunction< GetOneConversationParams, ConversationItem >(RequestApi.GetOneConversation, data => JSON.stringify([data.sessionType, data.sourceID]) ), getMultipleConversation: openIMSDK.createRequestFunction< string, ConversationItem[] >(RequestApi.GetMultipleConversation), getConversationIDBySessionType: openIMSDK.createRequestFunction< GetOneConversationParams, ConversationItem >(RequestApi.GetConversationIDBySessionType, data => JSON.stringify([data.sourceID, data.sessionType]) ), getTotalUnreadMsgCount: openIMSDK.createRequestFunctionWithoutParams( RequestApi.GetTotalUnreadMsgCount ), markConversationMessageAsRead: openIMSDK.createRequestFunction( RequestApi.MarkConversationMessageAsRead ), setConversationDraft: openIMSDK.createRequestFunction( RequestApi.SetConversationDraft, data => JSON.stringify([data.conversationID, data.draftText]) ), pinConversation: openIMSDK.createRequestFunction( RequestApi.PinConversation, data => JSON.stringify([data.conversationID, data.isPinned]) ), setConversationRecvMessageOpt: openIMSDK.createRequestFunction( RequestApi.SetConversationRecvMessageOpt, data => JSON.stringify([data.conversationID, data.opt]) ), setConversationPrivateChat: openIMSDK.createRequestFunction( RequestApi.SetConversationPrivateChat, data => JSON.stringify([data.conversationID, data.isPrivate]) ), setConversationBurnDuration: openIMSDK.createRequestFunction( RequestApi.SetConversationBurnDuration, data => JSON.stringify([data.conversationID, data.burnDuration]) ), resetConversationGroupAtType: openIMSDK.createRequestFunction( RequestApi.ResetConversationGroupAtType ), hideConversation: openIMSDK.createRequestFunction( RequestApi.HideConversation ), hideAllConversation: openIMSDK.createRequestFunctionWithoutParams( RequestApi.HideAllConversation ), clearConversationAndDeleteAllMsg: openIMSDK.createRequestFunction( RequestApi.ClearConversationAndDeleteAllMsg ), deleteConversationAndDeleteAllMsg: openIMSDK.createRequestFunction( RequestApi.DeleteConversationAndDeleteAllMsg ), }; } export interface ConversationApi { getAllConversationList: ( operationID?: string ) => Promise>; getConversationListSplit: ( params: SplitConversationParams, operationID?: string ) => Promise>; getOneConversation: ( params: GetOneConversationParams, operationID?: string ) => Promise>; getMultipleConversation: ( params: string, operationID?: string ) => Promise>; getConversationIDBySessionType: ( params: GetOneConversationParams, operationID?: string ) => Promise>; getTotalUnreadMsgCount: (operationID?: string) => Promise>; markConversationMessageAsRead: ( params: string, operationID?: string ) => Promise>; setConversationDraft: ( params: SetConversationDraftParams, operationID?: string ) => Promise>; pinConversation: ( params: PinConversationParams, operationID?: string ) => Promise>; setConversationRecvMessageOpt: ( params: SetConversationRecvOptParams, operationID?: string ) => Promise>; setConversationPrivateChat: ( params: SetConversationPrivateParams, operationID?: string ) => Promise>; setConversationBurnDuration: ( params: SetBurnDurationParams, operationID?: string ) => Promise>; resetConversationGroupAtType: ( params: string, operationID?: string ) => Promise>; hideConversation: ( params: string, operationID?: string ) => Promise>; hideAllConversation: (operationID?: string) => Promise>; clearConversationAndDeleteAllMsg: ( params: string, operationID?: string ) => Promise>; deleteConversationAndDeleteAllMsg: ( params: string, operationID?: string ) => Promise>; }