tjc-sdk
Version:
TIANJI IM SDK
2 lines (1 loc) • 42.1 kB
JavaScript
import e from"../messages/message.js";import t from"../model/conversation.js";import s from"../model/conversationInfo.js";import r from"../client/tjcEvent.js";import n from"../model/userInfo.js";import a from"../model/nullUserInfo.js";import o from"../model/nullGroupInfo.js";import i from"../model/groupInfo.js";import l from"../model/groupMember.js";import g from"../client/userSettingScope.js";import c from"../messages/notification/addGroupMemberNotification.js";import u from"../client/messageConfig.js";import d from"../model/unreadCount.js";import m from"../model/conversationSearchResult.js";import p from"../messages/messageStatus.js";import S from"../model/groupSearchResult.js";import f from"../model/friendRequest.js";import M from"../model/chatRoomMemberInfo.js";import h from"../model/channelInfo.js";import O from"../client/connectionStatus.js";import N from"long";import y from"../config.js";import J from"../model/chatRoomInfo.js";import C from"../model/readEntry.js";import{promises as v}from"fs";import U from"../model/fileRecord.js";import b from"../messages/mediaMessageContent.js";import w from"../messages/markUnreadMessageContent.js";import{stringValue as R,gt as j}from"../util/longUtil.js";import G from"../model/NullChannelInfo.js";import F from"../model/userOnlineState.js";import I from"../model/userCustomState.js";import E from"../model/userClientState.js";import{ipcRenderer as x}from"../platform2.js";import T from"../model/secretChatInfo.js";import L from"../model/conversationType.js";import B from"../model/channelMenu.js";import A from"./proto_renderer_proxy.js";import D from"../messages/textMessageContent.js";import k from"../messages/fileMessageContent.js";import q from"../messages/imageMessageContent.js";import H from"os";import P from"path";import{mimeMap as V}from"../util/mime.js";import _ from"../model/domainInfo.js";const z=new class{connectionStatus=0;userId="";token="";users=new Map;groups=new Map;isLogined=!1;lastActiveTime=0;doubleNetworkStrategy=0;t=!1;eventEmitter;uploadingMap=new Map;onConnectionChanged(e){if(z.isLogined||e!==O.ConnectionStatusConnected||(z.isLogined=!0),e===O.ConnectionStatusConnected)if(0===z.lastActiveTime){let t=z.o();setTimeout((()=>{z.connectionStatus=e,z.lastActiveTime=(new Date).getTime(),z.eventEmitter.emit(r.ConnectionStatusChanged,e)}),t)}else z.connectionStatus=e,z.eventEmitter.emit(r.ConnectionStatusChanged,e);else z.connectionStatus=e,z.eventEmitter.emit(r.ConnectionStatusChanged,e);!z.isLogined||e!==O.ConnectionStatusSecretKeyMismatch&&e!==O.ConnectionStatusRejected||z.disconnect(),e===O.ConnectionStatusConnected&&(z.isEnableSecretChat()&&z.isUserEnableSecretChat()&&x.send("start-secret-server",{port:y.SECRET_CHAT_MEDIA_DECODE_SERVER_PORT}),y.OPEN_PLATFORM_WORK_SPACE_URL&&x.send("start-op-server",{port:y.OPEN_PLATFORM_SERVE_PORT}))}onConnectToServer(e,t,s){z.eventEmitter.emit(r.ConnectToServer,e,t,s)}onConnectedToServer(e,t,s,n){z.eventEmitter.emit(r.ConnectedToServer,e,t,s)}onReceiveMessage(t,s){z.isLogined&&2!==z.connectionStatus&&JSON.parse(t).forEach((t=>{let n=e.fromProtoMessage(t);if(n.messageContent instanceof w&&n.from===z.userId){let e=n.messageContent,t=n.conversation;A.invoke("setLastReceivedMessageUnRead",JSON.stringify(t),R(e.messageUid),R(e.timestamp))}n&&z.eventEmitter.emit(r.ReceiveMessage,n,s)}))}onConferenceEvent(e){z.eventEmitter.emit(r.ConferenceEvent,e)}onOnlineEvent(e){let t=z.i(e);z.eventEmitter.emit(r.UserOnlineEvent,t)}i(e){let t=[];return JSON.parse(e).forEach((e=>{let s=new F;s.userId=e.userId,s.customState=new I,s.customState.state=e.customState,s.customState.text=e.customText,s.clientStates=[],e.states&&e.states.forEach((e=>{let t=new E;t.state=e.state,t.platform=e.platform,t.lastSeen=N.fromValue(e.lastSeen),s.clientStates.push(t)})),t.push(s)})),t}onGroupInfoUpdate(e){if(!z.isLogined)return;let t=JSON.parse(e),s=z.getGroupInfos(t,!1);s.forEach((e=>{z.groups.set(e.target,e)})),z.eventEmitter.emit(r.GroupInfosUpdate,s)}onDomainInfoUpdate(e){if(!z.isLogined)return;let t=Object.assign(new _,JSON.parse(e));z.eventEmitter.emit(r.DomainInfoUpdate,t)}onChannelInfoUpdate(e){if(!z.isLogined)return;let t=JSON.parse(e),s=[];t.forEach((e=>{s.push(z.getChannelInfo(e,!1))})),z.eventEmitter.emit(r.ChannelInfosUpdate,s)}onGroupMemberUpdateListener(e,t){if(!z.isLogined)return;let s=[],n=[];JSON.parse(t).forEach((e=>{s.push(Object.assign(new l,e)),n.push(e.memberId)})),z.l(n),z.eventEmitter.emit(r.GroupMembersUpdate,e,s)}onSettingUpdate(){z.isLogined&&z.eventEmitter.emit(r.SettingUpdate)}onRecallMessage(e,t){z.isLogined&&z.eventEmitter.emit(r.RecallMessage,e,N.fromValue(t))}onDeleteRemoteMessage(e){z.isLogined&&z.eventEmitter.emit(r.MessageDeleted,N.fromValue(e))}onUserReceivedMessage(e){if(!z.isLogined)return;let t=JSON.parse(e),s=new Map;t.forEach((e=>{s.set(e.key,e.value)})),z.eventEmitter.emit(r.MessageReceived,s)}onUserReadedMessage(e){if(!z.isLogined)return;let s=JSON.parse(e),n=[];s.forEach((e=>{let s=new C;s.userId=e.userId,s.conversation=new t(e.conversationType,e.target,e.line),s.readTime=e.readDt,n.push(s)})),z.eventEmitter.emit(r.MessageRead,n)}onMessageDeleted(e){z.isLogined&&z.eventEmitter.emit(r.DeleteMessage,e)}onUserInfoUpdate(e){if(!z.isLogined)return;let t=JSON.parse(e),s=z.getUserInfos(t);s.forEach((e=>{z.users.set(e.uid,e)})),z.eventEmitter.emit(r.UserInfosUpdate,s)}onFriendListUpdate(e){if(!z.isLogined)return;let t=JSON.parse(e);t.forEach((e=>{z.users.delete(e)})),z.eventEmitter.emit(r.FriendListUpdate,t)}onFriendRequestUpdate(e="[]"){if(!z.isLogined)return;let t=JSON.parse(e);z.eventEmitter.emit(r.FriendRequestUpdate,t)}onSecretChatStateChangedListener(e){z.eventEmitter.emit(r.SecretChatStateChange,e)}onSecretMessageStartBurningListener(e,t){z.eventEmitter.emit(r.SecretChatStartBurn,e,t)}onSecretMessageBurnedListener(e){z.eventEmitter.emit(r.SecretChatMessageBurned,e)}init(e=[]){A.init(),A.invoke("setLanguage",y.LANGUAGE),this.u(),z.registerDefaultMessageContents(),window.__uploadingMap=this.uploadingMap}attach(){this.connectionStatus=A.invoke("getConnectionStatus"),this.connectionStatus===O.ConnectionStatusConnected&&(this.isLogined=!0,this.userId=A.invoke("getCurrentUserId")),A.init(),this.u()}setAppName(e){e&&e.trim()&&A.invoke("setAppName",e)}registerMessageContent(e,t,s,r){u.MessageContents.push({name:e,flag:t,type:s,contentClazz:r}),A.invoke("registerMessageFlag",s,t)}useSM4(){A.invoke("useSM4")}useAES256(){A.invoke("useAES256")}useTcpShortLink(){A.invoke("useTcpShortLink")}isTcpShortLink(){return A.invoke("isTcpShortLink")}connect(e,t){if(!z.userId){z.userId=e;let t=this.getConnectionStatus();if(t===O.ConnectionStatusConnected)return this.onConnectionChanged(t),!1}z.userId=e;let s=A.invoke("connect",e,t);return z.lastActiveTime=s,s}setHeartBeatInterval(e){A.invoke("setHeartBeatInterval",e)}setProxyInfo(e,t,s,r,n){A.invoke("setProxyInfo",e,t,s,r,n)}setPackageName(e){A.invoke("setPackageName",e)}disconnect(){z.userId="",A.invoke("disconnect",0);for(var e=new Date,t=e.getTime()+1e3;;)if((e=new Date).getTime()>t)return}registerDefaultMessageContents(){u.MessageContents.map((e=>{A.invoke("registerMessageFlag",e.type,e.flag)}))}getClientId(){return A.invoke("getClientId")}getProtoRevision(){return A.invoke("getProtoRevision")}getUserId(){return z.userId}getServerDeltaTime(){return A.invoke("getServerDeltaTime")}isLogin(){return z.isLogined}getConnectionStatus(){return A.invoke("getConnectionStatus")}setBackupAddressStrategy(e){z.doubleNetworkStrategy=e,0===e&&(z.t=!0),A.invoke("setBackupAddressStrategy",e)}setBackupAddress(e,t){A.invoke("setBackupAddress",e,t)}getConnectedNetworkType(){return A.invoke("getConnectedNetworkType")}setProtoUserAgent(e){"string"==typeof e&&A.invoke("setUserAgent",e)}addHttpHeader(e,t){"string"==typeof e&&"string"==typeof t&&A.invoke("addHttpHeader",e,t)}onAppResume(){A.invoke("onAppResume")}onAppSuspend(){A.invoke("onAppSuspend")}getMyGroupList(){return this.getUserSettings(g.FavoriteGroup).filter((e=>"1"===e.value)).map((e=>this.getGroupInfo(e.key,!1)))}getUserInfo(e,t=!1,s=""){if(!e||""===e)return new a("");let r;if(!(t||s&&""!==s)&&(r=z.users.get(e),r))return r;let o=A.invoke("getUserInfo",e,t,s);return r=""===o?new a(e):Object.assign(new n,JSON.parse(o)),s&&""!==s||z.users.set(r.uid,r),r}getUserInfos(e,t=""){let s=[],r=A.invoke("getUserInfos",e,t);return r&&""!==r&&JSON.parse(r).forEach((e=>{let t=Object.assign(new n,e);s.push(t)})),s}async getUserInfoEx(e,t,s,r){A.invokeAsync("getUserInfoEx",e,t,(e=>{const t=Object.assign(new n,JSON.parse(e));s&&s(t)}),(e=>{e&&r(e)}))}async searchUser(e,t,s,r,a){A.invokeAsync("searchUser",e,t,s,(t=>{let s=JSON.parse(t),a=[];s&&s.length>0&&s.forEach((e=>{a.push(Object.assign(new n,e))})),r&&r(e,a)}),(e=>{e&&a(e)}))}async searchUserEx(e,t,s,r,a,o){A.invokeAsync("searchUserEx",e,t,s,r,(e=>{let s=JSON.parse(e),r=[];s&&s.length>0&&s.forEach((e=>{r.push(Object.assign(new n,e))})),a&&a(t,r)}),(e=>{e&&o(e)}))}searchFriends(e){let t=A.invoke("searchFriends",e),s=JSON.parse(t),r=[];return s&&s.length>0&&s.forEach((e=>{r.push(Object.assign(new n,e))})),r}searchGroups(e){let t=A.invoke("searchGroups",e),s=JSON.parse(t),r=[];return s&&s.length>0&&s.forEach((e=>{r.push(S.fromProtoGroupSearchResult(e))})),r}getIncommingFriendRequest(){let e=A.invoke("getIncommingFriendRequest"),t=JSON.parse(e),s=[];return t&&t.length>0&&t.forEach((e=>{s.push(Object.assign(new f,e))})),s}getOutgoingFriendRequest(){let e=A.invoke("getOutgoingFriendRequest"),t=JSON.parse(e),s=[];return t&&t.length>0&&t.forEach((e=>{s.push(Object.assign(new f,e))})),s}getOneFriendRequest(e,t){let s=A.invoke("getFriendRequest",e,t);return JSON.parse(s)}loadFriendRequestFromRemote(){A.invoke("loadFriendRequestFromRemote")}getFavUsers(){let e=A.invoke("getFavUsers");return JSON.parse(e)}isFavUser(e){return A.invoke("isFavUser",e)}setFavUser(e,t,s,r){A.invokeAsync("setFavUser",e,t,(()=>{s&&s()}),(e=>{r&&r(e)}))}loadRemoteMessages(t,s,r,n,a,o){s||(s=[]),A.invokeAsync("getRemoteMessages",JSON.stringify(t),R(r),n,(t=>{let s=JSON.parse(t),r=[];s.map((t=>{let s=e.fromProtoMessage(t);s&&r.push(s)})),a&&a(r)}),(e=>{o&&o(e)}),s)}loadRemoteMessage(t,s,r){A.invokeAsync("getRemoteMessage",R(t),(t=>{let n=JSON.parse(t),a=[];n.map((t=>{let s=e.fromProtoMessage(t);s&&a.push(s)})),1===a.length?s&&s(a[0]):r&&r(-1)}),(e=>{r&&r(e)}))}getUnreadFriendRequestCount(){return A.invoke("getUnreadFriendRequestStatus")}clearUnreadFriendRequestStatus(){A.invoke("clearUnreadFriendRequestStatus")}async deleteFriend(e,t,s){A.invokeAsync("deleteFriend",e,(()=>{t&&t()}),(e=>{s(e)}))}async handleFriendRequest(e,t,s,r,n){A.invokeAsync("handleFriendRequest",e,t,(()=>{r&&r()}),(e=>{n&&n(e)}),s)}isBlackListed(e){return A.invoke("isBlackListed",e)}getBlackList(){let e=A.invoke("getBlackList");return JSON.parse(e)}setBlackList(e,t,s,r){A.invokeAsync("setBlackList",e,t,(()=>{s&&s()}),(e=>{r&&r(e)}))}getMyFriendList(e=!1){let t=A.invoke("getMyFriendList",e);return""!==t?JSON.parse(t):[]}getFriendList(e=!1){let t=A.invoke("getFriendList",e);return JSON.parse(t)}getFriendAlias(e){return A.invoke("getFriendAlias",e)}async setFriendAlias(e,t,s,r){A.invokeAsync("setFriendAlias",e,t,s,r)}async createGroup(e,t,s,r,n="",a=[],o="",i=[0],l,g,c){e=e||"",n=n||"",o=o||"";let u=z.getUserId();a.includes(u)||a.push(u);let d=l?l.encode():"",m=JSON.stringify(d);A.invokeAsync("createGroup",e,t,s,r,n,a,o,i,m,(e=>{g&&g(e)}),(e=>{c&&c(e)}))}async setGroupManager(e,t,s=[],r=[0],n,a,o){let i=n?n.encode():"",l=JSON.stringify(i);A.invokeAsync("setGroupManager",e,t,s,r,l,a,o)}async muteOrAllowGroupMembers(e,t,s,r,n=[0],a,o,i){if(s){let s=a?a.encode():"",l=JSON.stringify(s);A.invokeAsync("allowGroupMember",e,t,r,n,l,(()=>{o&&o()}),(e=>{i&&i(e)}))}else{let s=a?a.encode():"",l=JSON.stringify(s);A.invokeAsync("muteGroupMember",e,t,r,n,l,(()=>{o&&o()}),(e=>{i&&i(e)}))}}async setGroupRemark(e,t,s,r){A.invokeAsync("setGroupRemark",e,t,(()=>{s&&s()}),(e=>{r&&r(e)}))}getGroupRemark(e){return A.invoke("setGroupRemark",e)}getGroupInfo(e,t=!1){let s;if(!t&&(s=z.groups.get(e),s))return s;let r=A.invoke("getGroupInfo",e,t);return""===r?new o(e):(s=Object.assign(new i,JSON.parse(r)),z.groups.set(e,s),s)}getGroupInfos(e,t=!1){let s=[],r=A.invoke("getGroupInfos",e,t);return r&&""!==r&&JSON.parse(r).forEach((e=>{let t=Object.assign(new i,e);s.push(t)})),s}async getGroupInfoEx(e,t,s,r){A.invokeAsync("getGroupInfoEx",e,t,(e=>{let t=Object.assign(new i,JSON.parse(e));s&&s(t)}),(e=>{e&&r(e)}))}addGroupMembers(e,t,s,r,n,a,o){n||(n=new c(z.getUserId(),t));let i=n.encode(),l=JSON.stringify(i);s=s||"",A.invokeAsync("addMembers",t,e,s,r,l,(()=>{a&&a()}),(e=>{o&&o(e)}))}getGroupMemberIds(e,t=!1){let s=z.getGroupMembers(e,t);var r=[];return s.forEach((e=>{r.push(e.memberId)})),r}getGroupMembers(e,t=!1){let s=A.invoke("getGroupMembers",e,t);var r=[];return JSON.parse(s).forEach((e=>{r.push(Object.assign(new l,e))})),r}getGroupMembersByType(e,t){let s=A.invoke("getGroupMembersByType",e,t);var r=[];return JSON.parse(s).forEach((e=>{r.push(Object.assign(new l,e))})),r}getGroupMember(e,t){let s=A.invoke("getGroupMember",e,t);return Object.assign(new l,JSON.parse(s))}async getGroupMembersEx(e,t,s,r){A.invokeAsync("getGroupMembersEx",e,t,(e=>{var t=[];JSON.parse(e).forEach((e=>{t.push(Object.assign(new l,e))})),s&&s(t)}),(e=>{e&&r(e)}))}kickoffGroupMembers(e,t,s,r,n,a){let o=r?r.encode():"",i=JSON.stringify(o);A.invokeAsync("kickoffMembers",e,t,s,i,(()=>{n&&n()}),(e=>{a&&a(e)}))}async quitGroup(e,t=[0],s,r,n){let a=s?s.encode():"";A.invokeAsync("quitGroup",e,t,JSON.stringify(a),(()=>{r&&r()}),(e=>{n(e)}))}async dismissGroup(e,t=[0],s,r,n){let a=s?s.encode():"";A.invokeAsync("dismissGroup",e,t,JSON.stringify(a),(()=>{r&&r()}),(e=>{n(e)}))}async modifyGroupInfo(e,t,s,r=[0],n,a,o){let i=n?n.encode():"";A.invokeAsync("modifyGroupInfo",e,t,s,r,JSON.stringify(i),(()=>{a&&a()}),(e=>{o&&o(e)}))}async modifyGroupAlias(e,t,s=[0],r,n,a){let o=r?r.encode():"";A.invokeAsync("modifyGroupAlias",e,t,s,JSON.stringify(o),(()=>{n()}),(e=>{a(e)}))}async modifyGroupMemberAlias(e,t,s,r=[0],n,a,o){let i=n?n.encode():"";A.invokeAsync("modifyGroupMemberAlias",e,t,s,r,JSON.stringify(i),(()=>{a()}),(e=>{o(e)}))}async modifyGroupMemberExtra(e,t,s,r=[0],n,a,o){let i=n?n.encode():"";A.invokeAsync("modifyGroupMemberExtra",e,t,s,r,JSON.stringify(i),(()=>{a()}),(e=>{o(e)}))}transferGroup(e,t,s=[0],r,n,a){let o=r?r.encode():"";A.invokeAsync("transferGroup",e,t,s,JSON.stringify(o),(()=>{n&&n()}),(e=>{a&&a(e)}))}getFavGroups(){let e=A.invoke("getFavGroups");return JSON.parse(e)}isFavGroup(e){return A.invoke("isFavGroup",e)}async setFavGroup(e,t,s,r){A.invokeAsync("setFavGroup",e,t,(()=>{s&&s()}),(e=>{r&&r(e)}))}async getMyGroups(e,t){A.invokeAsync("getMyGroups",(t=>{e&&e(t)}),(e=>{t&&t(e)}))}async getCommonGroups(e,t,s){A.invokeAsync("getCommonGroups",e,(e=>{t&&t(e)}),(e=>{s&&s(e)}))}getUserSetting(e,t){return A.invoke("getUserSetting",e,t)}getUserSettings(e){let t=A.invoke("getUserSettings",e);return JSON.parse(t)}async setUserSetting(e,t,s,r,n){A.invokeAsync("setUserSetting",e,t,s,(()=>{r&&r()}),(e=>{n&&n(e)}))}modifyMyInfo(e,t,s){A.invokeAsync("modifyMyInfo",e[0].type,e[0].value,(()=>{t&&t()}),(e=>{s&&s(e)}))}isGlobalSlient(){return A.invoke("isGlobalSlient")}setGlobalSlient(e,t,s){A.invokeAsync("setGlobalSlient",e,(()=>{t&&t()}),(e=>{s&&s(e)}))}isHiddenNotificationDetail(){return x.invoke("isHiddenNotificationDetail")}async setHiddenNotificationDetail(e,t,s){A.invokeAsync("setHiddenNotificationDetail",e,(()=>{t&&t()}),(e=>{s&&s(e)}))}isHiddenGroupMemberName(e){return A.invoke("isHiddenGroupMemberName",e)}async setHiddenGroupMemberName(e,t,s,r){A.invokeAsync("setHiddenGroupMemberName",e,t,(()=>{s()}),(e=>{r(e)}))}isUserReceiptEnabled(){return A.invoke("isUserReceiptEnabled")}async setUserEnableReceipt(e,t,s){A.invokeAsync("setUserReceiptEnable",e,(()=>{t&&t()}),(e=>{s&&s(e)}))}async joinChatroom(e,t,s){A.invokeAsync("joinChatroom",e,(()=>{t&&t()}),(e=>{s&&s(e)}))}quitChatroom(e,t,s){A.invokeAsync("quitChatroom",e,(()=>{t&&t()}),(e=>{s&&s(e)}))}getChatroomInfo(e,t,s,r){A.invokeAsync("getChatroomInfo",e,""+t,(t=>{if(s){let r=Object.assign(new J,JSON.parse(t));r.chatRoomId=e,s(r)}}),(e=>{r&&r(e)}))}getChatroomMemberInfo(e,t,s,r){A.invokeAsync("getChatroomMemberInfo",e,t,(e=>{s&&s(Object.assign(new M,JSON.parse(e)))}),(e=>{r&&r(e)}))}createChannel(e,t,s,r,n,a){A.invokeAsync("createChannel",e,t,0,s,r,(e=>{n&&n(Object.assign(new h,JSON.parse(e)))}),(e=>{a&&a(e)}))}getChannelInfo(e,t=!1){let s=A.invoke("getChannelInfo",e,t);if(""===s)return new G(e);let r=Object.assign(new h,JSON.parse(s));return r.menus&&(r.menus=r.menus.map((e=>((e=Object.assign(new B,e)).subMenus&&(e.subMenus=e.subMenus.map((e=>Object.assign(new B,e)))),e)))),r}async modifyChannelInfo(e,t,s,r,n){A.invokeAsync("modifyChannelInfo",e,t,s,(()=>{r&&r()}),(e=>{n&&n(e)}))}searchChannel(e,t,s,r){A.invokeAsync("searchChannel",e,(t=>{if(s){let r=[];JSON.parse(t).forEach((e=>{r.push(Object.assign(new h,e))})),s(e,r)}}),(e=>{r&&r(e)}))}isListenedChannel(e){return A.invoke("isListenedChannel",e)}async listenChannel(e,t,s,r){A.invokeAsync("listenChannel",e,t,(()=>{s&&s()}),(e=>{r&&r(e)}))}getMyChannels(){let e=A.invoke("getMyChannels");return JSON.parse(e)}getListenedChannels(){let e=A.invoke("getListenedChannels");return JSON.parse(e)}getRemoteListenedChannels(e,t){A.invokeAsync("getRemoteListenedChannels",(t=>{e&&e(t)}),(e=>{t&&t(e)}))}async destoryChannel(e,t,s){A.invokeAsync("destoryChannel",e,(()=>{t&&t()}),(e=>{s&&s(e)}))}getConversationList(e,t){let r=A.invoke("getConversationInfos",e,t),n=[];return JSON.parse(r).forEach((e=>{n.push(s.protoConversationToConversationInfo(e))})),n}getConversationInfo(e){let t=A.invoke("getConversationInfo",JSON.stringify(e));return s.protoConversationToConversationInfo(JSON.parse(t))}searchConversation(e,t=[],s=[]){let r=A.invoke("searchConversation",e,t,s),n=JSON.parse(r);var a=[];return n&&n.length>0&&n.forEach((e=>{a.push(m.fromProtoConversationSearchResult(e))})),a}searchConversationEx(e,t,s,r,n,a,o,i){let l=A.invoke("searchConversationEx",e,t,s,r,n,a,o,i),g=JSON.parse(l);var c=[];return g&&g.length>0&&g.forEach((e=>{c.push(m.fromProtoConversationSearchResult(e))})),c}searchConversationEx2(e,t,s,r,n,a,o,i,l,g){let c=A.invoke("searchConversationEx2",e,t,s,r,n,a,o,i,l,g),u=JSON.parse(c);var d=[];return u&&u.length>0&&u.forEach((e=>{d.push(m.fromProtoConversationSearchResult(e))})),d}async removeConversation(e,t){A.invoke("removeConversation",JSON.stringify(e),t)}setConversationTop(e,t,s,n){A.invokeAsync("setConversationTop",JSON.stringify(e),t,(()=>{let t=z.getConversationInfo(e);z.eventEmitter.emit(r.ConversationInfoUpdate,t),s&&s()}),(e=>{n&&n(e)}))}setConversationSlient(e,t,s,n){A.invokeAsync("setConversationSlient",JSON.stringify(e),t,(()=>{let t=z.getConversationInfo(e);z.eventEmitter.emit(r.ConversationInfoUpdate,t),s&&s()}),(e=>{n&&n(e)}))}setConversationDraft(e,t=""){let s=z.getConversationInfo(e);s.draft!==t&&(A.invoke("setConversationDraft",JSON.stringify(e),t),s=z.getConversationInfo(e),z.eventEmitter.emit(r.ConversationInfoUpdate,s))}setConversationTimestamp(e,t){t+="",A.invoke("setConversationTimestamp",JSON.stringify(e),t);let s=z.getConversationInfo(e);z.eventEmitter.emit(r.ConversationInfoUpdate,s)}getUnreadCount(e=[],t=[0]){let s=A.invoke("getUnreadCount",e,t);return Object.assign(new d,JSON.parse(s))}getConversationUnreadCount(e){let t=A.invoke("getConversationUnreadCount",JSON.stringify(e));return Object.assign(new d,JSON.parse(t))}clearConversationUnreadStatus(e){A.invoke("clearUnreadStatus",JSON.stringify(e));let t=z.getConversationInfo(e);z.eventEmitter.emit(r.ConversationInfoUpdate,t)}clearUnreadStatusBeforeMessage(e,t){A.invoke("clearMessageUnreadStatusBefore",JSON.stringify(e),t);let s=z.getConversationInfo(e);z.eventEmitter.emit(r.ConversationInfoUpdate,s)}clearUnreadStatusBeforeMessage(e,t){A.invoke("clearMessageUnreadStatusBefore",JSON.stringify(e),t);let s=z.getConversationInfo(e);z.eventEmitter.emit(r.ConversationInfoUpdate,s)}markConversationAsUnread(e,t){let s=A.invoke("setLastReceivedMessageUnRead",JSON.stringify(e),"0","0");if(s&&j(s,0)){if(t){let t=this.getMessageByUid(s),r=new w(s);r.timestamp=t.timestamp,this.sendConversationMessage(e,r)}let n=z.getConversationInfo(e);return z.eventEmitter.emit(r.ConversationInfoUpdate,n),!0}return!1}getConversationRead(e){let t=A.invoke("getConversationRead",JSON.stringify(e)),s=JSON.parse(t),r=new Map;return s&&s.forEach((e=>{r.set(e.key,e.value)})),r}getConversationDelivery(e){let t=A.invoke("getMessageDelivery",JSON.stringify(e)),s=JSON.parse(t),r=new Map;return s&&s.forEach((e=>{r.set(e.key,e.value)})),r}clearMessageUnreadStatus(e){A.invoke("clearMessageUnreadStatus",e)}clearAllUnreadStatus(){A.invoke("clearAllUnreadStatus")}getConversationFirstUnreadMessageId(e){return A.invoke("getConversationFirstUnreadMessageId",JSON.stringify(e))}setMediaMessagePlayed(e){A.invoke("setMediaMessagePlayed",e)}setMessageLocalExtra(e,t){A.invoke("setMessageLocalExtra",e,t)}isMyFriend(e){return A.invoke("isMyFriend",e)}async sendFriendRequest(e,t,s,r,n){s=s||"",A.invokeAsync("sendFriendRequest",e,t,s,(()=>{r&&r()}),(e=>{n&&n(e)}))}getMessages(t,s,r=!0,n=20,a=""){let o=A.invoke("getMessages",JSON.stringify(t),[],s,r,n,a);var i=JSON.parse(o);let l=[];return i.map((t=>{let s=e.fromProtoMessage(t);s&&l.push(s)})),l}getMessagesV2(t,s,r,n,a,o,i){A.invokeAsync("getMessagesV2",JSON.stringify(t),[],s,r,n,a,(t=>{let s=JSON.parse(t),r=[];s.map((t=>{let s=e.fromProtoMessage(t);s&&r.push(s)})),o&&o(r)}),(e=>{i&&i(e)}))}getMentionedMessages(t,s,r,n,a,o){A.invokeAsync("getMentionedMessages",JSON.stringify(t),s,r,n,(t=>{let s=JSON.parse(t),r=[];s.map((t=>{let s=e.fromProtoMessage(t);s&&r.push(s)})),a&&a(r)}),(e=>{o&&o(e)}))}getMessagesEx(t,s,r,n,a=!0,o=20,i=""){let l=A.invoke("getMessagesEx",t,s,r,n,a,o,i);var g=JSON.parse(l);let c=[];return g.map((t=>{let s=e.fromProtoMessage(t);s&&c.push(s)})),c}getMessagesExV2(t,s,r,n,a,o,i,l,g){A.invokeAsync("getMessagesExV2",t,s,r,n,a,o,i,(t=>{let s=JSON.parse(t),r=[];s.map((t=>{let s=e.fromProtoMessage(t);s&&r.push(s)})),l&&l(r)}),(e=>{g&&g(e)}))}getMessagesEx2(t,s,r,n,a=!0,o=20,i=""){let l=A.invoke("getMessagesEx2",t,s,r,n,a,o,i);var g=JSON.parse(l);let c=[];return g.map((t=>{let s=e.fromProtoMessage(t);s&&c.push(s)})),c}getMessagesEx2V2(t,s,r,n,a,o,i,l,g){A.invokeAsync("getMessagesEx2V2",t,s,r,n,a,o,i,(t=>{let s=JSON.parse(t),r=[];s.map((t=>{let s=e.fromProtoMessage(t);s&&r.push(s)})),l&&l(r)}),(e=>{g&&g(e)}))}getMessagesByTimestamp(t,s,r,n=!0,a=20,o=""){let i=A.invoke("getMessagesByTimestamp",JSON.stringify(t),s,r,n,a,o);var l=JSON.parse(i);let g=[];return l.map((t=>{let s=e.fromProtoMessage(t);s&&g.push(s)})),g}getMessagesByTimestampV2(t,s,r,n,a,o,i,l){A.invokeAsync("getMessagesByTimestampV2",JSON.stringify(t),s,r,n,a,o,(t=>{let s=JSON.parse(t),r=[];s.map((t=>{let s=e.fromProtoMessage(t);s&&r.push(s)})),i&&i(r)}),(e=>{l&&l(e)}))}getMessagesByStatusV2(t,s,r,n,a,o,i,l){A.invokeAsync("getMessagesByStatusV2",JSON.stringify(t),s,r,n,a,o,(t=>{let s=JSON.parse(t),r=[];s.map((t=>{let s=e.fromProtoMessage(t);s&&r.push(s)})),i&&i(r)}),(e=>{l&&l(e)}))}getUserMessages(t,s,r,n=!0,a=20,o=[]){let i=A.invoke("getUserMessages",t,JSON.stringify(s),o,r,n,a);var l=JSON.parse(i);let g=[];return l.map((t=>{let s=e.fromProtoMessage(t);s&&g.push(s)})),g}getUserMessagesV2(t,s,r,n,a,o,i,l){A.invokeAsync("getUserMessagesV2",t,JSON.stringify(s),o,r,n,a,(t=>{let s=JSON.parse(t),r=[];s.map((t=>{let s=e.fromProtoMessage(t);s&&r.push(s)})),i&&i(r)}),(e=>{l&&l(e)}))}getUserMessagesEx(t,s,r,n,a=!0,o=20,i=[]){let l=A.invoke("getUserMessagesEx",t,s,r,i,n,a,o);var g=JSON.parse(l);let c=[];return g.map((t=>{let s=e.fromProtoMessage(t);s&&c.push(s)})),c}getUserMessagesExV2(t,s,r,n,a,o,i,l,g){A.invokeAsync("getUserMessagesExV2",t,s,r,i,n,a,o,(t=>{let s=JSON.parse(t),r=[];s.map((t=>{let s=e.fromProtoMessage(t);s&&r.push(s)})),l&&l(r)}),(e=>{g&&g(e)}))}getMessageById(t){let s=A.invoke("getMessage",t);return e.fromProtoMessage(JSON.parse(s))}getMessageByUid(t){let s=A.invoke("getMessageByUid",N.fromValue(t).toString());return e.fromProtoMessage(JSON.parse(s))}searchMessage(t,s,r=""){let n=A.invoke("searchMessage",JSON.stringify(t),s,r),a=JSON.parse(n),o=[];return a&&a.length>0&&a.forEach((t=>{o.push(e.fromProtoMessage(t))})),o}searchMessageEx(t,s,r,n,a,o=""){let i=A.invoke("searchMessageEx",JSON.stringify(t),s,r,n,a,o),l=JSON.parse(i),g=[];return l&&l.length>0&&l.forEach((t=>{g.push(e.fromProtoMessage(t))})),g}searchMentionedMessages(t,s,r,n,a){let o=A.invoke("searchMentionedMessages",JSON.stringify(t),s,r,n,a),i=JSON.parse(o),l=[];return i&&i.length>0&&i.forEach((t=>{l.push(e.fromProtoMessage(t))})),l}searchMessageByTypes(t,s,r,n,a,o,i=""){r||(r=[]);let l=A.invoke("searchMessageByTypes",JSON.stringify(t),s,r,n,a,o,i),g=JSON.parse(l),c=[];return g&&g.length>0&&g.forEach((t=>{c.push(e.fromProtoMessage(t))})),c}searchMessageByTypesAndTimes(t,s,r,n,a,o,i,l,g=""){r||(r=[]);let c=A.invoke("searchMessageByTypesAndTimes",JSON.stringify(t),s,r,n.toString(),a.toString(),o,i,l,g),u=JSON.parse(c),d=[];return u&&u.length>0&&u.forEach((t=>{d.push(e.fromProtoMessage(t))})),d}searchMessageEx2(t,s,r,n,a,o,i,l=""){r||(r=[]);let g=A.invoke("searchMessageEx2",t,s,r,n,a,o,i,l),c=JSON.parse(g),u=[];return c&&c.length>0&&c.forEach((t=>{u.push(e.fromProtoMessage(t))})),u}searchMentionedMessageEx(t,s,r,n,a,o){t||(t=[]);let i=A.invoke("searchMentionedMessagesEx",t,s,r,n,a,o),l=JSON.parse(i),g=[];return l&&l.length>0&&l.forEach((t=>{g.push(e.fromProtoMessage(t))})),g}async sendConversationMessage(t,s,r=[],n,a,o,i){let l=new e;l.conversation=t,l.messageContent=s,z.sendMessageEx(l,r,n,a,o,i)}async sendMessage(e,t,s,r,n){z.sendMessageEx(e,[],t,s,r,n)}async sendMessageEx(e,t=[],s,n,a,o){let i,l=JSON.stringify(e.conversation);if(e.content=e.messageContent.encode(),e.from=this.userId,e.messageContent instanceof D&&y.SEND_LOG_COMMAND&&y.SEND_LOG_COMMAND.trim()&&e.messageContent.content===y.SEND_LOG_COMMAND.trim()){let t=this.m();if(t){i=t=>{let s=new D(t);this.sendConversationMessage(e.conversation,s)};let s={path:t,name:t.substring(t.lastIndexOf("/")+1),size:require("fs").statSync(t).size},r=new k(s,null);e.messageContent=r,e.content=r.encode()}}if(e.messageContent instanceof b&&(e.messageContent.localPath||e.messageContent.file)&&!e.messageContent.remotePath&&this.isTcpShortLink()&&!this.isSupportBigFilesUpload())return void(o&&o(-1));if(e.messageContent instanceof b&&(e.messageContent.localPath||e.messageContent.file)&&!e.messageContent.remotePath&&this.isSupportBigFilesUpload()){let l,g=this.insertMessage(e.conversation,e.messageContent,p.Sending,!1,t,0);if(this.eventEmitter.emit(r.SendMessage,g),s&&s(g.messageId,g.timestamp),!e.messageContent.localPath||e.messageContent.file&&e.messageContent.file instanceof File)l=e.messageContent.file;else{let t=e.messageContent.file?e.messageContent.file.path:e.messageContent.localPath,s=e.messageContent.file?e.messageContent.file.name:e.messageContent.name;l=await this.readLocalFile(t,s)}if(("darwin"===process.platform||"win32"===process.platform)&&e.messageContent instanceof q&&e.messageContent.localPath){let t=(await require("electron").nativeImage.createThumbnailFromPath(e.messageContent.localPath,{width:200,height:200})).toDataURL();e.messageContent.thumbnail=t.substring(22)}return void this.p(g,l,e.messageContent.mediaType,((e,t)=>{n&&n(e,t,g.messageId)}),(t=>{g.messageContent.remotePath=t,g.messageId>0&&this.updateMessageContent(g.messageId,g.messageContent),A.invokeAsync("sendSavedMessage",g.messageId,0,((e,t)=>{e=N.fromValue(e),g.messageUid=e,g.timestamp=t,g.status=p.Sent,g.conversation.type!==L.ChatRoom&&this.eventEmitter.emit(r.MessageStatusUpdate,g),a&&a(g.messageUid,g.timestamp)}),(t=>{g.status=p.SendFailure,e.conversation.type!==L.ChatRoom&&this.eventEmitter.emit(r.MessageStatusUpdate,e),o&&o(t)})),i&&i(t)}),(t=>{this.updateMessageStatus(g.messageId,p.SendFailure),g.status=p.SendFailure,e.conversation.type!==L.ChatRoom&&this.eventEmitter.emit(r.MessageStatusUpdate,e),o&&o(t)}))}if(e.messageContent instanceof b&&!e.messageContent.localPath&&e.messageContent.file){let t=e.messageContent.file,s=P.join(H.tmpdir(),t.name),r=Buffer.from(await t.arrayBuffer());require("fs").writeFileSync(s,r),e.messageContent.localPath=s,e.content=e.messageContent.encode()}let g=JSON.stringify(e.content),c=A.sendMessage(l,g,t,0,((t,s)=>{e.messageId=t,e.timestamp=N.fromValue(s).toNumber()}),((t,s)=>{"function"==typeof n&&n(t,s,e.messageId)}),((t,s)=>{if(e.status=p.Sent,e.messageUid=N.fromValue(t),e.timestamp=N.fromValue(s).toNumber(),e.messageContent instanceof b&&e.messageId>0){let t=z.getMessageById(e.messageId);e.messageContent=t.messageContent}this.eventEmitter.emit(r.MessageStatusUpdate,e),"function"==typeof a&&a(N.fromValue(t),N.fromValue(s).toNumber())}),(t=>{e.status=p.SendFailure,e.conversation.type!==L.ChatRoom&&this.eventEmitter.emit(r.MessageStatusUpdate,e),"function"==typeof o&&o(t)})),u=JSON.parse(c);e.messageId=u.messageId,e.timestamp=N.fromValue(u.timestamp).toNumber(),"function"==typeof s&&s(e.messageId,N.fromValue(u.timestamp).toNumber())}async sendSavedMessage(e,t,s,n){A.invokeAsync("sendSavedMessage",e.messageId,t,((t,n)=>{if(e.status=p.Sent,e.messageUid=N.fromValue(t),e.timestamp=N.fromValue(n).toNumber(),e.messageContent instanceof b){let t=z.getMessageById(e.messageId);e.messageContent=t.messageContent}e.conversation.type!==L.ChatRoom&&this.eventEmitter.emit(r.MessageStatusUpdate,e),"function"==typeof s&&s(N.fromValue(t),N.fromValue(n).toNumber())}),(t=>{e.status=p.SendFailure,e.conversation.type!==L.ChatRoom&&this.eventEmitter.emit(r.MessageStatusUpdate,e),"function"==typeof n&&n(t)}))}async readLocalFile(e,t){let s=await fetch("file://"+e),r=await s.blob();return new File([r],t)}cancelSendingMessage(e){let t=A.invoke("cancelSendingMessage",e);if(!t){let s=this.uploadingMap.get(e);if(s){this.uploadingMap.delete(e);try{s.abort(),t=!0}catch(e){}}}return t}S(e,t,s,r,n,a){let o=new XMLHttpRequest;return o.upload.onprogress=e=>{let t=e.loaded,s=e.total;r(t,s)},o.onreadystatechange=t=>{4===o.readyState&&(200===o.status?(this.uploadingMap.delete(e),n(s)):(this.uploadingMap.delete(e),a&&a(-1)))},o.onerror=t=>{this.uploadingMap.delete(e),a&&a(-1)},e&&this.uploadingMap.set(e,o),o}async p(e,t,s,r,n,a){let o=encodeURIComponent(t.name);if(e&&e.conversation.type===L.SecretChat){let s=await t.arrayBuffer(),r=A.invoke("encodeSecretChatMediaData",e.conversation.target,s);t=new Blob([new Uint8Array(r,0,r.byteLength)])}let i=this.M(s,o);this.getUploadMediaUrl(o,s,i,((s,l,g,c)=>{let u;if(s=z.connectedToMainNetwork()||!g?s:g,0===c);else if(1===c){let i=s.split("?"),g=i[0],c=i[1],d=i[2];u=this.S(e?e.messageId:0,o,l,r,n,a);let m=new FormData;m.append("key",d),m.append("token",c),m.append("file",t),u.open("POST",g),u.setRequestHeader("content-disposition",`attachment; filename="${o}"`),u.send(m)}else u=this.S(e?e.messageId:0,o,l,r,n,a),u.open("PUT",s),u.setRequestHeader("content-type",i),u.setRequestHeader("content-disposition",`attachment; filename="${o}"`),u.send(t)}),(e=>{}))}recallMessage(e,t,s){A.invokeAsync("recall",e.toString(),(()=>{t&&t(),this.onRecallMessage(this.getUserId(),e)}),(e=>{s&&s(e)}))}async deleteRemoteMessage(e,t,s){A.invokeAsync("deleteRemoteMessage",e.toString(),(()=>{t&&t(),this.onDeleteRemoteMessage(e)}),(e=>{s&&s(e)}))}async updateRemoteMessageContent(e,t,s,r,n,a){let o=t.encode();A.invokeAsync("updateRemoteMessageContent",e.toString(),JSON.stringify(o),s,r,(()=>{n&&n()}),(e=>{a&&a(e)}))}deleteMessageById(e){let t=A.invoke("deleteMessage",e);return t&&this.onMessageDeleted(e),t}batchDeleteMessages(e){return A.invoke("batchDeleteMessages",e)}watchOnlineState(e,t,s,r,n){A.invokeAsync("watchOnlineState",e,t,s,(e=>{let t=z.i(e);r&&r(t)}),(e=>{n&&n(e)}))}unwatchOnlineState(e,t,s,r){A.invokeAsync("unwatchOnlineState",e,t,(()=>{s&&s()}),(e=>{r&&r(e)}))}setMyCustomState(e,t,s,r){let n=e+"-"+t;this.setUserSetting(g.CustomState,"",n,s,r)}isCommercialServer(){return A.invoke("isCommercialServer")}isReceiptEnabled(){return A.invoke("isReceiptEnabled")}isGroupReceiptEnabled(){return A.invoke("isGroupReceiptEnabled")}isGlobalDisableSyncDraft(){return A.invoke("isGlobalDisableSyncDraft")}isUserOnlineStateEnabled(){return A.invoke("isEnableUserOnlineState")}setDisableSyncDraft(e,t,s){this.setUserSetting(g.DisableSyncDraft,"",e?"1":"0",(()=>t&&t()),(e=>s&&s(e)))}isDisableSyncDraft(){return"1"===this.getUserSetting(g.DisableSyncDraft,"")}getAuthorizedMediaUrl(e,t,s,r,n){A.invokeAsync("getAuthorizedMediaUrl",R(e),t,s,r,n)}getVersion(){return A.invoke("getProtoRevision")}isSupportBigFilesUpload(){return A.invoke("isSupportBigFilesUpload")}getUploadMediaUrl(e,t,s,r,n){A.invokeAsync("getUploadMediaUrl",e,t,s,r,n)}getConversationFileRecords(e,t,s,r,n,a,o){A.invokeAsync("getConversationFiles",JSON.stringify(e),t,N.fromValue(s).toString(),r,n,(e=>{let t=JSON.parse(e),s=[];t.forEach((e=>{s.push(this.h(e))})),a&&a(s)}),(e=>{o&&o(e)}))}h(e){let s=new U;return s.userId=e.userId,s.conversation=new t(e.conversationType,e.target,e.line),s.messageUid=N.fromValue(e.messageUid),s.name=e.name,s.url=e.url,s.size=e.size,s.downloadCount=e.downloadCount,s.timestamp=e.timestamp,s}getMyFileRecords(e,t,s,r,n){A.invokeAsync("getMyFiles",N.fromValue(e).toString(),t,s,(e=>{let t=JSON.parse(e),s=[];t.forEach((e=>{s.push(this.h(e))})),r&&r(s)}),(e=>{n&&n(e)}))}deleteFileRecord(e,t,s){A.invokeAsync("deleteFileRecord",N.fromValue(e).toString(),(()=>{t&&t()}),(e=>{s&&s(e)}))}async clearMessages(e){A.invoke("clearMessages",JSON.stringify(e));let t=this.getConversationInfo(e);z.eventEmitter.emit(r.ConversationInfoUpdate,t)}async clearUserMessages(e,t,s){A.invoke("clearUserMessages",e,t,s)}async clearRemoteConversationMessages(e,t,s){A.invokeAsync("clearRemoteConversationMessages",JSON.stringify(e),(()=>{let s=this.getConversationInfo(e);z.eventEmitter.emit(r.ConversationInfoUpdate,s),t&&t()}),(e=>{s&&s(e)}))}async clearMessagesByTime(e,t){A.invoke("clearMessagesByTime",JSON.stringify(e),t);let s=this.getConversationInfo(e);z.eventEmitter.emit(r.ConversationInfoUpdate,s)}async clearMessagesKeepLatest(e,t){A.invoke("clearMessagesKeepLatest",JSON.stringify(e),t)}clearAllMessages(e){A.invoke("clearAllMessages",e)}insertMessage(t,s,r,n=!1,a=[],o=0){let i=s.encode(),l=A.invoke("insertMessage",JSON.stringify(t),z.userId,JSON.stringify(i),r,n,a,o);return e.fromProtoMessage(JSON.parse(l))}insertMessageEx(t,s,r,n,a,o,i){let l=n.encode(),g=A.invoke("insertMessageEx",N.fromValue(t).toString(),JSON.stringify(s),r,JSON.stringify(l),a,o,i);return e.fromProtoMessage(JSON.parse(g))}async updateMessageContent(e,t){let s=t.encode();A.invoke("updateMessage",e,JSON.stringify(s));let n=this.getMessageById(e);this.eventEmitter.emit(r.MessageContentUpdate,n)}async updateMessageStatus(e,t){A.invoke("updateMessageStatus",e,t)}getMessageCount(e){return A.invoke("getMessageCount",JSON.stringify(e))}getConversationMessageCount(e,t){return A.invoke("getConversationMessageCount",e,t)}async uploadMedia(e,t,s,r,n,a){if(!this.isTcpShortLink()||this.isSupportBigFilesUpload())if("string"==typeof t&&t.indexOf("base64,")>=0&&(t=t.substring(t.indexOf(",")+1)),this.isTcpShortLink()||this.isSupportBigFilesUpload()){let e;if("string"==typeof t){const s=atob(t),r=new Uint8Array(s.length);for(let e=0;e<s.length;e++)r[e]=s.charCodeAt(e);e=new Blob([new Uint8Array(r,0,r.byteLength)])}else e=t;this.p(null,e,s,a,r,n)}else t.path&&(t=await v.readFile(t.path,{encoding:"base64"})),A.invokeAsync("uploadMedia",e,t,s,(e=>{r&&r(e)}),(e=>{n&&n(e)}),((e,t)=>{a&&a(e,t)}));else n&&n(-1)}sendConferenceRequest(e,t,s,r,n,a){A.invokeAsync("sendConferenceRequest",""+e,t,s,r,(e=>{a&&a(0,e)}),(e=>{a&&a(e,null)}),!0===n)}searchFiles(e,t,s,r,n,a,o,i){A.invokeAsync("searchFiles",e,t?JSON.stringify(t):"",s,N.fromValue(r).toString(),n,a,(e=>{let t=JSON.parse(e),s=[];t.forEach((e=>{s.push(this.h(e))})),o&&o(s)}),(e=>{i&&i(e)}))}searchMyFiles(e,t,s,r,n,a){A.invokeAsync("searchMyFiles",e,N.fromValue(t).toString(),s,r,(e=>{let t=JSON.parse(e),s=[];t.forEach((e=>{s.push(this.h(e))})),n&&n(s)}),(e=>{a&&a(e)}))}getHost(){return A.invoke("getHost")}async createSecretChat(e,t,s){A.invokeAsync("createSecretChat",e,((e,s)=>{t&&t(e,s)}),(e=>{s&&s(e)}))}async destroySecretChat(e,t,s){A.invokeAsync("destroySecretChat",e,(()=>{t&&t()}),(e=>{s&&s(e)}))}getSecretChatInfo(e){let t=A.invoke("getSecretChatInfo",e);if(!t)return null;let s=Object.assign(new T,JSON.parse(t));return s.targetId=e,s}getAuthCode(e,t,s,r,n){A.invokeAsync("getAuthCode",e,t,s,(e=>{r&&r(e)}),(e=>{n&&n(e)}))}configApplication(e,t,s,r,n,a,o){A.invokeAsync("configApplication",e,t,s,r,n,(()=>{a&&a()}),(e=>{o&&o(e)}))}decodeSecretChatMediaData(e,t){return A.invoke("decodeSecretChatMediaData",e,t)}encodeSecretChatMediaData(e,t){return A.invoke("encodeSecretChatMediaData",e,t)}setSecretChatBurnTime(e,t){A.invoke("setSecretChatBurnTime",e,t)}isEnableSecretChat(){return A.invoke("isEnableSecretChat")}getAppPath(){return A.invoke("getAppPath")}isUserEnableSecretChat(){return A.invoke("isUserEnableSecretChat")}async setUserEnableSecretChat(e,t,s){A.invoke("setUserEnableSecretChat",e,(()=>{t&&t()}),(e=>{s&&s(e)}))}beginTransaction(){return A.invoke("beginTransaction")}commitTransaction(){return A.invoke("commitTransaction")}rollbackTransaction(){return A.invoke("roolbackTransaction")}requireLock(e,t,s,r){A.invokeAsync("requireLock",e,t,(()=>{s&&s()}),(e=>{r&&r(e)}))}releaseLock(e,t,s){A.invokeAsync("releaseLock",e,(()=>{t&&t()}),(e=>{s&&s(e)}))}isEnableMesh(){return A.invoke("isEnableMesh")}getDomainInfo(e,t){let s,r=A.invoke("getDomainInfo",e,t);return""===r?(s=new _,s.domainId=e):s=Object.assign(new _,JSON.parse(r)),s}loadRemoteDomains(e,t){A.invokeAsync("loadRemoteDomains",(t=>{let s=[];t&&""!==t&&JSON.parse(t).forEach((e=>{let t=Object.assign(new _,e);s.push(t)})),e&&e(s)}),(e=>{e&&t(e)}))}reloadDomainInfoFromRemote(e,t,s,r){}connectedToMainNetwork(){return 1===z.doubleNetworkStrategy||2!==z.doubleNetworkStrategy&&z.t}u(){A.setProtoEventListener("connectionStatus",(e=>{z.onConnectionChanged(e)})),A.setProtoEventListener("connectToServer",((e,t,s)=>{z.onConnectToServer(e,t,s)})),A.setProtoEventListener("connectedToServer",((e,t,s,r)=>{z.onConnectedToServer(e,t,s,r),z.t=r})),A.setProtoEventListener("onReceiveMessage",((e,t)=>{z.onReceiveMessage(e,t)})),A.setProtoEventListener("onSendMessage",(t=>{let s=e.fromProtoMessage(JSON.parse(t));z.eventEmitter.emit(r.SendMessage,s)})),A.setProtoEventListener("onMessageStatusUpdate",(t=>{let s=e.fromProtoMessage(JSON.parse(t));z.eventEmitter.emit(r.MessageStatusUpdate,s)})),A.setProtoEventListener("onRecallMessage",((e,t)=>{z.onRecallMessage(e,t)})),A.setProtoEventListener("onDeleteRemoteMessage",(e=>{z.onDeleteRemoteMessage(e)})),A.setProtoEventListener("onUserReceivedMessage",(e=>{z.onUserReceivedMessage(e)})),A.setProtoEventListener("onUserReadedMessage",(e=>{z.onUserReadedMessage(e)})),A.setProtoEventListener("conferenceEvent",(e=>{z.onConferenceEvent(e)})),A.setProtoEventListener("onlineEvent",(e=>{z.onOnlineEvent(e)})),A.setProtoEventListener("userInfoUpdate",(e=>{z.onUserInfoUpdate(e)})),A.setProtoEventListener("friendUpdate",(e=>{z.onFriendListUpdate(e)})),A.setProtoEventListener("friendRequestUpdate",((e="[]")=>{z.onFriendRequestUpdate(e)})),A.setProtoEventListener("groupInfoUpdate",(e=>{z.onGroupInfoUpdate(e)})),A.setProtoEventListener("domainInfoUpdate",(e=>{z.onDomainInfoUpdate(e)})),A.setProtoEventListener("settingUpdate",(()=>{z.onSettingUpdate()})),A.setProtoEventListener("channelInfoUpdate",(e=>{z.onChannelInfoUpdate(e)})),A.setProtoEventListener("groupMemberUpdate",((e,t)=>{z.onGroupMemberUpdateListener(e,t)})),A.setProtoEventListener("secretChatStateChange",(e=>{z.onSecretChatStateChangedListener(e)})),A.setProtoEventListener("secretMessageStartBurn",((e,t)=>{z.onSecretMessageStartBurningListener(e,t)})),A.setProtoEventListener("secretMessageBurned",(e=>{z.onSecretMessageBurnedListener(e)}))}m(){let e=this.getAppPath();const t=require("fs").readdirSync(e).filter((e=>e.endsWith(".xlog"))).sort(((e,t)=>e>t?1:-1));return t.length>0?e+"/"+t[t.length-1]:null}o(){let e=z.getIncommingFriendRequest(),t=new Set;e.forEach((e=>{t.add(e.target)})),e=z.getOutgoingFriendRequest(),e.forEach((e=>{t.add(e.target)})),z.getMyFriendList(!1).forEach((e=>t.add(e)));let s=z.getConversationList([0,1,3],[0,1,2]),r=[],n=[];s.forEach((e=>{e.conversation.type===L.Single?t.add(e.conversation.target):e.conversation.type===L.Group?r.push(e.conversation.target):e.conversation.type===L.Channel&&n.push(e.conversation.target),e.lastMessage&&e.lastMessage.from&&t.add(e.lastMessage.from)}));let a=Array.from(t),o=0;for(let e=0;e<a.length/2e3;e++)o+=z.getUserInfos(a.slice(2e3*e,2e3*(e+1)),"").filter((e=>0===e.updateDt)).length;let i=0;i=z.getGroupInfos(r,!1).filter((e=>0===e.updateDt)).length,r.forEach((e=>{z.getGroupMembers(e,!1)})),n.forEach((e=>{z.getChannelInfo(e)}));let l=0;return(new Date).getTime()/1e3-z.lastActiveTime>604800?(l+=4*Math.round(o/2e3),l+=2*Math.round(i/10),1e3*Math.min(60,l)):0}l(e){let t=this.getMyFriendList(),s=e.filter((e=>-1===t.indexOf(e)));for(let t=0;t<s.length/2e3;t++)z.getUserInfos(e.slice(2e3*t,2e3*(t+1)),"")}O(){return null}M(e,t){let s="application/octet-stream";if(t){let e=t.substring(t.lastIndexOf(".")+1);if(!e)return s;if(e=e.toLowerCase(),V[e])return V[e];"jpg"===e||"jpeg"===e?s="image/jpeg":"gif"===e?s="image/gif":"png"===e?s="image/png":"mp3"===e?s="audio/mpeg":"mp4"===e?s="video/mp4":"doc"===e?s="application/vnd.ms-word":"docx"===e?s="application/vnd.openxmlformats-officedocument.wordprocessingml.document":"xls"===e?s="application/vnd.ms-xls":"xlsx"===e?s="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":"ppt"===e?s="application/vnd.ms-powerpoint":"pptx"===e?s="application/vnd.openxmlformats-officedocument.presentationml.presentation":"pps"===e?s="application/vnd.ms-powerpoint":"pdf"===e?s="application/pdf":"xml"===e&&(s="application/vnd.ms-xml")}else 1===e?s="image/jpeg":2===e?s="audio/amr":3===e&&(s="video/mp4");return s}};export{z as default};