coolink-ts
Version:
Coocaa Coolink APP JavaScript library base on Thresh-lib.
82 lines (73 loc) • 2.27 kB
text/typescript
import { Timer } from '..';
import Bridge from '../manager/BridgeManager'
import { BridgeParams } from '../types/type'
import {
CoolinkHttpRequestParam,
CoolinkRetHttp,
CoolinkRegisterMessageReceiverParams,
CoolinkRetGetOfficialDomain
} from './type'
import mpWeb from './MpWeb';
class NetworkModule {
private static instance: NetworkModule;
public static getModule(): NetworkModule {
if (this.instance == null) {
this.instance = new NetworkModule()
}
return NetworkModule.instance
}
private doHttp(bridgeParams) : Promise<CoolinkRetHttp> {
return new Promise<CoolinkRetHttp>((resolve) => {
let isTimeout = false;
//
let timeoutHandler: string = Timer.setTimeout(() => {
isTimeout = true;
let timeoutRet = {
code: 0,
httpCode: 504,
content: JSON.stringify({
code: -1,
msg: 'timeout 20s'
})
};
resolve(timeoutRet);
}, 20 * 1000); // set 20s timeout
///////////////////////////////////////////////////
mpWeb.callNative(bridgeParams)
.then((httpRet) => {
Timer.clearTimer(timeoutHandler);
resolve(httpRet);
});
})
}
public httpRequest(param1: CoolinkHttpRequestParam) : Promise<CoolinkRetHttp> {
let bridgeParams : BridgeParams = {
module: 'network',
method: 'httpRequest',
params: param1
};
return this.doHttp(bridgeParams);
}
public registerNetworkChanged(obj: CoolinkRegisterMessageReceiverParams) : void {
let bridgeParams : BridgeParams = {
module: 'network',
method: 'registerNetworkChanged',
params: {
miniAppCode: obj.miniAppCode,
methodName: 'onNetworkChanged',
}
};
mpWeb.callNativeWithPersistentCallBack(bridgeParams, 'onNetworkChanged', obj.callback);
}
public getOfficialDomain(domain: string) : Promise<CoolinkRetGetOfficialDomain> {
let bridgeParams : BridgeParams = {
module: 'network',
method: 'getOfficialDomain',
params: {
domain
}
};
return mpWeb.callNative(bridgeParams);
}
}
export default NetworkModule;