diff --git a/src/app/commands.ts b/src/app/commands.ts
index 96a7ab9..ed9f772 100644
--- a/src/app/commands.ts
+++ b/src/app/commands.ts
@@ -21,6 +21,7 @@ import {
makeList,
addToListPublicly,
removeFromListByPredicate,
+ getTag,
getListTags,
getRelayTags,
isShareableRelayUrl,
@@ -57,6 +58,7 @@ import {
import type {Thunk} from "@welshman/app"
import {
tagRoom,
+ PROTECTED,
userMembership,
INDEXER_RELAYS,
NIP46_PERMS,
@@ -426,14 +428,37 @@ export const sendWrapped = async ({
)
}
+export const makeDelete = ({event}: {event: TrustedEvent}) => {
+ const tags = [["k", String(event.kind)], ...tagEvent(event)]
+ const groupTag = getTag("h", event.tags)
+
+ if (groupTag) {
+ tags.push(PROTECTED)
+ tags.push(groupTag)
+ }
+
+ return createEvent(DELETE, {tags})
+}
+
+export const publishDelete = ({relays, event}: {relays: string[]; event: TrustedEvent}) =>
+ publishThunk({event: makeDelete({event}), relays})
+
export type ReactionParams = {
event: TrustedEvent
content: string
- tags?: string[][]
}
-export const makeReaction = ({event, content, tags = []}: ReactionParams) =>
- createEvent(REACTION, {content, tags: [...tags, ...tagReactionTo(event)]})
+export const makeReaction = ({event, content}: ReactionParams) => {
+ const tags = [["k", String(event.kind)], ...tagReactionTo(event)]
+ const groupTag = getTag("h", event.tags)
+
+ if (groupTag) {
+ tags.push(PROTECTED)
+ tags.push(groupTag)
+ }
+
+ return createEvent(REACTION, {content, tags})
+}
export const publishReaction = ({relays, ...params}: ReactionParams & {relays: string[]}) =>
publishThunk({event: makeReaction(params), relays})
@@ -472,9 +497,3 @@ export const makeComment = ({event, content, tags = []}: ReplyParams) => {
export const publishComment = ({relays, ...params}: ReplyParams & {relays: string[]}) =>
publishThunk({event: makeComment(params), relays})
-
-export const makeDelete = ({event}: {event: TrustedEvent}) =>
- createEvent(DELETE, {tags: [["k", String(event.kind)], ...tagEvent(event)]})
-
-export const publishDelete = ({relays, event}: {relays: string[]; event: TrustedEvent}) =>
- publishThunk({event: makeDelete({event}), relays})
diff --git a/src/app/components/ChannelMessage.svelte b/src/app/components/ChannelMessage.svelte
index 338a9b2..6e90f4c 100644
--- a/src/app/components/ChannelMessage.svelte
+++ b/src/app/components/ChannelMessage.svelte
@@ -20,7 +20,7 @@
import ChannelMessageEmojiButton from "@app/components/ChannelMessageEmojiButton.svelte"
import ChannelMessageMenuButton from "@app/components/ChannelMessageMenuButton.svelte"
import ChannelMessageMenuMobile from "@app/components/ChannelMessageMenuMobile.svelte"
- import {colors, tagRoom, PROTECTED} from "@app/state"
+ import {colors} from "@app/state"
import {publishDelete, publishReaction} from "@app/commands"
import {pushModal} from "@app/modal"
@@ -47,12 +47,7 @@
if (reaction) {
publishDelete({relays: [url], event: reaction})
} else {
- publishReaction({
- event,
- content,
- relays: [url],
- tags: [tagRoom(room, url), PROTECTED],
- })
+ publishReaction({event, content, relays: [url]})
}
}
diff --git a/src/app/components/ChannelMessageEmojiButton.svelte b/src/app/components/ChannelMessageEmojiButton.svelte
index 573d284..fba96bb 100644
--- a/src/app/components/ChannelMessageEmojiButton.svelte
+++ b/src/app/components/ChannelMessageEmojiButton.svelte
@@ -1,19 +1,17 @@
diff --git a/src/app/components/ChannelMessageMenuMobile.svelte b/src/app/components/ChannelMessageMenuMobile.svelte
index 1b248a4..2dc2335 100644
--- a/src/app/components/ChannelMessageMenuMobile.svelte
+++ b/src/app/components/ChannelMessageMenuMobile.svelte
@@ -8,20 +8,13 @@
import ConfirmDelete from "@app/components/ConfirmDelete.svelte"
import {publishReaction} from "@app/commands"
import {pushModal} from "@app/modal"
- import {tagRoom, PROTECTED} from "@app/state"
export let url
- export let room
export let event
const onEmoji = (emoji: NativeEmoji) => {
history.back()
- publishReaction({
- event,
- relays: [url],
- content: emoji.unicode,
- tags: [tagRoom(room, url), PROTECTED],
- })
+ publishReaction({event, relays: [url], content: emoji.unicode})
}
const showEmojiPicker = () => pushModal(EmojiPicker, {onClick: onEmoji}, {replaceState: true})
diff --git a/src/app/components/NoteItem.svelte b/src/app/components/NoteItem.svelte
index 887162b..b10ea4b 100644
--- a/src/app/components/NoteItem.svelte
+++ b/src/app/components/NoteItem.svelte
@@ -8,7 +8,6 @@
import NoteCard from "@app/components/NoteCard.svelte"
import ReactionSummary from "@app/components/ReactionSummary.svelte"
import {publishDelete, publishReaction} from "@app/commands"
- import {PROTECTED} from "@app/state"
export let url
export let event
@@ -19,12 +18,12 @@
if (reaction) {
publishDelete({relays: [url], event: reaction})
} else {
- publishReaction({event, content, tags: [PROTECTED], relays: [url]})
+ publishReaction({event, content, relays: [url]})
}
}
const onEmoji = (emoji: NativeEmoji) =>
- publishReaction({event, content: emoji.unicode, tags: [PROTECTED], relays: [url]})
+ publishReaction({event, content: emoji.unicode, relays: [url]})
diff --git a/src/app/components/ReactionSummary.svelte b/src/app/components/ReactionSummary.svelte
index 479793a..2f5795d 100644
--- a/src/app/components/ReactionSummary.svelte
+++ b/src/app/components/ReactionSummary.svelte
@@ -15,8 +15,9 @@
export let reactionClass = ""
export let noTooltip = false
- const filters = [{kinds: [REACTION], "#e": [event.id]}]
- const reactions = deriveEvents(repository, {filters})
+ const reactions = deriveEvents(repository, {
+ filters: [{kinds: [REACTION], "#e": [event.id]}],
+ })
$: groupedReactions = groupBy(
e => e.content,
@@ -26,7 +27,7 @@
onMount(() => {
load({
relays,
- filters,
+ filters: [{kinds: [REACTION, DELETE], "#e": [event.id]}],
onEvent: batch(300, (events: TrustedEvent[]) => {
load({
relays,
diff --git a/src/app/components/ThreadActions.svelte b/src/app/components/ThreadActions.svelte
index c35d986..908945e 100644
--- a/src/app/components/ThreadActions.svelte
+++ b/src/app/components/ThreadActions.svelte
@@ -17,7 +17,6 @@
import {publishDelete, publishReaction} from "@app/commands"
import {notifications} from "@app/notifications"
import {makeSpacePath} from "@app/routes"
- import {PROTECTED} from "@app/state"
export let url
export let event
@@ -39,12 +38,12 @@
if (reaction) {
publishDelete({relays: [url], event: reaction})
} else {
- publishReaction({event, content, tags: [PROTECTED], relays: [url]})
+ publishReaction({event, content, relays: [url]})
}
}
const onEmoji = (emoji: NativeEmoji) =>
- publishReaction({event, content: emoji.unicode, tags: [PROTECTED], relays: [url]})
+ publishReaction({event, content: emoji.unicode, relays: [url]})
let popover: Instance