Show connection status for global relays

This commit is contained in:
Andrew Dryga
2023-08-11 02:30:21 -05:00
parent f05daf27bc
commit 2e38db090d
2 changed files with 16 additions and 2 deletions

View File

@@ -238,10 +238,15 @@ defmodule Domain.Relays do
end
defp preload_online_statuses(relays, account_id) do
connected_global_relays = Presence.list("relays")
connected_relays = Presence.list("relays:#{account_id}")
Enum.map(relays, fn relay ->
%{relay | online?: Map.has_key?(connected_relays, relay.id)}
online? =
Map.has_key?(connected_relays, relay.id) or
Map.has_key?(connected_global_relays, relay.id)
%{relay | online?: online?}
end)
end

View File

@@ -474,8 +474,17 @@ defmodule Domain.RelaysTest do
RelaysFixtures.create_relay(account: account)
RelaysFixtures.create_relay()
group = RelaysFixtures.create_global_group()
relay = RelaysFixtures.create_relay(group: group)
assert {:ok, relays} = list_relays(subject)
assert length(relays) == 2
assert length(relays) == 3
refute Enum.any?(relays, & &1.online?)
:ok = connect_relay(relay, Ecto.UUID.generate())
assert {:ok, relays} = list_relays(subject)
assert length(relays) == 3
assert Enum.any?(relays, & &1.online?)
end
test "returns error when subject has no permission to manage relays", %{