fix(ux): Make all fields live-updated in clients/relays/gateways details pane (#6103)

Updates `Last connected` to `Last started` and makes sure the details
fields are reloaded when presence comes online.
This commit is contained in:
Jamil
2024-08-02 12:37:52 -07:00
committed by GitHub
parent bf06534caf
commit c18d641991
7 changed files with 28 additions and 17 deletions

View File

@@ -847,7 +847,7 @@ defmodule Web.CoreComponents do
title={
if @schema.last_seen_at,
do:
"Last connected #{Cldr.DateTime.Relative.to_string!(@schema.last_seen_at, Web.CLDR, relative_to: @relative_to)}",
"Last started #{Cldr.DateTime.Relative.to_string!(@schema.last_seen_at, Web.CLDR, relative_to: @relative_to)}",
else: "Never connected"
}
>

View File

@@ -132,23 +132,23 @@ defmodule Web.Clients.Show do
</:value>
</.vertical_table_row>
<.vertical_table_row>
<:label>Last Connected</:label>
<:label>Last started</:label>
<:value>
<.relative_datetime datetime={@client.last_seen_at} />
</:value>
</.vertical_table_row>
<.vertical_table_row>
<:label>Last Remote IP</:label>
<:label>Last seen remote IP</:label>
<:value>
<.last_seen schema={@client} />
</:value>
</.vertical_table_row>
<.vertical_table_row>
<:label>Client Version</:label>
<:label>Client version</:label>
<:value><%= @client.last_seen_version %></:value>
</.vertical_table_row>
<.vertical_table_row>
<:label>User Agent</:label>
<:label>User agent</:label>
<:value><%= @client.last_seen_user_agent %></:value>
</.vertical_table_row>
</.vertical_table>
@@ -217,6 +217,11 @@ defmodule Web.Clients.Show do
socket =
cond do
Map.has_key?(payload.joins, client.id) ->
{:ok, client} =
Clients.fetch_client_by_id(client.id, socket.assigns.subject,
preload: [:actor, last_used_token: [identity: [:provider]]]
)
assign(socket, client: %{client | online?: true})
Map.has_key?(payload.leaves, client.id) ->

View File

@@ -66,14 +66,14 @@ defmodule Web.Gateways.Show do
</.vertical_table_row>
<.vertical_table_row>
<:label>
Last Connected
Last started
</:label>
<:value>
<.relative_datetime datetime={@gateway.last_seen_at} />
</:value>
</.vertical_table_row>
<.vertical_table_row>
<:label>Last Remote IP</:label>
<:label>Last seen remote IP</:label>
<:value>
<.last_seen schema={@gateway} />
</:value>
@@ -91,7 +91,7 @@ defmodule Web.Gateways.Show do
</:value>
</.vertical_table_row>
<.vertical_table_row>
<:label>User Agent</:label>
<:label>User agent</:label>
<:value>
<%= @gateway.last_seen_user_agent %>
</:value>
@@ -156,6 +156,9 @@ defmodule Web.Gateways.Show do
socket =
cond do
Map.has_key?(payload.joins, gateway.id) ->
{:ok, gateway} =
Gateways.fetch_gateway_by_id(gateway.id, socket.assigns.subject, preload: [:group])
assign(socket, gateway: %{gateway | online?: true})
Map.has_key?(payload.leaves, gateway.id) ->

View File

@@ -83,14 +83,14 @@ defmodule Web.Relays.Show do
</.vertical_table_row>
<.vertical_table_row>
<:label>
Last Connected
Last started
</:label>
<:value>
<.relative_datetime datetime={@relay.last_seen_at} />
</:value>
</.vertical_table_row>
<.vertical_table_row>
<:label>Remote IP</:label>
<:label>Last seen remote IP</:label>
<:value>
<.last_seen schema={@relay} />
</:value>
@@ -102,7 +102,7 @@ defmodule Web.Relays.Show do
</:value>
</.vertical_table_row>
<.vertical_table_row>
<:label>User Agent</:label>
<:label>User agent</:label>
<:value>
<%= @relay.last_seen_user_agent %>
</:value>
@@ -162,6 +162,9 @@ defmodule Web.Relays.Show do
socket =
cond do
Map.has_key?(payload.joins, relay.id) ->
{:ok, relay} =
Relays.fetch_relay_by_id(relay.id, socket.assigns.subject, preload: [:group])
assign(socket, relay: %{relay | online?: true})
Map.has_key?(payload.leaves, relay.id) ->

View File

@@ -91,8 +91,8 @@ defmodule Web.Live.Clients.ShowTest do
assert table["owner"] =~ actor.name
assert table["status"] =~ "Offline"
assert table["created"]
assert table["last connected"]
assert table["last remote ip"] =~ to_string(client.last_seen_remote_ip)
assert table["last started"]
assert table["last seen remote ip"] =~ to_string(client.last_seen_remote_ip)
assert table["client version"] =~ client.last_seen_version
assert table["user agent"] =~ client.last_seen_user_agent
end

View File

@@ -89,8 +89,8 @@ defmodule Web.Live.Gateways.ShowTest do
assert table["site"] =~ gateway.group.name
assert table["name"] =~ gateway.name
assert table["last connected"]
assert table["last remote ip"] =~ to_string(gateway.last_seen_remote_ip)
assert table["last started"]
assert table["last seen remote ip"] =~ to_string(gateway.last_seen_remote_ip)
assert table["status"] =~ "Offline"
assert table["user agent"] =~ gateway.last_seen_user_agent
assert table["version"] =~ gateway.last_seen_version

View File

@@ -88,8 +88,8 @@ defmodule Web.Live.Relays.ShowTest do
|> vertical_table_to_map()
assert table["instance group name"] =~ relay.group.name
assert table["last connected"]
assert table["remote ip"] =~ to_string(relay.last_seen_remote_ip)
assert table["last started"]
assert table["last seen remote ip"] =~ to_string(relay.last_seen_remote_ip)
assert table["ipv4 set by public_ip4_addr"] =~ to_string(relay.ipv4)
assert table["ipv6 set by public_ip6_addr"] =~ to_string(relay.ipv6)
assert table["status"] =~ "Offline"