BUG: Bookmarked businesses data load
This commit is contained in:
@@ -41,8 +41,6 @@ class _MihBusinessProfilePreviewState extends State<MihBusinessProfilePreview> {
|
|||||||
@override
|
@override
|
||||||
void initState() {
|
void initState() {
|
||||||
super.initState();
|
super.initState();
|
||||||
futureImageUrl =
|
|
||||||
MihFileApi.getMinioFileUrl(widget.business.logo_path, context);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
@@ -54,7 +52,8 @@ class _MihBusinessProfilePreviewState extends State<MihBusinessProfilePreview> {
|
|||||||
return Row(
|
return Row(
|
||||||
children: [
|
children: [
|
||||||
FutureBuilder(
|
FutureBuilder(
|
||||||
future: futureImageUrl,
|
future: MihFileApi.getMinioFileUrl(
|
||||||
|
widget.business.logo_path, context),
|
||||||
builder: (context, asyncSnapshot) {
|
builder: (context, asyncSnapshot) {
|
||||||
if (asyncSnapshot.connectionState == ConnectionState.done &&
|
if (asyncSnapshot.connectionState == ConnectionState.done &&
|
||||||
asyncSnapshot.hasData) {
|
asyncSnapshot.hasData) {
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ class MzansiDirectoryProvider extends ChangeNotifier {
|
|||||||
String userLocation;
|
String userLocation;
|
||||||
bool personalSearch;
|
bool personalSearch;
|
||||||
List<BookmarkedBusiness> bookmarkedBusinesses = [];
|
List<BookmarkedBusiness> bookmarkedBusinesses = [];
|
||||||
Map<String, Business?> businessDetailsMap = {};
|
List<Business> favouriteBusinessesList = [];
|
||||||
List<Business>? searchedBusinesses;
|
List<Business>? searchedBusinesses;
|
||||||
Business? selectedBusiness;
|
Business? selectedBusiness;
|
||||||
List<AppUser>? searchedUsers;
|
List<AppUser>? searchedUsers;
|
||||||
@@ -32,7 +32,6 @@ class MzansiDirectoryProvider extends ChangeNotifier {
|
|||||||
userLocation = "Unknown Location";
|
userLocation = "Unknown Location";
|
||||||
personalSearch = true;
|
personalSearch = true;
|
||||||
bookmarkedBusinesses = [];
|
bookmarkedBusinesses = [];
|
||||||
businessDetailsMap = {};
|
|
||||||
searchedBusinesses = null;
|
searchedBusinesses = null;
|
||||||
selectedBusiness = null;
|
selectedBusiness = null;
|
||||||
searchedUsers = null;
|
searchedUsers = null;
|
||||||
@@ -62,13 +61,14 @@ class MzansiDirectoryProvider extends ChangeNotifier {
|
|||||||
notifyListeners();
|
notifyListeners();
|
||||||
}
|
}
|
||||||
|
|
||||||
void setFavouriteBusinesses({required List<BookmarkedBusiness> businesses}) {
|
void setBookmarkedeBusinesses(
|
||||||
|
{required List<BookmarkedBusiness> businesses}) {
|
||||||
bookmarkedBusinesses = businesses;
|
bookmarkedBusinesses = businesses;
|
||||||
notifyListeners();
|
notifyListeners();
|
||||||
}
|
}
|
||||||
|
|
||||||
void setBusinessDetailsMap({required Map<String, Business?> detailsMap}) {
|
void setFavouriteBusinesses({required List<Business> businesses}) {
|
||||||
businessDetailsMap = detailsMap;
|
favouriteBusinessesList = businesses;
|
||||||
notifyListeners();
|
notifyListeners();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,13 +1,18 @@
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:geolocator/geolocator.dart';
|
import 'package:geolocator/geolocator.dart';
|
||||||
import 'package:go_router/go_router.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.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_action.dart';
|
||||||
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package_tools.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_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_favourite_businesses.dart';
|
||||||
import 'package:mzansi_innovation_hub/mih_packages/mzansi_directory/package_tools/mih_search_mzansi.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_location_services.dart';
|
||||||
|
import 'package:mzansi_innovation_hub/mih_services/mih_mzansi_directory_services.dart';
|
||||||
import 'package:provider/provider.dart';
|
import 'package:provider/provider.dart';
|
||||||
|
|
||||||
class MzansiDirectory extends StatefulWidget {
|
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
|
@override
|
||||||
void initState() {
|
void initState() {
|
||||||
super.initState();
|
super.initState();
|
||||||
WidgetsBinding.instance.addPostFrameCallback((_) async {
|
WidgetsBinding.instance.addPostFrameCallback((_) async {
|
||||||
initialiseGPSLocation();
|
initialiseGPSLocation();
|
||||||
|
getFavouriteBusinesses();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
import 'dart:async';
|
import 'dart:async';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:ken_logger/ken_logger.dart';
|
||||||
import 'package:mzansi_innovation_hub/main.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_objects/business.dart';
|
||||||
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_icons.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_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_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_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_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_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';
|
import 'package:provider/provider.dart';
|
||||||
|
|
||||||
class MihFavouriteBusinesses extends StatefulWidget {
|
class MihFavouriteBusinesses extends StatefulWidget {
|
||||||
@@ -31,39 +29,12 @@ class _MihFavouriteBusinessesState extends State<MihFavouriteBusinesses> {
|
|||||||
ValueNotifier([]);
|
ValueNotifier([]);
|
||||||
Timer? _debounce;
|
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) {
|
void _filterAndSetBusinesses(MzansiDirectoryProvider directoryProvider) {
|
||||||
List<Business?> businessesToDisplay = [];
|
List<Business?> businessesToDisplay = [];
|
||||||
String query = businessSearchController.text.toLowerCase();
|
String query = businessSearchController.text.toLowerCase();
|
||||||
for (var bookmarked in directoryProvider.bookmarkedBusinesses) {
|
for (var bus in directoryProvider.favouriteBusinessesList) {
|
||||||
if (bookmarked.business_name.toLowerCase().contains(query)) {
|
if (bus.Name.toLowerCase().contains(query)) {
|
||||||
if (directoryProvider.businessDetailsMap
|
businessesToDisplay.add(bus);
|
||||||
.containsKey(bookmarked.business_id)) {
|
|
||||||
businessesToDisplay.add(
|
|
||||||
directoryProvider.businessDetailsMap[bookmarked.business_id]);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
searchBookmarkedBusinesses.value = businessesToDisplay;
|
searchBookmarkedBusinesses.value = businessesToDisplay;
|
||||||
@@ -82,13 +53,11 @@ class _MihFavouriteBusinessesState extends State<MihFavouriteBusinesses> {
|
|||||||
super.initState();
|
super.initState();
|
||||||
MzansiDirectoryProvider directoryProvider =
|
MzansiDirectoryProvider directoryProvider =
|
||||||
context.read<MzansiDirectoryProvider>();
|
context.read<MzansiDirectoryProvider>();
|
||||||
MzansiProfileProvider mzansiProfileProvider =
|
// getAndMapAllBusinessDetailsForBookmarkedBusinesses(
|
||||||
context.read<MzansiProfileProvider>();
|
// mzansiProfileProvider,
|
||||||
|
// directoryProvider,
|
||||||
getAndMapAllBusinessDetailsForBookmarkedBusinesses(
|
// );
|
||||||
mzansiProfileProvider,
|
_filterAndSetBusinesses(directoryProvider);
|
||||||
directoryProvider,
|
|
||||||
);
|
|
||||||
businessSearchController.addListener(() {
|
businessSearchController.addListener(() {
|
||||||
if (_debounce?.isActive ?? false) {
|
if (_debounce?.isActive ?? false) {
|
||||||
_debounce!.cancel();
|
_debounce!.cancel();
|
||||||
@@ -214,6 +183,7 @@ class _MihFavouriteBusinessesState extends State<MihFavouriteBusinesses> {
|
|||||||
),
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
KenLogger.success(filteredBusinesses);
|
||||||
return BuildFavouriteBusinessesList(
|
return BuildFavouriteBusinessesList(
|
||||||
favouriteBusinesses: filteredBusinesses,
|
favouriteBusinesses: filteredBusinesses,
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -166,7 +166,8 @@ class MihMzansiDirectoryServices {
|
|||||||
List<BookmarkedBusiness> favouriteBusinesses =
|
List<BookmarkedBusiness> favouriteBusinesses =
|
||||||
List<BookmarkedBusiness>.from(
|
List<BookmarkedBusiness>.from(
|
||||||
l.map((model) => BookmarkedBusiness.fromJson(model)));
|
l.map((model) => BookmarkedBusiness.fromJson(model)));
|
||||||
directoryProvider.setFavouriteBusinesses(businesses: favouriteBusinesses);
|
directoryProvider.setBookmarkedeBusinesses(
|
||||||
|
businesses: favouriteBusinesses);
|
||||||
return favouriteBusinesses;
|
return favouriteBusinesses;
|
||||||
} else if (response.statusCode == 404) {
|
} else if (response.statusCode == 404) {
|
||||||
return [];
|
return [];
|
||||||
|
|||||||
Reference in New Issue
Block a user