Guard flood scope and be better about blocking

This commit is contained in:
Jack Kingsman
2026-03-04 20:15:44 -08:00
parent e439bc913a
commit 03f4963966
12 changed files with 35 additions and 5 deletions
+10 -2
View File
@@ -270,14 +270,22 @@ export function App() {
if (!msg.outgoing) {
const bKeys = blockedKeysRef.current;
const bNames = blockedNamesRef.current;
// Block DMs by key
// Block DMs by sender key
if (
bKeys.length > 0 &&
msg.type === 'PRIV' &&
bKeys.includes(msg.conversation_key.toLowerCase())
)
return;
// Block by sender name (works for channel messages)
// Block channel messages by sender key
if (
bKeys.length > 0 &&
msg.type === 'CHAN' &&
msg.sender_key &&
bKeys.includes(msg.sender_key.toLowerCase())
)
return;
// Block by sender name (works for both DMs and channel messages)
if (bNames.length > 0 && msg.sender_name && bNames.includes(msg.sender_name)) return;
}
+6
View File
@@ -193,6 +193,7 @@ describe('Integration: No phantom unreads from mesh echoes (hitlist #8 regressio
paths: null,
txt_type: 0,
signature: null,
sender_key: null,
outgoing: false,
acked: 0,
sender_name: null,
@@ -214,6 +215,7 @@ describe('Integration: No phantom unreads from mesh echoes (hitlist #8 regressio
paths: null,
txt_type: 0,
signature: null,
sender_key: null,
outgoing: false,
acked: 0,
sender_name: null,
@@ -354,6 +356,7 @@ describe('Integration: ACK + messageCache propagation', () => {
paths: null,
txt_type: 0,
signature: null,
sender_key: null,
outgoing: true,
acked: 0,
sender_name: null,
@@ -378,6 +381,7 @@ describe('Integration: ACK + messageCache propagation', () => {
paths: [{ path: 'aa', received_at: 1700000001 }],
txt_type: 0,
signature: null,
sender_key: null,
outgoing: true,
acked: 1,
sender_name: null,
@@ -406,6 +410,7 @@ describe('Integration: ACK + messageCache propagation', () => {
paths: null,
txt_type: 0,
signature: null,
sender_key: null,
outgoing: true,
acked: 5,
sender_name: null,
@@ -430,6 +435,7 @@ describe('Integration: ACK + messageCache propagation', () => {
paths: null,
txt_type: 0,
signature: null,
sender_key: null,
outgoing: true,
acked: 0,
sender_name: null,
+1
View File
@@ -18,6 +18,7 @@ function createMessage(overrides: Partial<Message> = {}): Message {
paths: null,
txt_type: 0,
signature: null,
sender_key: null,
outgoing: false,
acked: 0,
sender_name: null,
+1
View File
@@ -24,6 +24,7 @@ function createSearchResult(overrides: Partial<Message> = {}): Message {
paths: null,
txt_type: 0,
signature: null,
sender_key: null,
outgoing: false,
acked: 0,
sender_name: 'Alice',
@@ -35,6 +35,7 @@ function createMessage(overrides: Partial<Message> = {}): Message {
paths: null,
txt_type: 0,
signature: null,
sender_key: null,
outgoing: true,
acked: 0,
sender_name: null,
@@ -19,6 +19,7 @@ function createMessage(overrides: Partial<Message> = {}): Message {
paths: null,
txt_type: 0,
signature: null,
sender_key: null,
outgoing: false,
acked: 0,
sender_name: null,
+1
View File
@@ -151,6 +151,7 @@ export interface Message {
paths: MessagePath[] | null;
txt_type: number;
signature: string | null;
sender_key: string | null;
outgoing: boolean;
/** ACK count: 0 = not acked, 1+ = number of acks/flood echoes received */
acked: number;