import { useState, useEffect } from "react"; import { router, useLocalSearchParams } from "expo-router"; import { View, StyleSheet, ScrollView } from "react-native"; import { Text } from "@/components/ui/Text"; import { Grid, Col, Center } from "@/components/ui/LayoutHelpers"; import { Card } from "@/components/ui/Cards"; import { Button } from "@/components/ui/Button"; import { 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, usePatchCareAction } from "@/hooks"; import { useMoodEntryStore, useCareActionLinkStore } from "@/stores"; import { getMood } from "@/constants/moods"; import { intensityToValue } from "@/constants/mood-components"; export default function NewMoodEntry() { const tintColor = useThemeColor({}, "tint"); const { initialMood } = useLocalSearchParams<{ initialMood?: string }>(); 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(); const patchCareAction = usePatchCareAction(); useEffect(() => { if (initialMood) setSelectedMood(initialMood); }, [initialMood, setSelectedMood]); useEffect(() => { return () => reset(); }, [reset]); const saveMoodEntry = async () => { const data = { selectedMood: (selectedMood ?? 'neutral').toUpperCase(), stressLevel: stress, energyLevel: energy, anxietyLevel: anxiety, moment: new Date(), annotation: annotation, moodComponents: components.map((c) => ({ component: c.id.toUpperCase(), intensity: intensityToValue(c.intensity), })), }; const result = await createMoodEntry.mutateAsync(data); const moodId = result.mood.id; const careActionId = useCareActionLinkStore.getState().linkMood(); if (careActionId && moodId) { await patchCareAction.mutateAsync({ id: String(careActionId), data: { moodId }, }); } reset(); router.replace(`/new/post-mood?moodId=${moodId}`); }; const editComponents = () => { router.push("/entry/mood-components"); }; return (
Como você está se sentindo agora? {getMood(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" />