diff --git a/lib/model/visit_model.dart b/lib/model/visit_model.dart index d1f567a..071236f 100644 --- a/lib/model/visit_model.dart +++ b/lib/model/visit_model.dart @@ -25,7 +25,7 @@ class VisitModel { required this.type_visite, required this.langage}); - static Future> getTodayVisit() async { + static Future> getTodayVisits() async { // Retrieve all today visits from the database final visits = await objectbox.getTodayVisit(); @@ -49,7 +49,7 @@ class VisitModel { return visitModelList; } - static Future> getPreviousVisit() async { + static Future> getPreviousVisits() async { // Retrieve all previsous visits from the database final visits = await objectbox.getPreviousVisit(); @@ -73,7 +73,7 @@ class VisitModel { return visitModelList; } - static Future> getAllVisit() async { + static Future> getToSyncVisits() async { // Retrieve all visits from the database final visits = await objectbox.getAllVisit(); @@ -91,6 +91,9 @@ class VisitModel { image: visite.url_photo_principale, type_visite: visite.type_visite, langage: visite.langage)) + .where((visit) => + visit.photoCount > + 0) // Filter out visits with photoCount equal to 0 .toList(); // Return the list of VisiteModel diff --git a/lib/ui/home.dart b/lib/ui/home.dart index b7a46cd..823ff38 100644 --- a/lib/ui/home.dart +++ b/lib/ui/home.dart @@ -5,7 +5,7 @@ import 'package:mobdr/main.dart'; import 'package:mobdr/ui/account/tab_account.dart'; import 'package:mobdr/ui/home/tab_home.dart'; import 'package:mobdr/ui/mp4/tab_mp4.dart'; -import 'package:mobdr/ui/visit/tab_visit.dart'; +import 'package:mobdr/ui/sync/tab_sync.dart'; import 'package:mobdr/config/constant.dart'; import 'package:mobdr/events.dart'; @@ -28,7 +28,7 @@ class _HomePageState extends State void initState() { _contentPages = [ TabHomePage(), - TabVisitListPage(), + TabSyncPage(), TabMP4Page(), TabAccountPage(), ]; diff --git a/lib/ui/home/tab_home.dart b/lib/ui/home/tab_home.dart index 183a35e..90c31f3 100644 --- a/lib/ui/home/tab_home.dart +++ b/lib/ui/home/tab_home.dart @@ -410,8 +410,8 @@ class _TabHomePageState extends State /// Initializes data when the page loads. Future loadData() async { // visite model initialisation - todayVisitData = await VisitModel.getTodayVisit(); - previousVisitData = await VisitModel.getPreviousVisit(); + todayVisitData = await VisitModel.getTodayVisits(); + previousVisitData = await VisitModel.getPreviousVisits(); // Search for the visit matching last_id_visit int lastIdVisite = SharedPrefs().last_id_visite; @@ -426,6 +426,13 @@ class _TabHomePageState extends State } } + for (var visit in previousVisitData) { + if (visit.id_visite == lastIdVisite) { + lastVisitData = visit; + break; + } + } + if (lastVisitData == null) { SharedPrefs().last_id_visite = 0; } diff --git a/lib/ui/visit/tab_visit.dart b/lib/ui/sync/tab_sync.dart similarity index 92% rename from lib/ui/visit/tab_visit.dart rename to lib/ui/sync/tab_sync.dart index aeb7031..4497c17 100644 --- a/lib/ui/visit/tab_visit.dart +++ b/lib/ui/sync/tab_sync.dart @@ -12,12 +12,12 @@ import 'package:mobdr/ui/reusable/cache_image_network.dart'; import 'package:mobdr/ui/sync/upload_photos.dart'; import 'package:mobdr/ui/sync/check_connection.dart'; -class TabVisitListPage extends StatefulWidget { +class TabSyncPage extends StatefulWidget { @override - _TabVisitListPageState createState() => _TabVisitListPageState(); + _TabSyncPageState createState() => _TabSyncPageState(); } -class _TabVisitListPageState extends State +class _TabSyncPageState extends State with AutomaticKeepAliveClientMixin { // keep the state to do not refresh when switch navbar @override @@ -26,7 +26,7 @@ class _TabVisitListPageState extends State bool _isLoading = true; String _errorMessage = ''; - late List modelData = []; + late List tosyncVisitData = []; late StreamSubscription subVisitPhotoCountEvent; @@ -40,9 +40,9 @@ class _TabVisitListPageState extends State // Listen particular event subVisitPhotoCountEvent = eventBus.on().listen((e) { setState(() { - for (int i = 0; i < modelData.length; i++) { - if (modelData[i].id_visite == e.id_visite) { - modelData[i].photoCount = e.photoCount; + for (int i = 0; i < tosyncVisitData.length; i++) { + if (tosyncVisitData[i].id_visite == e.id_visite) { + tosyncVisitData[i].photoCount = e.photoCount; break; } } @@ -69,7 +69,7 @@ class _TabVisitListPageState extends State final double boxImageSize = (MediaQuery.of(context).size.width / 4); if (_isLoading) { return Center(child: CircularProgressIndicator()); - } else if (modelData.isEmpty) { + } else if (tosyncVisitData.isEmpty) { return Center( child: Text('No visits to synchronise.'), ); @@ -91,7 +91,7 @@ class _TabVisitListPageState extends State Flexible( child: AnimatedList( key: _listKey, - initialItemCount: modelData.length, + initialItemCount: tosyncVisitData.length, physics: AlwaysScrollableScrollPhysics(), itemBuilder: (context, index, animation) { return Dismissible( @@ -100,7 +100,7 @@ class _TabVisitListPageState extends State onDismissed: (direction) { // the photo must be removed setState(() { - modelData.removeAt(index); + tosyncVisitData.removeAt(index); _listKey = GlobalKey(); }); }, @@ -121,7 +121,7 @@ class _TabVisitListPageState extends State ), ), child: _buildVisitelistCard( - modelData[index], boxImageSize, animation, index), + tosyncVisitData[index], boxImageSize, animation, index), ); }, ), @@ -375,8 +375,8 @@ class _TabVisitListPageState extends State /// Initializes data when the page loads. Future loadData() async { try { - // data initialisation with today visits - modelData = await VisitModel.getAllVisit(); + // initialization of data with all visits to be synchronized + tosyncVisitData = await VisitModel.getToSyncVisits(); } catch (e) { // set errorMessage for debug _errorMessage = 'Error loading visits : $e';