37 lines
1007 B
JavaScript
37 lines
1007 B
JavaScript
import browser from "webextension-polyfill";
|
|
|
|
const EXTENSION = "nostrconnect";
|
|
|
|
// inject the script that will provide window.nostr
|
|
const script = document.createElement("script");
|
|
script.setAttribute("async", "false");
|
|
script.setAttribute("type", "text/javascript");
|
|
script.setAttribute("src", browser.runtime.getURL("nostr-provider.js"));
|
|
document.head.appendChild(script);
|
|
|
|
// listen for messages from that script
|
|
window.addEventListener("message", async (message) => {
|
|
if (message.source !== window) return;
|
|
if (!message.data) return;
|
|
if (!message.data.params) return;
|
|
if (message.data.ext !== EXTENSION) return;
|
|
|
|
// pass on to background
|
|
var response;
|
|
try {
|
|
response = await browser.runtime.sendMessage({
|
|
type: message.data.type,
|
|
params: message.data.params,
|
|
host: location.host,
|
|
});
|
|
} catch (error) {
|
|
response = { error };
|
|
}
|
|
|
|
// return response
|
|
window.postMessage(
|
|
{ id: message.data.id, ext: EXTENSION, response },
|
|
message.origin
|
|
);
|
|
});
|