perf(booth): optimize assets and result flow
WebP reduces UI payload; JPEG keeps portrait saves compatible.\nFinish ends the visit without prompting another portrait.
This commit is contained in:
1 parent
56da9c86d2
commit
6772e0cf37
41 files changed
+225
-97
No files matched your search
+17
-3
@@ -9,6 +9,7 @@ import { ConfirmScreen } from "@/components/screens/ConfirmScreen";
|
||||
import { StyleScreen } from "@/components/screens/StyleScreen";
|
||||
import { LoadingScreen } from "@/components/screens/LoadingScreen";
|
||||
import { ResultScreen } from "@/components/screens/ResultScreen";
|
||||
import { FinishedScreen } from "@/components/screens/FinishedScreen";
|
||||
import { RateLimitedScreen } from "@/components/screens/RateLimitedScreen";
|
||||
import { BoothConfig, BoothStyle, ScreenState } from "@/types/booth";
|
||||
import { I18nProvider, useI18n } from "@/lib/i18n";
|
||||
@@ -50,9 +51,11 @@ function PhotoBoothApp() {
|
||||
const params = new URLSearchParams(window.location.search);
|
||||
const previewScreen = params.get("preview") as ScreenState | null;
|
||||
if (previewScreen === "result") {
|
||||
const previewImg = params.get("image") || "/assets/styles/jack_o_lantern_sensei.jpg";
|
||||
const previewImg = params.get("image") || "/assets/styles/jack_o_lantern_sensei.webp";
|
||||
setResultImage(previewImg);
|
||||
setScreen("result");
|
||||
} else if (previewScreen === "finished") {
|
||||
setScreen("finished");
|
||||
}
|
||||
}
|
||||
})
|
||||
@@ -63,7 +66,7 @@ function PhotoBoothApp() {
|
||||
if (idleTimerRef.current) {
|
||||
clearTimeout(idleTimerRef.current);
|
||||
}
|
||||
if (!config?.kiosk?.enableAutoReset || screen === "standby") {
|
||||
if (!config?.kiosk?.enableAutoReset || screen === "standby" || screen === "finished") {
|
||||
return;
|
||||
}
|
||||
const timeoutMs = (config.kiosk.idleTimeoutSeconds || 90) * 1000;
|
||||
@@ -178,6 +181,15 @@ function PhotoBoothApp() {
|
||||
setScreen("standby");
|
||||
};
|
||||
|
||||
const handleFinish = () => {
|
||||
setCapturedPhoto(null);
|
||||
setSelectedStyle(null);
|
||||
setResultImage(null);
|
||||
setErrorMessage(null);
|
||||
setSafetyWarning(null);
|
||||
setScreen("finished");
|
||||
};
|
||||
|
||||
if (!config) {
|
||||
return (
|
||||
<div className="flex h-screen w-screen items-center justify-center bg-[#090314] text-white">
|
||||
@@ -246,10 +258,12 @@ function PhotoBoothApp() {
|
||||
config={config}
|
||||
resultImageUrl={resultImage}
|
||||
providerInfo={providerInfo}
|
||||
onStartOver={handleStartOver}
|
||||
onFinish={handleFinish}
|
||||
/>
|
||||
)}
|
||||
|
||||
{screen === "finished" && <FinishedScreen />}
|
||||
|
||||
{screen === "rate_limited" && (
|
||||
<RateLimitedScreen
|
||||
config={config}
|
||||
|
||||
Reference in new issue
Block a user