import React from 'react'; import { View, Text, StyleSheet, TouchableOpacity, Alert } from 'react-native'; import { useRouter } from 'expo-router'; import { withObservables } from '@nozbe/watermelondb/react'; import { database } from '../../src/db'; import UserChallenge from '../../src/db/models/UserChallenge'; import { Q } from '@nozbe/watermelondb'; import ProgressScreen from '../screens/ProgressScreen'; import { Colors } from '@/constants/theme'; const HomeScreen = ({ userChallenge }: { userChallenge: UserChallenge | null }) => { const router = useRouter(); const handleReset = async () => { Alert.alert( "Reset Data", "Are you sure you want to clear all local data? This cannot be undone.", [ { text: "Cancel", style: "cancel" }, { text: "Reset", style: "destructive", onPress: async () => { try { await database.write(async () => { await database.unsafeResetDatabase(); }); // Reload or just let the UI update (observables should handle it, but reset might need reload) // For now, unsafeResetDatabase might require app reload in some contexts, // but let's see if observables pick up the empty state. // Actually, unsafeResetDatabase clears everything. } catch (e) { console.error("Error resetting database:", e); } } } ] ); }; if (userChallenge) { return ( Debug: Reset Data ); } return ( Welcome to Surge You don{`'`}t have an active challenge yet. router.push('/(tabs)/explore')} > Explore Challenges Debug: Reset Data ); }; const enhance = withObservables([], () => ({ userChallenge: database.get('user_challenges') .query(Q.where('status', 'active')) .observeWithColumns(['status']) .pipe( // @ts-ignore require('rxjs/operators').map((challenges: UserChallenge[]) => challenges.length > 0 ? challenges[0] : null) ), })); export default enhance(HomeScreen); const styles = StyleSheet.create({ container: { flex: 1, backgroundColor: '#f5f5f5', }, emptyContainer: { flex: 1, justifyContent: 'center', alignItems: 'center', padding: 20, backgroundColor: '#f5f5f5', }, title: { fontSize: 32, fontWeight: 'bold', marginBottom: 10, color: '#333', }, subtitle: { fontSize: 18, color: '#666', marginBottom: 40, textAlign: 'center', }, button: { backgroundColor: Colors.light.tint, paddingHorizontal: 30, paddingVertical: 15, borderRadius: 25, marginBottom: 20, }, buttonText: { color: 'white', fontSize: 18, fontWeight: 'bold', }, debugButton: { marginTop: 20, padding: 10, }, debugButtonText: { color: 'red', fontSize: 14, } });