From 5601f935f02ed088e7ae041733f0519414cd1ea6 Mon Sep 17 00:00:00 2001 From: Bloomingg <1293499952@qq.com> Date: Tue, 30 Jul 2024 16:17:56 +0800 Subject: [PATCH] chore: release 1.0.5 --- package.json | 6 +++--- src/constant/callback.ts | 36 ++++++++++++++++--------------- src/core/index.ts | 42 ++++++++++++++++++++++++++++++++----- src/core/modules/friend.ts | 14 +++++++++++++ src/core/modules/group.ts | 31 +++++++++++++++++++++++++++ src/types/libOpenIMSDK.d.ts | 12 +++++++++++ 6 files changed, 116 insertions(+), 25 deletions(-) diff --git a/package.json b/package.json index 2257262..ce1c009 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@openim/electron-client-sdk", - "version": "1.0.2", + "version": "1.0.5", "description": "open im sdk for node", "source": "src/index.ts", "main": "lib/index.js", @@ -59,7 +59,7 @@ "husky": "^6.0.0", "jest": "^27.2.0", "lint-staged": "^10.5.4", - "open-im-sdk-wasm": "^3.5.3-alpha.3", + "open-im-sdk-wasm": "^3.5.3-alpha.6", "prettier": "^2.2.1", "rollup": "^2.79.1", "rollup-plugin-typescript2": "^0.36.0", @@ -81,6 +81,6 @@ }, "peerDependencies": { "electron": ">=12.0.0", - "open-im-sdk-wasm": "^3.5.3-alpha.5" + "open-im-sdk-wasm": "^3.8.0-rc.6" } } diff --git a/src/constant/callback.ts b/src/constant/callback.ts index 8df76d8..082e3f3 100644 --- a/src/constant/callback.ts +++ b/src/constant/callback.ts @@ -47,16 +47,17 @@ export enum NativeEvent { USER_STATUS_CHANGED, RECV_CUSTOM_BUSINESS_MESSAGE, MESSAGE_KV_INFO_CHANGED, - UPLOAD_FILE_CALLBACK_OPEN, - UPLOAD_FILE_CALLBACK_PART_SIZE, - UPLOAD_FILE_CALLBACK_HASH_PART_PROGRESS, - UPLOAD_FILE_CALLBACK_HASH_PART_COMPLETE, - UPLOAD_FILE_CALLBACK_UPLOAD_ID, - UPLOAD_FILE_CALLBACK_UPLOAD_PART_COMPLETE, - UPLOAD_FILE_CALLBACK_UPLOAD_COMPLETE, - UPLOAD_FILE_CALLBACK_COMPLETE, + OPEN, + PART_SIZE, + HASH_PART_PROGRESS, + HASH_PART_COMPLETE, + UPLOAD_ID, + UPLOAD_PART_COMPLETE, + UPLOAD_COMPLETE, + COMPLETE, CONVERSATION_USER_INPUT_STATUS_CHANGED, RECV_ONLINE_ONLY_MESSAGE, + USER_TOKEN_INVALID, RECV_NEW_INVITATION, INVITEE_ACCEPTED, INVITEE_ACCEPTED_BY_OTHER_DEVICE, @@ -77,6 +78,7 @@ export const eventMapping: Record = { [NativeEvent.CONNECT_FAILED]: CbEvents.OnConnectFailed, [NativeEvent.KICKED_OFFLINE]: CbEvents.OnKickedOffline, [NativeEvent.USER_TOKEN_EXPIRED]: CbEvents.OnUserTokenExpired, + [NativeEvent.USER_TOKEN_INVALID]: CbEvents.OnUserTokenInvalid, [NativeEvent.JOINED_GROUP_ADDED]: CbEvents.OnJoinedGroupAdded, [NativeEvent.JOINED_GROUP_DELETED]: CbEvents.OnJoinedGroupDeleted, [NativeEvent.GROUP_MEMBER_ADDED]: CbEvents.OnGroupMemberAdded, @@ -101,7 +103,7 @@ export const eventMapping: Record = { [NativeEvent.BLACK_DELETED]: CbEvents.OnBlackDeleted, [NativeEvent.SYNC_SERVER_START]: CbEvents.OnSyncServerStart, [NativeEvent.SYNC_SERVER_FINISH]: CbEvents.OnSyncServerFinish, - [NativeEvent.SYNC_SERVER_PROGRESS]: CbEvents.OnProgress, + [NativeEvent.SYNC_SERVER_PROGRESS]: CbEvents.OnSyncServerProgress, [NativeEvent.SYNC_SERVER_FAILED]: CbEvents.OnSyncServerFailed, [NativeEvent.NEW_CONVERSATION]: CbEvents.OnNewConversation, [NativeEvent.CONVERSATION_CHANGED]: CbEvents.OnConversationChanged, @@ -116,7 +118,14 @@ export const eventMapping: Record = { [NativeEvent.USER_STATUS_CHANGED]: CbEvents.OnUserStatusChanged, [NativeEvent.RECV_CUSTOM_BUSINESS_MESSAGE]: CbEvents.OnRecvCustomBusinessMessage, - [NativeEvent.UPLOAD_FILE_CALLBACK_COMPLETE]: CbEvents.UploadComplete, + [NativeEvent.UPLOAD_COMPLETE]: CbEvents.UploadComplete, + [NativeEvent.OPEN]: CbEvents.UnUsedEvent, + [NativeEvent.PART_SIZE]: CbEvents.UnUsedEvent, + [NativeEvent.HASH_PART_PROGRESS]: CbEvents.UnUsedEvent, + [NativeEvent.HASH_PART_COMPLETE]: CbEvents.UnUsedEvent, + [NativeEvent.UPLOAD_ID]: CbEvents.UnUsedEvent, + [NativeEvent.UPLOAD_PART_COMPLETE]: CbEvents.UnUsedEvent, + [NativeEvent.COMPLETE]: CbEvents.UnUsedEvent, [NativeEvent.RECV_MESSAGE_EXTENSIONS_CHANGED]: CbEvents.UnUsedEvent, [NativeEvent.RECV_MESSAGE_EXTENSIONS_DELETED]: CbEvents.UnUsedEvent, [NativeEvent.RECV_MESSAGE_EXTENSIONS_ADDED]: CbEvents.UnUsedEvent, @@ -124,13 +133,6 @@ export const eventMapping: Record = { [NativeEvent.MSG_DELETED]: CbEvents.UnUsedEvent, [NativeEvent.RECV_OFFLINE_NEW_MESSAGES]: CbEvents.UnUsedEvent, [NativeEvent.MESSAGE_KV_INFO_CHANGED]: CbEvents.UnUsedEvent, - [NativeEvent.UPLOAD_FILE_CALLBACK_OPEN]: CbEvents.UnUsedEvent, - [NativeEvent.UPLOAD_FILE_CALLBACK_PART_SIZE]: CbEvents.UnUsedEvent, - [NativeEvent.UPLOAD_FILE_CALLBACK_HASH_PART_PROGRESS]: CbEvents.UnUsedEvent, - [NativeEvent.UPLOAD_FILE_CALLBACK_HASH_PART_COMPLETE]: CbEvents.UnUsedEvent, - [NativeEvent.UPLOAD_FILE_CALLBACK_UPLOAD_ID]: CbEvents.UnUsedEvent, - [NativeEvent.UPLOAD_FILE_CALLBACK_UPLOAD_PART_COMPLETE]: CbEvents.UnUsedEvent, - [NativeEvent.UPLOAD_FILE_CALLBACK_UPLOAD_COMPLETE]: CbEvents.UnUsedEvent, [NativeEvent.CONVERSATION_USER_INPUT_STATUS_CHANGED]: CbEvents.UnUsedEvent, [NativeEvent.RECV_ONLINE_ONLY_MESSAGE]: CbEvents.UnUsedEvent, [NativeEvent.RECV_NEW_INVITATION]: CbEvents.OnReceiveNewInvitation, diff --git a/src/core/index.ts b/src/core/index.ts index 9842bc3..7b8d407 100644 --- a/src/core/index.ts +++ b/src/core/index.ts @@ -30,6 +30,13 @@ function isObject(value: unknown) { return Object.prototype.toString.call(value) === '[object Object]'; } +const forceGetDataEvents = [ + CbEvents.OnSyncServerStart, + CbEvents.OnSyncServerFinish, + CbEvents.OnSyncServerFailed, + CbEvents.OnSyncServerProgress, +]; + class OpenIMSDK extends Emitter implements @@ -73,7 +80,8 @@ class OpenIMSDK (event: NativeEvent, data: string) => { const cbEvent = eventMapping[event]; if (!cbEvent) return; - this.emit(cbEvent, this.generateEventResponse(data)); + const forceGetData = forceGetDataEvents.includes(cbEvent); + this.emit(cbEvent, this.generateEventResponse(data, '', forceGetData)); }, koffi.pointer(listenerCallbackProto) ); @@ -655,7 +663,7 @@ class OpenIMSDK '__stdcall', 'add_black', 'void', - ['baseCallback *', 'str', 'str'] + ['baseCallback *', 'str', 'str', 'str'] ); this.libOpenIMSDK.get_black_list = this.lib.func( '__stdcall', @@ -680,7 +688,7 @@ class OpenIMSDK '__stdcall', 'join_group', 'void', - ['baseCallback *', 'str', 'str', 'str', 'int'] + ['baseCallback *', 'str', 'str', 'str', 'int', 'str'] ); this.libOpenIMSDK.quit_group = this.lib.func( '__stdcall', @@ -724,6 +732,12 @@ class OpenIMSDK 'void', ['baseCallback *', 'str'] ); + this.libOpenIMSDK.get_joined_group_list_page = this.lib.func( + '__stdcall', + 'get_joined_group_list_page', + 'void', + ['baseCallback *', 'str', 'int', 'int'] + ); this.libOpenIMSDK.get_specified_groups_info = this.lib.func( '__stdcall', 'get_specified_groups_info', @@ -826,9 +840,15 @@ class OpenIMSDK this.libOpenIMSDK.is_join_group = this.lib.func( '__stdcall', 'is_join_group', - 'int', + 'void', ['baseCallback *', 'str', 'str'] ); + this.libOpenIMSDK.get_users_in_group = this.lib.func( + '__stdcall', + 'get_users_in_group', + 'void', + ['baseCallback *', 'str', 'str', 'str'] + ); this.libOpenIMSDK.upload_file = this.lib.func( '__stdcall', 'upload_file', @@ -982,7 +1002,11 @@ class OpenIMSDK } }; - generateEventResponse = (data: unknown, operationID = ''): BaseResponse => { + generateEventResponse = ( + data: unknown, + operationID = '', + forceGetData = false + ): BaseResponse => { let errCode = 0; let errMsg = ''; try { @@ -999,6 +1023,11 @@ class OpenIMSDK // @ts-ignore data = data.data; } + if (forceGetData) { + // @ts-ignore + const values = Object.values(data); + data = values[0]; + } return { errCode, errMsg, @@ -1216,6 +1245,7 @@ class OpenIMSDK getFriendApplicationListAsApplicant!: FriendModuleApi['getFriendApplicationListAsApplicant']; getFriendApplicationListAsRecipient!: FriendModuleApi['getFriendApplicationListAsRecipient']; getFriendList!: FriendModuleApi['getFriendList']; + getFriendListPage!: FriendModuleApi['getFriendListPage']; getSpecifiedFriendsInfo!: FriendModuleApi['getSpecifiedFriendsInfo']; refuseFriendApplication!: FriendModuleApi['refuseFriendApplication']; removeBlack!: FriendModuleApi['removeBlack']; @@ -1227,6 +1257,7 @@ class OpenIMSDK joinGroup!: GroupModuleApi['joinGroup']; inviteUserToGroup!: GroupModuleApi['inviteUserToGroup']; getJoinedGroupList!: GroupModuleApi['getJoinedGroupList']; + getJoinedGroupListPage!: GroupModuleApi['getJoinedGroupListPage']; searchGroups!: GroupModuleApi['searchGroups']; getSpecifiedGroupsInfo!: GroupModuleApi['getSpecifiedGroupsInfo']; setGroupInfo!: GroupModuleApi['setGroupInfo']; @@ -1247,6 +1278,7 @@ class OpenIMSDK dismissGroup!: GroupModuleApi['dismissGroup']; quitGroup!: GroupModuleApi['quitGroup']; isJoinGroup!: GroupModuleApi['isJoinGroup']; + getUsersInGroup!: GroupModuleApi['getUsersInGroup']; // implements conversation api getAllConversationList!: ConversationModuleApi['getAllConversationList']; diff --git a/src/core/modules/friend.ts b/src/core/modules/friend.ts index a3ab0ab..9674cc8 100644 --- a/src/core/modules/friend.ts +++ b/src/core/modules/friend.ts @@ -6,6 +6,7 @@ import { AccessFriendApplicationParams, AddBlackParams, AddFriendParams, + OffsetParams, RemarkFriendParams, SearchFriendParams, SetFriendExParams, @@ -110,6 +111,15 @@ export function setupFriendModule(openIMSDK: OpenIMSDK) { opid ); }), + getFriendListPage: (params: OffsetParams, opid = uuidV4()) => + new Promise>((resolve, reject) => { + openIMSDK.libOpenIMSDK.get_friend_list_page( + openIMSDK.baseCallbackWrap(resolve, reject), + opid, + params.offset, + params.count + ); + }), getSpecifiedFriendsInfo: (userIDList: string[], opid = uuidV4()) => new Promise>((resolve, reject) => { @@ -185,6 +195,10 @@ export interface FriendModuleApi { opid?: string ) => Promise>; getFriendList: (opid?: string) => Promise>; + getFriendListPage: ( + params: OffsetParams, + opid?: string + ) => Promise>; getSpecifiedFriendsInfo: ( userIDList: string[], opid?: string diff --git a/src/core/modules/group.ts b/src/core/modules/group.ts index 3adfedb..d869c24 100644 --- a/src/core/modules/group.ts +++ b/src/core/modules/group.ts @@ -19,6 +19,7 @@ import { ChangeGroupMuteParams, TransferGroupParams, AccessToGroupParams, + OffsetParams, } from 'open-im-sdk-wasm/lib/types/params'; export function setupGroupModule(openIMSDK: OpenIMSDK) { @@ -63,6 +64,16 @@ export function setupGroupModule(openIMSDK: OpenIMSDK) { ); }), + getJoinedGroupListPage: (params: OffsetParams, opid = uuidV4()) => + new Promise>((resolve, reject) => { + openIMSDK.libOpenIMSDK.get_joined_group_list_page( + openIMSDK.baseCallbackWrap(resolve, reject), + opid, + params.offset, + params.count + ); + }), + searchGroups: (params: SearchGroupParams, opid = uuidV4()) => new Promise>((resolve, reject) => { openIMSDK.libOpenIMSDK.search_groups( @@ -274,6 +285,18 @@ export function setupGroupModule(openIMSDK: OpenIMSDK) { groupID ); }), + getUsersInGroup: ( + params: Omit, + opid = uuidV4() + ) => + new Promise>((resolve, reject) => { + openIMSDK.libOpenIMSDK.get_users_in_group( + openIMSDK.baseCallbackWrap(resolve, reject), + opid, + params.groupID, + JSON.stringify(params.userIDList) + ); + }), }; } @@ -291,6 +314,10 @@ export interface GroupModuleApi { opid?: string ) => Promise>; getJoinedGroupList: (opid?: string) => Promise>; + getJoinedGroupListPage: ( + params: OffsetParams, + opid?: string + ) => Promise>; searchGroups: ( params: SearchGroupParams, opid?: string @@ -360,4 +387,8 @@ export interface GroupModuleApi { dismissGroup: (groupID: string, opid?: string) => Promise>; quitGroup: (groupID: string, opid?: string) => Promise>; isJoinGroup: (groupID: string, opid?: string) => Promise>; + getUsersInGroup: ( + params: Omit, + opid?: string + ) => Promise>; } diff --git a/src/types/libOpenIMSDK.d.ts b/src/types/libOpenIMSDK.d.ts index 69cd9f5..e857de8 100644 --- a/src/types/libOpenIMSDK.d.ts +++ b/src/types/libOpenIMSDK.d.ts @@ -526,6 +526,12 @@ declare module 'libOpenIMSDK' { cGroupMemberInfo: string ): void; get_joined_group_list(cCallback: CB_S_I_S_S, operationID: string): void; + get_joined_group_list_page( + cCallback: CB_S_I_S_S, + operationID: string, + offset: number, + count: number + ): void; get_specified_groups_info( cCallback: CB_S_I_S_S, operationID: string, @@ -647,6 +653,12 @@ declare module 'libOpenIMSDK' { operationID: string, cGroupID: string ): void; + get_users_in_group( + cCallback: CB_S_I_S_S, + operationID: string, + cGroupID: string, + userIDList: string + ): void; signaling_invite_in_group( cCallback: CB_S_I_S_S, operationID: string,