coolink-ts
Version:
Coocaa Coolink APP JavaScript library base on Thresh-lib.
164 lines (147 loc) • 4.45 kB
text/typescript
import Bridge from '../manager/BridgeManager'
import { BridgeParams } from '../types/type'
import cooInfo from '../shared/cooInfo'
import {
CoolinkRetCode,
CoolinkRetConnectId,
CoolinkRetIsConnected,
CoolinkRetDeviceList,
CoolinkRetRemoteDevice,
CoolinkSendMessageParams,
CoolinkRegisterMessageReceiverParams,
CoolinkStartActionParams,
CoolinkGetRemoteAppStateParams,
CoolinkRetState,
CoolinkCommonReceiverParams,
CoolinkRetHttpHostMapping,
} from './type'
import mpWeb from './MpWeb';
class ProtocolModule {
private static instance: ProtocolModule;
public static msgcallback: Function = null;
public static getModule(): ProtocolModule {
if (this.instance == null) {
this.instance = new ProtocolModule()
}
return ProtocolModule.instance
}
public getConnectId() : Promise<CoolinkRetConnectId> {
let methodName: string;
if ((cooInfo?.infos?.systemInfo?.os.indexOf('android') >= 0)) {
methodName = 'getConnectedId';
} else {
methodName = 'getConnectId';
}
//
let bridgeParams : BridgeParams = {
module: 'protocol',
method: methodName,
params: {
}
};
return mpWeb.callNative(bridgeParams);
}
public isConnected() : Promise<CoolinkRetIsConnected> {
let bridgeParams : BridgeParams = {
module: 'protocol',
method: 'isConnected',
params: {
}
};
return mpWeb.callNative(bridgeParams);
}
public getDeviceList() : Promise<CoolinkRetDeviceList> {
let bridgeParams : BridgeParams = {
module: 'protocol',
method: 'getDeviceList',
params: {
}
};
return mpWeb.callNative(bridgeParams);
}
public getRemoteDeviceInfo() : Promise<CoolinkRetRemoteDevice> {
let bridgeParams : BridgeParams = {
module: 'protocol',
method: 'getRemoteDeviceInfo',
params: {
}
};
return mpWeb.callNative(bridgeParams);
}
public sendMessage(obj: CoolinkSendMessageParams) : Promise<CoolinkRetCode> {
let bridgeParams : BridgeParams = {
module: 'protocol',
method: 'sendMessage',
params: {
...obj
}
};
return mpWeb.callNative(bridgeParams);
}
public sendKey(keycode: number) : Promise<CoolinkRetCode> {
let bridgeParams : BridgeParams = {
module: 'protocol',
method: 'sendKey',
params: {
keycode: keycode
}
};
return mpWeb.callNative(bridgeParams);
}
public registerMessageReceiver(obj: CoolinkRegisterMessageReceiverParams) : void {
let bridgeParams : BridgeParams = {
module: 'protocol',
method: 'registerMessageReceiver',
params: {
miniAppCode: obj.miniAppCode,
methodName: 'onMessageReceiver',
}
};
mpWeb.callNativeWithPersistentCallBack(bridgeParams, 'onMessageReceiver', obj.callback);
}
public registerMessageProcessor(callback: Function) : void {
ProtocolModule.msgcallback = callback;
}
public invokeRemoteIntent(param: CoolinkStartActionParams) : Promise<CoolinkRetCode> {
let bridgeParams : BridgeParams = {
module: 'protocol',
method: 'invokeRemoteIntent',
params: {
...param
}
};
return mpWeb.callNative(bridgeParams);
}
public getRemoteAppState(param: CoolinkGetRemoteAppStateParams) : Promise<CoolinkRetState> {
let bridgeParams : BridgeParams = {
module: 'protocol',
method: 'getRemoteAppState',
params: {
...param
}
};
return mpWeb.callNative(bridgeParams);
}
public registerConnectChanged(obj: CoolinkRegisterMessageReceiverParams) : void {
let bridgeParams : BridgeParams = {
module: 'protocol',
method: 'registerConnectChanged',
params: {
miniAppCode: obj.miniAppCode,
methodName: 'onConnectChanged',
}
};
mpWeb.callNativeWithPersistentCallBack(bridgeParams, 'onConnectChanged', obj.callback);
}
public generateHttpP2PHostMapping(filePath:String) : Promise<CoolinkRetHttpHostMapping> {
let bridgeParams : BridgeParams = {
module: 'protocol',
method: 'generateHttpP2PHostMapping',
params: {
path:filePath
}
};
return mpWeb.callNative(bridgeParams);
}
}
export default ProtocolModule;