// Add Feed Screen import React, { useState } from 'react'; import { View, TextInput, Button, Text, StyleSheet, Alert, ActivityIndicator, } from 'react-native'; import { useRouter } from 'expo-router'; import { useFeedStore } from '@/stores/feed-store'; import { parseFeed } from '@/services/feed-service'; import { generateId } from '@/utils/helpers'; import { t } from '@/i18n'; export default function AddFeedScreen() { const router = useRouter(); const [url, setUrl] = useState(''); const [title, setTitle] = useState(''); const [loading, setLoading] = useState(false); const [preview, setPreview] = useState(null); const addSubscription = useFeedStore((state) => state.addSubscription); const handlePreview = async () => { if (!url) { Alert.alert('Error', 'Please enter a feed URL'); return; } setLoading(true); setPreview(null); try { const response = await fetch(url); const text = await response.text(); const result = await parseFeed(url, text); if (result.success && result.feed) { setPreview(result.feed); } else { Alert.alert('Error', result.error || 'Failed to parse feed'); } } catch (error) { Alert.alert('Error', 'Failed to fetch feed'); } finally { setLoading(false); } }; const handleAdd = async () => { if (!url) { Alert.alert('Error', 'Please enter a feed URL'); return; } if (!preview) { Alert.alert('Error', 'Please preview the feed first'); return; } setLoading(true); try { const subscription = { id: generateId(), url, title: title || preview.title, enabled: true, fetchInterval: 60, // Default 1 hour createdAt: new Date(), updatedAt: new Date(), }; await addSubscription(subscription); router.back(); } catch (error) { Alert.alert('Error', 'Failed to add subscription'); } finally { setLoading(false); } }; return ( {t('feed.add')} URL Title (optional)