diff --git a/src/app/App.jsx b/src/app/App.jsx
index 8aceb77..f62c5e9 100644
--- a/src/app/App.jsx
+++ b/src/app/App.jsx
@@ -5,7 +5,7 @@ import fastbootPorts from '../assets/fastboot-ports.svg'
import zadigCreateNewDevice from '../assets/zadig_create_new_device.png'
import zadigForm from '../assets/zadig_form.png'
-const Flash = lazy(() => import('./Flash'));
+const Flash = lazy(() => import('./Flash.client'));
export default function App() {
const version = import.meta.env.VITE_PUBLIC_GIT_SHA || 'dev'
diff --git a/src/app/Flash.jsx b/src/app/Flash.client.jsx
similarity index 92%
rename from src/app/Flash.jsx
rename to src/app/Flash.client.jsx
index d7c544d..614fa09 100644
--- a/src/app/Flash.jsx
+++ b/src/app/Flash.client.jsx
@@ -1,4 +1,6 @@
-import { useCallback } from 'react'
+'use client';
+
+import { useCallback, useEffect } from 'react'
import { Step, Error, useFastboot } from '@/utils/fastboot'
@@ -16,11 +18,6 @@ import systemUpdate from '@/assets/system_update_c3.svg'
const steps = {
- [Step.INITIALIZING]: {
- status: 'Initializing...',
- bgColor: 'bg-gray-400 dark:bg-gray-700',
- icon: cloud,
- },
[Step.READY]: {
status: 'Ready',
description: 'Tap the button above to begin',
@@ -189,10 +186,6 @@ export default function Flash() {
serial,
} = useFastboot()
- const handleContinue = useCallback(() => {
- onContinue?.()
- }, [onContinue])
-
const handleRetry = useCallback(() => {
onRetry?.()
}, [onRetry])
@@ -214,18 +207,24 @@ export default function Flash() {
}
// warn the user if they try to leave the page while flashing
- if (Step.DOWNLOADING <= step && step <= Step.ERASING) {
- window.addEventListener("beforeunload", beforeUnloadListener, { capture: true })
- } else {
- window.removeEventListener("beforeunload", beforeUnloadListener, { capture: true })
- }
+ useEffect(() => {
+ if (Step.DOWNLOADING <= step && step <= Step.ERASING) {
+ window.addEventListener("beforeunload", beforeUnloadListener, { capture: true })
+ } else {
+ window.removeEventListener("beforeunload", beforeUnloadListener, { capture: true })
+ }
+
+ return () => {
+ window.removeEventListener("beforeunload", beforeUnloadListener, { capture: true })
+ }
+ }, [step])
return (
-
{title}
-
{description}
+
+ {title}
+
+
+ {description}
+
{error && (