"use client"; import { useEffect, useState } from "react"; import { STOCK_TAKE_QTY_GAP_WARN_PERCENT } from "./stockTakeQtyGapWarning"; import { fetchStockTakeQtyGapWarnPercent, STOCK_TAKE_QTY_GAP_SETTING_EVENT, } from "./qtyGapWarnSettingClient"; /** Warning threshold from settings (`STOCK_TAKE.qtyGapWarnPercent`), default 50. */ export function useStockTakeQtyGapWarnPercent(): number { const [percent, setPercent] = useState(STOCK_TAKE_QTY_GAP_WARN_PERCENT); useEffect(() => { let cancelled = false; fetchStockTakeQtyGapWarnPercent() .then((n) => { if (!cancelled) setPercent(n); }) .catch(() => {}); const onChange = (event: Event) => { const next = (event as CustomEvent).detail; if (Number.isFinite(next)) setPercent(next); }; window.addEventListener(STOCK_TAKE_QTY_GAP_SETTING_EVENT, onChange); return () => { cancelled = true; window.removeEventListener(STOCK_TAKE_QTY_GAP_SETTING_EVENT, onChange); }; }, []); return percent; }