diff --git a/lib/wanderer_app/maps.ex b/lib/wanderer_app/maps.ex
index cc8103b4..37d278ff 100644
--- a/lib/wanderer_app/maps.ex
+++ b/lib/wanderer_app/maps.ex
@@ -55,18 +55,33 @@ defmodule WandererApp.Maps do
def get_available_maps(current_user) do
case WandererApp.Api.Map.available(%{}, actor: current_user) do
- {:ok, maps} -> {:ok, maps |> _filter_blocked_maps(current_user)}
+ {:ok, maps} -> {:ok, maps |> filter_blocked_maps(current_user)}
_ -> {:ok, []}
end
end
+ def get_tracked_map_characters(map_id, current_user) do
+ case WandererApp.MapCharacterSettingsRepo.get_tracked_by_map_filtered(
+ map_id,
+ current_user.characters |> Enum.map(& &1.id)
+ ) do
+ {:ok, settings} ->
+ {:ok,
+ settings
+ |> Enum.map(fn s -> s |> Ash.load!(:character) |> Map.get(:character) end)}
+
+ _ ->
+ {:ok, []}
+ end
+ end
+
def load_characters(map, character_settings, user_id) do
{:ok, user_characters} =
WandererApp.Api.Character.active_by_user(%{user_id: user_id})
characters =
map
- |> _get_map_available_characters(user_characters)
+ |> get_map_available_characters(user_characters)
|> Enum.map(fn c ->
map_character(c, character_settings |> Enum.find(&(&1.character_id == c.id)))
end)
@@ -146,7 +161,7 @@ defmodule WandererApp.Maps do
}}
end
- defp _get_map_available_characters(map, user_characters) do
+ defp get_map_available_characters(map, user_characters) do
{:ok,
%{
map_acl_owner_ids: map_acl_owner_ids,
@@ -164,7 +179,7 @@ defmodule WandererApp.Maps do
end)
end
- defp _filter_blocked_maps(maps, current_user) do
+ defp filter_blocked_maps(maps, current_user) do
user_character_ids = current_user.characters |> Enum.map(& &1.id)
user_character_eve_ids = current_user.characters |> Enum.map(& &1.eve_id)
diff --git a/lib/wanderer_app_web/components/user_activity.ex b/lib/wanderer_app_web/components/user_activity.ex
index 1ec7fc29..5f548e6f 100644
--- a/lib/wanderer_app_web/components/user_activity.ex
+++ b/lib/wanderer_app_web/components/user_activity.ex
@@ -74,7 +74,7 @@ defmodule WandererAppWeb.UserActivity do
- <%= _get_event_name(@activity.event_type) %>
+ <%= get_event_name(@activity.event_type) %>
<.activity_event event_type={@activity.event_type} event_data={@activity.event_data} />
@@ -115,7 +115,7 @@ defmodule WandererAppWeb.UserActivity do
- <%= _get_event_data(@event_type, Jason.decode!(@event_data) |> Map.drop(["character_id"])) %>
+ <%= get_event_data(@event_type, Jason.decode!(@event_data) |> Map.drop(["character_id"])) %>
@@ -129,27 +129,33 @@ defmodule WandererAppWeb.UserActivity do
{:noreply, socket}
end
- defp _get_event_name(:hub_added), do: "Hub Added"
- defp _get_event_name(:hub_removed), do: "Hub Removed"
- defp _get_event_name(:map_connection_added), do: "Connection Added"
- defp _get_event_name(:map_connection_updated), do: "Connection Updated"
- defp _get_event_name(:map_connection_removed), do: "Connection Removed"
- defp _get_event_name(:map_acl_added), do: "Acl Added"
- defp _get_event_name(:map_acl_removed), do: "Acl Removed"
- defp _get_event_name(:system_added), do: "System Added"
- defp _get_event_name(:system_updated), do: "System Updated"
- defp _get_event_name(:systems_removed), do: "System(s) Removed"
- defp _get_event_name(name), do: name
+ defp get_event_name(:hub_added), do: "Hub Added"
+ defp get_event_name(:hub_removed), do: "Hub Removed"
+ defp get_event_name(:map_connection_added), do: "Connection Added"
+ defp get_event_name(:map_connection_updated), do: "Connection Updated"
+ defp get_event_name(:map_connection_removed), do: "Connection Removed"
+ defp get_event_name(:map_acl_added), do: "Acl Added"
+ defp get_event_name(:map_acl_removed), do: "Acl Removed"
+ defp get_event_name(:system_added), do: "System Added"
+ defp get_event_name(:system_updated), do: "System Updated"
+ defp get_event_name(:systems_removed), do: "System(s) Removed"
+ defp get_event_name(name), do: name
- # defp _get_event_data(:hub_added, data), do: Jason.encode!(data)
- # defp _get_event_data(:hub_removed, data), do: data
+ defp get_event_data(:map_acl_added, %{"acl_id" => acl_id}) do
+ {:ok, acl} = WandererApp.AccessListRepo.get(acl_id)
+ "#{acl.name}"
+ end
- # defp _get_event_data(:map_acl_added, data), do: data
- # defp _get_event_data(:map_acl_removed, data), do: data
- # defp _get_event_data(:system_added, data), do: data
+ defp get_event_data(:map_acl_removed, %{"acl_id" => acl_id}) do
+ {:ok, acl} = WandererApp.AccessListRepo.get(acl_id)
+ "#{acl.name}"
+ end
+
+ # defp get_event_data(:map_acl_removed, data), do: data
+ # defp get_event_data(:system_added, data), do: data
#
- defp _get_event_data(:system_updated, %{
+ defp get_event_data(:system_updated, %{
"key" => "labels",
"solar_system_id" => solar_system_id,
"value" => value
@@ -166,22 +172,22 @@ defmodule WandererAppWeb.UserActivity do
end
end
- defp _get_event_data(:system_added, %{
+ defp get_event_data(:system_added, %{
"solar_system_id" => solar_system_id
}),
do: _get_system_name(solar_system_id)
- defp _get_event_data(:hub_added, %{
+ defp get_event_data(:hub_added, %{
"solar_system_id" => solar_system_id
}),
do: _get_system_name(solar_system_id)
- defp _get_event_data(:hub_removed, %{
+ defp get_event_data(:hub_removed, %{
"solar_system_id" => solar_system_id
}),
do: _get_system_name(solar_system_id)
- defp _get_event_data(:system_updated, %{
+ defp get_event_data(:system_updated, %{
"key" => key,
"solar_system_id" => solar_system_id,
"value" => value
@@ -190,7 +196,7 @@ defmodule WandererAppWeb.UserActivity do
"#{system_name} #{key} - #{inspect(value)}"
end
- defp _get_event_data(:systems_removed, %{
+ defp get_event_data(:systems_removed, %{
"solar_system_ids" => solar_system_ids
}),
do:
@@ -198,7 +204,7 @@ defmodule WandererAppWeb.UserActivity do
|> Enum.map(&_get_system_name/1)
|> Enum.join(", ")
- defp _get_event_data(:map_connection_added, %{
+ defp get_event_data(:map_connection_added, %{
"solar_system_source_id" => solar_system_source_id,
"solar_system_target_id" => solar_system_target_id
}) do
@@ -207,7 +213,7 @@ defmodule WandererAppWeb.UserActivity do
"[#{source_system_name}:#{target_system_name}]"
end
- defp _get_event_data(:map_connection_removed, %{
+ defp get_event_data(:map_connection_removed, %{
"solar_system_source_id" => solar_system_source_id,
"solar_system_target_id" => solar_system_target_id
}) do
@@ -216,7 +222,7 @@ defmodule WandererAppWeb.UserActivity do
"[#{source_system_name}:#{target_system_name}]"
end
- defp _get_event_data(:map_connection_updated, %{
+ defp get_event_data(:map_connection_updated, %{
"key" => key,
"solar_system_source_id" => solar_system_source_id,
"solar_system_target_id" => solar_system_target_id,
@@ -227,7 +233,7 @@ defmodule WandererAppWeb.UserActivity do
"[#{source_system_name}:#{target_system_name}] #{key} - #{inspect(value)}"
end
- defp _get_event_data(_name, data), do: Jason.encode!(data)
+ defp get_event_data(_name, data), do: Jason.encode!(data)
defp _get_system_name(solar_system_id) do
case WandererApp.CachedInfo.get_system_static_info(solar_system_id) do
diff --git a/lib/wanderer_app_web/live/maps/event_handlers/map_characters_event_handler.ex b/lib/wanderer_app_web/live/maps/event_handlers/map_characters_event_handler.ex
index 4f8dfd7e..065cda66 100644
--- a/lib/wanderer_app_web/live/maps/event_handlers/map_characters_event_handler.ex
+++ b/lib/wanderer_app_web/live/maps/event_handlers/map_characters_event_handler.ex
@@ -156,7 +156,7 @@ defmodule WandererAppWeb.MapCharactersEventHandler do
%{result: characters} = socket.assigns.characters
- {:ok, map_characters} = get_tracked_map_characters(map_id, current_user)
+ {:ok, map_characters} = WandererApp.Maps.get_tracked_map_characters(map_id, current_user)
user_character_eve_ids = map_characters |> Enum.map(& &1.eve_id)
@@ -204,7 +204,7 @@ defmodule WandererAppWeb.MapCharactersEventHandler do
{:ok, all_settings} = WandererApp.MapCharacterSettingsRepo.get_all_by_map(map_id)
# Find and filter user's characters
- {:ok, user_characters} = get_tracked_map_characters(map_id, current_user)
+ {:ok, user_characters} = WandererApp.Maps.get_tracked_map_characters(map_id, current_user)
user_char_ids = Enum.map(user_characters, & &1.id)
my_settings =
@@ -251,7 +251,7 @@ defmodule WandererAppWeb.MapCharactersEventHandler do
# re-fetch or re-map to confirm final results in UI
%{result: characters} = socket.assigns.characters
- {:ok, tracked_characters} = get_tracked_map_characters(map_id, current_user)
+ {:ok, tracked_characters} = WandererApp.Maps.get_tracked_map_characters(map_id, current_user)
user_eve_ids = Enum.map(tracked_characters, & &1.eve_id)
{:ok, final_settings} = WandererApp.MapCharacterSettingsRepo.get_all_by_map(map_id)
@@ -316,21 +316,6 @@ defmodule WandererAppWeb.MapCharactersEventHandler do
def has_tracked_characters?([]), do: false
def has_tracked_characters?(_user_characters), do: true
- def get_tracked_map_characters(map_id, current_user) do
- case WandererApp.MapCharacterSettingsRepo.get_tracked_by_map_filtered(
- map_id,
- current_user.characters |> Enum.map(& &1.id)
- ) do
- {:ok, settings} ->
- {:ok,
- settings
- |> Enum.map(fn s -> s |> Ash.load!(:character) |> Map.get(:character) end)}
-
- _ ->
- {:ok, []}
- end
- end
-
def map_ui_character(character),
do:
character
diff --git a/lib/wanderer_app_web/live/maps/event_handlers/map_core_event_handler.ex b/lib/wanderer_app_web/live/maps/event_handlers/map_core_event_handler.ex
index 1f10e5d0..f2fa2e90 100644
--- a/lib/wanderer_app_web/live/maps/event_handlers/map_core_event_handler.ex
+++ b/lib/wanderer_app_web/live/maps/event_handlers/map_core_event_handler.ex
@@ -119,10 +119,9 @@ defmodule WandererAppWeb.MapCoreEventHandler do
),
do: socket
- def handle_server_event(%{event: :structures_updated, payload: _solar_system_id}, socket) do
- socket
- end
-
+ def handle_server_event(%{event: :structures_updated, payload: _solar_system_id}, socket) do
+ socket
+ end
def handle_server_event(event, socket) do
Logger.warning(fn -> "unhandled map core event: #{inspect(event)} #{inspect(socket)} " end)
@@ -337,7 +336,7 @@ defmodule WandererAppWeb.MapCoreEventHandler do
with {:ok, _} <- current_user |> WandererApp.Api.User.update_last_map(%{last_map_id: map_id}),
{:ok, map_user_settings} <- WandererApp.MapUserSettingsRepo.get(map_id, current_user.id),
{:ok, tracked_map_characters} <-
- MapCharactersEventHandler.get_tracked_map_characters(map_id, current_user),
+ WandererApp.Maps.get_tracked_map_characters(map_id, current_user),
{:ok, characters_limit} <- map_id |> WandererApp.Map.get_characters_limit(),
{:ok, present_character_ids} <-
WandererApp.Cache.lookup("map_#{map_id}:presence_character_ids", []),
@@ -543,21 +542,6 @@ defmodule WandererAppWeb.MapCoreEventHandler do
}
end
- defp get_tracked_map_characters(map_id, current_user) do
- case WandererApp.MapCharacterSettingsRepo.get_tracked_by_map_filtered(
- map_id,
- current_user.characters |> Enum.map(& &1.id)
- ) do
- {:ok, settings} ->
- {:ok,
- settings
- |> Enum.map(fn s -> s |> Ash.load!(:character) |> Map.get(:character) end)}
-
- _ ->
- {:ok, []}
- end
- end
-
defp filter_map_characters(
characters,
user_character_eve_ids,
diff --git a/lib/wanderer_app_web/live/maps/map_audit_live.html.heex b/lib/wanderer_app_web/live/maps/map_audit_live.html.heex
index 176354de..e8fcd584 100644
--- a/lib/wanderer_app_web/live/maps/map_audit_live.html.heex
+++ b/lib/wanderer_app_web/live/maps/map_audit_live.html.heex
@@ -1,20 +1,3 @@
-
-
- <.live_component
- module={UserActivity}
- id="user-activity"
- notify_to={self()}
- can_undo_types={@can_undo_types}
- stream={@streams.activity}
- page={@page}
- end_of_stream?={@end_of_stream?}
- event_name="activity_event"
- />
-
-
+
+
+ <.live_component
+ module={UserActivity}
+ id="user-activity"
+ notify_to={self()}
+ can_undo_types={@can_undo_types}
+ stream={@streams.activity}
+ page={@page}
+ end_of_stream?={@end_of_stream?}
+ event_name="activity_event"
+ />
+
+
diff --git a/lib/wanderer_app_web/live/maps/maps_live.ex b/lib/wanderer_app_web/live/maps/maps_live.ex
index 5d64cd2f..4ba5dba7 100644
--- a/lib/wanderer_app_web/live/maps/maps_live.ex
+++ b/lib/wanderer_app_web/live/maps/maps_live.ex
@@ -636,6 +636,33 @@ defmodule WandererAppWeb.MapsLive do
{:map_acl_updated, added_acls, removed_acls}
)
+ {:ok, tracked_characters} =
+ WandererApp.Maps.get_tracked_map_characters(map.id, current_user)
+
+ first_tracked_character_id = Enum.map(tracked_characters, & &1.id) |> List.first()
+
+ added_acls
+ |> Enum.each(fn acl_id ->
+ {:ok, _} =
+ WandererApp.User.ActivityTracker.track_map_event(:map_acl_added, %{
+ character_id: first_tracked_character_id,
+ user_id: current_user.id,
+ map_id: map.id,
+ acl_id: acl_id
+ })
+ end)
+
+ removed_acls
+ |> Enum.each(fn acl_id ->
+ {:ok, _} =
+ WandererApp.User.ActivityTracker.track_map_event(:map_acl_removed, %{
+ character_id: first_tracked_character_id,
+ user_id: current_user.id,
+ map_id: map.id,
+ acl_id: acl_id
+ })
+ end)
+
{:noreply,
socket
|> assign_async(:maps, fn ->