diff --git a/apps/frontend-mobile/app/(tabs)/alerts.tsx b/apps/frontend-mobile/app/(tabs)/alerts.tsx index 384c2b2..68e85a7 100644 --- a/apps/frontend-mobile/app/(tabs)/alerts.tsx +++ b/apps/frontend-mobile/app/(tabs)/alerts.tsx @@ -3,6 +3,7 @@ import { View, Text, StyleSheet, FlatList, TouchableOpacity, Alert, useWindowDim import { Ionicons } from '@expo/vector-icons'; import { colors, spacing, borderRadius, shadows } from '../../constants/theme'; import { LoadingSpinner } from '../../components/LoadingSpinner'; +import api from '../../services/api'; const TABLET_MIN_WIDTH = 768; @@ -33,9 +34,8 @@ export default function AlertsScreen() { setIsLoading(true); setError(null); try { - const res = await fetch('/api/notifications/mine', { credentials: 'include' }); - if (!res.ok) throw new Error(`HTTP ${res.status}`); - const data = await res.json(); + const res = await api.get('/notifications/mine'); + const data = res.data; const merged = [ ...(data.pharmacy || []), ...(data.global || []), @@ -63,13 +63,9 @@ export default function AlertsScreen() { onPress: async () => { setDeletingId(key); try { - const res = await fetch('/api/notifications/mine', { - method: 'DELETE', - headers: { 'Content-Type': 'application/json' }, - credentials: 'include', - body: JSON.stringify({ scope: item.scope, id: item.id }), + await api.delete('/notifications/mine', { + data: { scope: item.scope, id: item.id }, }); - if (!res.ok && res.status !== 204) throw new Error(`HTTP ${res.status}`); setItems(prev => prev.filter(i => !(i.scope === item.scope && i.id === item.id))); } catch (err: any) { Alert.alert('Error', err.message || 'No se pudo eliminar'); diff --git a/apps/frontend-mobile/app/(tabs)/index.tsx b/apps/frontend-mobile/app/(tabs)/index.tsx index d07fec9..4a89dd8 100644 --- a/apps/frontend-mobile/app/(tabs)/index.tsx +++ b/apps/frontend-mobile/app/(tabs)/index.tsx @@ -100,7 +100,10 @@ const styles = StyleSheet.create({ searchContainer: { flexDirection: 'row', alignItems: 'center', - paddingRight: spacing.lg, + paddingHorizontal: spacing.lg, + maxWidth: 480, + alignSelf: 'center', + width: '100%', }, searchContainerTablet: { maxWidth: 700, diff --git a/apps/frontend-mobile/app/_layout.tsx b/apps/frontend-mobile/app/_layout.tsx index 22ffb8a..84a01a4 100644 --- a/apps/frontend-mobile/app/_layout.tsx +++ b/apps/frontend-mobile/app/_layout.tsx @@ -1,6 +1,7 @@ import { useEffect, useRef } from 'react'; import { Stack } from 'expo-router'; import { StatusBar } from 'expo-status-bar'; +import { ImageBackground, StyleSheet, View } from 'react-native'; import { QueryClient, QueryClientProvider } from '@tanstack/react-query'; import { GestureHandlerRootView } from 'react-native-gesture-handler'; import { SafeAreaProvider } from 'react-native-safe-area-context'; @@ -36,6 +37,13 @@ export default function RootLayout() { return ( + + + ); } + +const bgStyles = StyleSheet.create({ + background: { + flex: 1, + }, + backgroundImage: { + opacity: 0.5, + }, + overlay: { + ...StyleSheet.absoluteFillObject, + backgroundColor: 'rgba(255, 252, 245, 0.48)', + }, +}); diff --git a/apps/frontend-mobile/assets/bg.png b/apps/frontend-mobile/assets/bg.png new file mode 100644 index 0000000..5c9dccb Binary files /dev/null and b/apps/frontend-mobile/assets/bg.png differ diff --git a/apps/frontend-mobile/components/SearchBar.tsx b/apps/frontend-mobile/components/SearchBar.tsx index 02038ed..09a7bc0 100644 --- a/apps/frontend-mobile/components/SearchBar.tsx +++ b/apps/frontend-mobile/components/SearchBar.tsx @@ -69,6 +69,9 @@ const styles = StyleSheet.create({ paddingVertical: spacing.sm + 2, marginHorizontal: spacing.lg, marginVertical: spacing.sm, + maxWidth: 420, + alignSelf: 'center', + width: '100%', shadowColor: '#000', shadowOffset: { width: 0, height: 2 }, shadowOpacity: 0.06, diff --git a/apps/frontend-mobile/constants/config.ts b/apps/frontend-mobile/constants/config.ts index 92299fe..47a4f06 100644 --- a/apps/frontend-mobile/constants/config.ts +++ b/apps/frontend-mobile/constants/config.ts @@ -5,7 +5,7 @@ const ENV = { API_BASE_URL: 'http://localhost:3001/api', }, production: { - API_BASE_URL: 'https://your-production-api.com/api', + API_BASE_URL: 'https://farmacias.hacecalor.net/api', }, };