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
const handleLocalCancel = async () => {
logger.log('Action: Cancelled camera burst capture');
isCancelledRef.current = true;
if (burstTimerRef.current) clearTimeout(burstTimerRef.current);
if (countdownTimerRef.current) clearTimeout(countdownTimerRef.current);
@@ -380,12 +381,14 @@ export default function CameraScreen({
};
const handleSettingsTap = () => {
logger.log('Action: Tapped settings button');
setEnteredPassword('');
setErrorText('');
setPasswordModalVisible(true);
};
const handlePasswordSubmit = () => {
logger.log(`Action: Submitted admin password (correct: ${enteredPassword === adminPassword})`);
if (enteredPassword === adminPassword) {
setPasswordModalVisible(false);
setTimeout(() => {
+39 -6
View File
@@ -162,14 +162,17 @@ export default function PreviewScreen({
}, []);
const handleAddEmoji = useCallback((emoji: string) => {
logger.log(`Action: Added emoji sticker: ${emoji}`);
addSticker('emoji', emoji);
}, [addSticker]);
const handleAddDateSticker = useCallback((format: 'date' | 'datetime') => {
logger.log(`Action: Added date sticker: ${format}`);
addSticker('text', formatDate(format));
}, [addSticker, formatDate]);
const handleAddEventSticker = useCallback(() => {
logger.log('Action: Added event sticker');
const date = formatDate('date');
addSticker('text', `${eventText}${date}`);
}, [addSticker, formatDate, eventText]);
@@ -179,6 +182,7 @@ export default function PreviewScreen({
}, []);
const handleStickerDelete = useCallback((id: string) => {
logger.log(`Action: Deleted sticker: ${id}`);
setStickers((prev) => prev.filter((s) => s.id !== id));
setSelectedStickerId(null);
}, []);
@@ -227,6 +231,7 @@ export default function PreviewScreen({
// ── Actions ──
const handlePrint = async () => {
logger.log('Action: Clicked Print button');
if (idleTimerRef.current) clearTimeout(idleTimerRef.current);
if (!mountedRef.current) return;
if (isProcessing) return;
@@ -262,6 +267,7 @@ export default function PreviewScreen({
// Saves to gallery without printing
const handleSaveOnly = async () => {
logger.log('Action: Clicked Save button');
if (idleTimerRef.current) clearTimeout(idleTimerRef.current);
if (!mountedRef.current) return;
if (isProcessing) return;
@@ -342,6 +348,7 @@ export default function PreviewScreen({
}, [resetIdleTimer]);
const handleRetakeClick = async () => {
logger.log('Action: Clicked Retake button');
if (idleTimerRef.current) clearTimeout(idleTimerRef.current);
if (!mountedRef.current) return;
if (isProcessing) return;
@@ -511,7 +518,7 @@ export default function PreviewScreen({
<View style={styles.layoutSelector}>
<TouchableOpacity
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>
</TouchableOpacity>
@@ -523,7 +530,7 @@ export default function PreviewScreen({
layout === 'duo' && styles.layoutBtnActive,
]}
disabled={photoUris.length < 2}
onPress={() => setLayout('duo')}
onPress={() => { logger.log('Action: Selected layout duo'); setLayout('duo'); }}
>
<Text style={styles.layoutBtnText}>Duo (2)</Text>
</TouchableOpacity>
@@ -535,7 +542,7 @@ export default function PreviewScreen({
layout === 'strip' && styles.layoutBtnActive,
]}
disabled={photoUris.length < 3}
onPress={() => setLayout('strip')}
onPress={() => { logger.log('Action: Selected layout strip'); setLayout('strip'); }}
>
<Text style={styles.layoutBtnText}>Streifen (3)</Text>
</TouchableOpacity>
@@ -547,7 +554,7 @@ export default function PreviewScreen({
layout === 'grid' && styles.layoutBtnActive,
]}
disabled={photoUris.length < 4}
onPress={() => setLayout('grid')}
onPress={() => { logger.log('Action: Selected layout grid'); setLayout('grid'); }}
>
<Text style={styles.layoutBtnText}>Raster (4)</Text>
</TouchableOpacity>
@@ -561,7 +568,7 @@ export default function PreviewScreen({
<View style={styles.editToolsRow}>
<TouchableOpacity
style={[styles.editToolBtn, showStickerTray && styles.editToolBtnActive]}
onPress={() => setShowStickerTray(!showStickerTray)}
onPress={() => { logger.log(`Action: Toggled sticker tray ${!showStickerTray}`); setShowStickerTray(!showStickerTray); }}
>
<FontAwesomeIcon
icon={faFaceGrinStars}
@@ -573,12 +580,35 @@ export default function PreviewScreen({
</Text>
</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 && (
<TouchableOpacity
style={[styles.editToolBtn, selectedFrameId !== null && styles.editToolBtnActive]}
onPress={() => {
if (selectedFrameId !== null) {
logger.log('Action: Removed frame');
setSelectedFrameId(null);
} else {
logger.log('Action: Toggled frame selection');
}
// FramePicker is shown below
}}
@@ -599,7 +629,10 @@ export default function PreviewScreen({
{frameMode === 'available' && photoUris.length === 1 && (
<FramePicker
selectedFrameId={selectedFrameId}
onSelectFrame={setSelectedFrameId}
onSelectFrame={(id) => {
logger.log(`Action: Selected frame ID: ${id}`);
setSelectedFrameId(id);
}}
availableFrameIds={availableFrameIds}
/>
)}