fix(web/menu): debounce menu item selected callback

This commit is contained in:
Luke
2022-07-30 15:52:15 +02:00
committed by Luke
parent a2b5ccb354
commit aa9b1334f2

View File

@@ -95,16 +95,19 @@ const ListMenu: React.FC = () => {
} }
}; };
// TODO: add debounce so that callbacks can't be spammed
useEffect(() => { useEffect(() => {
if (!menu.items[selected]?.value) return; if (!menu.items[selected]?.value) return;
listRefs.current[selected]?.focus(); listRefs.current[selected]?.focus();
fetchNui( // debounces the callback to avoid spam
"changeSelected", const timer = setTimeout(() => {
Array.isArray(menu.items[selected].value) fetchNui(
? menu.items[selected].value[indexStates[selected]] "changeSelected",
: menu.items[selected].value Array.isArray(menu.items[selected].value)
); ? menu.items[selected].value[indexStates[selected]]
: menu.items[selected].value
);
}, 500);
return () => clearTimeout(timer);
}, [selected, menu, indexStates]); }, [selected, menu, indexStates]);
useNuiEvent("setMenu", (data: MenuSettings) => { useNuiEvent("setMenu", (data: MenuSettings) => {