Compare commits

...
2 Commits
26 changed files with 309 additions and 311 deletions
+19 -51
View File
@@ -81,54 +81,22 @@ export default function App() {
};
// 3. Conditional Screen Rendering
const renderScreen = () => {
switch (currentScreen) {
case 'camera':
return (
return (
<GestureHandlerRootView style={styles.container}>
<SafeAreaView style={styles.container}>
<StatusBar hidden={true} />
{/*
Keep CameraScreen ALWAYS mounted in the background to prevent
Android expo-camera hardware crashes when unmounting right after capture
*/}
<View style={StyleSheet.absoluteFill}>
<CameraScreen
countdownDuration={settings.countdownDuration}
onPhotoCaptured={handlePhotoCaptured}
onBurstComplete={handleBurstComplete}
onCancel={handleReset}
isIdle={false}
burstCount={settings.burstCount}
burstIntervalSec={settings.burstIntervalSec}
frameMode={settings.frameMode}
selectedFrameId={settings.selectedFrameId}
/>
);
case 'preview':
return (
<PreviewScreen
photoUris={photoUris}
printerIp={settings.printerIp}
onRetakeLast={handleRetakeLast}
onAddAnother={handleAddAnother}
onReset={handleReset}
frameMode={settings.frameMode}
initialFrameId={settings.selectedFrameId}
availableFrameIds={settings.availableFrameIds}
dateOverlay={settings.dateOverlay}
dateOverlayPosition={settings.dateOverlayPosition}
eventText={settings.eventText}
/>
);
case 'admin':
return (
<AdminScreen
currentSettings={settings}
onSave={handleSaveSettings}
onClose={() => setCurrentScreen('home')}
/>
);
default:
return (
<CameraScreen
countdownDuration={settings.countdownDuration}
onPhotoCaptured={handlePhotoCaptured}
onBurstComplete={handleBurstComplete}
onCancel={handleReset}
isIdle={true}
isIdle={currentScreen === 'home'}
onStartBooth={handleStartBooth}
onNavigateToAdmin={handleOpenAdmin}
adminPassword={settings.adminPassword}
@@ -138,15 +106,37 @@ export default function App() {
frameMode={settings.frameMode}
selectedFrameId={settings.selectedFrameId}
/>
);
}
};
</View>
return (
<GestureHandlerRootView style={styles.container}>
<SafeAreaView style={styles.container}>
<StatusBar hidden={true} />
{renderScreen()}
{/* Overlay PreviewScreen if active */}
{currentScreen === 'preview' && (
<View style={StyleSheet.absoluteFill}>
<PreviewScreen
photoUris={photoUris}
printerIp={settings.printerIp}
onRetakeLast={handleRetakeLast}