akkounts/app/services/nostr_manager/fetch_latest_event.rb
Râu Cao 21c6264ea9
All checks were successful
continuous-integration/drone/push Build is passing
Use rails logger
2024-10-18 18:21:24 +02:00

32 lines
736 B
Ruby

module NostrManager
class FetchLatestEvent < NostrManagerService
def initialize(relays:, filter:, max_events: 2)
@relays = relays
@filter = filter
@max_events = max_events
end
def call
received_events = 0
events = []
@relays.each do |url|
event = NostrManager::FetchEvent.call(filter: @filter, relay_url: url)
if event.present?
events << event if events.none? { |e| e["id"] == event["id"] }
received_events += 1
end
if received_events >= @max_events
Rails.logger.debug "Found #{@max_events} events, ending the search"
break
end
end
events.min_by { |e| e["created_at"] }
end
end
end