From b49e93825e50467b6fb9eedbff3f09036ced5242 Mon Sep 17 00:00:00 2001 From: Yasien Mac Mini Date: Mon, 17 Nov 2025 10:53:52 +0200 Subject: [PATCH] QOL: Mzansi Directory get data on package open --- .../mzansi_directory/mzansi_directory.dart | 69 ++++++++++++------- 1 file changed, 45 insertions(+), 24 deletions(-) diff --git a/Frontend/lib/mih_packages/mzansi_directory/mzansi_directory.dart b/Frontend/lib/mih_packages/mzansi_directory/mzansi_directory.dart index 5ddca512..954f1ec6 100644 --- a/Frontend/lib/mih_packages/mzansi_directory/mzansi_directory.dart +++ b/Frontend/lib/mih_packages/mzansi_directory/mzansi_directory.dart @@ -6,11 +6,13 @@ import 'package:mzansi_innovation_hub/mih_components/mih_objects/business.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package_action.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package_tools.dart'; +import 'package:mzansi_innovation_hub/mih_components/mih_pop_up_messages/mih_loading_circle.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_providers/mzansi_directory_provider.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_providers/mzansi_profile_provider.dart'; import 'package:mzansi_innovation_hub/mih_packages/mzansi_directory/package_tools/mih_favourite_businesses.dart'; import 'package:mzansi_innovation_hub/mih_packages/mzansi_directory/package_tools/mih_search_mzansi.dart'; import 'package:mzansi_innovation_hub/mih_services/mih_business_details_services.dart'; +import 'package:mzansi_innovation_hub/mih_services/mih_data_helper_services.dart'; import 'package:mzansi_innovation_hub/mih_services/mih_location_services.dart'; import 'package:mzansi_innovation_hub/mih_services/mih_mzansi_directory_services.dart'; import 'package:provider/provider.dart'; @@ -25,9 +27,30 @@ class MzansiDirectory extends StatefulWidget { } class _MzansiDirectoryState extends State { + bool _isLoadingInitialData = true; late Future futurePosition = MIHLocationAPI().getGPSPosition(context); + Future _loadInitialData() async { + setState(() { + _isLoadingInitialData = true; + }); + MzansiProfileProvider mzansiProfileProvider = + context.read(); + MzansiDirectoryProvider directoryProvider = + context.read(); + await MihDataHelperServices().loadUserDataOnly( + mzansiProfileProvider, + ); + MIHLocationAPI().getGPSPosition(context).then((position) { + directoryProvider.setUserPosition(position); + }); + await getFavouriteBusinesses(); + setState(() { + _isLoadingInitialData = false; + }); + } + Future initialiseGPSLocation() async { MzansiDirectoryProvider directoryProvider = context.read(); @@ -60,41 +83,39 @@ class _MzansiDirectoryState extends State { @override void initState() { super.initState(); - WidgetsBinding.instance.addPostFrameCallback((_) async { - initialiseGPSLocation(); - getFavouriteBusinesses(); - }); + _loadInitialData(); } @override Widget build(BuildContext context) { - return MihPackage( - appActionButton: getAction(), - appTools: getTools(), - appBody: getToolBody(), - appToolTitles: getToolTitle(), - selectedbodyIndex: context.watch().toolIndex, - onIndexChange: (newValue) { - context.read().setToolIndex(newValue); + return Consumer( + builder: (BuildContext context, MzansiDirectoryProvider directoryProvider, + Widget? child) { + if (_isLoadingInitialData) { + return Scaffold( + body: Center( + child: Mihloadingcircle(), + ), + ); + } + return MihPackage( + appActionButton: getAction(), + appTools: getTools(), + appBody: getToolBody(), + appToolTitles: getToolTitle(), + selectedbodyIndex: directoryProvider.toolIndex, + onIndexChange: (newValue) { + directoryProvider.setToolIndex(newValue); + }, + ); }, ); } List getToolBody() { List toolBodies = []; - // String myLocation = "Getting Your GPS Location Ready"; - // if (directoryProvider.userPosition != null) { - // myLocation = directoryProvider.userPosition - // .toString() - // .replaceAll("Latitude: ", "") - // .replaceAll("Longitude: ", ""); - // } toolBodies.addAll([ - MihSearchMzansi( - // personalSearch: directoryProvider.personalSearch, - // startSearchText: "", - ), - // MihContacts(), + MihSearchMzansi(), MihFavouriteBusinesses(), ]); return toolBodies;