diff --git a/src/app/components/ChannelMessage.svelte b/src/app/components/ChannelMessage.svelte
index 39b5a52..c8086c2 100644
--- a/src/app/components/ChannelMessage.svelte
+++ b/src/app/components/ChannelMessage.svelte
@@ -81,7 +81,7 @@
{/if}
-
+
{#if thunk}
{/if}
diff --git a/src/app/components/Content.svelte b/src/app/components/Content.svelte
index 9ef56c0..f5f0fa7 100644
--- a/src/app/components/Content.svelte
+++ b/src/app/components/Content.svelte
@@ -134,7 +134,7 @@
{#if isBlock(i)}
-
+
{:else}
diff --git a/src/app/components/ContentQuote.svelte b/src/app/components/ContentQuote.svelte
index 3ec7fd4..56ad3fc 100644
--- a/src/app/components/ContentQuote.svelte
+++ b/src/app/components/ContentQuote.svelte
@@ -13,14 +13,19 @@
export let value
export let event
export let depth = 0
+ export let relays: string[] = []
export let minimal = false
const {id, identifier, kind, pubkey, relays: relayHints = []} = value
- const addr = new Address(kind, pubkey, identifier)
- const idOrAddress = id || addr.toString()
- const relays = ctx.app.router.Quote(event, idOrAddress, relayHints).getUrls()
- const quote = deriveEvent(idOrAddress, relays)
- const entity = id ? nip19.neventEncode({id, relays}) : addr.toNaddr()
+ const idOrAddress = id || new Address(kind, pubkey, identifier).toString()
+ const mergedRelays = [
+ ...relays,
+ ...ctx.app.router.Quote(event, idOrAddress, relayHints).getUrls(),
+ ]
+ const quote = deriveEvent(idOrAddress, mergedRelays)
+ const entity = id
+ ? nip19.neventEncode({id, relays: mergedRelays})
+ : new Address(kind, pubkey, identifier, mergedRelays).toNaddr()
const scrollToEvent = (id: string) => {
const element = document.querySelector(`[data-event="${id}"]`) as any
diff --git a/src/app/components/ThreadItem.svelte b/src/app/components/ThreadItem.svelte
index fde015a..03cb29c 100644
--- a/src/app/components/ThreadItem.svelte
+++ b/src/app/components/ThreadItem.svelte
@@ -28,7 +28,7 @@
{formatTimestamp(event.created_at)}
{/if}
-
+
Posted by
diff --git a/src/app/components/ThreadReply.svelte b/src/app/components/ThreadReply.svelte
index 0bd5da9..44d2644 100644
--- a/src/app/components/ThreadReply.svelte
+++ b/src/app/components/ThreadReply.svelte
@@ -21,7 +21,7 @@
if ($loading) return
const content = $editor.getText({blockSeparator: "\n"})
- const tags = [...getEditorTags($editor), tagRoom(GENERAL, url), [PROTECTED]]
+ const tags = [...getEditorTags($editor), tagRoom(GENERAL, url), PROTECTED]
if (!content.trim()) {
return pushToast({
diff --git a/src/app/notifications.ts b/src/app/notifications.ts
index 40b4c35..3fac502 100644
--- a/src/app/notifications.ts
+++ b/src/app/notifications.ts
@@ -9,6 +9,7 @@ import {makeSpacePath} from "@app/routes"
import {
MESSAGE,
THREAD,
+ LEGACY_THREAD,
COMMENT,
deriveEventsForUrl,
getMembershipUrls,
@@ -33,8 +34,8 @@ export const SPACE_FILTERS: Filter[] = [{kinds: [THREAD, MESSAGE, COMMENT]}]
export const ROOM_FILTERS: Filter[] = [{kinds: [MESSAGE]}]
export const THREAD_FILTERS: Filter[] = [
- {kinds: [THREAD]},
- {kinds: [COMMENT], "#K": [String(THREAD)]},
+ {kinds: [THREAD, LEGACY_THREAD]},
+ {kinds: [COMMENT], "#K": [String(THREAD), String(LEGACY_THREAD)]},
]
export const getNotificationFilters = (since: number): Filter[] =>
diff --git a/src/app/state.ts b/src/app/state.ts
index 8289bba..701b4d1 100644
--- a/src/app/state.ts
+++ b/src/app/state.ts
@@ -73,8 +73,12 @@ export const PROTECTED = ["-"]
export const MESSAGE = 9
+export const LEGACY_MESSAGE = 209
+
export const THREAD = 11
+export const LEGACY_THREAD = 309
+
export const COMMENT = 1111
export const MEMBERSHIPS = 10009
@@ -454,7 +458,24 @@ export const chatSearch = derived(chats, $chats =>
// Messages
-export const messages = deriveEvents(repository, {filters: [{kinds: [MESSAGE]}]})
+// TODO: remove support for legacy messages
+export const messages = derived(
+ deriveEvents(repository, {filters: [{kinds: [MESSAGE, LEGACY_MESSAGE]}]}),
+ $events =>
+ $events.map(e => {
+ if (e.kind === LEGACY_MESSAGE) {
+ let room = e.tags.find(nthEq(0, "~"))?.[1] || GENERAL
+
+ if (room === "general") {
+ room = GENERAL
+ }
+
+ return {...e, kind: MESSAGE, tags: [...e.tags, tagRoom(room, "")]}
+ }
+
+ return e
+ }),
+)
// Group Meta
diff --git a/src/routes/spaces/[relay]/[room]/+page.svelte b/src/routes/spaces/[relay]/[room]/+page.svelte
index 6fcf082..5f21ece 100644
--- a/src/routes/spaces/[relay]/[room]/+page.svelte
+++ b/src/routes/spaces/[relay]/[room]/+page.svelte
@@ -10,7 +10,7 @@
import {throttled} from "@welshman/store"
import {createEvent, DELETE} from "@welshman/util"
import {PublishStatus} from "@welshman/net"
- import {formatTimestampAsDate, publishThunk, deriveRelay} from "@welshman/app"
+ import {formatTimestampAsDate, load, publishThunk, deriveRelay} from "@welshman/app"
import {slide} from "@lib/transition"
import {createScroller, type Scroller} from "@lib/html"
import Icon from "@lib/components/Icon.svelte"
@@ -31,6 +31,7 @@
GENERAL,
tagRoom,
MESSAGE,
+ LEGACY_MESSAGE,
getMembershipRoomsByUrl,
} from "@app/state"
import {setChecked} from "@app/notifications"
@@ -124,6 +125,14 @@
// Sveltekiiit
await sleep(100)
+ if (!nip29.isSupported($relay)) {
+ load({
+ delay: 0,
+ relays: [url],
+ filters: [{kinds: [LEGACY_MESSAGE], "#~": [room]}],
+ })
+ }
+
pullConservatively({
relays: [url],
filters: [{kinds: [MESSAGE, DELETE], "#h": [room]}],
diff --git a/src/routes/spaces/[relay]/threads/+page.svelte b/src/routes/spaces/[relay]/threads/+page.svelte
index 66a762c..e3e236c 100644
--- a/src/routes/spaces/[relay]/threads/+page.svelte
+++ b/src/routes/spaces/[relay]/threads/+page.svelte
@@ -16,13 +16,15 @@
import MenuSpaceButton from "@app/components/MenuSpaceButton.svelte"
import ThreadItem from "@app/components/ThreadItem.svelte"
import ThreadCreate from "@app/components/ThreadCreate.svelte"
- import {THREAD, COMMENT, decodeRelay, deriveEventsForUrl} from "@app/state"
+ import {THREAD, LEGACY_THREAD, COMMENT, decodeRelay, deriveEventsForUrl} from "@app/state"
import {THREAD_FILTERS, setChecked} from "@app/notifications"
import {pushModal} from "@app/modal"
const url = decodeRelay($page.params.relay)
- const threads = deriveEventsForUrl(url, [{kinds: [THREAD]}])
- const comments = deriveEventsForUrl(url, [{kinds: [COMMENT], "#K": [String(THREAD)]}])
+ const threads = deriveEventsForUrl(url, [{kinds: [THREAD, LEGACY_THREAD]}])
+ const comments = deriveEventsForUrl(url, [
+ {kinds: [COMMENT], "#K": [String(THREAD), String(LEGACY_THREAD)]},
+ ])
const mutedPubkeys = getPubkeyTagValues(getListTags($userMutes))
const events = throttled(
diff --git a/src/routes/spaces/[relay]/threads/[id]/+page.svelte b/src/routes/spaces/[relay]/threads/[id]/+page.svelte
index 5fd772e..6f0e699 100644
--- a/src/routes/spaces/[relay]/threads/[id]/+page.svelte
+++ b/src/routes/spaces/[relay]/threads/[id]/+page.svelte
@@ -81,7 +81,7 @@
{/if}
-
+