commit c60519de2362b1aa159c7431189ed33b9e6639c1
parent d72e7a57b64891bb25d058d6ec6ec9b2be21cc32
Author: Greg Heartsfield <scsibug@imap.cc>
Date: Thu, 30 Dec 2021 15:45:03 -0600
feat: hide older contact update events
Type 3 (NIP-02) contact lists are hidden when newer ones are submitted
for the same author.
Fixes https://todo.sr.ht/~gheartsfield/nostr-rs-relay/4
Diffstat:
1 file changed, 13 insertions(+), 2 deletions(-)
diff --git a/src/db.rs b/src/db.rs
@@ -204,16 +204,27 @@ pub fn write_event(conn: &mut Connection, e: &Event) -> Result<usize> {
}
}
// if this event is for a metadata update, hide every other kind=0
- // event from the same author that was issued earlier
+ // event from the same author that was issued earlier than this.
if e.kind == 0 {
let update_count = tx.execute(
- "UPDATE event SET hidden=TRUE WHERE id!=? AND kind=0 AND author=? AND created_at <= ?",
+ "UPDATE event SET hidden=TRUE WHERE id!=? AND kind=0 AND author=? AND created_at <= ? and hidden!=TRUE",
params![ev_id, hex::decode(&e.pubkey).ok(), e.created_at],
)?;
if update_count > 0 {
info!("hid {} older metadata events", update_count);
}
}
+ // if this event is for a contact update, hide every other kind=3
+ // event from the same author that was issued earlier than this.
+ if e.kind == 3 {
+ let update_count = tx.execute(
+ "UPDATE event SET hidden=TRUE WHERE id!=? AND kind=3 AND author=? AND created_at <= ? and hidden!=TRUE",
+ params![ev_id, hex::decode(&e.pubkey).ok(), e.created_at],
+ )?;
+ if update_count > 0 {
+ info!("hid {} older contact events", update_count);
+ }
+ }
tx.commit()?;
Ok(ins_count)
}