32 lines
772 B
Ruby
32 lines
772 B
Ruby
# frozen_string_literal: true
|
|
|
|
module Settings
|
|
class NostrEditRelaysComponent < ViewComponent::Base
|
|
def initialize(nip65_event: nil)
|
|
@nip65_event = nip65_event
|
|
@relays = build_relays
|
|
ensure_site_relay
|
|
end
|
|
|
|
private
|
|
|
|
def build_relays
|
|
if @nip65_event.present?
|
|
@nip65_event["tags"]
|
|
.select { |t| t[0] == "r" }
|
|
.map { |t| { url: t[1], marker: t[2] } }
|
|
else
|
|
Setting.nostr_discovery_relays.map { |url| { url: url, marker: nil } }
|
|
end
|
|
end
|
|
|
|
def ensure_site_relay
|
|
site_relay_url = Setting.nostr_relay_url
|
|
return if site_relay_url.blank?
|
|
|
|
@relays.reject! { |r| r[:url] == site_relay_url }
|
|
@relays.unshift({ url: site_relay_url, marker: nil })
|
|
end
|
|
end
|
|
end
|