UNPKG

tjc-sdk

Version:

TIANJI IM SDK

2 lines (1 loc) 1.21 kB
import{ipcRenderer as t}from"electron";class e{t=0;o=new Map;i=new Map;init(){window._rcm=this.o,window._pel=this.i,t.on("protoAsyncCallback",((t,e)=>{let r=e.reqId;if(0!==e.code)throw this.o.delete(r),new Error(e.message);{let t=this.o.get(r);if(t){let s=e.cbIndex;t[s]&&t[s](...e.cbArgs),e.done&&this.o.delete(r)}}})),t.on("protoEvent",((t,e)=>{let r=this.i.get(e.eventName);r&&r(...e.eventArgs)}))}requestId(){return this.t++,this.t}invoke(e,...r){r=structuredClone(r);let s=t.sendSync("invokeProtoMethod",{methodName:e,methodArgs:[...r]});if(0===s.code)return s.value;throw new Error(s.message)}invokeAsync(e,...r){let s=this.requestId(),o=this.h(r);this.l(s,o.funcArgs),t.send("invokeProtoMethodAsync",{reqId:s,methodName:e,methodArgs:o.pArgs})}setProtoEventListener(t,e){this.i.set(t,e)}sendMessage(...e){let r=this.requestId(),s=this.h(e);this.l(r,s.funcArgs);let o=t.sendSync("sendMessage",{reqId:r,methodArgs:s.pArgs});if(0===o.code)return o.value;throw new Error(o.message)}h(t){if(t){let e=[],r=[];return t.forEach((t=>{"function"==typeof t?r.push(t):e.push(structuredClone(t))})),{pArgs:e,funcArgs:r}}return{}}l(t,e){this.o.set(t,[...e])}}const r=new e;export{e as ProtoRendererProxy,r as default};