BUG: Bookmarked businesses data load
This commit is contained in:
@@ -41,8 +41,6 @@ class _MihBusinessProfilePreviewState extends State<MihBusinessProfilePreview> {
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
futureImageUrl =
|
||||
MihFileApi.getMinioFileUrl(widget.business.logo_path, context);
|
||||
}
|
||||
|
||||
@override
|
||||
@@ -54,7 +52,8 @@ class _MihBusinessProfilePreviewState extends State<MihBusinessProfilePreview> {
|
||||
return Row(
|
||||
children: [
|
||||
FutureBuilder(
|
||||
future: futureImageUrl,
|
||||
future: MihFileApi.getMinioFileUrl(
|
||||
widget.business.logo_path, context),
|
||||
builder: (context, asyncSnapshot) {
|
||||
if (asyncSnapshot.connectionState == ConnectionState.done &&
|
||||
asyncSnapshot.hasData) {
|
||||
|
||||
@@ -10,7 +10,7 @@ class MzansiDirectoryProvider extends ChangeNotifier {
|
||||
String userLocation;
|
||||
bool personalSearch;
|
||||
List<BookmarkedBusiness> bookmarkedBusinesses = [];
|
||||
Map<String, Business?> businessDetailsMap = {};
|
||||
List<Business> favouriteBusinessesList = [];
|
||||
List<Business>? searchedBusinesses;
|
||||
Business? selectedBusiness;
|
||||
List<AppUser>? 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<BookmarkedBusiness> businesses}) {
|
||||
void setBookmarkedeBusinesses(
|
||||
{required List<BookmarkedBusiness> businesses}) {
|
||||
bookmarkedBusinesses = businesses;
|
||||
notifyListeners();
|
||||
}
|
||||
|
||||
void setBusinessDetailsMap({required Map<String, Business?> detailsMap}) {
|
||||
businessDetailsMap = detailsMap;
|
||||
void setFavouriteBusinesses({required List<Business> businesses}) {
|
||||
favouriteBusinessesList = businesses;
|
||||
notifyListeners();
|
||||
}
|
||||
|
||||
|
||||
@@ -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<MzansiDirectory> {
|
||||
});
|
||||
}
|
||||
|
||||
Future<void> getFavouriteBusinesses() async {
|
||||
MzansiDirectoryProvider directoryProvider =
|
||||
context.read<MzansiDirectoryProvider>();
|
||||
MzansiProfileProvider profileProvider =
|
||||
context.read<MzansiProfileProvider>();
|
||||
await MihMzansiDirectoryServices().getAllUserBookmarkedBusiness(
|
||||
profileProvider.user!.app_id,
|
||||
directoryProvider,
|
||||
);
|
||||
List<Business> 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();
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -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<MihFavouriteBusinesses> {
|
||||
ValueNotifier([]);
|
||||
Timer? _debounce;
|
||||
|
||||
Future<void> getAndMapAllBusinessDetailsForBookmarkedBusinesses(
|
||||
MzansiProfileProvider mzansiProfileProvider,
|
||||
MzansiDirectoryProvider directoryProvider,
|
||||
) async {
|
||||
await MihMzansiDirectoryServices().getAllUserBookmarkedBusiness(
|
||||
mzansiProfileProvider.user!.app_id,
|
||||
directoryProvider,
|
||||
);
|
||||
Map<String, Business?> businessMap = {};
|
||||
List<Future<Business?>> detailFutures = [];
|
||||
for (var item in directoryProvider.bookmarkedBusinesses) {
|
||||
detailFutures.add(MihBusinessDetailsServices()
|
||||
.getBusinessDetailsByBusinessId(item.business_id));
|
||||
}
|
||||
List<Business?> 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<Business?> 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<MihFavouriteBusinesses> {
|
||||
super.initState();
|
||||
MzansiDirectoryProvider directoryProvider =
|
||||
context.read<MzansiDirectoryProvider>();
|
||||
MzansiProfileProvider mzansiProfileProvider =
|
||||
context.read<MzansiProfileProvider>();
|
||||
|
||||
getAndMapAllBusinessDetailsForBookmarkedBusinesses(
|
||||
mzansiProfileProvider,
|
||||
directoryProvider,
|
||||
);
|
||||
// getAndMapAllBusinessDetailsForBookmarkedBusinesses(
|
||||
// mzansiProfileProvider,
|
||||
// directoryProvider,
|
||||
// );
|
||||
_filterAndSetBusinesses(directoryProvider);
|
||||
businessSearchController.addListener(() {
|
||||
if (_debounce?.isActive ?? false) {
|
||||
_debounce!.cancel();
|
||||
@@ -214,6 +183,7 @@ class _MihFavouriteBusinessesState extends State<MihFavouriteBusinesses> {
|
||||
),
|
||||
);
|
||||
}
|
||||
KenLogger.success(filteredBusinesses);
|
||||
return BuildFavouriteBusinessesList(
|
||||
favouriteBusinesses: filteredBusinesses,
|
||||
);
|
||||
|
||||
@@ -166,7 +166,8 @@ class MihMzansiDirectoryServices {
|
||||
List<BookmarkedBusiness> favouriteBusinesses =
|
||||
List<BookmarkedBusiness>.from(
|
||||
l.map((model) => BookmarkedBusiness.fromJson(model)));
|
||||
directoryProvider.setFavouriteBusinesses(businesses: favouriteBusinesses);
|
||||
directoryProvider.setBookmarkedeBusinesses(
|
||||
businesses: favouriteBusinesses);
|
||||
return favouriteBusinesses;
|
||||
} else if (response.statusCode == 404) {
|
||||
return [];
|
||||
|
||||
Reference in New Issue
Block a user