From 2a7e3e17ce007d7495363984e63abdaade761892 Mon Sep 17 00:00:00 2001 From: Yasien Mac Mini Date: Tue, 4 Nov 2025 11:00:29 +0200 Subject: [PATCH] BUG: Bookmarked businesses data load --- .../mih_business_profile_preview.dart | 5 +- .../mzansi_directory_provider.dart | 10 ++-- .../mzansi_directory/mzansi_directory.dart | 27 ++++++++++ .../mih_favourite_businesses.dart | 50 ++++--------------- .../mih_mzansi_directory_services.dart | 3 +- 5 files changed, 46 insertions(+), 49 deletions(-) diff --git a/Frontend/lib/mih_components/mih_package_components/mih_business_profile_preview.dart b/Frontend/lib/mih_components/mih_package_components/mih_business_profile_preview.dart index 53683653..e8968df5 100644 --- a/Frontend/lib/mih_components/mih_package_components/mih_business_profile_preview.dart +++ b/Frontend/lib/mih_components/mih_package_components/mih_business_profile_preview.dart @@ -41,8 +41,6 @@ class _MihBusinessProfilePreviewState extends State { @override void initState() { super.initState(); - futureImageUrl = - MihFileApi.getMinioFileUrl(widget.business.logo_path, context); } @override @@ -54,7 +52,8 @@ class _MihBusinessProfilePreviewState extends State { return Row( children: [ FutureBuilder( - future: futureImageUrl, + future: MihFileApi.getMinioFileUrl( + widget.business.logo_path, context), builder: (context, asyncSnapshot) { if (asyncSnapshot.connectionState == ConnectionState.done && asyncSnapshot.hasData) { diff --git a/Frontend/lib/mih_components/mih_providers/mzansi_directory_provider.dart b/Frontend/lib/mih_components/mih_providers/mzansi_directory_provider.dart index 59f148bc..dc1f7db2 100644 --- a/Frontend/lib/mih_components/mih_providers/mzansi_directory_provider.dart +++ b/Frontend/lib/mih_components/mih_providers/mzansi_directory_provider.dart @@ -10,7 +10,7 @@ class MzansiDirectoryProvider extends ChangeNotifier { String userLocation; bool personalSearch; List bookmarkedBusinesses = []; - Map businessDetailsMap = {}; + List favouriteBusinessesList = []; List? searchedBusinesses; Business? selectedBusiness; List? searchedUsers; @@ -32,7 +32,6 @@ class MzansiDirectoryProvider extends ChangeNotifier { userLocation = "Unknown Location"; personalSearch = true; bookmarkedBusinesses = []; - businessDetailsMap = {}; searchedBusinesses = null; selectedBusiness = null; searchedUsers = null; @@ -62,13 +61,14 @@ class MzansiDirectoryProvider extends ChangeNotifier { notifyListeners(); } - void setFavouriteBusinesses({required List businesses}) { + void setBookmarkedeBusinesses( + {required List businesses}) { bookmarkedBusinesses = businesses; notifyListeners(); } - void setBusinessDetailsMap({required Map detailsMap}) { - businessDetailsMap = detailsMap; + void setFavouriteBusinesses({required List businesses}) { + favouriteBusinessesList = businesses; notifyListeners(); } diff --git a/Frontend/lib/mih_packages/mzansi_directory/mzansi_directory.dart b/Frontend/lib/mih_packages/mzansi_directory/mzansi_directory.dart index baa1dda3..5ddca512 100644 --- a/Frontend/lib/mih_packages/mzansi_directory/mzansi_directory.dart +++ b/Frontend/lib/mih_packages/mzansi_directory/mzansi_directory.dart @@ -1,13 +1,18 @@ import 'package:flutter/material.dart'; import 'package:geolocator/geolocator.dart'; import 'package:go_router/go_router.dart'; +import 'package:ken_logger/ken_logger.dart'; +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_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_location_services.dart'; +import 'package:mzansi_innovation_hub/mih_services/mih_mzansi_directory_services.dart'; import 'package:provider/provider.dart'; class MzansiDirectory extends StatefulWidget { @@ -31,11 +36,33 @@ class _MzansiDirectoryState extends State { }); } + Future getFavouriteBusinesses() async { + MzansiDirectoryProvider directoryProvider = + context.read(); + MzansiProfileProvider profileProvider = + context.read(); + await MihMzansiDirectoryServices().getAllUserBookmarkedBusiness( + profileProvider.user!.app_id, + directoryProvider, + ); + List favBus = []; + for (var bus in directoryProvider.bookmarkedBusinesses) { + await MihBusinessDetailsServices() + .getBusinessDetailsByBusinessId(bus.business_id) + .then((business) { + favBus.add(business!); + }); + } + KenLogger.success(favBus); + directoryProvider.setFavouriteBusinesses(businesses: favBus); + } + @override void initState() { super.initState(); WidgetsBinding.instance.addPostFrameCallback((_) async { initialiseGPSLocation(); + getFavouriteBusinesses(); }); } diff --git a/Frontend/lib/mih_packages/mzansi_directory/package_tools/mih_favourite_businesses.dart b/Frontend/lib/mih_packages/mzansi_directory/package_tools/mih_favourite_businesses.dart index eeb53ba0..55ac3cd5 100644 --- a/Frontend/lib/mih_packages/mzansi_directory/package_tools/mih_favourite_businesses.dart +++ b/Frontend/lib/mih_packages/mzansi_directory/package_tools/mih_favourite_businesses.dart @@ -1,5 +1,6 @@ import 'dart:async'; import 'package:flutter/material.dart'; +import 'package:ken_logger/ken_logger.dart'; import 'package:mzansi_innovation_hub/main.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_objects/business.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_icons.dart'; @@ -7,11 +8,8 @@ import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_ import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_search_bar.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_single_child_scroll.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_config/mih_colors.dart'; import 'package:mzansi_innovation_hub/mih_packages/mzansi_directory/builders/build_favourite_businesses_list.dart'; -import 'package:mzansi_innovation_hub/mih_services/mih_business_details_services.dart'; -import 'package:mzansi_innovation_hub/mih_services/mih_mzansi_directory_services.dart'; import 'package:provider/provider.dart'; class MihFavouriteBusinesses extends StatefulWidget { @@ -31,39 +29,12 @@ class _MihFavouriteBusinessesState extends State { ValueNotifier([]); Timer? _debounce; - Future getAndMapAllBusinessDetailsForBookmarkedBusinesses( - MzansiProfileProvider mzansiProfileProvider, - MzansiDirectoryProvider directoryProvider, - ) async { - await MihMzansiDirectoryServices().getAllUserBookmarkedBusiness( - mzansiProfileProvider.user!.app_id, - directoryProvider, - ); - Map businessMap = {}; - List> detailFutures = []; - for (var item in directoryProvider.bookmarkedBusinesses) { - detailFutures.add(MihBusinessDetailsServices() - .getBusinessDetailsByBusinessId(item.business_id)); - } - List details = await Future.wait(detailFutures); - for (int i = 0; i < directoryProvider.bookmarkedBusinesses.length; i++) { - businessMap[directoryProvider.bookmarkedBusinesses[i].business_id] = - details[i]; - } - directoryProvider.setBusinessDetailsMap(detailsMap: businessMap); - _filterAndSetBusinesses(directoryProvider); - } - void _filterAndSetBusinesses(MzansiDirectoryProvider directoryProvider) { List businessesToDisplay = []; String query = businessSearchController.text.toLowerCase(); - for (var bookmarked in directoryProvider.bookmarkedBusinesses) { - if (bookmarked.business_name.toLowerCase().contains(query)) { - if (directoryProvider.businessDetailsMap - .containsKey(bookmarked.business_id)) { - businessesToDisplay.add( - directoryProvider.businessDetailsMap[bookmarked.business_id]); - } + for (var bus in directoryProvider.favouriteBusinessesList) { + if (bus.Name.toLowerCase().contains(query)) { + businessesToDisplay.add(bus); } } searchBookmarkedBusinesses.value = businessesToDisplay; @@ -82,13 +53,11 @@ class _MihFavouriteBusinessesState extends State { super.initState(); MzansiDirectoryProvider directoryProvider = context.read(); - MzansiProfileProvider mzansiProfileProvider = - context.read(); - - getAndMapAllBusinessDetailsForBookmarkedBusinesses( - mzansiProfileProvider, - directoryProvider, - ); + // getAndMapAllBusinessDetailsForBookmarkedBusinesses( + // mzansiProfileProvider, + // directoryProvider, + // ); + _filterAndSetBusinesses(directoryProvider); businessSearchController.addListener(() { if (_debounce?.isActive ?? false) { _debounce!.cancel(); @@ -214,6 +183,7 @@ class _MihFavouriteBusinessesState extends State { ), ); } + KenLogger.success(filteredBusinesses); return BuildFavouriteBusinessesList( favouriteBusinesses: filteredBusinesses, ); diff --git a/Frontend/lib/mih_services/mih_mzansi_directory_services.dart b/Frontend/lib/mih_services/mih_mzansi_directory_services.dart index 322615de..6b4bc076 100644 --- a/Frontend/lib/mih_services/mih_mzansi_directory_services.dart +++ b/Frontend/lib/mih_services/mih_mzansi_directory_services.dart @@ -166,7 +166,8 @@ class MihMzansiDirectoryServices { List favouriteBusinesses = List.from( l.map((model) => BookmarkedBusiness.fromJson(model))); - directoryProvider.setFavouriteBusinesses(businesses: favouriteBusinesses); + directoryProvider.setBookmarkedeBusinesses( + businesses: favouriteBusinesses); return favouriteBusinesses; } else if (response.statusCode == 404) { return [];