Upgrade logs to track all button interactions for debugging
This commit is contained in:
@@ -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(() => {
|
||||||
|
|||||||
@@ -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}
|
||||||
/>
|
/>
|
||||||
)}
|
)}
|
||||||
|
|||||||
Reference in New Issue
Block a user