diff --git a/app/(protected)/journal/add.tsx b/app/(protected)/journal/add.tsx index 201d35a..a92fc13 100644 --- a/app/(protected)/journal/add.tsx +++ b/app/(protected)/journal/add.tsx @@ -182,7 +182,7 @@ export default function AddJournalScreen() { - router.back()} className="p-2 -ml-2 rounded-full active:bg-gray-100"> + router.push('/(protected)/journal')} className="p-2 -ml-2 rounded-full active:bg-gray-100"> diff --git a/app/(protected)/journal/index.tsx b/app/(protected)/journal/index.tsx index 3ff2c50..2e8e021 100644 --- a/app/(protected)/journal/index.tsx +++ b/app/(protected)/journal/index.tsx @@ -2,14 +2,13 @@ import { useAlert } from '@/components/AlertComponent'; import LoadingScreen from '@/components/LoadingScreen'; import api from '@/utils/api'; import { ImageIcon, Plus, Filter, Newspaper } from 'lucide-react-native'; -import React, { useEffect, useState } from 'react'; -import { RefreshControl, ScrollView, Text, TouchableOpacity, View } from 'react-native'; +import React, { useEffect, useState, useCallback } from 'react'; +import { FlatList, RefreshControl, Text, TouchableOpacity, View } from 'react-native'; import { SafeAreaView } from 'react-native-safe-area-context'; import FilterModal from '@/components/FilterModal'; import { Place } from '@/types/types'; import { useRouter, useFocusEffect } from 'expo-router'; import { StatusBar } from 'expo-status-bar'; -import { useCallback } from 'react'; export default function JournalScreen() { const router = useRouter(); @@ -86,6 +85,10 @@ export default function JournalScreen() { setShowFilterModal(false); }; + const handleJournalPress = useCallback((id: number) => { + router.push(`/journal/${id}`); + }, [router]); + if (isLoading && !refreshing) { return ; } @@ -108,57 +111,61 @@ export default function JournalScreen() { {/* List */} - (item.id ? item.id.toString() : Math.random().toString())} + className="flex-1" + contentContainerStyle={{ padding: 20, paddingBottom: 180, gap: 16 }} showsVerticalScrollIndicator={false} refreshControl={} - > - {updates.length === 0 ? ( + initialNumToRender={8} + maxToRenderPerBatch={10} + windowSize={5} + renderItem={({ item }) => ( + + + + {item.place_name} + + + {item.place_address} + + {item.description ? ( + + {item.description} + + ) : null} + + + + + + + + + + {item.n_files} File Inviati + + {item.date} + + + {item.n_files > 0 && ( + handleJournalPress(item.id)} + > + Vedi + + )} + + + )} + ListEmptyComponent={ Nessun invio registrato al giornale di cantiere - ) : ( - - {updates.map((item, index) => ( - - - - {item.place_name} - - - {item.place_address} - - - {item.description} - - - - - - - - - - - {item.n_files} File Inviati - - {item.date} - - - {item.n_files > 0 && ( - router.push(`/journal/${item.id}`)} - > - Vedi - - )} - - - ))} - - )} - + } + /> {/* FAB Add Journal */}