From 35ea4e5f1eef5014a3c0cf8fc50014741e8eafd5 Mon Sep 17 00:00:00 2001 From: Dmitry Popov Date: Thu, 12 Feb 2026 16:15:44 +0100 Subject: [PATCH] feat(signatures): Fixed creator visibility issues. Added 4.5 hour color for unsplashed --- .../UnsplashedSignature.tsx | 5 ++ .../hooks/useSignatureFetching.ts | 2 +- .../map_signatures_event_handler.ex | 62 ++++++++++++------- 3 files changed, 44 insertions(+), 25 deletions(-) diff --git a/assets/js/hooks/Mapper/components/map/components/UnsplashedSignature/UnsplashedSignature.tsx b/assets/js/hooks/Mapper/components/map/components/UnsplashedSignature/UnsplashedSignature.tsx index bf74fa6f..d7c04658 100644 --- a/assets/js/hooks/Mapper/components/map/components/UnsplashedSignature/UnsplashedSignature.tsx +++ b/assets/js/hooks/Mapper/components/map/components/UnsplashedSignature/UnsplashedSignature.tsx @@ -39,6 +39,10 @@ export const UnsplashedSignature = ({ signature }: UnsplashedSignatureProps) => return customInfo?.time_status === TimeStatus._1h; }, [customInfo]); + const is4H = useMemo(() => { + return customInfo?.time_status === TimeStatus._4h; + }, [customInfo]); + const whClassStyle = useMemo(() => { if (signature.type === 'K162' && k162TypeOption) { const k162Data = wormholesData[k162TypeOption.whClassName]; @@ -65,6 +69,7 @@ export const UnsplashedSignature = ({ signature }: UnsplashedSignatureProps) => {isEOL && } + {is4H && } diff --git a/assets/js/hooks/Mapper/components/mapInterface/widgets/SystemSignatures/hooks/useSignatureFetching.ts b/assets/js/hooks/Mapper/components/mapInterface/widgets/SystemSignatures/hooks/useSignatureFetching.ts index c67f0e9e..1c8ee5f2 100644 --- a/assets/js/hooks/Mapper/components/mapInterface/widgets/SystemSignatures/hooks/useSignatureFetching.ts +++ b/assets/js/hooks/Mapper/components/mapInterface/widgets/SystemSignatures/hooks/useSignatureFetching.ts @@ -35,7 +35,7 @@ export const useSignatureFetching = ({ systemId, settings, signaturesRef, setSig const extended = serverSigs.map(s => ({ ...s, - character_name: characters.find(c => c.eve_id === s.character_eve_id)?.name, + character_name: s.character_name ?? characters.find(c => c.eve_id === s.character_eve_id)?.name, })) as ExtendedSystemSignature[]; setSignatures(() => extended); diff --git a/lib/wanderer_app_web/live/map/event_handlers/map_signatures_event_handler.ex b/lib/wanderer_app_web/live/map/event_handlers/map_signatures_event_handler.ex index b6dbf225..bfcb5348 100644 --- a/lib/wanderer_app_web/live/map/event_handlers/map_signatures_event_handler.ex +++ b/lib/wanderer_app_web/live/map/event_handlers/map_signatures_event_handler.ex @@ -434,32 +434,46 @@ defmodule WandererAppWeb.MapSignaturesEventHandler do def handle_ui_event(event, body, socket), do: MapCoreEventHandler.handle_ui_event(event, body, socket) - def get_system_signatures(system_id), - do: - system_id - |> WandererApp.Api.MapSystemSignature.by_system_id!() - |> Enum.map(fn %{ - inserted_at: inserted_at, - updated_at: updated_at, - linked_system_id: linked_system_id - } = s -> - s - |> Map.take([ - :eve_id, - :character_eve_id, - :name, - :temporary_name, - :description, - :kind, - :group, - :type, - :custom_info - ]) - |> Map.put(:linked_system, MapEventHandler.get_system_static_info(linked_system_id)) - |> Map.put(:inserted_at, inserted_at |> Calendar.strftime("%Y/%m/%d %H:%M:%S")) - |> Map.put(:updated_at, updated_at |> Calendar.strftime("%Y/%m/%d %H:%M:%S")) + def get_system_signatures(system_id) do + signatures = system_id |> WandererApp.Api.MapSystemSignature.by_system_id!() + + character_eve_ids = + signatures |> Enum.map(& &1.character_eve_id) |> Enum.reject(&is_nil/1) |> Enum.uniq() + + character_names_map = + character_eve_ids + |> Enum.reduce(%{}, fn eve_id, acc -> + case WandererApp.Character.get_by_eve_id(eve_id) do + {:ok, character} -> Map.put(acc, eve_id, character.name) + _ -> acc + end end) + signatures + |> Enum.map(fn %{ + inserted_at: inserted_at, + updated_at: updated_at, + linked_system_id: linked_system_id + } = s -> + s + |> Map.take([ + :eve_id, + :character_eve_id, + :name, + :temporary_name, + :description, + :kind, + :group, + :type, + :custom_info + ]) + |> Map.put(:character_name, Map.get(character_names_map, s.character_eve_id)) + |> Map.put(:linked_system, MapEventHandler.get_system_static_info(linked_system_id)) + |> Map.put(:inserted_at, inserted_at |> Calendar.strftime("%Y/%m/%d %H:%M:%S")) + |> Map.put(:updated_at, updated_at |> Calendar.strftime("%Y/%m/%d %H:%M:%S")) + end) + end + defp get_integer(nil), do: nil defp get_integer(value) when is_binary(value), do: String.to_integer(value) defp get_integer(value), do: value