import React, { useState } from 'react'; import { StyleSheet, TouchableOpacity, Modal, Platform, View } from 'react-native'; import { ThemedText } from '@/components/ThemedText'; import { ThemedView } from '@/components/ThemedView'; import DateTimePicker from '@react-native-community/datetimepicker'; import axios from 'axios'; const API_KEY = process.env.EXPO_PUBLIC_API_KEY; const BASE_URL = process.env.EXPO_PUBLIC_BASE_URL; interface ChangeDateDrawerProps { isVisible: boolean; onClose: () => void; onDateChange: (date: Date) => void; currentDate: Date; } export default function ChangeDateDrawer({ isVisible, onClose, onDateChange, currentDate }: ChangeDateDrawerProps) { const [date, setDate] = useState(currentDate); const [showDatePicker, setShowDatePicker] = useState(false); const [showTimePicker, setShowTimePicker] = useState(false); const handleDateChange = (event: any, selectedDate?: Date) => { const currentDate = selectedDate || date; setShowDatePicker(Platform.OS === 'ios'); setDate(currentDate); }; const handleTimeChange = (event: any, selectedTime?: Date) => { const currentTime = selectedTime || date; setShowTimePicker(Platform.OS === 'ios'); setDate(currentTime); }; const handleSave = async () => { try { await axios.post(`${BASE_URL}/setCountdown`, null, { params: { apiKey: API_KEY, countdown: date.toISOString() } }); onDateChange(date); onClose(); } catch (error) { console.error('Failed to update countdown date:', error); // You might want to show an error message to the user here } }; return ( Set New Countdown Date and Time setShowDatePicker(true)}> Select Date setShowTimePicker(true)}> Select Time {showDatePicker && ( )} {showTimePicker && ( )} Selected: {date.toLocaleString()} Save Cancel ); } const styles = StyleSheet.create({ centeredView: { flex: 1, justifyContent: 'center', alignItems: 'center', backgroundColor: 'rgba(0, 0, 0, 0.5)', }, modalView: { margin: 20, backgroundColor: 'black', borderRadius: 20, padding: 35, alignItems: 'center', shadowColor: '#000', shadowOffset: { width: 0, height: 2 }, shadowOpacity: 0.25, shadowRadius: 4, elevation: 5 }, button: { backgroundColor: '#2196F3', borderRadius: 20, padding: 10, elevation: 2, marginVertical: 10, minWidth: 120, }, cancelButton: { backgroundColor: '#FF3B30', }, buttonText: { color: 'white', fontWeight: 'bold', textAlign: 'center', }, modalText: { marginBottom: 15, textAlign: 'center', fontWeight: 'bold', fontSize: 18, }, dateText: { marginVertical: 10, fontSize: 16, }, });