Add deep debugging logs to PreviewScreen to trace fatal crashes during render/image load

This commit is contained in:
2026-05-31 20:46:06 +02:00
parent 63df4ae4f0
commit 858674c9d4
2 changed files with 33 additions and 4 deletions
+3 -1
View File
@@ -10,7 +10,8 @@ import {
TouchableWithoutFeedback, TouchableWithoutFeedback,
} from 'react-native'; } from 'react-native';
import { CameraView, useCameraPermissions } from 'expo-camera'; import { CameraView, useCameraPermissions } from 'expo-camera';
import { File, Paths } from 'expo-file-system'; import * as FileSystem from 'expo-file-system';
import { File, Paths } from 'expo-file-system/next';
import * as ImageManipulator from 'expo-image-manipulator'; import * as ImageManipulator from 'expo-image-manipulator';
import { LinearGradient } from 'expo-linear-gradient'; import { LinearGradient } from 'expo-linear-gradient';
import Animated, { import Animated, {
@@ -282,6 +283,7 @@ export default function CameraScreen({
capturedUri = path; capturedUri = path;
} else { } else {
// Fallback Camera Capture // Fallback Camera Capture
logger.log(`Capturing from built-in camera fallback. Size constraint: ${pictureSize || 'default'}`);
console.log('Capturing from built-in camera fallback...'); console.log('Capturing from built-in camera fallback...');
if (expoCameraRef.current) { if (expoCameraRef.current) {
const photo = await expoCameraRef.current.takePictureAsync({ const photo = await expoCameraRef.current.takePictureAsync({
+30 -3
View File
@@ -65,6 +65,10 @@ export default function PreviewScreen({
const [layout, setLayout] = useState<CollageLayout>('single'); const [layout, setLayout] = useState<CollageLayout>('single');
const [isProcessing, setIsProcessing] = useState<boolean>(false); const [isProcessing, setIsProcessing] = useState<boolean>(false);
const [statusMessage, setStatusMessage] = useState<string>(''); const [statusMessage, setStatusMessage] = useState<string>('');
React.useEffect(() => {
logger.log('PreviewScreen: render function executed');
});
// Sticker state // Sticker state
const [stickers, setStickers] = useState<StickerData[]>([]); const [stickers, setStickers] = useState<StickerData[]>([]);
@@ -320,7 +324,14 @@ export default function PreviewScreen({
<View style={[styles.collageCanvas, styles.stripCanvas]}> <View style={[styles.collageCanvas, styles.stripCanvas]}>
<View style={styles.stripContent}> <View style={styles.stripContent}>
{photoUris.slice(-3).map((uri, idx) => ( {photoUris.slice(-3).map((uri, idx) => (
<Image key={idx} source={uri} style={styles.stripImage} contentFit="cover" /> <Image
key={idx}
source={uri}
style={styles.stripImage}
contentFit="cover"
onLoad={() => logger.log(`Image loaded successfully: ${uri}`)}
onError={(e) => logger.error(`Image load failed: ${uri}`, e)}
/>
))} ))}
</View> </View>
<View style={styles.collageFooter}> <View style={styles.collageFooter}>
@@ -334,7 +345,14 @@ export default function PreviewScreen({
<View style={[styles.collageCanvas, styles.gridCanvas]}> <View style={[styles.collageCanvas, styles.gridCanvas]}>
<View style={styles.gridContainer}> <View style={styles.gridContainer}>
{photoUris.slice(-4).map((uri, idx) => ( {photoUris.slice(-4).map((uri, idx) => (
<Image key={idx} source={uri} style={styles.gridImage} contentFit="cover" /> <Image
key={idx}
source={uri}
style={styles.gridImage}
contentFit="cover"
onLoad={() => logger.log(`Grid Image loaded successfully: ${uri}`)}
onError={(e) => logger.error(`Grid Image load failed: ${uri}`, e)}
/>
))} ))}
</View> </View>
<View style={styles.collageFooter}> <View style={styles.collageFooter}>
@@ -347,7 +365,14 @@ export default function PreviewScreen({
<View style={[styles.collageCanvas, styles.duoCanvas]}> <View style={[styles.collageCanvas, styles.duoCanvas]}>
<View style={styles.duoContainer}> <View style={styles.duoContainer}>
{photoUris.slice(-2).map((uri, idx) => ( {photoUris.slice(-2).map((uri, idx) => (
<Image key={idx} source={uri} style={styles.duoImage} contentFit="cover" /> <Image
key={idx}
source={uri}
style={styles.duoImage}
contentFit="cover"
onLoad={() => logger.log(`Duo Image loaded successfully: ${uri}`)}
onError={(e) => logger.error(`Duo Image load failed: ${uri}`, e)}
/>
))} ))}
</View> </View>
<View style={styles.collageFooter}> <View style={styles.collageFooter}>
@@ -362,6 +387,8 @@ export default function PreviewScreen({
source={currentPhoto} source={currentPhoto}
style={styles.singleImage} style={styles.singleImage}
contentFit="cover" contentFit="cover"
onLoad={() => logger.log(`Single Image loaded successfully: ${currentPhoto}`)}
onError={(e) => logger.error(`Single Image load failed: ${currentPhoto}`, e)}
/> />
</View> </View>
); );