From f7a1ab0589a61a214e781875dcd21f59750c682f Mon Sep 17 00:00:00 2001 From: Mike Dilger Date: Sun, 19 Jan 2025 08:15:14 +1300 Subject: [PATCH] When searching for someone not in the local db, create record and trigger fetch of metadata --- gossip-lib/src/overlord.rs | 27 +++++++++++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/gossip-lib/src/overlord.rs b/gossip-lib/src/overlord.rs index 24195b6a..b01ad2da 100644 --- a/gossip-lib/src/overlord.rs +++ b/gossip-lib/src/overlord.rs @@ -2516,16 +2516,39 @@ impl Overlord { if let Some(person) = PersonTable::read_record(prof.pubkey, None)? { people_search_results.push(person); } else { - // Create person from profile + // Create person + PersonTable::create_record_if_missing(prof.pubkey, None)?; + + let relays: Vec = prof + .relays + .iter() + .filter_map(|uu| RelayUrl::try_from_unchecked_url(uu).ok()) + .collect(); + + for relay in &relays { + GLOBALS.db().modify_person_relay( + prof.pubkey, + relay, + |pr| { + pr.last_suggested = Some(Unixtime::now().0 as u64); + }, + None, + )?; + } + // fetch data on person + GLOBALS.people.person_of_interest(prof.pubkey); } } NostrBech32::Pubkey(pk) => { if let Some(person) = PersonTable::read_record(pk, None)? { people_search_results.push(person); } else { - // Create person from pubkey + // Create person + PersonTable::create_record_if_missing(pk, None)?; + // fetch data on person + GLOBALS.people.person_of_interest(pk); } } NostrBech32::Relay(_relay) => (),