mirror of
https://github.com/wanderer-industries/wanderer
synced 2025-11-06 17:34:27 +00:00
Some checks failed
Build / 🚀 Deploy to test env (fly.io) (push) Has been cancelled
Build / Manual Approval (push) Has been cancelled
Build / 🛠 Build (1.17, 18.x, 27) (push) Has been cancelled
Build / 🛠 Build Docker Images (linux/amd64) (push) Has been cancelled
Build / 🛠 Build Docker Images (linux/arm64) (push) Has been cancelled
Build / merge (push) Has been cancelled
Build / 🏷 Create Release (push) Has been cancelled
43 lines
1.1 KiB
TypeScript
43 lines
1.1 KiB
TypeScript
import { useEffect, useState, useCallback } from 'react';
|
|
import { useMapEventListener } from '@/hooks/Mapper/events';
|
|
import { Commands } from '@/hooks/Mapper/types';
|
|
|
|
interface Kill {
|
|
solar_system_id: number | string;
|
|
kills: number;
|
|
}
|
|
|
|
interface MapEvent {
|
|
name: Commands;
|
|
data?: any;
|
|
payload?: Kill[];
|
|
}
|
|
|
|
export function useNodeKillsCount(
|
|
systemId: number | string,
|
|
initialKillsCount: number | null
|
|
): number | null {
|
|
const [killsCount, setKillsCount] = useState<number | null>(initialKillsCount);
|
|
|
|
useEffect(() => {
|
|
setKillsCount(initialKillsCount);
|
|
}, [initialKillsCount]);
|
|
|
|
const handleEvent = useCallback((event: MapEvent): boolean => {
|
|
if (event.name === Commands.killsUpdated && Array.isArray(event.payload)) {
|
|
const killForSystem = event.payload.find(
|
|
kill => kill.solar_system_id.toString() === systemId.toString()
|
|
);
|
|
if (killForSystem && typeof killForSystem.kills === 'number') {
|
|
setKillsCount(killForSystem.kills);
|
|
}
|
|
return true;
|
|
}
|
|
return false;
|
|
}, [systemId]);
|
|
|
|
useMapEventListener(handleEvent);
|
|
|
|
return killsCount;
|
|
}
|