import { View, Text, StyleSheet, KeyboardAvoidingView, ScrollView, } from "react-native"; import { useState } from "react"; import { router, useLocalSearchParams } from "expo-router"; import { Card } from "@/components/ui/Cards"; import { TextArea } from "@/components/ui/Input"; import { Button } from "@/components/ui/Button"; import { Section, SectionHeader } from "@/components/ui/Sections"; import { Spacing, Typography, Colors, BorderRadius } from "@/constants/theme"; import { Ionicons, MaterialIcons } from "@expo/vector-icons"; import { useCreateTrigger, useLinkMoodToTrigger, usePatchCareAction } from "@/hooks"; import { useToast } from "@/context/ToastContext"; import { ApiError } from "@/lib/api"; import { translateError } from "@/lib/errors/translations"; import { useCareActionLinkStore } from "@/stores"; import { CategoryChips, CategoryOption } from "@/components/ui/CategoryChips"; import { TriggerCategory } from "@/constants/triggers"; import { TRIGGER_CATEGORY_DEFINITIONS } from "@/constants/trigger-categories"; import { TimePicker } from "@/components/ui/TimePicker"; const TRIGGER_CATEGORIES: CategoryOption[] = TRIGGER_CATEGORY_DEFINITIONS.map((d) => ({ label: d.label, value: d.id, icon: , })); export default function NewTrigger() { const [moment, setMoment] = useState(new Date()); const [comment, setComment] = useState(""); const { category: initialCategory, moodId: linkedMoodId } = useLocalSearchParams<{ category?: string; moodId?: string }>(); const [category, setCategory] = useState(initialCategory ?? "WORK"); const createTrigger = useCreateTrigger(); const linkMoodToTrigger = useLinkMoodToTrigger(); const patchCareAction = usePatchCareAction(); const { showToast } = useToast(); const save = async () => { try { const data = { moment, comment, category }; const result = await createTrigger.mutateAsync(data); const careActionId = useCareActionLinkStore.getState().linkTrigger(); if (careActionId) { await patchCareAction.mutateAsync({ id: String(careActionId), data: { triggerId: result.trigger.id }, }); } if (linkedMoodId) { await linkMoodToTrigger.mutateAsync({ triggerId: String(result.trigger.id), moodId: linkedMoodId, perceivedImpact: 3, }); router.back(); } else { router.replace("/(tabs)/actions"); } } catch (error: any) { showToast( error instanceof ApiError ? translateError(error.message) : 'Falha ao salvar o gatilho', 'error', ); } }; return ( Aconteceu algo? Registre acontecimentos fora do padrão Identificar gatilhos ajuda a entender melhor seus padrões emocionais