main: fix global click handler

settings view and write new message didnt show. reason was typescript
expected an instance of an HTMLElement but this didnt allow for
SVG elements inside the write button. Another reason was that the
condition expected a parent with data-id which isn't the case for
settings button nor write-new-message.
pull/72/head
OFF0 1 year ago
parent f9fe892937
commit bbfa4ae545
Signed by: offbyn
GPG Key ID: 94A2F643C51F37FA

@ -294,27 +294,28 @@ const handleLink = (a: HTMLAnchorElement, e: MouseEvent) => {
};
const handleButton = (button: HTMLButtonElement) => {
const id = (button.closest('[data-id]') as HTMLElement)?.dataset.id;
if (!id) {
return;
}
switch(button.name) {
case 'reply':
openWriteInput(button, id);
break;
case 'star':
const note = replyList.find(r => r.id === id) || textNoteList.find(n => n.id === (id));
note && handleUpvote(note);
break;
case 'settings':
toggleSettingsView();
break;
return;
case 'new-note':
togglePublishView();
break;
return;
case 'back':
closePublishView();
break;
return;
}
const id = (button.closest('[data-id]') as HTMLElement)?.dataset.id;
if (id) {
switch(button.name) {
case 'reply':
openWriteInput(button, id);
break;
case 'star':
const note = replyList.find(r => r.id === id) || textNoteList.find(n => n.id === (id));
note && handleUpvote(note);
break;
}
}
// const container = e.target.closest('[data-append]');
// if (container) {
@ -325,15 +326,14 @@ const handleButton = (button: HTMLButtonElement) => {
};
document.body.addEventListener('click', (event: MouseEvent) => {
if (event.target instanceof HTMLElement) {
const a = event.target?.closest('a');
if (a) {
handleLink(a, event);
return;
}
const button = event.target.closest('button');
if (button) {
handleButton(button);
}
const target = event.target as HTMLElement;
const a = target?.closest('a');
if (a) {
handleLink(a, event);
return;
}
const button = target?.closest('button');
if (button) {
handleButton(button);
}
});

Loading…
Cancel
Save