Files
goldenChart/frontend/src/hooks/useIndicatorListOrder.ts
T
2026-05-28 01:26:53 +09:00

38 lines
1.4 KiB
TypeScript

import { useCallback, useEffect, useState } from 'react';
import {
getOrderedSettingsIndicatorTypes,
loadIndicatorListOrder,
mergeIndicatorListOrder,
reorderIndicatorListType,
saveIndicatorListOrder,
} from '../utils/indicatorListOrder';
import { getSettingsIndicatorTypes } from '../utils/indicatorSettingsList';
/** 보조지표 설정 목록 순서 — 드래그 정렬 + localStorage */
export function useIndicatorListOrder(onOrderChange?: (order: string[]) => void) {
const [listOrder, setListOrder] = useState<string[]>(() => getOrderedSettingsIndicatorTypes());
useEffect(() => {
const canonical = getSettingsIndicatorTypes();
setListOrder(prev => mergeIndicatorListOrder(prev.length ? prev : loadIndicatorListOrder(), canonical));
}, []);
const persistOrder = useCallback((next: string[]) => {
const canonical = getSettingsIndicatorTypes();
const merged = mergeIndicatorListOrder(next, canonical);
setListOrder(merged);
saveIndicatorListOrder(merged);
onOrderChange?.(merged);
return merged;
}, [onOrderChange]);
const moveType = useCallback(
(fromType: string, toType: string, position: 'before' | 'after' = 'before') => {
setListOrder(prev => persistOrder(reorderIndicatorListType(prev, fromType, toType, position)));
},
[persistOrder],
);
return { listOrder, persistOrder, moveType, setListOrder };
}