diff --git a/assets/linux_arm64/libopenimsdk.so b/assets/linux_arm64/libopenimsdk.so new file mode 100644 index 0000000..a2e9e9f Binary files /dev/null and b/assets/linux_arm64/libopenimsdk.so differ diff --git a/assets/linux_x64/libopenimsdk.so b/assets/linux_x64/libopenimsdk.so new file mode 100644 index 0000000..a2e9e9f Binary files /dev/null and b/assets/linux_x64/libopenimsdk.so differ diff --git a/assets/mac_arm64/.gitkeep b/assets/mac_arm64/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/assets/mac_arm64/libopenimsdk.dylib b/assets/mac_arm64/libopenimsdk.dylib old mode 100755 new mode 100644 index ec73594..e3e117b Binary files a/assets/mac_arm64/libopenimsdk.dylib and b/assets/mac_arm64/libopenimsdk.dylib differ diff --git a/assets/mac_x64/libopenimsdk.dylib b/assets/mac_x64/libopenimsdk.dylib new file mode 100644 index 0000000..e3e117b Binary files /dev/null and b/assets/mac_x64/libopenimsdk.dylib differ diff --git a/assets/win_ia32/libopenimsdk.dll b/assets/win_ia32/libopenimsdk.dll new file mode 100644 index 0000000..5a836f4 Binary files /dev/null and b/assets/win_ia32/libopenimsdk.dll differ diff --git a/assets/win_x64/libopenimsdk.dll b/assets/win_x64/libopenimsdk.dll new file mode 100644 index 0000000..5a836f4 Binary files /dev/null and b/assets/win_x64/libopenimsdk.dll differ diff --git a/package-lock.json b/package-lock.json index 0a3c1f4..3ea2eb4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { - "name": "@openim/node-client-sdk", - "version": "1.0.7", + "name": "@openim/electron-client-sdk", + "version": "1.0.0", "lockfileVersion": 3, "requires": true, "packages": { "": { - "name": "@openim/node-client-sdk", - "version": "1.0.7", + "name": "@openim/electron-client-sdk", + "version": "1.0.0", "license": "MIT", "dependencies": { "koffi": "^2.8.0", @@ -44,7 +44,7 @@ }, "peerDependencies": { "electron": ">=12.0.0", - "open-im-sdk-wasm": "^3.5.3-alpha.2" + "open-im-sdk-wasm": "^3.5.3-alpha.5" } }, "node_modules/@aashutoshrathi/word-wrap": { diff --git a/package.json b/package.json index 0bc3927..d30a768 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@openim/electron-client-sdk", - "version": "1.0.0", + "version": "1.0.1", "description": "open im sdk for node", "source": "src/index.ts", "main": "lib/index.js", diff --git a/src/core/index.ts b/src/core/index.ts index 77a2d5b..9842bc3 100644 --- a/src/core/index.ts +++ b/src/core/index.ts @@ -45,9 +45,11 @@ class OpenIMSDK sendMessageCallbackProto: koffi.IKoffiCType; listenerCallback: koffi.IKoffiRegisteredCallback; lib: koffi.IKoffiLib; + enterprise: boolean; - constructor(libPath: string, emitProxy?: EmitProxy) { + constructor(libPath: string, emitProxy?: EmitProxy, enterprise = false) { super(); + this.enterprise = enterprise; this.lib = koffi.load(libPath); this.baseCallbackProto = koffi.proto('__stdcall', 'baseCallback', 'void', [ 'str', @@ -67,12 +69,6 @@ class OpenIMSDK 'void', ['int', 'str'] ); - - if (emitProxy) { - // @ts-ignore eslint-disable-next-line - this.emit = emitProxy; - } - this.listenerCallback = koffi.register( (event: NativeEvent, data: string) => { const cbEvent = eventMapping[event]; @@ -82,6 +78,22 @@ class OpenIMSDK koffi.pointer(listenerCallbackProto) ); + if (emitProxy) { + // @ts-ignore eslint-disable-next-line + this.emit = emitProxy; + } + + this.registerFunc(); + + Object.assign(this, setupUserModule(this)); + Object.assign(this, setupFriendModule(this)); + Object.assign(this, setupGroupModule(this)); + Object.assign(this, setupConversationModule(this)); + Object.assign(this, setupMessageModule(this)); + Object.assign(this, setupSignalingModule(this)); + } + + registerFunc = () => { this.libOpenIMSDK.set_group_listener = this.lib.func( '__stdcall', 'set_group_listener', @@ -124,12 +136,6 @@ class OpenIMSDK 'void', ['listenerCallback *'] ); - this.libOpenIMSDK.set_signaling_listener = this.lib.func( - '__stdcall', - 'set_signaling_listener', - 'void', - ['listenerCallback *'] - ); this.libOpenIMSDK.init_sdk = this.lib.func( '__stdcall', 'init_sdk', @@ -338,30 +344,6 @@ class OpenIMSDK 'void', ['baseCallback *', 'str', 'str'] ); - this.libOpenIMSDK.set_conversation_msg_destruct_time = this.lib.func( - '__stdcall', - 'set_conversation_msg_destruct_time', - 'void', - ['baseCallback *', 'str', 'str', 'long long'] - ); - this.libOpenIMSDK.set_conversation_is_msg_destruct = this.lib.func( - '__stdcall', - 'set_conversation_is_msg_destruct', - 'void', - ['baseCallback *', 'str', 'str', 'int'] - ); - this.libOpenIMSDK.send_group_message_read_receipt = this.lib.func( - '__stdcall', - 'send_group_message_read_receipt', - 'void', - ['baseCallback *', 'str', 'str', 'str'] - ); - this.libOpenIMSDK.get_group_message_reader_list = this.lib.func( - '__stdcall', - 'get_group_message_reader_list', - 'void', - ['baseCallback *', 'str', 'str', 'str', 'int', 'int', 'int'] - ); this.libOpenIMSDK.hide_conversation = this.lib.func( '__stdcall', 'hide_conversation', @@ -847,118 +829,6 @@ class OpenIMSDK 'int', ['baseCallback *', 'str', 'str'] ); - this.libOpenIMSDK.signaling_invite_in_group = this.lib.func( - '__stdcall', - 'signaling_invite_in_group', - 'void', - ['baseCallback *', 'str', 'str'] - ); - - this.libOpenIMSDK.signaling_invite = this.lib.func( - '__stdcall', - 'signaling_invite', - 'void', - ['baseCallback *', 'str', 'str'] - ); - - this.libOpenIMSDK.signaling_accept = this.lib.func( - '__stdcall', - 'signaling_accept', - 'void', - ['baseCallback *', 'str', 'str'] - ); - - this.libOpenIMSDK.signaling_reject = this.lib.func( - '__stdcall', - 'signaling_reject', - 'void', - ['baseCallback *', 'str', 'str'] - ); - - this.libOpenIMSDK.signaling_cancel = this.lib.func( - '__stdcall', - 'signaling_cancel', - 'void', - ['baseCallback *', 'str', 'str'] - ); - - this.libOpenIMSDK.signaling_hung_up = this.lib.func( - '__stdcall', - 'signaling_hung_up', - 'void', - ['baseCallback *', 'str', 'str'] - ); - - this.libOpenIMSDK.signaling_get_room_by_group_id = this.lib.func( - '__stdcall', - 'signaling_get_room_by_group_id', - 'void', - ['baseCallback *', 'str', 'str'] - ); - - this.libOpenIMSDK.signaling_get_token_by_room_id = this.lib.func( - '__stdcall', - 'signaling_get_token_by_room_id', - 'void', - ['baseCallback *', 'str', 'str'] - ); - - this.libOpenIMSDK.get_signaling_invitation_info_start_app = this.lib.func( - '__stdcall', - 'get_signaling_invitation_info_start_app', - 'void', - ['baseCallback *', 'str'] - ); - - this.libOpenIMSDK.signaling_create_meeting = this.lib.func( - '__stdcall', - 'signaling_create_meeting', - 'void', - ['baseCallback *', 'str', 'str'] - ); - - this.libOpenIMSDK.signaling_join_meeting = this.lib.func( - '__stdcall', - 'signaling_join_meeting', - 'void', - ['baseCallback *', 'str', 'str'] - ); - - this.libOpenIMSDK.signaling_update_meeting_info = this.lib.func( - '__stdcall', - 'signaling_update_meeting_info', - 'void', - ['baseCallback *', 'str', 'str'] - ); - - this.libOpenIMSDK.signaling_close_room = this.lib.func( - '__stdcall', - 'signaling_close_room', - 'void', - ['baseCallback *', 'str', 'str'] - ); - - this.libOpenIMSDK.signaling_get_meetings = this.lib.func( - '__stdcall', - 'signaling_get_meetings', - 'void', - ['baseCallback *', 'str'] - ); - - this.libOpenIMSDK.signaling_operate_stream = this.lib.func( - '__stdcall', - 'signaling_operate_stream', - 'void', - ['baseCallback *', 'str', 'str', 'str', 'str', 'int', 'int'] - ); - - this.libOpenIMSDK.signaling_send_custom_signal = this.lib.func( - '__stdcall', - 'signaling_send_custom_signal', - 'void', - ['baseCallback *', 'str', 'str', 'str'] - ); - this.libOpenIMSDK.upload_file = this.lib.func( '__stdcall', 'upload_file', @@ -966,13 +836,151 @@ class OpenIMSDK ['baseCallback *', 'str', 'str', 'listenerCallback *'] ); - Object.assign(this, setupUserModule(this)); - Object.assign(this, setupFriendModule(this)); - Object.assign(this, setupGroupModule(this)); - Object.assign(this, setupConversationModule(this)); - Object.assign(this, setupMessageModule(this)); - Object.assign(this, setupSignalingModule(this)); - } + // advance + if (this.enterprise) { + this.libOpenIMSDK.set_conversation_msg_destruct_time = this.lib.func( + '__stdcall', + 'set_conversation_msg_destruct_time', + 'void', + ['baseCallback *', 'str', 'str', 'long long'] + ); + this.libOpenIMSDK.set_conversation_is_msg_destruct = this.lib.func( + '__stdcall', + 'set_conversation_is_msg_destruct', + 'void', + ['baseCallback *', 'str', 'str', 'int'] + ); + this.libOpenIMSDK.send_group_message_read_receipt = this.lib.func( + '__stdcall', + 'send_group_message_read_receipt', + 'void', + ['baseCallback *', 'str', 'str', 'str'] + ); + this.libOpenIMSDK.get_group_message_reader_list = this.lib.func( + '__stdcall', + 'get_group_message_reader_list', + 'void', + ['baseCallback *', 'str', 'str', 'str', 'int', 'int', 'int'] + ); + this.libOpenIMSDK.set_signaling_listener = this.lib.func( + '__stdcall', + 'set_signaling_listener', + 'void', + ['listenerCallback *'] + ); + this.libOpenIMSDK.signaling_invite_in_group = this.lib.func( + '__stdcall', + 'signaling_invite_in_group', + 'void', + ['baseCallback *', 'str', 'str'] + ); + + this.libOpenIMSDK.signaling_invite = this.lib.func( + '__stdcall', + 'signaling_invite', + 'void', + ['baseCallback *', 'str', 'str'] + ); + + this.libOpenIMSDK.signaling_accept = this.lib.func( + '__stdcall', + 'signaling_accept', + 'void', + ['baseCallback *', 'str', 'str'] + ); + + this.libOpenIMSDK.signaling_reject = this.lib.func( + '__stdcall', + 'signaling_reject', + 'void', + ['baseCallback *', 'str', 'str'] + ); + + this.libOpenIMSDK.signaling_cancel = this.lib.func( + '__stdcall', + 'signaling_cancel', + 'void', + ['baseCallback *', 'str', 'str'] + ); + + this.libOpenIMSDK.signaling_hung_up = this.lib.func( + '__stdcall', + 'signaling_hung_up', + 'void', + ['baseCallback *', 'str', 'str'] + ); + + this.libOpenIMSDK.signaling_get_room_by_group_id = this.lib.func( + '__stdcall', + 'signaling_get_room_by_group_id', + 'void', + ['baseCallback *', 'str', 'str'] + ); + + this.libOpenIMSDK.signaling_get_token_by_room_id = this.lib.func( + '__stdcall', + 'signaling_get_token_by_room_id', + 'void', + ['baseCallback *', 'str', 'str'] + ); + + this.libOpenIMSDK.get_signaling_invitation_info_start_app = this.lib.func( + '__stdcall', + 'get_signaling_invitation_info_start_app', + 'void', + ['baseCallback *', 'str'] + ); + + this.libOpenIMSDK.signaling_create_meeting = this.lib.func( + '__stdcall', + 'signaling_create_meeting', + 'void', + ['baseCallback *', 'str', 'str'] + ); + + this.libOpenIMSDK.signaling_join_meeting = this.lib.func( + '__stdcall', + 'signaling_join_meeting', + 'void', + ['baseCallback *', 'str', 'str'] + ); + + this.libOpenIMSDK.signaling_update_meeting_info = this.lib.func( + '__stdcall', + 'signaling_update_meeting_info', + 'void', + ['baseCallback *', 'str', 'str'] + ); + + this.libOpenIMSDK.signaling_close_room = this.lib.func( + '__stdcall', + 'signaling_close_room', + 'void', + ['baseCallback *', 'str', 'str'] + ); + + this.libOpenIMSDK.signaling_get_meetings = this.lib.func( + '__stdcall', + 'signaling_get_meetings', + 'void', + ['baseCallback *', 'str'] + ); + + this.libOpenIMSDK.signaling_operate_stream = this.lib.func( + '__stdcall', + 'signaling_operate_stream', + 'void', + ['baseCallback *', 'str', 'str', 'str', 'str', 'int', 'int'] + ); + + this.libOpenIMSDK.signaling_send_custom_signal = this.lib.func( + '__stdcall', + 'signaling_send_custom_signal', + 'void', + ['baseCallback *', 'str', 'str', 'str'] + ); + } + }; generateEventResponse = (data: unknown, operationID = ''): BaseResponse => { let errCode = 0; @@ -1111,7 +1119,9 @@ class OpenIMSDK this.libOpenIMSDK.set_advanced_msg_listener(this.listenerCallback); this.libOpenIMSDK.set_batch_msg_listener(this.listenerCallback); this.libOpenIMSDK.set_custom_business_listener(this.listenerCallback); - this.libOpenIMSDK.set_signaling_listener(this.listenerCallback); + if (this.enterprise) { + this.libOpenIMSDK.set_signaling_listener(this.listenerCallback); + } }; initSDK = (param: InitConfig, opid = uuidV4()) => @@ -1275,16 +1285,16 @@ class OpenIMSDK createForwardMessage!: MessageModuleApi['createForwardMessage']; createImageMessage!: MessageModuleApi['createImageMessage']; createImageMessageFromFullPath!: MessageModuleApi['createImageMessageFromFullPath']; - createImageMessageByUrl!: MessageModuleApi['createImageMessageByUrl']; + createImageMessageByURL!: MessageModuleApi['createImageMessageByURL']; createVideoMessage!: MessageModuleApi['createVideoMessage']; createVideoMessageFromFullPath!: MessageModuleApi['createVideoMessageFromFullPath']; - createVideoMessageByUrl!: MessageModuleApi['createVideoMessageByUrl']; + createVideoMessageByURL!: MessageModuleApi['createVideoMessageByURL']; createSoundMessage!: MessageModuleApi['createSoundMessage']; createSoundMessageFromFullPath!: MessageModuleApi['createSoundMessageFromFullPath']; - createSoundMessageByUrl!: MessageModuleApi['createSoundMessageByUrl']; + createSoundMessageByURL!: MessageModuleApi['createSoundMessageByURL']; createFileMessage!: MessageModuleApi['createFileMessage']; createFileMessageFromFullPath!: MessageModuleApi['createFileMessageFromFullPath']; - createFileMessageByUrl!: MessageModuleApi['createFileMessageByUrl']; + createFileMessageByURL!: MessageModuleApi['createFileMessageByURL']; getAdvancedHistoryMessageList!: MessageModuleApi['getAdvancedHistoryMessageList']; getAdvancedHistoryMessageListReverse!: MessageModuleApi['getAdvancedHistoryMessageListReverse']; sendMessage!: MessageModuleApi['sendMessage']; diff --git a/src/core/modules/message.ts b/src/core/modules/message.ts index 7d4fb21..15ceb1b 100644 --- a/src/core/modules/message.ts +++ b/src/core/modules/message.ts @@ -138,7 +138,7 @@ export function setupMessageModule(openIMSDK: OpenIMSDK) { ) ), - createImageMessageByUrl: (params: ImageMsgParamsByURL, opid = uuidV4()) => + createImageMessageByURL: (params: ImageMsgParamsByURL, opid = uuidV4()) => openIMSDK.asyncRetunWrap( opid, openIMSDK.libOpenIMSDK.create_image_message_by_url( @@ -177,7 +177,7 @@ export function setupMessageModule(openIMSDK: OpenIMSDK) { ) ), - createVideoMessageByUrl: (params: VideoMsgParamsByURL, opid = uuidV4()) => + createVideoMessageByURL: (params: VideoMsgParamsByURL, opid = uuidV4()) => openIMSDK.asyncRetunWrap( opid, openIMSDK.libOpenIMSDK.create_video_message_by_url( @@ -209,7 +209,7 @@ export function setupMessageModule(openIMSDK: OpenIMSDK) { ) ), - createSoundMessageByUrl: (params: SoundMsgParamsByURL, opid = uuidV4()) => + createSoundMessageByURL: (params: SoundMsgParamsByURL, opid = uuidV4()) => openIMSDK.asyncRetunWrap( opid, openIMSDK.libOpenIMSDK.create_sound_message_by_url( @@ -241,7 +241,7 @@ export function setupMessageModule(openIMSDK: OpenIMSDK) { ) ), - createFileMessageByUrl: (params: FileMsgParamsByURL, opid = uuidV4()) => + createFileMessageByURL: (params: FileMsgParamsByURL, opid = uuidV4()) => openIMSDK.asyncRetunWrap( opid, openIMSDK.libOpenIMSDK.create_file_message_by_url( @@ -508,7 +508,7 @@ export interface MessageModuleApi { imagePath: string, opid?: string ) => Promise>; - createImageMessageByUrl: ( + createImageMessageByURL: ( params: ImageMsgParamsByURL, opid?: string ) => Promise>; @@ -520,7 +520,7 @@ export interface MessageModuleApi { params: VideoMsgByPathParams, opid?: string ) => Promise>; - createVideoMessageByUrl: ( + createVideoMessageByURL: ( params: VideoMsgParamsByURL, opid?: string ) => Promise>; @@ -532,7 +532,7 @@ export interface MessageModuleApi { params: SoundMsgByPathParams, opid?: string ) => Promise>; - createSoundMessageByUrl: ( + createSoundMessageByURL: ( params: SoundMsgParamsByURL, opid?: string ) => Promise>; @@ -544,7 +544,7 @@ export interface MessageModuleApi { params: FileMsgByPathParams, opid?: string ) => Promise>; - createFileMessageByUrl: ( + createFileMessageByURL: ( params: FileMsgParamsByURL, opid?: string ) => Promise>; diff --git a/src/main.ts b/src/main.ts index 5f080f1..8adae0d 100644 --- a/src/main.ts +++ b/src/main.ts @@ -5,8 +5,8 @@ import OpenIMSDK from './core'; class OpenIMSDKMain { private sdk: OpenIMSDK; private webContents: WebContents[] = []; - constructor(path: string, webContent?: WebContents) { - this.sdk = new OpenIMSDK(path, this.emitProxy); + constructor(path: string, webContent?: WebContents, enterprise = false) { + this.sdk = new OpenIMSDK(path, this.emitProxy, enterprise); if (webContent) { this.webContents = [webContent]; }