diff --git a/.changeset/large-items-knock.md b/.changeset/large-items-knock.md new file mode 100644 index 000000000..fbf23164d --- /dev/null +++ b/.changeset/large-items-knock.md @@ -0,0 +1,5 @@ +--- +"nostrudel": patch +--- + +Fix custom emoji reactions having multiple colons diff --git a/src/components/embed-event/event-types/embedded-emoji-pack.tsx b/src/components/embed-event/event-types/embedded-emoji-pack.tsx index 9de888fa8..8aa981edb 100644 --- a/src/components/embed-event/event-types/embedded-emoji-pack.tsx +++ b/src/components/embed-event/event-types/embedded-emoji-pack.tsx @@ -46,7 +46,7 @@ export default function EmbeddedEmojiPack({ pack, ...props }: Omit 0 && ( {emojis.map(({ name, url }) => ( - {`:${name}:`} + {`:${name}:`} ))} )} diff --git a/src/components/embed-types/emoji.tsx b/src/components/embed-types/emoji.tsx index fd2ffa189..4651858bd 100644 --- a/src/components/embed-types/emoji.tsx +++ b/src/components/embed-types/emoji.tsx @@ -17,7 +17,8 @@ export function embedEmoji(content: EmbedableContent, note: NostrEvent | DraftNo display="inline-block" verticalAlign="middle" title={match[1]} - alt={match[1]} + alt={":" + match[1] + ":"} + overflow="hidden" /> ); } diff --git a/src/components/event-reactions/reaction-icon.tsx b/src/components/event-reactions/reaction-icon.tsx index ac7540f48..8c749536b 100644 --- a/src/components/event-reactions/reaction-icon.tsx +++ b/src/components/event-reactions/reaction-icon.tsx @@ -4,6 +4,6 @@ import { DislikeIcon, LikeIcon } from "../icons"; export default function ReactionIcon({ emoji, url }: { emoji: string; url?: string }) { if (emoji === "+") return ; if (emoji === "-") return ; - if (url) return {emoji}; + if (url) return {emoji}; return {emoji}; } diff --git a/src/helpers/nostr/reactions.ts b/src/helpers/nostr/reactions.ts index bb830c45b..aee5de3a3 100644 --- a/src/helpers/nostr/reactions.ts +++ b/src/helpers/nostr/reactions.ts @@ -26,9 +26,13 @@ export function draftEventReaction(event: NostrEvent, emoji = "+", url?: string) ["e", event.id], ["p", event.pubkey], ]; + + let content = emoji; + if (url && !content.startsWith(":") && content.endsWith(":")) content = ":" + content + ":"; + const draft: DraftNostrEvent = { kind: kinds.Reaction, - content: url ? ":" + emoji + ":" : emoji, + content, tags: isReplaceable(event.kind) ? [...tags, ["a", getEventCoordinate(event)]] : tags, created_at: dayjs().unix(), };