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
[