fix(notifications): replace em dash in ntfy Title header (ASCII-only), improve error surfacing
HTTP headers are ASCII-only; the em dash in "PocketVeto — Test Notification" caused a UnicodeEncodeError on every test attempt. Replaced with colon. Frontend catch blocks now extract the real server error detail from the axios response body instead of showing a generic fallback message. Authored-By: Jack Levy
This commit is contained in:
@@ -116,7 +116,7 @@ async def test_ntfy(
|
||||
return NotificationTestResult(status="error", detail="Topic URL is required")
|
||||
|
||||
headers: dict[str, str] = {
|
||||
"Title": "PocketVeto — Test Notification",
|
||||
"Title": "PocketVeto: Test Notification",
|
||||
"Priority": "default",
|
||||
"Tags": "white_check_mark",
|
||||
}
|
||||
|
||||
@@ -89,8 +89,11 @@ export default function NotificationsPage() {
|
||||
ntfy_password: authMethod === "basic" ? password : "",
|
||||
});
|
||||
setNtfyTestResult(result);
|
||||
} catch {
|
||||
setNtfyTestResult({ status: "error", detail: "Request failed — check your topic URL" });
|
||||
} catch (e: unknown) {
|
||||
const detail =
|
||||
(e as { response?: { data?: { detail?: string } } })?.response?.data?.detail
|
||||
?? (e instanceof Error ? e.message : "Request failed");
|
||||
setNtfyTestResult({ status: "error", detail });
|
||||
} finally {
|
||||
setNtfyTesting(false);
|
||||
}
|
||||
@@ -102,8 +105,11 @@ export default function NotificationsPage() {
|
||||
try {
|
||||
const result = await notificationsAPI.testRss();
|
||||
setRssTestResult(result);
|
||||
} catch {
|
||||
setRssTestResult({ status: "error", detail: "Feed check failed" });
|
||||
} catch (e: unknown) {
|
||||
const detail =
|
||||
(e as { response?: { data?: { detail?: string } } })?.response?.data?.detail
|
||||
?? (e instanceof Error ? e.message : "Feed check failed");
|
||||
setRssTestResult({ status: "error", detail });
|
||||
} finally {
|
||||
setRssTesting(false);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user