From b69a654c0365512bfe2c9640955ac8cd376c1c11 Mon Sep 17 00:00:00 2001 From: "Trace (Engineer)" <9d485ff0c62915e08a801162c195c7ef096f6f6143925407255cea2656c4b8a4@buzz.block.builderlab.xyz> Date: Sat, 22 Aug 2026 19:45:36 -0700 Subject: [PATCH] Fix inbox route target hydration Co-authored-by: Trace (Engineer) <9d485ff0c62915e08a801162c195c7ef096f6f6143925407255cea2656c4b8a4@buzz.block.builderlab.xyz> Signed-off-by: Trace (Engineer) <9d485ff0c62915e08a801162c195c7ef096f6f6143925407255cea2656c4b8a4@buzz.block.builderlab.xyz> --- desktop/src/app/navigation/searchHitEventCache.ts | 7 +++++-- desktop/src/features/home/ui/HomeView.tsx | 10 ++++++++++ desktop/tests/e2e/smoke.spec.ts | 5 +++++ 3 files changed, 20 insertions(+), 2 deletions(-) diff --git a/desktop/src/app/navigation/searchHitEventCache.ts b/desktop/src/app/navigation/searchHitEventCache.ts index b57a5f01fb..7b41ff3443 100644 --- a/desktop/src/app/navigation/searchHitEventCache.ts +++ b/desktop/src/app/navigation/searchHitEventCache.ts @@ -31,13 +31,16 @@ export function buildSearchHitEvent(hit: SearchHit): RelayEvent { }; } -export function cacheSearchHitEvent(hit: SearchHit): RelayEvent { - const event = buildSearchHitEvent(hit); +export function cacheRouteTargetEvent(event: RelayEvent): RelayEvent { searchHitEventCache.set(event.id, event); trimCache(); return event; } +export function cacheSearchHitEvent(hit: SearchHit): RelayEvent { + return cacheRouteTargetEvent(buildSearchHitEvent(hit)); +} + export function clearSearchHitEventCache(): void { searchHitEventCache.clear(); } diff --git a/desktop/src/features/home/ui/HomeView.tsx b/desktop/src/features/home/ui/HomeView.tsx index 893b3c309c..37e5c12769 100644 --- a/desktop/src/features/home/ui/HomeView.tsx +++ b/desktop/src/features/home/ui/HomeView.tsx @@ -68,6 +68,7 @@ import { cn } from "@/shared/lib/cn"; import { normalizePubkey } from "@/shared/lib/pubkey"; import { useElementWidth } from "@/shared/hooks/use-mobile"; import { useThreadPanelWidth } from "@/shared/hooks/useThreadPanelWidth"; +import { cacheRouteTargetEvent } from "@/app/navigation/searchHitEventCache"; import { AUXILIARY_PANEL_SINGLE_COLUMN_BREAKPOINT_PX } from "@/shared/layout/AuxiliaryPanel"; import { useHistorySearchState } from "@/shared/hooks/useHistorySearchState"; import { ProfilePanelProvider } from "@/shared/context/ProfilePanelContext"; @@ -705,6 +706,15 @@ export function HomeView({ if (!channelId) { return; } + cacheRouteTargetEvent({ + id: item.item.id, + pubkey: item.item.pubkey, + created_at: item.item.createdAt, + kind: item.item.kind, + tags: item.item.tags, + content: item.item.content, + sig: "", + }); onOpenContext( channelId, item.id, diff --git a/desktop/tests/e2e/smoke.spec.ts b/desktop/tests/e2e/smoke.spec.ts index b3ea8bea61..c563498c11 100644 --- a/desktop/tests/e2e/smoke.spec.ts +++ b/desktop/tests/e2e/smoke.spec.ts @@ -295,6 +295,11 @@ test("opens a mocked channel from the inbox feed", async ({ page }) => { /#\/channels\/9a1657ac-f7aa-5db0-b632-d8bbeb6dfb50\?messageId=mock-feed-mention$/, ); await expect(page.getByTestId("chat-title")).toHaveText("general"); + const targetRow = page + .getByTestId("message-timeline") + .locator('[data-message-id="mock-feed-mention"]'); + await expect(targetRow).toBeVisible(); + await expect(targetRow).toHaveClass(/route-target-highlight-fade/); }); test("Inbox excludes generic channel and unowned agent traffic", async ({