diff --git a/jrx/manifest.json b/jrx/manifest.json
index 47d12ca..c1734a0 100644
--- a/jrx/manifest.json
+++ b/jrx/manifest.json
@@ -2,11 +2,12 @@
"name" : "Jack Russell",
"version" : "0.1.0",
"description" : "Browser wallet extension for Aeternity",
- "icons" : {"48" : "icons/jrx-icon-48.png",
- "96" : "icons/jrx-icon-96.png"},
+ "icons" : {"48" : "art/jrx-icon-48.png",
+ "96" : "art/jrx-icon-96.png"},
"content_scripts" : [{"matches" : ["*://*/*"],
"js" : ["dist/content.js"]}],
- "browser_action" : {"default_icon" : "icons/jrx-icon-32.png",
- "default_title" : "Jaeck Russell",
+ "browser_action" : {"default_icon" : "art/jrx-icon-32.png",
+ "default_title" : "Jæck Russell",
"default_popup" : "popup.html"},
+ "background" : {"scripts": ["dist/background.js"]},
"permissions" : ["storage"]}
diff --git a/jrx/popup.html b/jrx/popup.html
index ae321c3..ca0f9e0 100644
--- a/jrx/popup.html
+++ b/jrx/popup.html
@@ -19,7 +19,7 @@
-  |
+  |
JÆCK RUSSELL
|
@@ -29,7 +29,7 @@
-  |
+  |
KEYPAIRS
|
diff --git a/jrx/scratch/old_background.ts b/jrx/scratch/old_background.ts
new file mode 100644
index 0000000..d78e747
--- /dev/null
+++ b/jrx/scratch/old_background.ts
@@ -0,0 +1,92 @@
+/**
+ * JR Controller
+ *
+ * Note that this is a *thread*. We put our business and storage logic within
+ * this thread. The reason we do that is we don't want to deal with the
+ * problem of conflicting concurrent writes..
+ *
+ * @module
+ */
+
+
+export type {
+ jr_data,
+ named_keypair,
+ keypair
+}
+
+export {
+ // top-level getters/setters
+};
+
+
+
+/**
+ * The data structure we store
+ */
+type jr_data
+ = {version : 0,
+ named_keypairs : Array};
+
+
+
+/**
+ * This is the default {@link jr_data}.
+ *
+ * @private
+ */
+let jr_data_mzero = {version : 0 as 0, // yay ts type inference can't infer 0 is of type 0
+ named_keypairs : []};
+
+
+
+/**
+ * Every keypair has to have a name
+ */
+type named_keypair
+ = {name : string}
+ & keypair;
+
+
+
+/**
+ * From NaCl
+ */
+type keypair
+ = {secretKey : Uint8Array,
+ publicKey : Uint8Array};
+
+
+
+/**
+ * Get the state from the system
+ */
+async function
+fetch_migrate
+ ()
+ : Promise
+{
+ // try to get data
+ let browser_data = await browser.storage.local.get('jr');
+ // test if it's there
+ if (!!(browser_data.jr))
+ return browser_data.jr;
+ // if the data is not there
+ else
+ return jr_data_mzero;
+}
+
+
+
+/**
+ * Put state
+ *
+ * @private
+ */
+async function
+put
+ (state : jr_data)
+ : Promise
+{
+ await browser.storage.local.set({jr: state});
+}
diff --git a/jrx/src/background.ts b/jrx/src/background.ts
index d78e747..46df7b5 100644
--- a/jrx/src/background.ts
+++ b/jrx/src/background.ts
@@ -9,84 +9,41 @@
*/
-export type {
- jr_data,
- named_keypair,
- keypair
-}
-
-export {
- // top-level getters/setters
-};
-
-
-
/**
- * The data structure we store
- */
-type jr_data
- = {version : 0,
- named_keypairs : Array};
-
-
-
-/**
- * This is the default {@link jr_data}.
- *
- * @private
- */
-let jr_data_mzero = {version : 0 as 0, // yay ts type inference can't infer 0 is of type 0
- named_keypairs : []};
-
-
-
-/**
- * Every keypair has to have a name
- */
-type named_keypair
- = {name : string}
- & keypair;
-
-
-
-/**
- * From NaCl
- */
-type keypair
- = {secretKey : Uint8Array,
- publicKey : Uint8Array};
-
-
-
-/**
- * Get the state from the system
+ * Handle messages from the content script
*/
async function
-fetch_migrate
- ()
- : Promise
-{
- // try to get data
- let browser_data = await browser.storage.local.get('jr');
- // test if it's there
- if (!!(browser_data.jr))
- return browser_data.jr;
- // if the data is not there
- else
- return jr_data_mzero;
-}
-
-
-
-/**
- * Put state
- *
- * @private
- */
-async function
-put
- (state : jr_data)
+bg_a2w_handler
+ (msg: any, sender: any, sendResponse: any)
: Promise
{
- await browser.storage.local.set({jr: state});
+ console.log('msg', msg);
+ console.log('sender', sender);
+ console.log('sendResponse', sendResponse);
+ // send them back to content script
+ // @ts-ignore stahp
+ //let the_sender: number = sender.tab.id;
+ //browser.tabs.sendMessage(the_sender, msg);
+ // @ts-ignore stahp
+ //sendResponse(msg);
}
+
+
+
+/**
+ * main function for background thread
+ */
+async function
+jr_bg_main
+ ()
+ : Promise
+{
+ console.log('hi');
+
+ // handle messages from content script
+ browser.runtime.onMessage.addListener(bg_a2w_handler);
+
+}
+
+
+jr_bg_main();
diff --git a/jrx/src/content.ts b/jrx/src/content.ts
index 6448001..a353085 100644
--- a/jrx/src/content.ts
+++ b/jrx/src/content.ts
@@ -12,31 +12,88 @@
*/
-jr_content_main();
+
+let detect_msg = {type : "to_aepp",
+ data : {jsonrpc : "2.0",
+ method : "connection.announcePresence",
+ params : {id : "jr",
+ name : "JR",
+ networkId : "ae_uat",
+ origin : "foobar",
+ type : "extension"}}};
+
+/**
+ * Spam detect message
+ */
+async function
+spam_detect
+ ()
+{
+ while (true) {
+ window.postMessage(detect_msg);
+ await sleep(3000);
+ }
+}
+
+/**
+ * Hack from stack overflow somewhere to sleep for the given number of ms
+ */
+async function
+sleep
+ (ms: number)
+ : Promise
+{
+ return new Promise(resolve => setTimeout(resolve, ms));
+}
+
+
+
+/**
+ * Relays messages from page scripts to the background script
+ */
+function
+a2w_handler
+ (msg: {data: {type? : "to_aepp" | "to_waellet"}})
+{
+ // branch
+ if ("to_waellet" === msg.data.type) {
+ browser.runtime.sendMessage(msg.data);
+ }
+ // otherwise ignore
+}
+
+
+
+/**
+ * Relays messages from background scripts to the page script
+ */
+function
+w2a_handler
+ (msg: any)
+{
+ window.postMessage(msg);
+}
+
+
+
+/**
+ * Main function
+ */
async function
jr_content_main
()
{
- // @ts-ignore browser
- browser.runtime.onMessage.addListener(handler);
- window.addEventListener('message', page_script_message_handler);
+ // relay page messages back to the controller
+ window.addEventListener('message', a2w_handler);
+ // relay controller messages back to page
+ browser.runtime.onMessage.addListener(w2a_handler);
-
-
- /**
- * This is the message that we spam the page script with when the user clicks
- * the "make wallet detectable" button.
- *
- * Contains {@link detect_msg} as a field
- */
- let detect_awcp_msg = {type : "to_aepp",
- data : {jsonrpc : "2.0",
- method : "connection.announcePresence",
- params : detect_msg()}};
-
- // mk detectable
- mk_detectable(detect_awcp_msg);
+ // spam detect
+ spam_detect();
}
+
+
+jr_content_main();