From 75d6d89bdffea0fb4a7b08f037b9e60755868df1 Mon Sep 17 00:00:00 2001 From: Peter Harpending Date: Wed, 28 Dec 2022 03:23:03 -0700 Subject: [PATCH] jex detects and connects --- jrx/content.js | 110 +++++++++++++++++++++++++++++++++++++++++++++++++ jrx/popup.js | 18 ++++++-- 2 files changed, 124 insertions(+), 4 deletions(-) diff --git a/jrx/content.js b/jrx/content.js index e69de29..69a7522 100644 --- a/jrx/content.js +++ b/jrx/content.js @@ -0,0 +1,110 @@ +let detect_msg = + {id : "urmom", + name : "JR", + networkId : "ae_uat", + origin : "ur dads balls", + type : "extension"}; + +let detect_awcp_msg = + {type: "to_aepp", + data: {jsonrpc: "2.0", + method: "connection.announcePresence", + params: detect_msg}}; + + + +function post_detect_msg() { + window.postMessage(detect_awcp_msg, '*'); +} + +function post_connect_msg(msg_ident) { + // : EventData_W2A_connection_open + // http://localhost:6969/local-awcp-0.2.1/types/EventData_W2A_connection_open.html + let connect_response = + {type: "to_aepp", + data: {jsonrpc: "2.0", + id: msg_ident, + method: "connection.open", + result: detect_msg}}; + window.postMessage(connect_response, '*'); +} + +async function mk_detectable() { + while (true) { + console.error('pee'); + post_detect_msg(); + await sleep(3000); + } +} + +function sleep(ms) { + return new Promise(resolve => setTimeout(resolve, ms)); +} + + +function handler(msg) { + console.error('message: ', msg); + switch(msg) { + case 'mk-detectable': + mk_detectable(); + return; + default: + console.error('your mom is dead'); + } +} + +function window_message_handler(msg) { + console.error('the science is coming', msg); + // example science: + // { + // "type": "to_waellet", + // "data": { + // "jsonrpc": "2.0", + // "id": "ske-connect-1", + // "method": "connection.open", + // "params": { + // "name": "sidekick examples", + // "version": 1 + // } + // } + // } + let the_science = msg.data; + console.error('THE SCIENCE: ', the_science); + console.error('is the science good or bad?'); + if (the_science.type === 'to_waellet') { + console.error('the science is good'); + the_science_is_good(the_science.data); + } + else { + console.error('the science is bad'); + } +} + +function the_science_is_good(awcp_rcp_data) { + // example science data: + // // layer 3: json rpc + // {jsonrpc : "2.0", + // id : "ske-connect-1", + // method : "connection.open", + // // layer 4: AWCP-specific semantics + // params : {name : "sidekick examples", + // version : 1}}} + // can assume it is a call + let msg_ident = awcp_rcp_data.id; + let msg_method = awcp_rcp_data.method; + switch (msg_method) { + case "connection.open": + post_connect_msg(msg_ident); + return; + default: + console.error('the science is worse than i initially thought'); + console.error("we're going to have to put the science to sleep"); + } +} + +browser.runtime.onMessage.addListener(handler); +window.addEventListener('message', window_message_handler); +//window.addEventListener('message', function(evt) { console.error('BYYYYYYYYYYYYYYY', evt) }); +window.addEventListener('click', function() { console.error('HERRRO'); }); + +console.error('poop'); diff --git a/jrx/popup.js b/jrx/popup.js index 2354e13..b60550b 100644 --- a/jrx/popup.js +++ b/jrx/popup.js @@ -1,5 +1,15 @@ - - -document.getElementById('mk-detectable').onclick = function() { - alert('poop') +async function active_tab_id() { + let active_tabs = await browser.tabs.query({active: true, currentWindow: true}); + return active_tabs[0].id; } + +async function mk_detectable() { + let ati = await active_tab_id(); + browser.tabs.sendMessage(ati, // active tab + 'mk-detectable'); // message + document.getElementById('mk-detectable').disabled = true; + +} + +// detect button action +document.getElementById('mk-detectable').onclick = mk_detectable;