diff --git a/ui/src/hooks/stores.ts b/ui/src/hooks/stores.ts index c56cb5f8..0be28425 100644 --- a/ui/src/hooks/stores.ts +++ b/ui/src/hooks/stores.ts @@ -603,6 +603,9 @@ export interface UpdateState { updateErrorMessage: string | null; setUpdateErrorMessage: (errorMessage: string) => void; + + shouldReload: boolean; + setShouldReload: (reloadRequired: boolean) => void; } export const useUpdateStore = create(set => ({ @@ -640,6 +643,9 @@ export const useUpdateStore = create(set => ({ updateErrorMessage: null, setUpdateErrorMessage: (errorMessage: string) => set({ updateErrorMessage: errorMessage }), + + shouldReload: false, + setShouldReload: (reloadRequired: boolean) => set({ shouldReload: reloadRequired }), })); export type UsbConfigModalViews = "updateUsbConfig" | "updateUsbConfigSuccess"; @@ -850,12 +856,12 @@ export interface MacrosState { loadMacros: () => Promise; saveMacros: (macros: KeySequence[]) => Promise; sendFn: - | (( - method: string, - params: unknown, - callback?: ((resp: JsonRpcResponse) => void) | undefined, - ) => void) - | null; + | (( + method: string, + params: unknown, + callback?: ((resp: JsonRpcResponse) => void) | undefined, + ) => void) + | null; setSendFn: ( sendFn: ( method: string, diff --git a/ui/src/routes/devices.$id.settings.general.update.tsx b/ui/src/routes/devices.$id.settings.general.update.tsx index 31aac2a0..effcf6d9 100644 --- a/ui/src/routes/devices.$id.settings.general.update.tsx +++ b/ui/src/routes/devices.$id.settings.general.update.tsx @@ -19,7 +19,7 @@ export default function SettingsGeneralUpdateRoute() { const [searchParams] = useSearchParams(); const { updateSuccess } = location.state || {}; - const { setModalView, otaState } = useUpdateStore(); + const { setModalView, otaState, shouldReload, setShouldReload } = useUpdateStore(); const { send } = useJsonRpc(); const customAppVersion = useMemo(() => searchParams.get("custom_app_version") || undefined, [searchParams]); @@ -28,15 +28,19 @@ export default function SettingsGeneralUpdateRoute() { const onClose = useCallback(async () => { navigate(".."); // back to the devices.$id.settings page - // Add 1s delay between navigation and calling reload() to prevent reload from interrupting the navigation. - await sleep(1000); - window.location.reload(); // force a full reload to ensure the current device/cloud UI version is loaded - }, [navigate]); + + if (shouldReload) { + setShouldReload(false); + await sleep(1000); // Add 1s delay between navigation and calling reload() to prevent reload from interrupting the navigation. + window.location.reload(); // force a full reload to ensure the current device/cloud UI version is loaded + } + }, [navigate, setShouldReload, shouldReload]); const onConfirmUpdate = useCallback(() => { + setShouldReload(true); send("tryUpdate", {}); setModalView("updating"); - }, [send, setModalView]); + }, [send, setModalView, setShouldReload]); const onConfirmCustomUpdate = useCallback((appTargetVersion?: string, systemTargetVersion?: string) => { const components = []; diff --git a/web.go b/web.go index bef5a741..667dee1c 100644 --- a/web.go +++ b/web.go @@ -814,7 +814,7 @@ func handleSendWOLMagicPacket(c *gin.Context) { inputMacAddr := c.Param("mac-addr") macAddr, err := net.ParseMAC(inputMacAddr) if err != nil { - logger.Warn().Err(err).Str("sendWol", inputMacAddr).Msg("Invalid mac address provided") + logger.Warn().Err(err).Str("inputMacAddr", inputMacAddr).Msg("Invalid MAC address provided") c.String(http.StatusBadRequest, "Invalid mac address provided") return } @@ -822,7 +822,7 @@ func handleSendWOLMagicPacket(c *gin.Context) { macAddrString := macAddr.String() err = rpcSendWOLMagicPacket(macAddrString) if err != nil { - logger.Warn().Err(err).Str("sendWOL", macAddrString).Msg("Failed to send WOL magic packet") + logger.Warn().Err(err).Str("macAddrString", macAddrString).Msg("Failed to send WOL magic packet") c.String(http.StatusInternalServerError, "Failed to send WOL to %s: %v", macAddrString, err) return }