Update camera screens, configuration, and build setup

This commit is contained in:
2026-05-30 19:13:04 +02:00
parent d8e397eac1
commit 305d8fd449
14 changed files with 144 additions and 373 deletions
+11 -4
View File
@@ -9,6 +9,7 @@ import {
Switch,
Alert,
} from 'react-native';
import Animated, { FadeIn, FadeOut } from 'react-native-reanimated';
import { THEME } from '../styles/theme';
import KioskMode from '../../modules/kiosk-mode';
import { AppSettings, saveSettings } from '../services/settings';
@@ -82,10 +83,16 @@ export default function AdminScreen({ currentSettings, onSave, onClose }: AdminS
return;
}
if (!printerIp.trim()) {
const ipTrimmed = printerIp.trim();
const ipRegex = /^(?:[0-9]{1,3}\.){3}[0-9]{1,3}$/;
if (!ipTrimmed) {
Alert.alert('Ungültige Eingabe', 'Die Drucker-IP-Adresse darf nicht leer sein.');
return;
}
if (!ipRegex.test(ipTrimmed)) {
Alert.alert('Ungültige Eingabe', 'Bitte gib eine gültige IP-Adresse ein (z.B. 192.168.1.100).');
return;
}
if (!password.trim() || password.length < 4) {
Alert.alert('Ungültige Eingabe', 'Das Admin-Passwort muss mindestens 4 Ziffern lang sein.');
@@ -94,7 +101,7 @@ export default function AdminScreen({ currentSettings, onSave, onClose }: AdminS
const updated: AppSettings = {
countdownDuration: duration,
printerIp: printerIp.trim(),
printerIp: ipTrimmed,
adminPassword: password.trim(),
kioskModeEnabled: kioskActive,
};
@@ -109,7 +116,7 @@ export default function AdminScreen({ currentSettings, onSave, onClose }: AdminS
};
return (
<View style={styles.container}>
<Animated.View entering={FadeIn.duration(400)} exiting={FadeOut.duration(300)} style={styles.container}>
<View style={styles.headerRow}>
<Text style={styles.title}>SCHNAPPIX EINSTELLUNGEN</Text>
<TouchableOpacity style={styles.closeBtn} onPress={onClose}>
@@ -207,7 +214,7 @@ export default function AdminScreen({ currentSettings, onSave, onClose }: AdminS
<Text style={styles.saveBtnText}>EINSTELLUNGEN SPEICHERN</Text>
</TouchableOpacity>
</ScrollView>
</View>
</Animated.View>
);
}