import * as Haptics from 'expo-haptics'; import { Stack, useRouter } from 'expo-router'; import React from 'react'; import { ScrollView, View, Text, Pressable, Alert } from 'react-native'; import { SafeAreaView } from 'react-native-safe-area-context'; import { Icon } from '@/components/Icon'; import { useResponsive } from '@/hooks/useResponsive'; import { useStore } from '@/store/store'; import { getThemeColors } from '@/utils/theme'; export default function Sequences() { const router = useRouter(); const sequences = useStore((state) => state.sequences); const moods = useStore((state) => state.moods); const settings = useStore((state) => state.settings); const removeSequence = useStore((state) => state.removeSequence); const theme = getThemeColors(); const responsive = useResponsive(); const handleHaptic = () => { if (settings.hapticFeedback) { Haptics.impactAsync(Haptics.ImpactFeedbackStyle.Light); } }; const handleDelete = (id: string, name: string) => { Alert.alert('Sequenz löschen', `Möchtest du "${name}" wirklich löschen?`, [ { text: 'Abbrechen', style: 'cancel' }, { text: 'Löschen', style: 'destructive', onPress: () => { handleHaptic(); removeSequence(id); }, }, ]); }; const getTotalDuration = (sequence: (typeof sequences)[0]) => { const totalSeconds = sequence.items.reduce((sum, item) => sum + item.duration, 0); const mins = Math.floor(totalSeconds / 60); const secs = totalSeconds % 60; if (mins === 0) { return `${secs} Sek`; } else if (secs === 0) { return `${mins} Min`; } else { return `${mins} Min ${secs} Sek`; } }; return ( {/* Sequenzen Liste */} {sequences.length > 0 ? ( sequences.map((sequence) => ( { handleHaptic(); router.push(`/sequence/${sequence.id}`); }} > {sequence.name} {sequence.items.length} Moods · {getTotalDuration(sequence)} · Übergang{' '} {sequence.transitionDuration}s {/* Action Buttons */} { handleHaptic(); router.push(`/edit-sequence/${sequence.id}`); }} className="flex-1 flex-row items-center justify-center gap-2 rounded-xl bg-blue-500 py-3" > Bearbeiten handleDelete(sequence.id, sequence.name)} className="flex-1 flex-row items-center justify-center gap-2 rounded-xl bg-red-500 py-3" > Löschen )) ) : ( Noch keine Sequenzen erstellt )} {/* Neue Sequenz Button */} { handleHaptic(); router.push('/create-sequence'); }} className="mx-2 mt-2 items-center rounded-2xl bg-blue-500 p-4" > + Neue Sequenz ); }