This commit is contained in:
@@ -1,36 +1,21 @@
|
||||
module NostrManager
|
||||
class DiscoverUserProfile < NostrManagerService
|
||||
MAX_EVENTS = 2
|
||||
|
||||
def initialize(pubkey:, relays: nil)
|
||||
@pubkey = pubkey
|
||||
@relays = relays.present? ? relays : Setting.nostr_discovery_relays
|
||||
end
|
||||
|
||||
def call
|
||||
received_events = 0
|
||||
profile_events = []
|
||||
filter = Nostr::Filter.new(
|
||||
authors: [@pubkey],
|
||||
kinds: [0],
|
||||
limit: 1,
|
||||
)
|
||||
|
||||
@relays.each do |url|
|
||||
event = NostrManager::FetchLatestEvent.call(filter: filter, relay_url: url)
|
||||
|
||||
if event.present?
|
||||
profile_events << event if profile_events.none? { |e| e["id"] == event["id"] }
|
||||
received_events += 1
|
||||
end
|
||||
|
||||
if received_events >= MAX_EVENTS
|
||||
puts "Found #{MAX_EVENTS} events, ending the search"
|
||||
break
|
||||
end
|
||||
end
|
||||
|
||||
profile_events.min_by { |e| e["created_at"] }
|
||||
NostrManager::FetchLatestEvent.call(
|
||||
relays: @relays,
|
||||
filter: filter
|
||||
)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user