diff --git a/CHANGELOG.md b/CHANGELOG.md index d8447c32..fbad38eb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,24 @@ +## [v1.81.12](https://github.com/wanderer-industries/wanderer/compare/v1.81.11...v1.81.12) (2025-10-15) + + + + +### Bug Fixes: + +* Core: Fixed map events buffering on tab switch + +## [v1.81.11](https://github.com/wanderer-industries/wanderer/compare/v1.81.10...v1.81.11) (2025-10-15) + + + + +### Bug Fixes: + +* Signatures: Fixed EOL indication for un-splashed and signatures list + ## [v1.81.10](https://github.com/wanderer-industries/wanderer/compare/v1.81.9...v1.81.10) (2025-10-13) 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 3be611d6..bf74fa6f 100644 --- a/assets/js/hooks/Mapper/components/map/components/UnsplashedSignature/UnsplashedSignature.tsx +++ b/assets/js/hooks/Mapper/components/map/components/UnsplashedSignature/UnsplashedSignature.tsx @@ -1,15 +1,16 @@ -import { WdTooltipWrapper } from '@/hooks/Mapper/components/ui-kit/WdTooltipWrapper'; import { InfoDrawer } from '@/hooks/Mapper/components/ui-kit'; +import { WdTooltipWrapper } from '@/hooks/Mapper/components/ui-kit/WdTooltipWrapper'; -import classes from './UnsplashedSignature.module.scss'; -import { SystemSignature } from '@/hooks/Mapper/types/signatures'; -import { useMapRootState } from '@/hooks/Mapper/mapRootProvider'; import { WORMHOLE_CLASS_STYLES, WORMHOLES_ADDITIONAL_INFO } from '@/hooks/Mapper/components/map/constants.ts'; -import { useMemo } from 'react'; -import clsx from 'clsx'; import { renderInfoColumn } from '@/hooks/Mapper/components/mapInterface/widgets/SystemSignatures/renders'; import { K162_TYPES_MAP } from '@/hooks/Mapper/constants.ts'; import { parseSignatureCustomInfo } from '@/hooks/Mapper/helpers/parseSignatureCustomInfo.ts'; +import { useMapRootState } from '@/hooks/Mapper/mapRootProvider'; +import { TimeStatus } from '@/hooks/Mapper/types'; +import { SystemSignature } from '@/hooks/Mapper/types/signatures'; +import clsx from 'clsx'; +import { useMemo } from 'react'; +import classes from './UnsplashedSignature.module.scss'; interface UnsplashedSignatureProps { signature: SystemSignature; @@ -35,7 +36,7 @@ export const UnsplashedSignature = ({ signature }: UnsplashedSignatureProps) => }, [customInfo]); const isEOL = useMemo(() => { - return customInfo?.isEOL; + return customInfo?.time_status === TimeStatus._1h; }, [customInfo]); const whClassStyle = useMemo(() => { diff --git a/assets/js/hooks/Mapper/components/mapInterface/widgets/SystemSignatures/renders/renderInfoColumn.tsx b/assets/js/hooks/Mapper/components/mapInterface/widgets/SystemSignatures/renders/renderInfoColumn.tsx index e384f27e..374abaef 100644 --- a/assets/js/hooks/Mapper/components/mapInterface/widgets/SystemSignatures/renders/renderInfoColumn.tsx +++ b/assets/js/hooks/Mapper/components/mapInterface/widgets/SystemSignatures/renders/renderInfoColumn.tsx @@ -1,5 +1,5 @@ import { SystemViewStandalone, TooltipPosition, WHClassView } from '@/hooks/Mapper/components/ui-kit'; -import { SignatureGroup, SystemSignature } from '@/hooks/Mapper/types'; +import { SignatureGroup, SystemSignature, TimeStatus } from '@/hooks/Mapper/types'; import { PrimeIcons } from 'primereact/api'; import { renderK162Type } from '@/hooks/Mapper/components/mapRootContent/components/SignatureSettings/components/SignatureK162TypeSelect'; @@ -20,7 +20,7 @@ export const renderInfoColumn = (row: SystemSignature) => {
{row.temporary_name && {row.temporary_name}} - {customInfo.isEOL && ( + {customInfo.time_status === TimeStatus._1h && (
diff --git a/assets/js/hooks/Mapper/hooks/useEventBuffer.ts b/assets/js/hooks/Mapper/hooks/useEventBuffer.ts index 00a28fa0..cbb3d10d 100644 --- a/assets/js/hooks/Mapper/hooks/useEventBuffer.ts +++ b/assets/js/hooks/Mapper/hooks/useEventBuffer.ts @@ -28,14 +28,17 @@ export const useEventBuffer = (handler: UseEventBufferHandler) => { eventTickRef.current = eventTick; // @ts-ignore - const handleEvent = useCallback(event => { - if (!eventTickRef.current) { - return; - } + const handleEvent = useCallback( + event => { + if (!eventTickRef.current) { + return; + } - eventsBufferRef.current.push(event); - eventTickRef.current(); - }, []); + eventsBufferRef.current.push(event); + eventTickRef.current(); + }, + [eventTickRef.current], + ); return { handleEvent }; }; diff --git a/assets/js/hooks/Mapper/types/signatures.ts b/assets/js/hooks/Mapper/types/signatures.ts index a2dce3dc..17b506ce 100644 --- a/assets/js/hooks/Mapper/types/signatures.ts +++ b/assets/js/hooks/Mapper/types/signatures.ts @@ -29,7 +29,7 @@ export type GroupType = { export type SignatureCustomInfo = { k162Type?: string; - isEOL?: boolean; + time_status?: number; isCrit?: boolean; }; diff --git a/assets/js/hooks/Mapper/useMapperHandlers.ts b/assets/js/hooks/Mapper/useMapperHandlers.ts index 282b21b8..86f12a8b 100644 --- a/assets/js/hooks/Mapper/useMapperHandlers.ts +++ b/assets/js/hooks/Mapper/useMapperHandlers.ts @@ -1,5 +1,5 @@ -import { useEventBuffer } from '@/hooks/Mapper/hooks'; import usePageVisibility from '@/hooks/Mapper/hooks/usePageVisibility.ts'; +import debounce from 'lodash.debounce'; import { MapHandlers } from '@/hooks/Mapper/types/mapHandlers.ts'; import { RefObject, useCallback, useEffect, useRef } from 'react'; @@ -16,23 +16,6 @@ export const useMapperHandlers = (handlerRefs: RefObject[], hooksRe const visibleRef = useRef(visible); visibleRef.current = visible; - // @ts-ignore - const handleBufferedEvent = useCallback(({ type, body }) => { - if (!visibleRef.current) { - return; - } - - handlerRefs.forEach(ref => { - if (!ref.current) { - return; - } - - ref.current?.command(type, body); - }); - }, []); - - const { handleEvent: handleMapEvent } = useEventBuffer(handleBufferedEvent); - // TODO - do not delete THIS code it needs for debug // const [record, setRecord] = useLocalStorageState('record', { // defaultValue: false, @@ -73,6 +56,52 @@ export const useMapperHandlers = (handlerRefs: RefObject[], hooksRe [hooksRef.current], ); + // @ts-ignore + const eventsBufferRef = useRef<{ type; body }[]>([]); + + const eventTick = useCallback( + debounce(() => { + if (eventsBufferRef.current.length === 0) { + return; + } + + const { type, body } = eventsBufferRef.current.shift()!; + handlerRefs.forEach(ref => { + if (!ref.current) { + return; + } + + ref.current?.command(type, body); + }); + + // TODO - do not delete THIS code it needs for debug + // console.log('JOipP', `Tick Buff`, eventsBufferRef.current.length); + + if (eventsBufferRef.current.length > 0) { + eventTick(); + } + }, 10), + [], + ); + const eventTickRef = useRef(eventTick); + eventTickRef.current = eventTick; + + // @ts-ignore + const handleMapEvent = useCallback(({ type, body }) => { + // TODO - do not delete THIS code it needs for debug + // const currentTime = +new Date(); + // const timeDiff = currentTime - prevEventTime; + // prevEventTime = currentTime; + // console.log('JOipP', `IN [${inIndex++}] [${timeDiff}] ${getFormattedTime()}`, { type, body }); + + if (!eventTickRef.current || !visibleRef.current) { + return; + } + + eventsBufferRef.current.push({ type, body }); + eventTickRef.current(); + }, []); + useEffect(() => { if (!visible && !wasHiddenOnce.current) { wasHiddenOnce.current = true; diff --git a/mix.exs b/mix.exs index 745f849a..7fd5e705 100644 --- a/mix.exs +++ b/mix.exs @@ -3,7 +3,7 @@ defmodule WandererApp.MixProject do @source_url "https://github.com/wanderer-industries/wanderer" - @version "1.81.10" + @version "1.81.12" def project do [