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 // 3. Conditional Screen Rendering
const renderScreen = () => { return (
switch (currentScreen) { <GestureHandlerRootView style={styles.container}>
case 'camera': <SafeAreaView style={styles.container}>
return ( <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 <CameraScreen
countdownDuration={settings.countdownDuration} countdownDuration={settings.countdownDuration}
onPhotoCaptured={handlePhotoCaptured} onPhotoCaptured={handlePhotoCaptured}
onBurstComplete={handleBurstComplete} onBurstComplete={handleBurstComplete}
onCancel={handleReset} onCancel={handleReset}
isIdle={false} isIdle={currentScreen === 'home'}
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}
onStartBooth={handleStartBooth} onStartBooth={handleStartBooth}
onNavigateToAdmin={handleOpenAdmin} onNavigateToAdmin={handleOpenAdmin}
adminPassword={settings.adminPassword} adminPassword={settings.adminPassword}
@@ -138,15 +106,37 @@ export default function App() {
frameMode={settings.frameMode} frameMode={settings.frameMode}
selectedFrameId={settings.selectedFrameId} selectedFrameId={settings.selectedFrameId}
/> />
); </View>
}
};
return ( {/* Overlay PreviewScreen if active */}
<GestureHandlerRootView style={styles.container}> {currentScreen === 'preview' && (
<SafeAreaView style={styles.container}> <View style={StyleSheet.absoluteFill}>
<StatusBar hidden={true} /> <PreviewScreen
{renderScreen()} photoUris={photoUris}
printerIp={settings.printerIp}
onRetakeLast={handleRetakeLast}