mirror of
https://github.com/PR0M3TH3AN/bitvid.git
synced 2026-10-27 07:52:24 +00:00
fix: apply block/mute list filtering to DM messages and conversations
The user's block/mute list (NIP-51) was not being checked when processing direct messages, allowing blocked users' messages to appear in conversations, trigger notifications, and increment unseen counts. This adds block filtering at four layers: - nostrService.applyDirectMessage: drops incoming DMs from blocked users before they enter the in-memory message cache - nostrService.persistDirectMessageRecord: prevents blocked DM senders from being persisted to IndexedDB or triggering notifications - profileModalController.buildDmConversationData: filters blocked users from the conversation list UI (catches pre-block persisted messages) - applicationBootstrap: excludes blocked-user conversations from the unread DM badge count The block checker is injected via setDmBlockChecker() to keep nostrService decoupled from userBlocks, wired up in app.js init(). https://claude.ai/code/session_01EAVLtAM14GN99Eik8otLg2
This commit is contained in:
5 files changed
+246
-1
No files matched your search
@@ -798,8 +798,28 @@ export default class ApplicationBootstrap {
|
||||
try {
|
||||
const summaries =
|
||||
await app.nostrService.listDirectMessageConversationSummaries();
|
||||
const actorHex =
|
||||
typeof app.normalizeHexPubkey === "function" && app.pubkey
|
||||
? app.normalizeHexPubkey(app.pubkey)
|
||||
: "";
|
||||
const canCheckBlock =
|
||||
userBlocks && typeof userBlocks.isBlocked === "function";
|
||||
const totalUnseen = Array.isArray(summaries)
|
||||
? summaries.reduce((sum, summary) => {
|
||||
if (canCheckBlock && actorHex && summary?.conversation_id) {
|
||||
const parts = summary.conversation_id.split(":");
|
||||
const remote =
|
||||
parts.length === 3 && parts[0] === "dm"
|
||||
? parts[1] === actorHex
|
||||
? parts[2]
|
||||
: parts[2] === actorHex
|
||||
? parts[1]
|
||||
: ""
|
||||
: "";
|
||||
if (remote && userBlocks.isBlocked(remote)) {
|
||||
return sum;
|
||||
}
|
||||
}
|
||||
const count = Number(summary?.unseen_count);
|
||||
return sum + (Number.isFinite(count) ? count : 0);
|
||||
}, 0)
|
||||
|
||||
Reference in new issue
Block a user