Files
nostash/Shared (Extension)/Resources/nostr.js
2023-01-16 23:11:51 -05:00

31 lines
882 B
JavaScript

window.nostr = {
requests: {},
async getPublicKey() {
return await this.broadcast('getPubKey');
},
async signEvent(event) {
return await this.broadcast('signEvent', event);
},
broadcast(kind, payload) {
let reqId = Math.random().toString();
return new Promise((resolve, _reject) => {
this.requests[reqId] = resolve;
console.log(`Event ${reqId}: ${kind}, payload: `, payload);
window.postMessage({kind, reqId, payload}, '*');
});
}
}
window.addEventListener('message', (message) => {
let {kind, reqId, payload} = message.data;
if (kind !== 'return_getPubKey' && kind !== 'return_signEvent')
return;
console.log(`Event ${reqId}: Received payload:`, payload);
window.nostr.requests[reqId](payload);
delete window.nostr.requests[reqId];
});