Files
akkounts/app/components/settings/nostr_relay_status_component.rb
T
2026-08-11 19:45:07 -06:00

49 lines
1.4 KiB
Ruby

# frozen_string_literal: true
module Settings
class NostrRelayStatusComponent < ViewComponent::Base
def initialize(nip65_event:, relay_url: Setting.nostr_relay_url)
@nip65_event = nip65_event
@relay_url = relay_url
@relay_host = relay_url.present? ? URI.parse(relay_url).host : nil
@statuses = []
if nip65_event.present?
@statuses.push({
text: "You have a relay list configured",
icon_name: "check-circle",
icon_color: "emerald-500"
})
if relay_urls(nip65_event).include?(@relay_url)
@statuses.push({
text: "The <strong>#{@relay_host}</strong> relay is part of your relay list",
icon_name: "check-circle",
icon_color: "emerald-500"
})
else
@statuses.push({
text: "The <strong>#{@relay_host}</strong> relay is missing from your relay list",
icon_name: "alert-octagon",
icon_color: "amber-500"
})
end
else
@statuses.push({
text: "We could not find a relay list for your public key",
icon_name: "alert-octagon",
icon_color: "amber-500"
})
end
@button_text = (nip65_event.present? ? "Edit relays" : "Set up relays")
end
private
def relay_urls(nip65_event)
nip65_event["tags"].select { |t| t[0] == "r" }.map { |t| t[1] }
end
end
end