import { Stack, useRouter } from 'expo-router';
import * as Haptics from 'expo-haptics';
import { Text, Pressable, View, StyleSheet } from 'react-native';
import DraggableFlatList, { ScaleDecorator } from 'react-native-draggable-flatlist';
import { GestureHandlerRootView } from 'react-native-gesture-handler';
import { LinearGradient } from 'expo-linear-gradient';
import { Icon } from '@/components/Icon';
import { MoodCard } from '@/components/MoodCard';
import { SequenceCard } from '@/components/SequenceCard';
import { useStore } from '@/store/store';
import { getThemeColors } from '@/utils/theme';
import { useResponsive } from '@/hooks/useResponsive';
import type { Mood } from '@/store/store';
export default function Home() {
const router = useRouter();
const moods = useStore((state) => state.moods);
const sequences = useStore((state) => state.sequences);
const settings = useStore((state) => state.settings);
const reorderMoods = useStore((state) => state.reorderMoods);
const updateSettings = useStore((state) => state.updateSettings);
const theme = getThemeColors();
const responsive = useResponsive();
const handleHaptic = () => {
if (settings.hapticFeedback) {
Haptics.impactAsync(Haptics.ImpactFeedbackStyle.Light);
}
};
const toggleScreen = () => {
handleHaptic();
updateSettings({ screenEnabled: !settings.screenEnabled });
};
const toggleFlashlight = () => {
handleHaptic();
updateSettings({ flashlightEnabled: !settings.flashlightEnabled });
};
const handleMoodPress = (id: string) => {
handleHaptic();
router.push(`/mood/${id}`);
};
const handleSequencePress = (id: string) => {
handleHaptic();
router.push(`/sequence/${id}`);
};
const renderHeader = () => (
<>
Moods
{
handleHaptic();
router.push('/create-mood');
}}
className="p-2"
>
{
handleHaptic();
router.push('/sequences');
}}
className="p-2"
>
{
handleHaptic();
router.push('/settings');
}}
className="p-2"
>
{/* Sequenzen Liste */}
{sequences.length > 0 && (
<>
{sequences.map((sequence) => (
handleSequencePress(sequence.id)}
/>
))}
>
)}
>
);
return (
reorderMoods(data)}
keyExtractor={(item) => item.id}
contentContainerStyle={{ paddingBottom: 100, paddingTop: 64 }}
ListHeaderComponent={renderHeader}
renderItem={({ item, drag, isActive }) => (
handleMoodPress(item.id)}
onLongPress={drag}
isActive={isActive}
/>
)}
/>
{/* Gradient am unteren Rand */}
{/* Toggle Buttons am unteren Rand */}
Bildschirm
Taschenlampe
);
}
const styles = StyleSheet.create({});