import { View, TouchableOpacity, ScrollView, StyleSheet, ActivityIndicator } from 'react-native'; import { Text } from '@/components/ui/Text'; import { useState } from 'react'; import { router, useLocalSearchParams } from 'expo-router'; import { Ionicons, MaterialIcons } from '@expo/vector-icons'; import { Button } from '@/components/ui/Button'; import { Spacing, Typography, Colors, BorderRadius } from '@/constants/theme'; import { useTriggers, useLinkMoodToTrigger } from '@/hooks'; import { getTriggerCategory } from '@/constants/trigger-categories'; import { Trigger } from '@/lib/api'; type FlowState = 'PICK_TRIGGER' | 'PICK_IMPACT'; export default function PostMoodLinks() { const { moodId } = useLocalSearchParams<{ moodId: string }>(); const [flowState, setFlowState] = useState('PICK_TRIGGER'); const [selectedTrigger, setSelectedTrigger] = useState(null); const [impact, setImpact] = useState(3); const { data, isLoading } = useTriggers({ limit: 5 }); const linkMood = useLinkMoodToTrigger(); const triggers = data?.entries ?? []; const handleSelectTrigger = (trigger: Trigger) => { setSelectedTrigger(trigger); setFlowState('PICK_IMPACT'); }; const handleSaveLink = async () => { if (!selectedTrigger || !moodId) return; await linkMood.mutateAsync({ triggerId: String(selectedTrigger.id), moodId, perceivedImpact: impact, }); router.back(); }; if (flowState === 'PICK_TRIGGER') { return ( Algo influenciou esse humor? Selecione um gatilho recente para vincular {isLoading && } {!isLoading && triggers.length === 0 && ( Nenhum gatilho recente )} {triggers.map((trigger) => { const cat = getTriggerCategory(trigger.category); return ( handleSelectTrigger(trigger)} > {cat.label} {trigger.comment ? ( {trigger.comment} ) : null} ); })}