From aa9b1334f216ebdb3bd87f229ea8120eef7433d6 Mon Sep 17 00:00:00 2001 From: Luke Date: Sat, 30 Jul 2022 15:52:15 +0200 Subject: [PATCH] fix(web/menu): debounce menu item selected callback --- web/src/features/menu/list/index.tsx | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/web/src/features/menu/list/index.tsx b/web/src/features/menu/list/index.tsx index fa2ea37..775d7c0 100644 --- a/web/src/features/menu/list/index.tsx +++ b/web/src/features/menu/list/index.tsx @@ -95,16 +95,19 @@ const ListMenu: React.FC = () => { } }; - // TODO: add debounce so that callbacks can't be spammed useEffect(() => { if (!menu.items[selected]?.value) return; listRefs.current[selected]?.focus(); - fetchNui( - "changeSelected", - Array.isArray(menu.items[selected].value) - ? menu.items[selected].value[indexStates[selected]] - : menu.items[selected].value - ); + // debounces the callback to avoid spam + const timer = setTimeout(() => { + fetchNui( + "changeSelected", + Array.isArray(menu.items[selected].value) + ? menu.items[selected].value[indexStates[selected]] + : menu.items[selected].value + ); + }, 500); + return () => clearTimeout(timer); }, [selected, menu, indexStates]); useNuiEvent("setMenu", (data: MenuSettings) => {