feat: Implement UI enhancements and fix burst bug

This commit is contained in:
2026-06-10 14:43:06 +02:00
parent ac7542d2f9
commit 7fd5b22879
8 changed files with 168 additions and 28 deletions
+17 -4
View File
@@ -6,6 +6,7 @@ import {
Image,
TouchableOpacity,
ActivityIndicator,
BackHandler,
} from 'react-native';
import ViewShot from 'react-native-view-shot';
import { LinearGradient } from 'expo-linear-gradient';
@@ -96,6 +97,18 @@ export default function PreviewScreen({
// Idle Timer state
const idleTimerRef = useRef<any>(null);
// Hardware Back Press
useEffect(() => {
const onBackPress = () => {
onReset();
return true; // Prevent default behavior (closing the app)
};
BackHandler.addEventListener('hardwareBackPress', onBackPress);
return () => {
BackHandler.removeEventListener('hardwareBackPress', onBackPress);
};
}, [onReset]);
// Frame state
const [selectedFrameId, setSelectedFrameId] = useState<string | null>(
frameMode === 'always' ? initialFrameId : null
@@ -106,7 +119,7 @@ export default function PreviewScreen({
const currentPhoto = photoUris[photoUris.length - 1];
// Get the active frame asset
const activeFrame = selectedFrameId && photoUris.length === 1
const activeFrame = selectedFrameId
? FRAMES.find((f) => f.id === selectedFrameId)
: null;
@@ -578,7 +591,7 @@ export default function PreviewScreen({
</Text>
</TouchableOpacity>
{frameMode === 'available' && photoUris.length === 1 && (
{frameMode === 'available' && (
<TouchableOpacity
style={[styles.editToolBtn, selectedFrameId !== null && styles.editToolBtnActive]}
onPress={() => {
@@ -603,8 +616,8 @@ export default function PreviewScreen({
)}
</View>
{/* Frame Picker (when mode = available and only 1 photo) */}
{frameMode === 'available' && photoUris.length === 1 && (
{/* Frame Picker (when mode = available) */}
{frameMode === 'available' && (
<FramePicker
selectedFrameId={selectedFrameId}
onSelectFrame={(id) => {