import { useState, useEffect } from "react"; import { Link, router, useLocalSearchParams } from "expo-router"; import { View, Text, StyleSheet, ScrollView } from "react-native"; import { SafeAreaView } from "react-native-safe-area-context"; import { ThemedText } from "@/components/misc/themed-text"; import { ThemedView } from "@/components/misc/themed-view"; import { ScreenLayout } from "@/components/ui/ScreenLayout"; import { useAuth } from "@/context/AuthContext"; import { Grid, Col, Row, Between, Center } from "@/components/ui/LayoutHelpers"; import { Card } from "@/components/ui/Cards"; import { Button } from "@/components/ui/Button"; import { Input, TextArea } from "@/components/ui/Input"; import { Section, SectionHeader } from "@/components/ui/Sections"; import { Spacing, Typography, Colors } from "@/constants/theme"; import { ScaleSlider } from "@/components/ui/ScaleSlider"; import { MoodComponentCard } from "@/components/ui/MoodComponentCard"; import { Ionicons } from "@expo/vector-icons"; import { useThemeColor, useCreateMoodEntry } from "@/hooks"; import { useMoodEntryStore } from "@/stores"; import { MOODS, getMood } from "@/constants/moods"; import { intensityToValue } from "@/constants/mood-components"; import { apiClient } from "@/lib/api"; export default function NewMoodEntry() { const { user } = useAuth(); const tintColor = useThemeColor({}, "tint"); const { initialMood } = useLocalSearchParams(); const [annotation, setAnnotation] = useState(); const [stress, setStress] = useState(0); const [anxiety, setAnxiety] = useState(0); const [energy, setEnergy] = useState(0); const { selectedMood, setSelectedMood, components, reset } = useMoodEntryStore(); const createMoodEntry = useCreateMoodEntry(); useEffect(() => { setSelectedMood(getMood(initialMood)); }, [initialMood]); useEffect(() => { return () => reset(); }, []); const saveMoodEntry = async () => { const data = { selectedMood: selectedMood?.id.toUpperCase(), stressLevel: stress, energyLevel: energy, anxietyLevel: anxiety, moment: new Date(), annotation: annotation, moodComponents: components.map((c) => ({ component: c.id.toUpperCase(), intensity: intensityToValue(c.intensity), })), }; await createMoodEntry.mutateAsync(data); reset(); router.replace("/"); }; const editComponents = () => { router.push("/entry/mood-components"); }; return (
Como você está se sentindo agora? {selectedMood?.label || "Neutro"}
Não existe resposta certa ou errada. Estime, de 0 a 10, como tu percebe tua energia, estresse e ansiedade neste momento. O objetivo é registrar uma impressão geral, não uma medida precisa. } minLabel="Baixa" maxLabel="Alta" /> } minLabel="Calmo" maxLabel="Ansioso" /> } minLabel="Relaxado" maxLabel="Estressado" />