From b105dadd1482140f5603cc8891653d9191600381 Mon Sep 17 00:00:00 2001 From: alltheseas Date: Sat, 3 Jan 2026 14:31:13 -0600 Subject: [PATCH] longform: fix note URLs not opening from nevent references MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Previously, clicking nevent links pointing to longform notes (kind 30023) showed "Can't display note" error because .longform was listed as an unsupported kind in LoadableNostrEventView. This fix adds .longform to the supported kinds alongside .text and .highlight, routing them to ThreadModel for proper display. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Closes: https://github.com/damus-io/damus/pull/3487 Closes: https://github.com/damus-io/damus/issues/3003 Closes: https://github.com/damus-io/damus/issues/3485 Changelog-Fixed: Longform article links now open correctly when shared as nevent URLs Co-Authored-By: Claude Opus 4.5 Signed-off-by: alltheseas Signed-off-by: William Casarin --- damus/Features/Events/Models/LoadableNostrEventView.swift | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/damus/Features/Events/Models/LoadableNostrEventView.swift b/damus/Features/Events/Models/LoadableNostrEventView.swift index 7c8efc54..9486a78b 100644 --- a/damus/Features/Events/Models/LoadableNostrEventView.swift +++ b/damus/Features/Events/Models/LoadableNostrEventView.swift @@ -62,7 +62,7 @@ class LoadableNostrEventViewModel: ObservableObject { guard let ev = await self.loadEvent(noteId: note_id) else { return .not_found } guard let known_kind = ev.known_kind else { return .unknown_or_unsupported_kind } switch known_kind { - case .text, .highlight: + case .text, .highlight, .longform: return .loaded(route: Route.Thread(thread: ThreadModel(event: ev, damus_state: damus_state))) case .dm: let dm_model = damus_state.dms.lookup_or_create(ev.pubkey) @@ -74,7 +74,7 @@ class LoadableNostrEventViewModel: ObservableObject { case .zap, .zap_request: guard let zap = await get_zap(from: ev, state: damus_state) else { return .not_found } return .loaded(route: Route.Zaps(target: zap.target)) - case .contacts, .metadata, .delete, .boost, .chat, .mute_list, .list_deprecated, .draft, .longform, .nwc_request, .nwc_response, .http_auth, .status, .relay_list, .follow_list, .interest_list, .contact_card, .live, .live_chat: + case .contacts, .metadata, .delete, .boost, .chat, .mute_list, .list_deprecated, .draft, .nwc_request, .nwc_response, .http_auth, .status, .relay_list, .follow_list, .interest_list, .contact_card, .live, .live_chat: return .unknown_or_unsupported_kind } case .naddr(let naddr):