diff --git a/Frontend/lib/mih_package_components/Example/package_tools/package_tool_one.dart b/Frontend/lib/mih_package_components/Example/package_tools/package_tool_one.dart index 176b5012..95d2fce7 100644 --- a/Frontend/lib/mih_package_components/Example/package_tools/package_tool_one.dart +++ b/Frontend/lib/mih_package_components/Example/package_tools/package_tool_one.dart @@ -8,11 +8,9 @@ import 'package:mzansi_innovation_hub/main.dart'; import 'package:mzansi_innovation_hub/mih_objects/app_user.dart'; import 'package:mzansi_innovation_hub/mih_objects/business.dart'; import 'package:mzansi_innovation_hub/mih_package_components/mih_banner_ad.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_personal_profile_preview.dart'; import 'package:mzansi_innovation_hub/mih_package_components/mih_loading_circle.dart'; import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart'; import 'package:mzansi_innovation_hub/mih_packages/mzansi_profile/business_profile/components/mih_business_info_card.dart'; -// import 'package:mzansi_innovation_hub/mih_packages/mzansi_profile/business_profile/components/mih_business_info_card.dart'; import 'package:mzansi_innovation_hub/mih_services/mih_alert_services.dart'; import 'package:mzansi_innovation_hub/mih_services/mih_location_services.dart'; import 'package:mzansi_innovation_hub/mih_services/mih_validation_services.dart'; @@ -342,9 +340,9 @@ class _PackageToolOneState extends State { ], ), const SizedBox(height: 10), - MihPersonalProfilePreview( - user: widget.user, - ), + // MihPersonalProfilePreview( + // user: widget.user, + // ), const SizedBox(height: 10), Row( mainAxisAlignment: MainAxisAlignment.center, diff --git a/Frontend/lib/mih_package_components/mih_business_profile_preview copy.dart b/Frontend/lib/mih_package_components/mih_business_profile_preview copy.dart deleted file mode 100644 index 45864d3d..00000000 --- a/Frontend/lib/mih_package_components/mih_business_profile_preview copy.dart +++ /dev/null @@ -1,127 +0,0 @@ -import 'package:file_picker/file_picker.dart'; -import 'package:flutter/material.dart'; -import 'package:mzansi_innovation_hub/main.dart'; -import 'package:mzansi_innovation_hub/mih_objects/business.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_circle_avatar.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_icons.dart'; -import 'package:mzansi_innovation_hub/mih_providers/mzansi_directory_provider.dart'; -import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart'; -import 'package:mzansi_innovation_hub/mih_services/mih_file_services.dart'; -import 'package:mzansi_innovation_hub/mih_services/mih_location_services.dart'; -import 'package:provider/provider.dart'; - -class MihBusinessProfilePreview extends StatefulWidget { - final Business business; - const MihBusinessProfilePreview({ - super.key, - required this.business, - }); - - @override - State createState() => - _MihBusinessProfilePreviewState(); -} - -class _MihBusinessProfilePreviewState extends State { - late Future futureImageUrl; - PlatformFile? file; - - String calculateDistance(MzansiDirectoryProvider directoryProvider) { - try { - double distanceInKm = MIHLocationAPI().getDistanceInMeaters( - directoryProvider.userLocation, widget.business.gps_location) / - 1000; - return "${distanceInKm.toStringAsFixed(2)} km"; - } catch (error) { - print(error); - return "*.** km"; - } - } - - @override - void initState() { - super.initState(); - } - - @override - Widget build(BuildContext context) { - double profilePictureWidth = 60; - return Consumer( - builder: (BuildContext context, MzansiDirectoryProvider directoryProvider, - Widget? child) { - return Row( - children: [ - FutureBuilder( - future: MihFileApi.getMinioFileUrl(widget.business.logo_path), - builder: (context, asyncSnapshot) { - if (asyncSnapshot.connectionState == ConnectionState.done && - asyncSnapshot.hasData) { - if (asyncSnapshot.requireData != "") { - return MihCircleAvatar( - imageFile: NetworkImage(asyncSnapshot.requireData), - width: profilePictureWidth, - editable: false, - fileNameController: TextEditingController(), - userSelectedfile: file, - frameColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), - backgroundColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), - onChange: () {}, - ); - } else { - return Icon( - MihIcons.iDontKnow, - size: profilePictureWidth, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), - ); - } - } else { - return Icon( - MihIcons.mihRing, - size: profilePictureWidth, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), - ); - } - }), - const SizedBox(width: 15), - Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Text( - widget.business.Name, - style: TextStyle( - fontWeight: FontWeight.bold, - fontSize: 18, - ), - ), - Text( - widget.business.type, - style: TextStyle( - fontWeight: FontWeight.bold, - fontSize: 15, - ), - ), - Text( - directoryProvider.userPosition != null - ? calculateDistance(directoryProvider) - : "0.00 km", - style: TextStyle( - fontWeight: FontWeight.bold, - fontSize: 10, - ), - ), - ], - ) - ], - ); - }, - ); - } -} diff --git a/Frontend/lib/mih_package_components/mih_personal_profile_preview.dart b/Frontend/lib/mih_package_components/mih_personal_profile_preview.dart index a08f266e..25251ba6 100644 --- a/Frontend/lib/mih_package_components/mih_personal_profile_preview.dart +++ b/Frontend/lib/mih_package_components/mih_personal_profile_preview.dart @@ -1,17 +1,16 @@ -import 'package:file_picker/file_picker.dart'; import 'package:flutter/material.dart'; import 'package:mzansi_innovation_hub/main.dart'; import 'package:mzansi_innovation_hub/mih_objects/app_user.dart'; import 'package:mzansi_innovation_hub/mih_package_components/mih_circle_avatar.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_icons.dart'; import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart'; -import 'package:mzansi_innovation_hub/mih_services/mih_file_services.dart'; class MihPersonalProfilePreview extends StatefulWidget { final AppUser user; + final ImageProvider? imageFile; const MihPersonalProfilePreview({ super.key, required this.user, + required this.imageFile, }); @override @@ -20,14 +19,9 @@ class MihPersonalProfilePreview extends StatefulWidget { } class _MihPersonalProfilePreviewState extends State { - late Future futureImageUrl; - // String imageUrl = ""; - PlatformFile? file; - @override void initState() { super.initState(); - futureImageUrl = MihFileApi.getMinioFileUrl(widget.user.pro_pic_path); } @override @@ -35,41 +29,17 @@ class _MihPersonalProfilePreviewState extends State { double profilePictureWidth = 60; return Row( children: [ - FutureBuilder( - future: futureImageUrl, - builder: (context, asyncSnapshot) { - if (asyncSnapshot.connectionState == ConnectionState.done && - asyncSnapshot.hasData) { - if (asyncSnapshot.requireData != "") { - return MihCircleAvatar( - imageFile: NetworkImage(asyncSnapshot.requireData), - width: profilePictureWidth, - editable: false, - fileNameController: TextEditingController(), - userSelectedfile: file, - frameColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), - backgroundColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), - onChange: () {}, - ); - } else { - return Icon( - MihIcons.iDontKnow, - size: profilePictureWidth, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), - ); - } - } else { - return Icon( - MihIcons.mihRing, - size: profilePictureWidth, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), - ); - } - }, + MihCircleAvatar( + imageFile: widget.imageFile, + width: profilePictureWidth, + editable: false, + fileNameController: TextEditingController(), + userSelectedfile: null, + frameColor: MihColors.getSecondaryColor( + MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + backgroundColor: MihColors.getPrimaryColor( + MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + onChange: () {}, ), const SizedBox(width: 15), Column( diff --git a/Frontend/lib/mih_packages/mzansi_directory/builders/build_user_search_results_list.dart b/Frontend/lib/mih_packages/mzansi_directory/builders/build_user_search_results_list.dart index 1ba4f568..2c66ac47 100644 --- a/Frontend/lib/mih_packages/mzansi_directory/builders/build_user_search_results_list.dart +++ b/Frontend/lib/mih_packages/mzansi_directory/builders/build_user_search_results_list.dart @@ -57,8 +57,11 @@ class _BuildUserSearchResultsListState // vertical: 5, horizontal: 25, ), - child: - MihPersonalProfilePreview(user: widget.userList[index]), + child: MihPersonalProfilePreview( + user: widget.userList[index], + imageFile: directoryProvider + .userSearchImages![widget.userList[index].app_id], + ), ), ), ); diff --git a/Frontend/lib/mih_packages/mzansi_directory/package_tools/mih_search_mzansi.dart b/Frontend/lib/mih_packages/mzansi_directory/package_tools/mih_search_mzansi.dart index 4d545ecf..14abea51 100644 --- a/Frontend/lib/mih_packages/mzansi_directory/package_tools/mih_search_mzansi.dart +++ b/Frontend/lib/mih_packages/mzansi_directory/package_tools/mih_search_mzansi.dart @@ -60,7 +60,7 @@ class _MihSearchMzansiState extends State { void clearAll(MzansiDirectoryProvider directoryProvider) { directoryProvider .setSearchedBusinesses(searchedBusinesses: [], businessesImages: {}); - directoryProvider.setSearchedUsers(searchedUsers: []); + directoryProvider.setSearchedUsers(searchedUsers: [], userImages: {}); directoryProvider.setSearchTerm(searchTerm: ""); setState(() { mzansiSearchController.clear(); @@ -80,7 +80,20 @@ class _MihSearchMzansiState extends State { directoryProvider.searchTerm.isNotEmpty) { final userResults = await MihUserServices() .searchUsers(profileProvider, directoryProvider.searchTerm, context); - directoryProvider.setSearchedUsers(searchedUsers: userResults); + Map?> userImages = {}; + String usernProPicUrl = ""; + for (var user in userResults) { + KenLogger.success("Business Logo Path: ${user.pro_pic_path}"); + usernProPicUrl = await MihFileApi.getMinioFileUrl(user.pro_pic_path); + KenLogger.success("Business Logo Path: ${user.pro_pic_path}"); + userImages[user.app_id] = + usernProPicUrl != "" ? NetworkImage(usernProPicUrl) : null; + } + + directoryProvider.setSearchedUsers( + searchedUsers: userResults, + userImages: userImages, + ); } else { List? businessSearchResults = []; if (directoryProvider.businessTypeFilter.isNotEmpty) { @@ -127,7 +140,7 @@ class _MihSearchMzansiState extends State { MihBusinessDetailsServices().fetchAllBusinessTypes(); mzansiSearchController.text = ""; WidgetsBinding.instance.addPostFrameCallback((_) async { - directoryProvider.setSearchedUsers(searchedUsers: []); + directoryProvider.setSearchedUsers(searchedUsers: [], userImages: {}); }); } diff --git a/Frontend/lib/mih_providers/mzansi_directory_provider.dart b/Frontend/lib/mih_providers/mzansi_directory_provider.dart index ebffc52e..b0995b2e 100644 --- a/Frontend/lib/mih_providers/mzansi_directory_provider.dart +++ b/Frontend/lib/mih_providers/mzansi_directory_provider.dart @@ -16,6 +16,7 @@ class MzansiDirectoryProvider extends ChangeNotifier { Map?>? busSearchImages; Business? selectedBusiness; List? searchedUsers; + Map?>? userSearchImages; AppUser? selectedUser; String searchTerm; String businessTypeFilter; @@ -92,8 +93,12 @@ class MzansiDirectoryProvider extends ChangeNotifier { notifyListeners(); } - void setSearchedUsers({required List searchedUsers}) { + void setSearchedUsers({ + required List searchedUsers, + required Map?> userImages, + }) { this.searchedUsers = searchedUsers; + this.userSearchImages = userImages; notifyListeners(); }