fix(FN-3825): surface inline notification test feedback in settings

- Persist per-provider notification test results and render inline success/error feedback blocks
- Add ntfy "Test message notification" action wired to message-event test payload
- Keep toast notifications while also showing provider-specific status text with aria-live feedback
- Update SettingsModal tests to verify ntfy message-event call path and inline webhook/ntfy feedback rendering

Fusion-Task-Id: FN-3825
This commit is contained in:
Fusion
2026-05-09 11:02:08 -07:00
committed by gsxdsm
parent b8455ec91e
commit b326385c0a
15 changed files with 426 additions and 32 deletions

View File

@@ -14,8 +14,11 @@ import { EventEmitter } from "node:events";
import { randomUUID } from "node:crypto";
import type { Database } from "./db.js";
import { fromJson, toJsonNullable } from "./db.js";
import { createLogger } from "./logger.js";
import { DASHBOARD_USER_ID, normalizeMessageParticipant, validateMessageMetadata, type Message, type MessageCreateInput, type MessageFilter, type MessageType, type Mailbox, type ParticipantType } from "./types.js";
const messageStoreLog = createLogger("message-store");
// ── Event Types ─────────────────────────────────────────────────────
/** Events emitted by MessageStore */
@@ -163,6 +166,7 @@ export class MessageStore extends EventEmitter<MessageStoreEvents> {
);
this.db.bumpLastModified();
messageStoreLog.log(`MessageStore emitting message:sent id=${message.id} type=${message.type} fromId=${message.fromId} toId=${message.toId}`);
this.emit("message:sent", message);
this.emit("message:received", message);