@ccos/webos
Version:
A Base JavaScript Framework for Skyworth/Coocaa TV
134 lines (113 loc) • 3.65 kB
JavaScript
import { callLiteApi } from './nativeApi'
let moduleName = 'base';
let tv_protocol = 'http';
let tv_server = 'localhost';
let tv_port = 32758;
function setDebugModeServer(ipAddr) {
if (ipAddr) {
tv_server = ipAddr;
}
}
export function getUrlBase() {
return `${tv_protocol}://${tv_server}:${tv_port}`;
}
function call_uapi_inner(path, str) {
return new Promise((resolve) => {
try {
let xhr = new XMLHttpRequest();
let url = getUrlBase() + path;
xhr.open("POST", url, true); //异步
xhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
xhr.responseType = 'json'; //如果为text则response为文本
xhr.timeout = 60 * 60 * 1000;
xhr.onreadystatechange = function () { //绑定响应状态事件监听函数
if (xhr.readyState == 4) { //监听readyState状态
if (xhr.status == 200 || xhr.status == 0) { //监听HTTP状态码
//console.log(xhr.responseText); //接收数据
//设置responseType为 json 则xhr.response 返回json对象,则不能通过 responseText 取得对象
resolve(xhr.response);
}
else {
resolve('error: ' + xhr.status);
}
} else {
//
}
}
xhr.onerror = function() {
//console.error(xhr.statusText);
resolve('error: ' + xhr.statusText);
}
xhr.ontimeout = function() {
//console.error('The request for ' + url + ' timed out.');
resolve('error: ' + 'timeout');
};
xhr.send(str); //发送请求
}
catch (e) {
resolve('error: ' + e);
}
});
}
export async function call_uapi(path, str) {
let res = await call_uapi_inner(path, str || '');
if (typeof res == 'object') {
return res;
} else {
return {
code: -100000,
msg: res
}
}
}
///////////////////////////////////////////////////////////////////////////////////////////
let eventCallBack = null;
function webosBrowserCallBack(jsonStr) {
try {
const jsonObj = JSON.parse(jsonStr);
if (eventCallBack) {
eventCallBack(jsonObj);
}
}
catch (e) {}
}
window['webosBrowserCallBack'] = webosBrowserCallBack;
function getBaseInfo() {
return callLiteApi(moduleName, 'getBaseInfo', '');
}
async function getBaseInfoAsync() {
await new Promise((resolve) => {
let ret = getBaseInfo();
resolve(ret);
});
}
function registerEventHandler(callback) {
eventCallBack = callback;
}
function unregisterEventHandler() {
eventCallBack = null;
}
function setSystemKeyIntercept(keyCodeArray) {
return callLiteApi(moduleName, 'setSystemKeyIntercept', keyCodeArray);
}
function exitActivity() {
return callLiteApi(moduleName, 'exitActivity', '');
}
function gotoPreviousPage() {
return callLiteApi(moduleName, 'gotoPreviousPage', '');
}
function setHome() {
return callLiteApi(moduleName, 'setHome', '');
}
export default {
setDebugModeServer,
getBaseInfo,
getBaseInfoAsync,
setSystemKeyIntercept,
exitActivity,
gotoPreviousPage,
setHome,
//
registerEventHandler,
unregisterEventHandler,
};