diff --git a/assets/js/hooks/Mapper/components/mapInterface/widgets/CommentsWidget/CommentsWidget.tsx b/assets/js/hooks/Mapper/components/mapInterface/widgets/CommentsWidget/CommentsWidget.tsx index 70807262..324330f0 100644 --- a/assets/js/hooks/Mapper/components/mapInterface/widgets/CommentsWidget/CommentsWidget.tsx +++ b/assets/js/hooks/Mapper/components/mapInterface/widgets/CommentsWidget/CommentsWidget.tsx @@ -1,30 +1,21 @@ import { Widget } from '@/hooks/Mapper/components/mapInterface/components'; import { Comments } from '@/hooks/Mapper/components/mapInterface/components/Comments'; -import { SystemView } from '@/hooks/Mapper/components/ui-kit'; +import { InfoDrawer, SystemView, TooltipPosition, WdImgButton } from '@/hooks/Mapper/components/ui-kit'; import { useRef } from 'react'; import useMaxWidth from '@/hooks/Mapper/hooks/useMaxWidth.ts'; import { COMPACT_MAX_WIDTH } from '@/hooks/Mapper/components/mapInterface/widgets/SystemSignatures/constants.ts'; import { useMapRootState } from '@/hooks/Mapper/mapRootProvider'; import clsx from 'clsx'; import { CommentsEditor } from '@/hooks/Mapper/components/mapInterface/components/CommentsEditor'; +import { PrimeIcons } from 'primereact/api'; export const CommentsWidgetContent = () => { const { - data: { selectedSystems, isSubscriptionActive }, + data: { selectedSystems }, } = useMapRootState(); const isNotSelectedSystem = selectedSystems.length !== 1; - if (!isSubscriptionActive) { - return ( -
- - Comments available with 'Active' map subscription only (contact map administrators) - -
- ); - } - if (isNotSelectedSystem) { return (
@@ -46,7 +37,7 @@ export const CommentsWidget = () => { const isCompact = useMaxWidth(containerRef, COMPACT_MAX_WIDTH); const { - data: { selectedSystems }, + data: { selectedSystems, isSubscriptionActive }, } = useMapRootState(); const [systemId] = selectedSystems; const isNotSelectedSystem = selectedSystems.length !== 1; @@ -54,13 +45,34 @@ export const CommentsWidget = () => { return ( - {!isCompact && ( -
- Comments {isNotSelectedSystem ? '' : 'in'} -
- )} - {!isNotSelectedSystem && } +
+
+ {!isCompact && ( +
+ Comments {isNotSelectedSystem ? '' : 'in'} +
+ )} + {!isNotSelectedSystem && } +
+ + How to add/delete comment?}> + It is possible to use markdown formating.
+ Only users with tracking permission can add/delete comments.
+
+ Limitations}> + Each comment length is limited to 500 characters.
+ No more than {isSubscriptionActive ? '500' : '30'} comments are allowed per system*.
+ * based on active map subscription. +
+
+ ), + }} + />
} > diff --git a/lib/wanderer_app/maps.ex b/lib/wanderer_app/maps.ex index fb728679..58b467ee 100644 --- a/lib/wanderer_app/maps.ex +++ b/lib/wanderer_app/maps.ex @@ -180,7 +180,8 @@ defmodule WandererApp.Maps do is_member_corp = to_string(c.corporation_id) in map_member_corporation_ids is_member_alliance = to_string(c.alliance_id) in map_member_alliance_ids - has_access = is_owner or is_acl_owner or is_member_eve or is_member_corp or is_member_alliance + has_access = + is_owner or is_acl_owner or is_member_eve or is_member_corp or is_member_alliance has_access end) @@ -275,8 +276,8 @@ defmodule WandererApp.Maps do def get_system_comments_activity(system_id) do from(sc in WandererApp.Api.MapSystemComment, where: sc.system_id == ^system_id, - group_by: [sc.id], - select: {count(sc.id)} + group_by: [sc.system_id], + select: {count(sc.system_id)} ) |> WandererApp.Repo.all() end diff --git a/lib/wanderer_app_web/controllers/map_audit_api_controller.ex b/lib/wanderer_app_web/controllers/map_audit_api_controller.ex new file mode 100644 index 00000000..cc6780f4 --- /dev/null +++ b/lib/wanderer_app_web/controllers/map_audit_api_controller.ex @@ -0,0 +1,172 @@ +defmodule WandererAppWeb.MapAuditAPIController do + use WandererAppWeb, :controller + use OpenApiSpex.ControllerSpecs + + import Ash.Query, only: [filter: 2] + require Logger + + alias WandererApp.Api + alias WandererApp.Api.Character + alias WandererApp.MapSystemRepo + alias WandererApp.MapCharacterSettingsRepo + + alias WandererApp.Zkb.KillsProvider.KillsCache + + alias WandererAppWeb.UtilAPIController, as: Util + + # ----------------------------------------------------------------- + # Inline Schemas + # ----------------------------------------------------------------- + + @character_schema %OpenApiSpex.Schema{ + type: :object, + properties: %{ + eve_id: %OpenApiSpex.Schema{type: :string}, + name: %OpenApiSpex.Schema{type: :string}, + corporation_id: %OpenApiSpex.Schema{type: :string}, + corporation_ticker: %OpenApiSpex.Schema{type: :string}, + alliance_id: %OpenApiSpex.Schema{type: :string}, + alliance_ticker: %OpenApiSpex.Schema{type: :string} + }, + required: ["eve_id", "name"] + } + + @map_audit_event_schema %OpenApiSpex.Schema{ + type: :object, + properties: %{ + entity_type: %OpenApiSpex.Schema{type: :string}, + event_name: %OpenApiSpex.Schema{type: :string}, + event_data: %OpenApiSpex.Schema{type: :string}, + character: @character_schema, + inserted_at: %OpenApiSpex.Schema{type: :string, format: :date_time} + }, + required: ["entity_type", "event_name", "event_data", "inserted_at"] + } + + @map_audit_response_schema %OpenApiSpex.Schema{ + type: :object, + properties: %{ + data: %OpenApiSpex.Schema{ + type: :array, + items: @map_audit_event_schema + } + }, + required: ["data"] + } + + # ----------------------------------------------------------------- + # MAP endpoints + # ----------------------------------------------------------------- + + @doc """ + GET /api/map/audit + + Requires either `?map_id=` **OR** `?slug=` in the query params. + + Examples: + GET /api/map/audit?map_id=466e922b-e758-485e-9b86-afae06b88363&period=1H + GET /api/map/audit?slug=my-unique-wormhole-map&period=1H + """ + @spec index(Plug.Conn.t(), map()) :: Plug.Conn.t() + operation(:index, + summary: "List Map Audit events", + description: + "Lists all audit events for a map. Requires either 'map_id' or 'slug' as a query parameter to identify the map.", + parameters: [ + map_id: [ + in: :query, + description: "Map identifier (UUID) - Either map_id or slug must be provided", + type: :string, + required: false, + example: "" + ], + slug: [ + in: :query, + description: "Map slug - Either map_id or slug must be provided", + type: :string, + required: false, + example: "map-name" + ], + period: [ + in: :query, + description: "Activity period (1H, 1D, 1W, 1M, 2M, 3M)", + type: :string, + required: true, + example: "1D" + ] + ], + responses: [ + ok: { + "List of map audit events", + "application/json", + @map_audit_response_schema + }, + bad_request: + {"Error", "application/json", + %OpenApiSpex.Schema{ + type: :object, + properties: %{ + error: %OpenApiSpex.Schema{type: :string} + }, + required: ["error"], + example: %{ + "error" => "Must provide either ?map_id=UUID or ?slug=SLUG" + } + }} + ] + ) + + def index(conn, params) do + with {:ok, map_id} <- Util.fetch_map_id(params), + {:ok, period} <- Util.require_param(params, "period"), + query <- WandererApp.Map.Audit.get_activity_query(map_id, period, "all"), + {:ok, data} <- + Api.read(query) do + data = Enum.map(data, &map_audit_event_to_json/1) + json(conn, %{data: data}) + else + {:error, msg} when is_binary(msg) -> + conn + |> put_status(:bad_request) + |> json(%{error: msg}) + + {:error, reason} -> + conn + |> put_status(:not_found) + |> json(%{error: "Request failed: #{inspect(reason)}"}) + end + end + + defp map_audit_event_to_json( + %{event_type: event_type, event_data: event_data, character: character} = event + ) do + # Start with the basic system data + result = + Map.take(event, [ + :entity_type, + :inserted_at + ]) + + result + |> Map.put(:character, WandererAppWeb.MapEventHandler.map_ui_character_stat(character)) + |> Map.put(:event_name, WandererAppWeb.UserActivity.get_event_name(event_type)) + |> Map.put( + :event_data, + WandererAppWeb.UserActivity.get_event_data( + event_type, + Jason.decode!(event_data) |> Map.drop(["character_id"]) + ) + ) + end + + defp get_original_system_name(solar_system_id) do + # Fetch the original system name from the MapSolarSystem resource + case WandererApp.Api.MapSolarSystem.by_solar_system_id(solar_system_id) do + {:ok, system} -> + system.solar_system_name + + _error -> + "Unknown System" + end + end +end diff --git a/lib/wanderer_app_web/components/map_characters.ex b/lib/wanderer_app_web/live/map/components/map_characters.ex similarity index 100% rename from lib/wanderer_app_web/components/map_characters.ex rename to lib/wanderer_app_web/live/map/components/map_characters.ex diff --git a/lib/wanderer_app_web/components/map/map_loader.ex b/lib/wanderer_app_web/live/map/components/map_loader.ex similarity index 100% rename from lib/wanderer_app_web/components/map/map_loader.ex rename to lib/wanderer_app_web/live/map/components/map_loader.ex diff --git a/lib/wanderer_app_web/components/map/map_picker.ex b/lib/wanderer_app_web/live/map/components/map_picker.ex similarity index 100% rename from lib/wanderer_app_web/components/map/map_picker.ex rename to lib/wanderer_app_web/live/map/components/map_picker.ex diff --git a/lib/wanderer_app_web/components/map/map_refresh.ex b/lib/wanderer_app_web/live/map/components/map_refresh.ex similarity index 100% rename from lib/wanderer_app_web/components/map/map_refresh.ex rename to lib/wanderer_app_web/live/map/components/map_refresh.ex diff --git a/lib/wanderer_app_web/components/user_activity.ex b/lib/wanderer_app_web/live/map/components/user_activity.ex similarity index 59% rename from lib/wanderer_app_web/components/user_activity.ex rename to lib/wanderer_app_web/live/map/components/user_activity.ex index 14eda8bc..121e489f 100644 --- a/lib/wanderer_app_web/components/user_activity.ex +++ b/lib/wanderer_app_web/live/map/components/user_activity.ex @@ -54,7 +54,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} /> @@ -82,7 +82,7 @@ defmodule WandererAppWeb.UserActivity do {@character.name} - <%= @character.name %> + {@character.name} """ end @@ -95,7 +95,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"]))}
@@ -109,26 +109,26 @@ 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(:signatures_added), do: "Signatures Added" - defp get_event_name(:signatures_removed), do: "Signatures Removed" - defp get_event_name(name), do: name + def get_event_name(:hub_added), do: "Hub Added" + def get_event_name(:hub_removed), do: "Hub Removed" + def get_event_name(:map_connection_added), do: "Connection Added" + def get_event_name(:map_connection_updated), do: "Connection Updated" + def get_event_name(:map_connection_removed), do: "Connection Removed" + def get_event_name(:map_acl_added), do: "Acl Added" + def get_event_name(:map_acl_removed), do: "Acl Removed" + def get_event_name(:system_added), do: "System Added" + def get_event_name(:system_updated), do: "System Updated" + def get_event_name(:systems_removed), do: "System(s) Removed" + def get_event_name(:signatures_added), do: "Signatures Added" + def get_event_name(:signatures_removed), do: "Signatures Removed" + def get_event_name(name), do: name - defp get_event_data(:map_acl_added, %{"acl_id" => acl_id}) do + def 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_removed, %{"acl_id" => acl_id}) do + def get_event_data(:map_acl_removed, %{"acl_id" => acl_id}) do {:ok, acl} = WandererApp.AccessListRepo.get(acl_id) "#{acl.name}" end @@ -137,11 +137,11 @@ defmodule WandererAppWeb.UserActivity do # defp get_event_data(:system_added, data), do: data # - defp get_event_data(:system_updated, %{ - "key" => "labels", - "solar_system_id" => solar_system_id, - "value" => value - }) do + def get_event_data(:system_updated, %{ + "key" => "labels", + "solar_system_id" => solar_system_id, + "value" => value + }) do system_name = get_system_name(solar_system_id) try do @@ -154,81 +154,81 @@ defmodule WandererAppWeb.UserActivity do end end - defp get_event_data(:system_added, %{ - "solar_system_id" => solar_system_id - }), - do: get_system_name(solar_system_id) + def get_event_data(:system_added, %{ + "solar_system_id" => solar_system_id + }), + do: get_system_name(solar_system_id) - defp get_event_data(:hub_added, %{ - "solar_system_id" => solar_system_id - }), - do: get_system_name(solar_system_id) + def get_event_data(:hub_added, %{ + "solar_system_id" => solar_system_id + }), + do: get_system_name(solar_system_id) - defp get_event_data(:hub_removed, %{ - "solar_system_id" => solar_system_id - }), - do: get_system_name(solar_system_id) + def get_event_data(:hub_removed, %{ + "solar_system_id" => solar_system_id + }), + do: get_system_name(solar_system_id) - defp get_event_data(:system_updated, %{ - "key" => key, - "solar_system_id" => solar_system_id, - "value" => value - }) do + def get_event_data(:system_updated, %{ + "key" => key, + "solar_system_id" => solar_system_id, + "value" => value + }) do system_name = get_system_name(solar_system_id) "#{system_name}: #{key} - #{inspect(value)}" end - defp get_event_data(:systems_removed, %{ - "solar_system_ids" => solar_system_ids - }), - do: - solar_system_ids - |> Enum.map(&get_system_name/1) - |> Enum.join(", ") + def get_event_data(:systems_removed, %{ + "solar_system_ids" => solar_system_ids + }), + do: + solar_system_ids + |> Enum.map(&get_system_name/1) + |> Enum.join(", ") - defp get_event_data(signatures_event, %{ - "solar_system_id" => solar_system_id, - "signatures" => signatures - }) - when signatures_event in [:signatures_added, :signatures_removed], - do: "#{get_system_name(solar_system_id)}: #{signatures |> Enum.join(", ")}" + def get_event_data(signatures_event, %{ + "solar_system_id" => solar_system_id, + "signatures" => signatures + }) + when signatures_event in [:signatures_added, :signatures_removed], + do: "#{get_system_name(solar_system_id)}: #{signatures |> Enum.join(", ")}" - defp get_event_data(signatures_event, %{ - "signatures" => signatures - }) - when signatures_event in [:signatures_added, :signatures_removed], - do: signatures |> Enum.join(", ") + def get_event_data(signatures_event, %{ + "signatures" => signatures + }) + when signatures_event in [:signatures_added, :signatures_removed], + do: signatures |> Enum.join(", ") - defp get_event_data(:map_connection_added, %{ - "solar_system_source_id" => solar_system_source_id, - "solar_system_target_id" => solar_system_target_id - }) do + def get_event_data(:map_connection_added, %{ + "solar_system_source_id" => solar_system_source_id, + "solar_system_target_id" => solar_system_target_id + }) do source_system_name = get_system_name(solar_system_source_id) target_system_name = get_system_name(solar_system_target_id) "[#{source_system_name}:#{target_system_name}]" end - defp get_event_data(:map_connection_removed, %{ - "solar_system_source_id" => solar_system_source_id, - "solar_system_target_id" => solar_system_target_id - }) do + def get_event_data(:map_connection_removed, %{ + "solar_system_source_id" => solar_system_source_id, + "solar_system_target_id" => solar_system_target_id + }) do source_system_name = get_system_name(solar_system_source_id) target_system_name = get_system_name(solar_system_target_id) "[#{source_system_name}:#{target_system_name}]" end - 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, - "value" => value - }) do + def get_event_data(:map_connection_updated, %{ + "key" => key, + "solar_system_source_id" => solar_system_source_id, + "solar_system_target_id" => solar_system_target_id, + "value" => value + }) do source_system_name = get_system_name(solar_system_source_id) target_system_name = get_system_name(solar_system_target_id) "[#{source_system_name}:#{target_system_name}] #{key} - #{inspect(value)}" end - defp get_event_data(_name, data), do: Jason.encode!(data) + def 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_activity_event_handler.ex b/lib/wanderer_app_web/live/map/event_handlers/map_activity_event_handler.ex similarity index 100% rename from lib/wanderer_app_web/live/maps/event_handlers/map_activity_event_handler.ex rename to lib/wanderer_app_web/live/map/event_handlers/map_activity_event_handler.ex diff --git a/lib/wanderer_app_web/live/maps/event_handlers/map_characters_event_handler.ex b/lib/wanderer_app_web/live/map/event_handlers/map_characters_event_handler.ex similarity index 100% rename from lib/wanderer_app_web/live/maps/event_handlers/map_characters_event_handler.ex rename to lib/wanderer_app_web/live/map/event_handlers/map_characters_event_handler.ex diff --git a/lib/wanderer_app_web/live/maps/event_handlers/map_connections_event_handler.ex b/lib/wanderer_app_web/live/map/event_handlers/map_connections_event_handler.ex similarity index 100% rename from lib/wanderer_app_web/live/maps/event_handlers/map_connections_event_handler.ex rename to lib/wanderer_app_web/live/map/event_handlers/map_connections_event_handler.ex diff --git a/lib/wanderer_app_web/live/maps/event_handlers/map_core_event_handler.ex b/lib/wanderer_app_web/live/map/event_handlers/map_core_event_handler.ex similarity index 100% rename from lib/wanderer_app_web/live/maps/event_handlers/map_core_event_handler.ex rename to lib/wanderer_app_web/live/map/event_handlers/map_core_event_handler.ex diff --git a/lib/wanderer_app_web/live/maps/event_handlers/map_kills_event_handler.ex b/lib/wanderer_app_web/live/map/event_handlers/map_kills_event_handler.ex similarity index 100% rename from lib/wanderer_app_web/live/maps/event_handlers/map_kills_event_handler.ex rename to lib/wanderer_app_web/live/map/event_handlers/map_kills_event_handler.ex diff --git a/lib/wanderer_app_web/live/maps/event_handlers/map_routes_event_handler.ex b/lib/wanderer_app_web/live/map/event_handlers/map_routes_event_handler.ex similarity index 100% rename from lib/wanderer_app_web/live/maps/event_handlers/map_routes_event_handler.ex rename to lib/wanderer_app_web/live/map/event_handlers/map_routes_event_handler.ex diff --git a/lib/wanderer_app_web/live/maps/event_handlers/map_signatures_event_handler.ex b/lib/wanderer_app_web/live/map/event_handlers/map_signatures_event_handler.ex similarity index 100% rename from lib/wanderer_app_web/live/maps/event_handlers/map_signatures_event_handler.ex rename to lib/wanderer_app_web/live/map/event_handlers/map_signatures_event_handler.ex diff --git a/lib/wanderer_app_web/live/maps/event_handlers/map_structures_event_handler.ex b/lib/wanderer_app_web/live/map/event_handlers/map_structures_event_handler.ex similarity index 100% rename from lib/wanderer_app_web/live/maps/event_handlers/map_structures_event_handler.ex rename to lib/wanderer_app_web/live/map/event_handlers/map_structures_event_handler.ex diff --git a/lib/wanderer_app_web/live/maps/event_handlers/map_system_comments_event_handler.ex b/lib/wanderer_app_web/live/map/event_handlers/map_system_comments_event_handler.ex similarity index 73% rename from lib/wanderer_app_web/live/maps/event_handlers/map_system_comments_event_handler.ex rename to lib/wanderer_app_web/live/map/event_handlers/map_system_comments_event_handler.ex index b1ea73e8..7babba87 100644 --- a/lib/wanderer_app_web/live/maps/event_handlers/map_system_comments_event_handler.ex +++ b/lib/wanderer_app_web/live/map/event_handlers/map_system_comments_event_handler.ex @@ -44,23 +44,51 @@ defmodule WandererAppWeb.MapSystemCommentsEventHandler do current_user: current_user, has_tracked_characters?: true, map_id: map_id, + is_subscription_active?: is_subscription_active?, tracked_character_ids: tracked_character_ids, user_permissions: %{add_system: true} } } = socket ) do - map_id - |> WandererApp.Map.Server.add_system_comment( - %{ - solar_system_id: solar_system_id, - text: text - }, - current_user.id, - tracked_character_ids |> List.first() - ) + system = + WandererApp.Map.find_system_by_location(map_id, %{ + solar_system_id: solar_system_id |> String.to_integer() + }) - {:noreply, socket} + comments_count = + system.id + |> WandererApp.Maps.get_system_comments_activity() + |> case do + [{count}] when not is_nil(count) -> + count + + _ -> + 0 + end + + cond do + (is_subscription_active? && comments_count < 500) || comments_count < 30 -> + map_id + |> WandererApp.Map.Server.add_system_comment( + %{ + solar_system_id: solar_system_id, + text: text |> String.slice(0..500) + }, + current_user.id, + tracked_character_ids |> List.first() + ) + + {:noreply, socket} + + true -> + {:noreply, + socket + |> Phoenix.LiveView.put_flash( + :error, + "Your reach the maximum number of comments available. Please remove some comments before adding new ones." + )} + end end def handle_ui_event( @@ -116,6 +144,9 @@ defmodule WandererAppWeb.MapSystemCommentsEventHandler do {:noreply, socket} end + def handle_ui_event(event, body, socket), + do: MapCoreEventHandler.handle_ui_event(event, body, socket) + def map_system_comment(nil), do: nil def map_system_comment( diff --git a/lib/wanderer_app_web/live/maps/event_handlers/map_systems_event_handler.ex b/lib/wanderer_app_web/live/map/event_handlers/map_systems_event_handler.ex similarity index 100% rename from lib/wanderer_app_web/live/maps/event_handlers/map_systems_event_handler.ex rename to lib/wanderer_app_web/live/map/event_handlers/map_systems_event_handler.ex diff --git a/lib/wanderer_app_web/live/maps/map_audit_live.ex b/lib/wanderer_app_web/live/map/map_audit_live.ex similarity index 100% rename from lib/wanderer_app_web/live/maps/map_audit_live.ex rename to lib/wanderer_app_web/live/map/map_audit_live.ex diff --git a/lib/wanderer_app_web/live/maps/map_audit_live.html.heex b/lib/wanderer_app_web/live/map/map_audit_live.html.heex similarity index 100% rename from lib/wanderer_app_web/live/maps/map_audit_live.html.heex rename to lib/wanderer_app_web/live/map/map_audit_live.html.heex diff --git a/lib/wanderer_app_web/live/maps/map_characters_live.ex b/lib/wanderer_app_web/live/map/map_characters_live.ex similarity index 100% rename from lib/wanderer_app_web/live/maps/map_characters_live.ex rename to lib/wanderer_app_web/live/map/map_characters_live.ex diff --git a/lib/wanderer_app_web/live/maps/map_characters_live.html.heex b/lib/wanderer_app_web/live/map/map_characters_live.html.heex similarity index 100% rename from lib/wanderer_app_web/live/maps/map_characters_live.html.heex rename to lib/wanderer_app_web/live/map/map_characters_live.html.heex diff --git a/lib/wanderer_app_web/live/maps/map_event_handler.ex b/lib/wanderer_app_web/live/map/map_event_handler.ex similarity index 100% rename from lib/wanderer_app_web/live/maps/map_event_handler.ex rename to lib/wanderer_app_web/live/map/map_event_handler.ex diff --git a/lib/wanderer_app_web/live/maps/map_live.ex b/lib/wanderer_app_web/live/map/map_live.ex similarity index 100% rename from lib/wanderer_app_web/live/maps/map_live.ex rename to lib/wanderer_app_web/live/map/map_live.ex diff --git a/lib/wanderer_app_web/live/maps/map_live.html.heex b/lib/wanderer_app_web/live/map/map_live.html.heex similarity index 100% rename from lib/wanderer_app_web/live/maps/map_live.html.heex rename to lib/wanderer_app_web/live/map/map_live.html.heex diff --git a/lib/wanderer_app_web/router.ex b/lib/wanderer_app_web/router.ex index c1e88c9a..aaf28de9 100644 --- a/lib/wanderer_app_web/router.ex +++ b/lib/wanderer_app_web/router.ex @@ -114,9 +114,11 @@ defmodule WandererAppWeb.Router do http_url = URI.to_string(home_url) # Only add script-src-elem when in development mode - script_src_elem = if(@code_reloading, do: - @script_src_values ++ [ws_url, http_url], - else: @script_src_values) + script_src_elem = + if(@code_reloading, + do: @script_src_values ++ [ws_url, http_url], + else: @script_src_values + ) directives = %{ default_src: ~w('none'), @@ -203,6 +205,7 @@ defmodule WandererAppWeb.Router do scope "/api/map", WandererAppWeb do pipe_through [:api, :api_map] + get "/audit", MapAuditAPIController, :index get "/systems", MapAPIController, :list_systems get "/system", MapAPIController, :show_system get "/characters", MapAPIController, :tracked_characters_with_info