From 2e38db090ded5ec4540c3cf3d00d38a505339559 Mon Sep 17 00:00:00 2001 From: Andrew Dryga Date: Fri, 11 Aug 2023 02:30:21 -0500 Subject: [PATCH] Show connection status for global relays --- elixir/apps/domain/lib/domain/relays.ex | 7 ++++++- elixir/apps/domain/test/domain/relays_test.exs | 11 ++++++++++- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/elixir/apps/domain/lib/domain/relays.ex b/elixir/apps/domain/lib/domain/relays.ex index 82333321c..1ef54186c 100644 --- a/elixir/apps/domain/lib/domain/relays.ex +++ b/elixir/apps/domain/lib/domain/relays.ex @@ -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 diff --git a/elixir/apps/domain/test/domain/relays_test.exs b/elixir/apps/domain/test/domain/relays_test.exs index 788e40e9a..f6578489d 100644 --- a/elixir/apps/domain/test/domain/relays_test.exs +++ b/elixir/apps/domain/test/domain/relays_test.exs @@ -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", %{