diff --git a/package-lock.json b/package-lock.json
index 6576aa19..696bfa68 100644
Binary files a/package-lock.json and b/package-lock.json differ
diff --git a/package.json b/package.json
index 224a6179..4238fcae 100644
--- a/package.json
+++ b/package.json
@@ -56,10 +56,10 @@
"@getalby/bitcoin-connect": "^3.2.2",
"@scure/base": "^1.1.6",
"@welshman/content": "^0.0.5",
- "@welshman/feeds": "^0.0.10",
+ "@welshman/feeds": "^0.0.11",
"@welshman/lib": "^0.0.9",
- "@welshman/net": "^0.0.12",
- "@welshman/util": "^0.0.13",
+ "@welshman/net": "^0.0.13",
+ "@welshman/util": "^0.0.14",
"classnames": "^2.5.1",
"compressorjs": "^1.2.1",
"date-picker-svelte": "^2.12.0",
diff --git a/src/app/App.svelte b/src/app/App.svelte
index d18e6ba1..4bea4502 100644
--- a/src/app/App.svelte
+++ b/src/app/App.svelte
@@ -221,6 +221,11 @@
entity: asNote,
},
})
+ router.register("/notes/:entity/report", import("src/app/views/ReportCreate.svelte"), {
+ serializers: {
+ entity: asNote,
+ },
+ })
router.register("/notes/:entity/thread", import("src/app/views/ThreadDetail.svelte"), {
serializers: {
entity: asNote,
diff --git a/src/app/shared/Note.svelte b/src/app/shared/Note.svelte
index 58d7daac..c14bd712 100644
--- a/src/app/shared/Note.svelte
+++ b/src/app/shared/Note.svelte
@@ -53,6 +53,7 @@
export let showLoading = false
export let showMuted = false
export let showGroup = false
+ export let showMedia = getSetting("show_media")
export let contextAddress = null
let zapper, unsubZapper
@@ -63,7 +64,7 @@
let showMutedReplies = false
let actions = null
let collapsed = depth === 0
- let context = repository.query([{'#e': [event.id]}]).filter(e => isChildOf(e, event))
+ let context = repository.query([{"#e": [event.id]}]).filter(e => isChildOf(e, event))
let showHiddenReplies = anchor === getIdOrAddress(event)
const showEntire = showHiddenReplies
@@ -296,7 +297,7 @@
}}>Show
{:else}
-
+
{/if}
router.at("notes/create").cx({quote: note}).open()
+ const report = () => router.at("notes").of(note.id).at("report").open()
+
const react = async content => {
if (isSignedEvent(note)) {
publish({event: note, relays: hints.PublishEvent(note).getUrls()})
@@ -208,6 +210,8 @@
} else {
actions.push({label: "Mute", icon: "microphone-slash", onClick: muteNote})
}
+
+ actions.push({label: "Report", icon: "triangle-exclamation", onClick: report})
}
if (!$env.FORCE_GROUP && $env.PLATFORM_RELAYS.length === 0 && isSignedEvent(note)) {
diff --git a/src/app/views/ReportCreate.svelte b/src/app/views/ReportCreate.svelte
index 6681536d..cc0832d6 100644
--- a/src/app/views/ReportCreate.svelte
+++ b/src/app/views/ReportCreate.svelte
@@ -1,60 +1,67 @@
diff --git a/src/engine/state.ts b/src/engine/state.ts
index 908c6280..d32a54e7 100644
--- a/src/engine/state.ts
+++ b/src/engine/state.ts
@@ -295,6 +295,10 @@ export const ensureMessagePlaintext = async (e: TrustedEvent) => {
return getPlaintext(e)
}
+export const canUnwrap = (event: TrustedEvent) =>
+ isGiftWrap(event) &&
+ (getSession(Tags.fromEvent(event).get("p")?.value()) || getRecipientKey(event))
+
export const ensureUnwrapped = async (event: TrustedEvent) => {
if (!isGiftWrap(event)) {
return event
@@ -1588,10 +1592,12 @@ export const publish = ({forcePlatform = true, ...request}: MyPublishRequest) =>
const pub = basePublish(request)
// Add the event to projections
- ensureUnwrapped(request.event).then(projections.push)
+ if (canUnwrap(request.event)) {
+ ensureUnwrapped(request.event).then(projections.push)
+ }
// Listen to updates and update our publish queue
- if (isGiftWrap(request.event) || request.event.pubkey === pubkey.get()) {
+ if (canUnwrap(request.event) || request.event.pubkey === pubkey.get()) {
const pubInfo = omit(["emitter", "result"], pub)
pub.emitter.on("*", t => publishes.key(pubInfo.id).set(pubInfo))