android-app-persistence/app/assets/index.html

117 lines
3.7 KiB
HTML

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta content="width=device-width,initial-scale=1.0" name="viewport">
</head>
<script>
function sleepit(ms) {
return new Promise((resolve) => {
setTimeout(() => {
resolve(1);
}, ms);
});
}
function divMessage(html){
var div = document.createElement('div');
div.innerHTML=html;
document.body.appendChild(div);
div.scrollIntoView({ behavior: 'smooth'});
}
(async function webviewprogram(){
var port;
var resolves = [];
function setupMessage(){
divMessage("starting SetupMessage()");
try{
return new Promise((resolve) => {
window.addEventListener('message',(e)=>{
if(e.data=="init-from-java" && ! port){
divMessage('INIT');
port = e.ports[0];
port.onmessage = function (ee) {
divMessage('AAport.onmessage='+ee.data);
var response = JSON.parse(ee.data);
divMessage('response.resolveIndex'+response.resolveIndex);//AAport.onmessage='+ee.data);
var localresolve = resolves[response.resolveIndex];
divMessage(typeof localresolve)
localresolve(response);
}
resolve()
}
divMessage('message='+e.data);
},true);
});
} catch(error){
divMessage('setuperror');
divMessage('setuperror='+error.toString());
}
}
function doTest(){
divMessage('doTest');
return new Promise((resolve) => {
divMessage('resolves.length'+resolves.length);
resolves.push(resolve);
divMessage('after push resolves.length'+resolves.length);
port.postMessage('{"function":"test","resolveIndex":"'+(resolves.length-1)+'"}');
});
}
// function doLs(path){
// divMessage('doLs');
// return new Promise((resolve) => {
// divMessage('resolves.length'+resolves.length);
// resolves.push(resolve);
// divMessage('after push resolves.length'+resolves.length);
// port.postMessage('{"function":"ls","path":"'+path+'","resolveIndex":"'+(resolves.length-1)+'"}');
// });
// }
// function doCat(file){
// return new Promise((resolve) => {
// resolves.push(resolve);
// port.postMessage('{"function":"cat","resolveIndex":"'+resolves.length+'"}');
// });
// }
function doLoadedWait(){
return new Promise((resolve) => {
window.addEventListener('load',()=>{
resolve();
},false);
});
}
window.addEventListener('load',()=>{
divMessage('JAVASCRIPT WORKS');
},false);
await doLoadedWait();
// await sleepit(2000);
// divMessage('awaited 2000');
// await sleepit(2000);
// divMessage('awaited again 2000');
// divMessage("before.setup 1");
divMessage('before.setup');
await setupMessage();
divMessage('setup');
async function mapDoTest(){
divMessage("doTest ");
var reply = await doTest();
divMessage("reply was",JSON.stringify(reply));
// divMessage("reply.result.length"+reply.result.length);
// reply.result.forEach((info)=>{
// divMessage(JSON.stringify(info));
// // divMessage(info.info);//reply.result.length"+reply.result.length);
// });
}
await mapDoTest();
divMessage("done");
// for(let file of DCIM.result){
// divMessage("filename");
// });
})();
</script>
<body>
<input type=text />
</body>
</html>