enable send

Send is enabled now, but some errors do not surface, for exmaple
if the network is down, tried catching those but will need to dig
deeper into that.
OFF0 2 years ago
parent 09bb691f6c
commit b2ad1d4c60
Signed by: offbyn
GPG Key ID: 94A2F643C51F37FA

@ -17,8 +17,9 @@
<div class="mbox-body"> <div class="mbox-body">
<form class="form-inline"> <form class="form-inline">
<input type="text" name="message"> <input type="text" name="message">
<button type="button" id="publish">send</button> <button type="button" id="publish" disabled>send</button>
</form> </form>
<small id="sendstatus" class="form-status"></small>
</div> </div>
</article> </article>
<div class="cards" id="feed"></div> <div class="cards" id="feed"></div>

@ -4,7 +4,7 @@ import {elem} from './domutil.js';
const pool = relayPool(); const pool = relayPool();
pool.addRelay('wss://nostr.x1ddos.ch', {read: true, write: true}); pool.addRelay('wss://nostr.x1ddos.ch', {read: true, write: true});
// pool.addRelay('wss://nostr.bitcoiner.social/', {read: true, write: true}); // pool.addRelay('wss://nostr.bitcoiner.social/', {read: true, write: true});
pool.addRelay('wss://nostr.openchain.fr', {read: true, write: true}); // pool.addRelay('wss://nostr.openchain.fr', {read: true, write: true});
// pool.addRelay('wss://relay.nostr.info', {read: true, write: true}); // pool.addRelay('wss://relay.nostr.info', {read: true, write: true});
// pool.addRelay('wss://relay.damus.io', {read: true, write: true}); // pool.addRelay('wss://relay.damus.io', {read: true, write: true});
// read only // read only
@ -35,7 +35,7 @@ function onEvent(evt, relay) {
updateContactList(evt, relay); updateContactList(evt, relay);
break; break;
default: default:
console.log(`TODO: add support for event kind ${evt.kind}`, evt) // console.log(`TODO: add support for event kind ${evt.kind}`, evt)
} }
} }
@ -100,7 +100,7 @@ function renderFeed() {
} else { } else {
feedDomMap[sortedFeeds[i - 1].id].before(art); feedDomMap[sortedFeeds[i - 1].id].before(art);
console.log( console.log(
dateTime.format(sortedFeeds[i + 1].created_at * 1000), dateTime.format(sortedFeeds[i - 1].created_at * 1000),
' > ', ' > ',
dateTime.format(textNoteEvent.created_at * 1000), dateTime.format(textNoteEvent.created_at * 1000),
) )
@ -234,30 +234,48 @@ function updateContactList(evt, relay) {
// check pool.status // check pool.status
// publish // send
const sendStatus = document.querySelector('#sendstatus');
const onSendError = err => {
sendStatus.textContent = err.message;
sendStatus.hidden = false;
};
const publish = document.querySelector('#publish'); const publish = document.querySelector('#publish');
publish.addEventListener('click', async () => { publish.addEventListener('click', async () => {
const pubkey = localStorage.getItem('pub_key'); const pubkey = localStorage.getItem('pub_key');
const privatekey = localStorage.getItem('private_key'); const privatekey = localStorage.getItem('private_key');
if (!pubkey || !privatekey) { if (!pubkey || !privatekey) {
return console.warn('no pubkey/privatekey'); return onSendError(new Error('no pubkey/privatekey'));
}
if (!input.value) {
return onSendError(new Error('message is empty'));
} }
const newEvent = { const newEvent = {
kind: 1, kind: 1,
pubkey, pubkey,
content: 'geil', content: input.value,
tags: [], tags: [],
created_at: Math.floor(Date.now() * 0.001), created_at: Math.floor(Date.now() * 0.001),
}; };
const sig = await signEvent(newEvent, privatekey); const sig = await signEvent(newEvent, privatekey).catch(onSendError);
if (sig) {
const ev = await pool.publish({...newEvent, sig}, (status, url) => { const ev = await pool.publish({...newEvent, sig}, (status, url) => {
if (status === 0) { if (status === 0) {
console.log(`publish request sent to ${url}`) console.info(`publish request sent to ${url}`);
} }
if (status === 1) { if (status === 1) {
console.log(`event published by ${url}`, ev) sendStatus.hidden = true;
input.value = '';
publish.disabled = true;
console.info(`event published by ${url}`, ev);
} }
}); });
}
});
const input = document.querySelector('input[name="message"]');
input.addEventListener('input', () => {
publish.disabled = !input.value;
}); });
// settings // settings

Loading…
Cancel
Save