fixed callback issue

This commit is contained in:
2023-09-10 11:42:20 -06:00
parent 0f14772302
commit 0cae93c98a
5 changed files with 59 additions and 15 deletions
+6
View File
@@ -29,3 +29,9 @@ background script
- raseev requests
- send responses back to page
-
----
vdk general lib
sleep
bulrtot
+1 -1
View File
@@ -14,7 +14,7 @@
<br>
<button id="bad">Bad</button>
<script type="module" src="./msg_confirm.js"></script>
<script type="module" src="../dist/msg_confirm.js"></script>
<body>
</html>
-14
View File
@@ -1,14 +0,0 @@
console.log('ur mom');
var result = null;
document.getElementById('good').onclick = () => { console.log('click good'); result = 'good' }
document.getElementById('bad').onclick = () => { console.log('click bad'); result = 'bad' }
// for some reason the listener here never gets triggered
async function listener(msg, _sender, _sendResponse) {
console.log('listener triggered');
console.log(msg);
}
console.log('adding listener');
browser.runtime.onMessage.addListener(listener);
console.log('added listener');
+19
View File
@@ -359,10 +359,15 @@ msg_sign
let confirm_window = await browser.windows.create({url : '../pages/msg_confirm.html',
type : 'popup'});
console.log('b');
console.log(confirm_window.tabs);
// @ts-ignore shut the fuck up
let tabid : number = confirm_window.tabs[0].id;
console.log('tabid', tabid);
// stupid hack because otherwise the message gets sent before the listener in the page script is created
await sleep(500);
console.log('slept');
let result = await browser.tabs.sendMessage(tabid, {msg_str : msg_str});
console.log('result', result);
@@ -769,3 +774,17 @@ bi_s2i
return {keypairs: i_keypairs};
}
/**
* Hack from stack overflow somewhere to sleep for the given number of ms
*/
async function
sleep
(ms: number)
: Promise<void>
{
return new Promise(resolve => setTimeout(resolve, ms));
}
+33
View File
@@ -0,0 +1,33 @@
/**
* Page script for "confirm sign message" popup window
*/
main();
async function
main
()
: Promise<void>
{
console.log('msg_confirm main');
var result = null;
document.getElementById('good')!.onclick = () => { console.log('click good'); result = 'good' }
document.getElementById('bad')!.onclick = () => { console.log('click bad'); result = 'bad' }
console.log('adding listener');
browser.runtime.onMessage.addListener(listener);
console.log('added listener');
}
// for some reason the listener here never gets triggered
async function
listener
(msg : any,
_sender : any,
_sendResponse : any)
: Promise<void>
{
console.log('listener triggered');
console.log(msg);
}