import { NativeEventEmitter, NativeModules, Platform } from 'react-native'; import { SelfUserInfo, UserOnlineState, BlackUserItem, FriendApplicationItem, FriendshipInfo, SearchedFriendsInfo, GroupApplicationItem, GroupItem, GroupMemberItem, ConversationItem, AdvancedGetMessageResult, CardElem, MessageItem, SearchMessageResult, FriendUserItem, PublicUserItem, OrderInfo, } from './types/entity'; import { LoginStatus, MessageReceiveOptType } from './types/enum'; import { AccessFriendParams, AccessGroupParams, AddBlackParams, AddFriendParams, AtMsgParams, ChangeGroupMemberMuteParams, ChangeGroupMuteParams, ChangeInputStatesParams, CreateGroupParams, CustomMsgParams, FaceMessageParams, FileMsgByPathParams, FileMsgParams, FindMessageParams, GetAdvancedHistoryMsgParams, GetGroupMemberByTimeParams, GetGroupMemberParams, GetInputStatesParams, GetOneConversationParams, GetSpecifiedFriendsParams, ImageMsgParams, InitOptions, InsertGroupMsgParams, InsertSingleMsgParams, JoinGroupParams, LocationMsgParams, LoginParams, LogsParams, MergerMsgParams, OffsetParams, OpreateGroupParams, OpreateMessageParams, PinConversationParams, QuoteMsgParams, RemarkFriendParams, SearchFriendParams, SearchGroupMemberParams, SearchGroupParams, SearchLocalParams, SendMsgParams, SetBurnDurationParams, SetConversationDraftParams, SetConversationPrivateParams, SetConversationRecvOptParams, SetGroupinfoParams, SetMessageLocalExParams, SoundMsgByPathParams, SoundMsgParams, SplitConversationParams, TransferGroupParams, TypingUpdateParams, UpdateFriendsParams, UpdateMemberInfoParams, UploadFileParams, UploadLogsParams, VideoMsgByPathParams, VideoMsgParams, getGroupMembersInfoParams, } from './types/params'; const LINKING_ERROR = `The package 'open-im-sdk-rn' doesn't seem to be linked. Make sure: \n\n` + Platform.select({ ios: "- You have run 'pod install'\n", default: '' }) + '- You rebuilt the app after installing the package\n' + '- You are not using Expo managed workflow\n'; const OpenIMSDKRN: OpenIMSDKRNInterface = NativeModules.OpenIMSDKRN ? NativeModules.OpenIMSDKRN : new Proxy( {}, { get() { throw new Error(LINKING_ERROR); }, } ); export const OpenIMEmitter = new NativeEventEmitter(OpenIMSDKRN); export default OpenIMSDKRN; interface OpenIMSDKRNInterface { addListener: (eventType: string) => void; removeListeners: (count: number) => void; // login initSDK: (params: InitOptions, operationID: string) => Promise; login: (params: LoginParams, operationID: string) => Promise; logout: (operationID: string) => Promise; getLoginStatus: (operationID: string) => Promise; uploadFile: ( params: UploadFileParams, operationID: string ) => Promise<{ url: string; }>; // user getUsersInfo: ( userIDList: string[], operationID: string ) => Promise; getSelfUserInfo: (operationID: string) => Promise; setSelfInfo: ( params: Partial, operationID: string ) => Promise; subscribeUsersStatus: ( params: string[], operationID: string ) => Promise; unsubscribeUsersStatus: ( params: string[], operationID: string ) => Promise; getSubscribeUsersStatus: (operationID: string) => Promise; setAppBackgroundStatus: ( params: boolean, operationID: string ) => Promise; networkStatusChanged: (operationID: string) => Promise; setGlobalRecvMessageOpt: ( params: MessageReceiveOptType, operationID: string ) => Promise; // friend relationShip acceptFriendApplication: ( params: AccessFriendParams, operationID: string ) => Promise; addBlack: (params: AddBlackParams, operationID: string) => Promise; addFriend: (params: AddFriendParams, operationID: string) => Promise; checkFriend: ( params: string[], operationID: string ) => Promise; deleteFriend: (params: string, operationID: string) => Promise; getBlackList: (operationID: string) => Promise; getFriendApplicationListAsApplicant: ( operationID: string ) => Promise; getFriendApplicationListAsRecipient: ( operationID: string ) => Promise; getFriendList: ( filterBlack: boolean, operationID: string ) => Promise; getFriendListPage: ( params: OffsetParams & { filterBlack?: boolean }, operationID: string ) => Promise; getSpecifiedFriendsInfo: ( params: GetSpecifiedFriendsParams, operationID: string ) => Promise; updateFriends: ( params: UpdateFriendsParams, operationID: string ) => Promise; refuseFriendApplication: ( params: AccessFriendParams, operationID: string ) => Promise; removeBlack: (params: string, operationID: string) => Promise; searchFriends: ( params: SearchFriendParams, operationID: string ) => Promise; setFriendRemark: ( params: RemarkFriendParams, operationID: string ) => Promise; // group createGroup: ( params: CreateGroupParams, operationID: string ) => Promise; joinGroup: (params: JoinGroupParams, operationID: string) => Promise; inviteUserToGroup: ( params: OpreateGroupParams, operationID: string ) => Promise; getJoinedGroupList: (operationID: string) => Promise; getJoinedGroupListPage: ( params: OffsetParams, operationID: string ) => Promise; searchGroups: ( params: SearchGroupParams, operationID: string ) => Promise; getSpecifiedGroupsInfo: ( params: string[], operationID: string ) => Promise; setGroupInfo: ( params: SetGroupinfoParams, operationID: string ) => Promise; getGroupApplicationListAsRecipient: ( operationID: string ) => Promise; getGroupApplicationListAsApplicant: ( operationID: string ) => Promise; acceptGroupApplication: ( params: AccessGroupParams, operationID: string ) => Promise; refuseGroupApplication: ( params: AccessGroupParams, operationID: string ) => Promise; getGroupMemberList: ( params: GetGroupMemberParams, operationID: string ) => Promise; getSpecifiedGroupMembersInfo: ( params: getGroupMembersInfoParams, operationID: string ) => Promise; getUsersInGroup: ( params: getGroupMembersInfoParams, operationID: string ) => Promise; searchGroupMembers: ( params: SearchGroupMemberParams, operationID: string ) => Promise; setGroupMemberInfo: ( params: UpdateMemberInfoParams, operationID: string ) => Promise; getGroupMemberOwnerAndAdmin: ( params: string, operationID: string ) => Promise; getGroupMemberListByJoinTimeFilter: ( params: GetGroupMemberByTimeParams, operationID: string ) => Promise; kickGroupMember: ( params: OpreateGroupParams, operationID: string ) => Promise; changeGroupMemberMute: ( params: ChangeGroupMemberMuteParams, operationID: string ) => Promise; changeGroupMute: ( params: ChangeGroupMuteParams, operationID: string ) => Promise; transferGroupOwner: ( params: TransferGroupParams, operationID: string ) => Promise; dismissGroup: (params: string, operationID: string) => Promise; quitGroup: (params: string, operationID: string) => Promise; // conversation & message 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; setConversation: ( params: SplitConversationParams, 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; createImageMessageFromFullPath: ( params: string, operationID: string ) => Promise; createVideoMessageFromFullPath: ( params: VideoMsgByPathParams, operationID: string ) => Promise; createSoundMessageFromFullPath: ( params: SoundMsgByPathParams, operationID: string ) => Promise; createFileMessageFromFullPath: ( params: FileMsgByPathParams, operationID: string ) => Promise; createTextMessage: ( params: string, operationID: string ) => Promise; createTextAtMessage: ( params: AtMsgParams, operationID: string ) => Promise; createImageMessageByURL: ( params: ImageMsgParams, operationID: string ) => Promise; createSoundMessageByURL: ( params: SoundMsgParams, operationID: string ) => Promise; createVideoMessageByURL: ( params: VideoMsgParams, operationID: string ) => Promise; createFileMessageByURL: ( params: FileMsgParams, operationID: string ) => Promise; createMergerMessage: ( params: MergerMsgParams, operationID: string ) => Promise; createForwardMessage: ( params: MessageItem, operationID: string ) => Promise; createLocationMessage: ( params: LocationMsgParams, operationID: string ) => Promise; createQuoteMessage: ( params: QuoteMsgParams, operationID: string ) => Promise; createCardMessage: ( params: CardElem, operationID: string ) => Promise; createCustomMessage: ( params: CustomMsgParams, operationID: string ) => Promise; createFaceMessage: ( params: FaceMessageParams, operationID: string ) => Promise; sendMessage: ( params: SendMsgParams, operationID: string ) => Promise; sendMessageNotOss: ( params: SendMsgParams, operationID: string ) => Promise; typingStatusUpdate: ( params: TypingUpdateParams, operationID: string ) => Promise; changeInputStates: ( params: ChangeInputStatesParams, operationID: string ) => Promise; getInputStates: ( params: GetInputStatesParams, operationID: string ) => Promise; revokeMessage: ( params: OpreateMessageParams, operationID: string ) => Promise; deleteMessage: ( params: OpreateMessageParams, operationID: string ) => Promise; deleteMessageFromLocalStorage: ( params: OpreateMessageParams, operationID: string ) => Promise; deleteAllMsgFromLocal: (operationID: string) => Promise; deleteAllMsgFromLocalAndSvr: (operationID: string) => Promise; searchLocalMessages: ( params: SearchLocalParams, operationID: string ) => Promise; getAdvancedHistoryMessageList: ( params: GetAdvancedHistoryMsgParams, operationID: string ) => Promise; getAdvancedHistoryMessageListReverse: ( params: GetAdvancedHistoryMsgParams, operationID: string ) => Promise; findMessageList: ( params: FindMessageParams[], operationID: string ) => Promise; insertGroupMessageToLocalStorage: ( params: InsertGroupMsgParams, operationID: string ) => Promise; insertSingleMessageToLocalStorage: ( params: InsertSingleMsgParams, operationID: string ) => Promise; setMessageLocalEx: ( params: SetMessageLocalExParams, operationID: string ) => Promise; uploadLogs: (params: UploadLogsParams, opid?: string) => Promise; logs: (params: LogsParams, opid?: string) => Promise; unInitSDK: (opid?: string) => Promise; //order createOrder: (productID: string, quantity: string, paymentMethodId: string, operationID: string) => Promise; }