refactor: optimize device settings handlers for better performance

- Refactored the `handleDevChannelChange` and `handleLoopbackOnlyModeChange` functions to use `useCallback` for improved performance and to prevent unnecessary re-renders.
- Consolidated the logic for applying loopback-only mode into a separate `applyLoopbackOnlyMode` function, enhancing code clarity and maintainability.
- Updated the confirmation flow for enabling loopback-only mode to ensure user warnings are displayed appropriately.
This commit is contained in:
Alex Goodkind 2025-05-26 05:02:44 +00:00
parent 771570042c
commit c07fb36f04
No known key found for this signature in database
1 changed files with 48 additions and 39 deletions

View File

@ -116,7 +116,8 @@ export default function SettingsAdvancedRoute() {
[send, setDeveloperMode], [send, setDeveloperMode],
); );
const handleDevChannelChange = (enabled: boolean) => { const handleDevChannelChange = useCallback(
(enabled: boolean) => {
send("setDevChannelState", { enabled }, resp => { send("setDevChannelState", { enabled }, resp => {
if ("error" in resp) { if ("error" in resp) {
notifications.error( notifications.error(
@ -126,19 +127,12 @@ export default function SettingsAdvancedRoute() {
} }
setDevChannel(enabled); setDevChannel(enabled);
}); });
}; },
[send, setDevChannel],
);
const handleLoopbackOnlyModeChange = (enabled: boolean) => { const applyLoopbackOnlyMode = useCallback(
// If trying to enable loopback-only mode, show warning first (enabled: boolean) => {
if (enabled) {
setShowLoopbackWarning(true);
} else {
// If disabling, just proceed
applyLoopbackOnlyMode(false);
}
};
const applyLoopbackOnlyMode = (enabled: boolean) => {
send("setLocalLoopbackOnly", { enabled }, resp => { send("setLocalLoopbackOnly", { enabled }, resp => {
if ("error" in resp) { if ("error" in resp) {
notifications.error( notifications.error(
@ -157,12 +151,27 @@ export default function SettingsAdvancedRoute() {
); );
} }
}); });
}; },
[send, setLocalLoopbackOnly],
);
const confirmLoopbackModeEnable = () => { const handleLoopbackOnlyModeChange = useCallback(
(enabled: boolean) => {
// If trying to enable loopback-only mode, show warning first
if (enabled) {
setShowLoopbackWarning(true);
} else {
// If disabling, just proceed
applyLoopbackOnlyMode(false);
}
},
[applyLoopbackOnlyMode, setShowLoopbackWarning],
);
const confirmLoopbackModeEnable = useCallback(() => {
applyLoopbackOnlyMode(true); applyLoopbackOnlyMode(true);
setShowLoopbackWarning(false); setShowLoopbackWarning(false);
}; }, [applyLoopbackOnlyMode, setShowLoopbackWarning]);
return ( return (
<div className="space-y-4"> <div className="space-y-4">