From 8a056960bfcfecbaecbd367231161a3db8718a99 Mon Sep 17 00:00:00 2001 From: Andrew Davis <1709934+Savid@users.noreply.github.com> Date: Thu, 3 Apr 2025 23:29:02 +1000 Subject: [PATCH] add useCallback optimizations --- ui/src/routes/devices.$id.settings.macros.tsx | 63 ++++++++++--------- 1 file changed, 34 insertions(+), 29 deletions(-) diff --git a/ui/src/routes/devices.$id.settings.macros.tsx b/ui/src/routes/devices.$id.settings.macros.tsx index 5f08e32..88e59da 100644 --- a/ui/src/routes/devices.$id.settings.macros.tsx +++ b/ui/src/routes/devices.$id.settings.macros.tsx @@ -1,4 +1,4 @@ -import { useEffect, Fragment, useMemo, useState } from "react"; +import { useEffect, Fragment, useMemo, useState, useCallback } from "react"; import { useNavigate } from "react-router-dom"; import { LuPenLine, LuLoader, LuCopy, LuMoveRight, LuCornerDownRight, LuArrowUp, LuArrowDown } from "react-icons/lu"; @@ -35,7 +35,7 @@ export default function SettingsMacrosRoute() { } }, [initialized, loadMacros]); - const handleDuplicateMacro = async (macro: KeySequence) => { + const handleDuplicateMacro = useCallback(async (macro: KeySequence) => { if (!macro?.id || !macro?.name) { notifications.error("Invalid macro data"); return; @@ -67,9 +67,9 @@ export default function SettingsMacrosRoute() { } finally { setActionLoadingId(null); } - }; + }, [isMaxMacrosReached, macros, saveMacros, setActionLoadingId]); - const handleMoveMacro = async (index: number, direction: 'up' | 'down', macroId: string) => { + const handleMoveMacro = useCallback(async (index: number, direction: 'up' | 'down', macroId: string) => { if (!Array.isArray(macros) || macros.length === 0) { notifications.error("No macros available"); return; @@ -96,7 +96,7 @@ export default function SettingsMacrosRoute() { } finally { setActionLoadingId(null); } - }; + }, [macros, saveMacros, setActionLoadingId]); const MacroList = useMemo(() => (
@@ -203,29 +203,33 @@ export default function SettingsMacrosRoute() { return (
- -
- - { macros.length > 0 && ( -
-
- )} -
-
+ {macros.length > 0 && ( + <> + +
+ + { macros.length > 0 && ( +
+
+ )} +
+
+ + )}
{loading && macros.length === 0 ? ( @@ -238,7 +242,8 @@ export default function SettingsMacrosRoute() { /> ) : macros.length === 0 ? (