From cb7555590f01b42cffa29574da280436963859a6 Mon Sep 17 00:00:00 2001 From: BinarySandia04 Date: Tue, 21 Apr 2026 18:46:41 +0200 Subject: [PATCH] Works --- apk/app/_layout.tsx | 17 ++-- apk/app/add.tsx | 140 ++++++++++++++++++++++-------- apk/app/index.tsx | 41 ++++++++- apk/components/birthdate-item.tsx | 2 +- apk/components/birthdate-list.tsx | 105 +++++++++------------- apk/context/birthdays-context.tsx | 70 +++++++++++++++ 6 files changed, 265 insertions(+), 110 deletions(-) create mode 100644 apk/context/birthdays-context.tsx diff --git a/apk/app/_layout.tsx b/apk/app/_layout.tsx index 676e7e5..efab7b9 100644 --- a/apk/app/_layout.tsx +++ b/apk/app/_layout.tsx @@ -7,6 +7,7 @@ import { Stack } from "expo-router"; import { StatusBar } from "expo-status-bar"; import "react-native-reanimated"; +import { BirthdaysProvider } from "@/context/birthdays-context"; import { useColorScheme } from "@/hooks/use-color-scheme"; export const unstable_settings = { @@ -17,12 +18,14 @@ export default function RootLayout() { const colorScheme = useColorScheme(); return ( - - - - - - - + + + + + + + + + ); } diff --git a/apk/app/add.tsx b/apk/app/add.tsx index 6ff0d33..3547f70 100644 --- a/apk/app/add.tsx +++ b/apk/app/add.tsx @@ -1,25 +1,33 @@ -import DateTimePicker from "@react-native-community/datetimepicker"; +import DateTimePicker, { + DateTimePickerEvent, +} from "@react-native-community/datetimepicker"; +import { useBirthdays } from "@/context/birthdays-context"; import { useRouter } from "expo-router"; import React, { useState } from "react"; import { - Button, + Alert, KeyboardAvoidingView, Platform, ScrollView, StyleSheet, Text, TextInput, + TouchableOpacity, View, } from "react-native"; import { SafeAreaView } from "react-native-safe-area-context"; export default function SimpleForm() { const router = useRouter(); + const { addBirthday } = useBirthdays(); const [name, setName] = useState(""); const [date, setDate] = useState(new Date()); const [showPicker, setShowPicker] = useState(false); - const onChangeDate = (event, selectedDate) => { + const onChangeDate = ( + event: DateTimePickerEvent, + selectedDate?: Date + ) => { setShowPicker(Platform.OS === "ios"); if (selectedDate) { setDate(selectedDate); @@ -27,8 +35,18 @@ export default function SimpleForm() { }; const handleSubmit = () => { - alert(`Name: ${name}\nDate: ${date.toDateString()}`); - router.push("/"); + if (!name.trim()) { + Alert.alert("Missing name", "Enter a name before saving."); + return; + } + + addBirthday({ + name, + date: formatBirthdayDate(date), + }); + setName(""); + setDate(new Date()); + router.back(); }; return ( @@ -37,36 +55,53 @@ export default function SimpleForm() { style={styles.keyboardContainer} behavior={Platform.OS === "ios" ? "padding" : undefined} > - - - Name: - - - Date: -