Add deep debugging logs to PreviewScreen to trace fatal crashes during render/image load
This commit is contained in:
@@ -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({
|
||||||
|
|||||||
@@ -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>
|
||||||
);
|
);
|
||||||
|
|||||||
Reference in New Issue
Block a user