Upgrade logs to track all button interactions for debugging

This commit is contained in:
2026-06-01 11:28:12 +02:00
parent 13e4c734d6
commit 4d3d2f93d7
2 changed files with 44 additions and 8 deletions
+3
View File
@@ -205,6 +205,7 @@ export default function CameraScreen({
// Cancel capture process // Cancel capture process
const handleLocalCancel = async () => { const handleLocalCancel = async () => {
logger.log('Action: Cancelled camera burst capture');
isCancelledRef.current = true; isCancelledRef.current = true;
if (burstTimerRef.current) clearTimeout(burstTimerRef.current); if (burstTimerRef.current) clearTimeout(burstTimerRef.current);
if (countdownTimerRef.current) clearTimeout(countdownTimerRef.current); if (countdownTimerRef.current) clearTimeout(countdownTimerRef.current);
@@ -380,12 +381,14 @@ export default function CameraScreen({
}; };
const handleSettingsTap = () => { const handleSettingsTap = () => {
logger.log('Action: Tapped settings button');
setEnteredPassword(''); setEnteredPassword('');
setErrorText(''); setErrorText('');
setPasswordModalVisible(true); setPasswordModalVisible(true);
}; };
const handlePasswordSubmit = () => { const handlePasswordSubmit = () => {
logger.log(`Action: Submitted admin password (correct: ${enteredPassword === adminPassword})`);
if (enteredPassword === adminPassword) { if (enteredPassword === adminPassword) {
setPasswordModalVisible(false); setPasswordModalVisible(false);
setTimeout(() => { setTimeout(() => {
+39 -6
View File
@@ -162,14 +162,17 @@ export default function PreviewScreen({
}, []); }, []);
const handleAddEmoji = useCallback((emoji: string) => { const handleAddEmoji = useCallback((emoji: string) => {
logger.log(`Action: Added emoji sticker: ${emoji}`);
addSticker('emoji', emoji); addSticker('emoji', emoji);
}, [addSticker]); }, [addSticker]);
const handleAddDateSticker = useCallback((format: 'date' | 'datetime') => { const handleAddDateSticker = useCallback((format: 'date' | 'datetime') => {
logger.log(`Action: Added date sticker: ${format}`);
addSticker('text', formatDate(format)); addSticker('text', formatDate(format));
}, [addSticker, formatDate]); }, [addSticker, formatDate]);
const handleAddEventSticker = useCallback(() => { const handleAddEventSticker = useCallback(() => {
logger.log('Action: Added event sticker');
const date = formatDate('date'); const date = formatDate('date');
addSticker('text', `${eventText}${date}`); addSticker('text', `${eventText}${date}`);
}, [addSticker, formatDate, eventText]); }, [addSticker, formatDate, eventText]);
@@ -179,6 +182,7 @@ export default function PreviewScreen({
}, []); }, []);
const handleStickerDelete = useCallback((id: string) => { const handleStickerDelete = useCallback((id: string) => {
logger.log(`Action: Deleted sticker: ${id}`);
setStickers((prev) => prev.filter((s) => s.id !== id)); setStickers((prev) => prev.filter((s) => s.id !== id));
setSelectedStickerId(null); setSelectedStickerId(null);
}, []); }, []);
@@ -227,6 +231,7 @@ export default function PreviewScreen({
// ── Actions ── // ── Actions ──
const handlePrint = async () => { const handlePrint = async () => {
logger.log('Action: Clicked Print button');
if (idleTimerRef.current) clearTimeout(idleTimerRef.current); if (idleTimerRef.current) clearTimeout(idleTimerRef.current);
if (!mountedRef.current) return; if (!mountedRef.current) return;
if (isProcessing) return; if (isProcessing) return;
@@ -262,6 +267,7 @@ export default function PreviewScreen({
// Saves to gallery without printing // Saves to gallery without printing
const handleSaveOnly = async () => { const handleSaveOnly = async () => {
logger.log('Action: Clicked Save button');
if (idleTimerRef.current) clearTimeout(idleTimerRef.current); if (idleTimerRef.current) clearTimeout(idleTimerRef.current);
if (!mountedRef.current) return; if (!mountedRef.current) return;
if (isProcessing) return; if (isProcessing) return;
@@ -342,6 +348,7 @@ export default function PreviewScreen({
}, [resetIdleTimer]); }, [resetIdleTimer]);
const handleRetakeClick = async () => { const handleRetakeClick = async () => {
logger.log('Action: Clicked Retake button');
if (idleTimerRef.current) clearTimeout(idleTimerRef.current); if (idleTimerRef.current) clearTimeout(idleTimerRef.current);
if (!mountedRef.current) return; if (!mountedRef.current) return;
if (isProcessing) return; if (isProcessing) return;
@@ -511,7 +518,7 @@ export default function PreviewScreen({
<View style={styles.layoutSelector}> <View style={styles.layoutSelector}>
<TouchableOpacity <TouchableOpacity
style={[styles.layoutBtn, layout === 'single' && styles.layoutBtnActive]} style={[styles.layoutBtn, layout === 'single' && styles.layoutBtnActive]}
onPress={() => setLayout('single')} onPress={() => { logger.log('Action: Selected layout single'); setLayout('single'); }}
> >
<Text style={styles.layoutBtnText}>Einzelbild</Text> <Text style={styles.layoutBtnText}>Einzelbild</Text>
</TouchableOpacity> </TouchableOpacity>
@@ -523,7 +530,7 @@ export default function PreviewScreen({
layout === 'duo' && styles.layoutBtnActive, layout === 'duo' && styles.layoutBtnActive,
]} ]}
disabled={photoUris.length < 2} disabled={photoUris.length < 2}
onPress={() => setLayout('duo')} onPress={() => { logger.log('Action: Selected layout duo'); setLayout('duo'); }}
> >
<Text style={styles.layoutBtnText}>Duo (2)</Text> <Text style={styles.layoutBtnText}>Duo (2)</Text>
</TouchableOpacity> </TouchableOpacity>
@@ -535,7 +542,7 @@ export default function PreviewScreen({
layout === 'strip' && styles.layoutBtnActive, layout === 'strip' && styles.layoutBtnActive,
]} ]}
disabled={photoUris.length < 3} disabled={photoUris.length < 3}
onPress={() => setLayout('strip')} onPress={() => { logger.log('Action: Selected layout strip'); setLayout('strip'); }}
> >
<Text style={styles.layoutBtnText}>Streifen (3)</Text> <Text style={styles.layoutBtnText}>Streifen (3)</Text>
</TouchableOpacity> </TouchableOpacity>
@@ -547,7 +554,7 @@ export default function PreviewScreen({
layout === 'grid' && styles.layoutBtnActive, layout === 'grid' && styles.layoutBtnActive,
]} ]}
disabled={photoUris.length < 4} disabled={photoUris.length < 4}
onPress={() => setLayout('grid')} onPress={() => { logger.log('Action: Selected layout grid'); setLayout('grid'); }}
> >
<Text style={styles.layoutBtnText}>Raster (4)</Text> <Text style={styles.layoutBtnText}>Raster (4)</Text>
</TouchableOpacity> </TouchableOpacity>
@@ -561,7 +568,7 @@ export default function PreviewScreen({
<View style={styles.editToolsRow}> <View style={styles.editToolsRow}>
<TouchableOpacity <TouchableOpacity
style={[styles.editToolBtn, showStickerTray && styles.editToolBtnActive]} style={[styles.editToolBtn, showStickerTray && styles.editToolBtnActive]}
onPress={() => setShowStickerTray(!showStickerTray)} onPress={() => { logger.log(`Action: Toggled sticker tray ${!showStickerTray}`); setShowStickerTray(!showStickerTray); }}
> >
<FontAwesomeIcon <FontAwesomeIcon
icon={faFaceGrinStars} icon={faFaceGrinStars}
@@ -573,12 +580,35 @@ export default function PreviewScreen({
</Text> </Text>
</TouchableOpacity> </TouchableOpacity>
<TouchableOpacity
style={[styles.editToolBtn, dateOverlay !== 'off' && styles.editToolBtnActive]}
onPress={() => {
setDateOverlay((prev) => {
const nextMode = prev === 'off' ? 'date' : prev === 'date' ? 'datetime' : 'off';
logger.log(`Action: Toggled date overlay to ${nextMode}`);
return nextMode;
});
}}
>
<FontAwesomeIcon
icon={faCalendarDays}
size={16}
color={dateOverlay !== 'off' ? THEME.colors.text : THEME.colors.accent}
/>
<Text style={[styles.editToolText, dateOverlay !== 'off' && styles.editToolTextActive]}>
Datum
</Text>
</TouchableOpacity>
{frameMode === 'available' && photoUris.length === 1 && ( {frameMode === 'available' && photoUris.length === 1 && (
<TouchableOpacity <TouchableOpacity
style={[styles.editToolBtn, selectedFrameId !== null && styles.editToolBtnActive]} style={[styles.editToolBtn, selectedFrameId !== null && styles.editToolBtnActive]}
onPress={() => { onPress={() => {
if (selectedFrameId !== null) { if (selectedFrameId !== null) {
logger.log('Action: Removed frame');
setSelectedFrameId(null); setSelectedFrameId(null);
} else {
logger.log('Action: Toggled frame selection');
} }
// FramePicker is shown below // FramePicker is shown below
}} }}
@@ -599,7 +629,10 @@ export default function PreviewScreen({
{frameMode === 'available' && photoUris.length === 1 && ( {frameMode === 'available' && photoUris.length === 1 && (
<FramePicker <FramePicker
selectedFrameId={selectedFrameId} selectedFrameId={selectedFrameId}
onSelectFrame={setSelectedFrameId} onSelectFrame={(id) => {
logger.log(`Action: Selected frame ID: ${id}`);
setSelectedFrameId(id);
}}
availableFrameIds={availableFrameIds} availableFrameIds={availableFrameIds}
/> />
)} )}