From 7acf7a77d3104e2436af31da36c625a2fb96cf20 Mon Sep 17 00:00:00 2001 From: Martti Malmi Date: Mon, 6 Mar 2023 13:51:26 +0200 Subject: [PATCH] fix reposts --- src/js/components/events/EventComponent.js | 2 +- src/js/components/events/Repost.js | 7 +++---- src/js/nostr/Events.ts | 14 ++++++++++---- src/js/nostr/SocialNetwork.ts | 2 +- 4 files changed, 15 insertions(+), 10 deletions(-) diff --git a/src/js/components/events/EventComponent.js b/src/js/components/events/EventComponent.js index 87497cd2..29ac8b28 100644 --- a/src/js/components/events/EventComponent.js +++ b/src/js/components/events/EventComponent.js @@ -48,7 +48,7 @@ class EventComponent extends Component { this.setState({ meta }); }); this.subscriptions.push(unsub); - const replyingTo = Events.getEventReplyingTo(event); + const replyingTo = Events.getNoteReplyingTo(event); const meta = { npub: Key.toNostrBech32Address(event.pubkey, 'npub'), diff --git a/src/js/components/events/Repost.js b/src/js/components/events/Repost.js index 5a45034c..95a0a993 100644 --- a/src/js/components/events/Repost.js +++ b/src/js/components/events/Repost.js @@ -6,11 +6,10 @@ import { translate as t } from '../../translations/Translation'; import Name from '../Name'; import EventComponent from './EventComponent'; +import Events from '../../nostr/Events'; export default function Repost(props) { - if (!props.meta.replyingTo) { - return ''; - } + const repostedEventId = Events.getRepostedEventId(props.event); return html`
@@ -23,7 +22,7 @@ export default function Repost(props) { ${t('reposted')}
- <${EventComponent} id=${props.meta.replyingTo} showName=${true} /> + <${EventComponent} id=${repostedEventId} showName=${true} />
`; diff --git a/src/js/nostr/Events.ts b/src/js/nostr/Events.ts index 3353bdd8..283b29ff 100644 --- a/src/js/nostr/Events.ts +++ b/src/js/nostr/Events.ts @@ -71,7 +71,7 @@ const Events = { } this.postsAndRepliesByUser.get(event.pubkey)?.add(event); - const replyingTo = this.getEventReplyingTo(event); + const replyingTo = this.getNoteReplyingTo(event); const replyingToEvent = replyingTo && this.cache.get(replyingTo); this.latestNotesAndRepliesByEveryone.add(event); if (!replyingTo) { @@ -134,7 +134,14 @@ const Events = { this.postsByUser.get(event.pubkey)?.add(event); } }, - getEventReplyingTo: function (event: Event) { + getRepostedEventId(event: Event) { + const mention = event.tags?.find((tag) => tag[0] === 'e' && tag[3] === 'mention'); + if (mention) { + return mention[1]; + } + return event.tags?.find((tag) => tag[0] === 'e')?.[1]; + }, + getNoteReplyingTo: function (event: Event) { if (event.kind !== 1) { return undefined; } @@ -367,9 +374,8 @@ const Events = { const mentionIndex = event.tags?.findIndex((tag) => tag[0] === 'e' && tag[3] === 'mention'); if (event.kind === 1 && event.content === `#[${mentionIndex}]`) { return true; - } else { - return false; } + return false; }, acceptEvent(event: Event) { if (globalFilter.maxFollowDistance) { diff --git a/src/js/nostr/SocialNetwork.ts b/src/js/nostr/SocialNetwork.ts index ad05ada8..65cb9953 100644 --- a/src/js/nostr/SocialNetwork.ts +++ b/src/js/nostr/SocialNetwork.ts @@ -128,7 +128,7 @@ export default { posts.eventIds.forEach((eventId) => { const event = Events.cache.get(eventId); if (event) { - const replyingTo = Events.getEventReplyingTo(event); + const replyingTo = Events.getNoteReplyingTo(event); if (!replyingTo) { Events.latestNotesByFollows.add(event); }