From b921545106ea638b6390545ee9a0421aa5234ac5 Mon Sep 17 00:00:00 2001
From: SiteRelEnby <125829806+SiteRelEnby@users.noreply.github.com>
Date: Mon, 25 May 2026 23:24:57 -0400
Subject: [PATCH] Show re-issue activation link for mobile_push channels too
The Re-issue button on the channel detail page only appeared for
web_push, so mobile_push channels in pending_registration (notably ones
restored by re-import, where the original activation hash/expiry
deliberately doesn't ride along) had no way to get a fresh magic link.
The backend reissue endpoint already accepts any push type; the
frontend gate just needed to match. Same fix covers the consumed-but-
unfinished case where the channel stays pending after a redeem half-
completes.
---
web/src/routes/notifications.$channelId.tsx | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/web/src/routes/notifications.$channelId.tsx b/web/src/routes/notifications.$channelId.tsx
index a04082a..30af9fe 100644
--- a/web/src/routes/notifications.$channelId.tsx
+++ b/web/src/routes/notifications.$channelId.tsx
@@ -250,8 +250,13 @@ export function NotificationChannelPage() {
State: {channel.destination_state.replace("_", " ")}
+ {/* Re-issue for both web_push and mobile_push: re-imported channels
+ land in pending_registration with no link, and a token can also
+ get consumed without setup completing. Backend already accepts
+ either; the gate just needs to match. */}
{channel.destination_state === "pending_registration" &&
- channel.destination_type === "web_push" && (
+ (channel.destination_type === "web_push" ||
+ channel.destination_type === "mobile_push") && (