import { useState } from "react"; import { View, StyleSheet, TouchableOpacity, Pressable, ActivityIndicator, } from "react-native"; import { Text } from '@/components/ui/Text'; import { router, useLocalSearchParams } from "expo-router"; import { Ionicons, MaterialIcons } from "@expo/vector-icons"; import { ScreenLayout } from "@/components/ui/ScreenLayout"; import { Card } from "@/components/ui/Cards"; import { Button } from "@/components/ui/Button"; import { useAuth } from "@/context/AuthContext"; import { Colors, Spacing, Typography, BorderRadius, Shadows } from "@/constants/theme"; import { getTriggerCategory } from "@/constants/trigger-categories"; import { useTriggers, useLinkMoodToTrigger } from "@/hooks"; import { Trigger } from "@/lib/api"; import { formatMoment } from '@/lib/utils/time'; export default function PostMood() { const { moodId } = useLocalSearchParams<{ moodId: string }>(); const { user } = useAuth(); const [selectedTrigger, setSelectedTrigger] = useState(null); const [impact, setImpact] = useState(3); const [linked, setLinked] = useState(false); const { data: triggersData, isLoading: isLoadingTriggers } = useTriggers({ limit: 3 }); const recentTriggers = triggersData?.entries ?? []; const linkMoodToTrigger = useLinkMoodToTrigger(); const handleLink = async () => { if (!selectedTrigger || !moodId) return; await linkMoodToTrigger.mutateAsync({ triggerId: String(selectedTrigger.id), moodId, perceivedImpact: impact, }); setLinked(true); setSelectedTrigger(null); }; return ( {/* Confirmation block */} Humor Salvo! Seu registro foi armazenado com sucesso. {/* Link prompt card */} {linked ? ( Gatilho vinculado ) : ( {selectedTrigger ? ( /* Impact picker state */ {/* Selected trigger header */} {(() => { const cat = getTriggerCategory(selectedTrigger.category); return ( <> {cat.label} ); })()} setSelectedTrigger(null)} hitSlop={8} style={styles.deselectButton} > Qual foi o impacto? {[1, 2, 3, 4, 5].map((n) => { const isSelected = impact === n; return ( setImpact(n)} activeOpacity={0.7} > {n} ); })}