From 49c7ecce1f08ec3d3dd6a82c9df5632b877cfdb4 Mon Sep 17 00:00:00 2001 From: Yasien Mac Mini Date: Fri, 29 May 2026 08:26:27 +0200 Subject: [PATCH] add provider indexing for business & user views --- .../mzansi_business_profile_view.dart | 22 ++++++------------- .../personal_profile/mzansi_profile_view.dart | 18 +++++---------- .../package_tools/mih_personal_qr_code.dart | 5 +++-- .../mzansi_directory_provider.dart | 17 +++++++++++++- 4 files changed, 32 insertions(+), 30 deletions(-) diff --git a/mih_ui/lib/mih_packages/mzansi_profile/business_profile/mzansi_business_profile_view.dart b/mih_ui/lib/mih_packages/mzansi_profile/business_profile/mzansi_business_profile_view.dart index 92a0910c..ac299908 100644 --- a/mih_ui/lib/mih_packages/mzansi_profile/business_profile/mzansi_business_profile_view.dart +++ b/mih_ui/lib/mih_packages/mzansi_profile/business_profile/mzansi_business_profile_view.dart @@ -24,7 +24,6 @@ class MzansiBusinessProfileView extends StatefulWidget { } class _MzansiBusinessProfileViewState extends State { - int _selectedIndex = 0; late final MihBusinessDetailsView _businessDetailsView; late final MihBusinessReviews _businessReviews; late final MihBusinessQrCode _businessQrCode; @@ -57,6 +56,7 @@ class _MzansiBusinessProfileViewState extends State { super.initState(); MzansiDirectoryProvider directoryProvider = context.read(); + directoryProvider.setBusinessViewIndex(0); _fetchBusinessDetails(directoryProvider); } @@ -78,11 +78,9 @@ class _MzansiBusinessProfileViewState extends State { packageTools: getTools(), packageToolBodies: getToolBody(directoryProvider), packageToolTitles: getToolTitle(), - selectedBodyIndex: _selectedIndex, + selectedBodyIndex: directoryProvider.businessViewIndex, onIndexChange: (newValue) { - setState(() { - _selectedIndex = newValue; - }); + directoryProvider.setBusinessViewIndex(newValue); }, ); } @@ -114,23 +112,17 @@ class _MzansiBusinessProfileViewState extends State { MihPackageTools getTools() { Map temp = {}; temp[const Icon(Icons.business)] = () { - setState(() { - _selectedIndex = 0; - }); + context.read().setBusinessViewIndex(0); }; temp[const Icon(Icons.star_rate_rounded)] = () { - setState(() { - _selectedIndex = 1; - }); + context.read().setBusinessViewIndex(1); }; temp[const Icon(Icons.qr_code_rounded)] = () { - setState(() { - _selectedIndex = 2; - }); + context.read().setBusinessViewIndex(2); }; return MihPackageTools( tools: temp, - selectedIndex: _selectedIndex, + selectedIndex: context.watch().businessViewIndex, ); } diff --git a/mih_ui/lib/mih_packages/mzansi_profile/personal_profile/mzansi_profile_view.dart b/mih_ui/lib/mih_packages/mzansi_profile/personal_profile/mzansi_profile_view.dart index 97bb37b5..7d4d1d6f 100644 --- a/mih_ui/lib/mih_packages/mzansi_profile/personal_profile/mzansi_profile_view.dart +++ b/mih_ui/lib/mih_packages/mzansi_profile/personal_profile/mzansi_profile_view.dart @@ -20,13 +20,13 @@ class MzansiProfileView extends StatefulWidget { } class _MzansiProfileViewState extends State { - int _selectedIndex = 0; late final MihPersonalProfileView _personalProfileView; late final MihPersonalQrCode _personalQrCode; void _loadUserData() async { MzansiDirectoryProvider directoryProvider = context.read(); + directoryProvider.setPersonalViewIndex(0); if (widget.username != null) { final user = await MihUserServices() .getMIHUserDetailsByUsername(widget.username!, context); @@ -68,11 +68,9 @@ class _MzansiProfileViewState extends State { packageTools: getTools(), packageToolBodies: getToolBody(), packageToolTitles: getToolTitle(), - selectedBodyIndex: _selectedIndex, + selectedBodyIndex: directoryProvider.personalViewIndex, onIndexChange: (newValue) { - setState(() { - _selectedIndex = newValue; - }); + directoryProvider.setPersonalViewIndex(newValue); }, ); } @@ -95,18 +93,14 @@ class _MzansiProfileViewState extends State { MihPackageTools getTools() { Map temp = {}; temp[const Icon(Icons.person)] = () { - setState(() { - _selectedIndex = 0; - }); + context.read().setPersonalViewIndex(0); }; temp[const Icon(Icons.qr_code_rounded)] = () { - setState(() { - _selectedIndex = 1; - }); + context.read().setPersonalViewIndex(1); }; return MihPackageTools( tools: temp, - selectedIndex: _selectedIndex, + selectedIndex: context.watch().personalViewIndex, ); } diff --git a/mih_ui/lib/mih_packages/mzansi_profile/personal_profile/package_tools/mih_personal_qr_code.dart b/mih_ui/lib/mih_packages/mzansi_profile/personal_profile/package_tools/mih_personal_qr_code.dart index 1627a5c9..63bd72e0 100644 --- a/mih_ui/lib/mih_packages/mzansi_profile/personal_profile/package_tools/mih_personal_qr_code.dart +++ b/mih_ui/lib/mih_packages/mzansi_profile/personal_profile/package_tools/mih_personal_qr_code.dart @@ -56,7 +56,8 @@ class _MihPersonalQrCodeState extends State { String bgColor = MihColors.secondary().toARGB32().toRadixString(16).substring(2, 8); // KenLogger.warning(bgColor); - String encodedData = Uri.encodeComponent("$_qrCodedata${user.username}"); + String encodedData = + Uri.encodeComponent("$_qrCodedata${user.username.toLowerCase()}"); return "https://api.qrserver.com/v1/create-qr-code/?data=$encodedData&size=${qrSize}x$qrSize&bgcolor=$bgColor&color=$color"; } @@ -398,7 +399,7 @@ class _MihPersonalQrCodeState extends State { shareMIHLink( context, "Check out ${user.username} on the MIH app's Mzansi Directory", - "$_qrCodedata${user.username}", + "$_qrCodedata${user.username.toLowerCase()}", ); }, ), diff --git a/mih_ui/lib/mih_providers/mzansi_directory_provider.dart b/mih_ui/lib/mih_providers/mzansi_directory_provider.dart index 113bec98..aed3f1c5 100644 --- a/mih_ui/lib/mih_providers/mzansi_directory_provider.dart +++ b/mih_ui/lib/mih_providers/mzansi_directory_provider.dart @@ -3,10 +3,11 @@ import 'package:geolocator/geolocator.dart'; import 'package:mzansi_innovation_hub/mih_objects/app_user.dart'; import 'package:mzansi_innovation_hub/mih_objects/bookmarked_business.dart'; import 'package:mzansi_innovation_hub/mih_objects/business.dart'; -import 'package:mzansi_innovation_hub/mih_objects/profile_link.dart'; class MzansiDirectoryProvider extends ChangeNotifier { int toolIndex; + int personalViewIndex; + int businessViewIndex; Position? userPosition; String userLocation; bool personalSearch; @@ -24,6 +25,8 @@ class MzansiDirectoryProvider extends ChangeNotifier { MzansiDirectoryProvider({ this.toolIndex = 0, + this.personalViewIndex = 0, + this.businessViewIndex = 0, this.personalSearch = true, this.userLocation = "Unknown Location", this.searchTerm = "", @@ -32,6 +35,8 @@ class MzansiDirectoryProvider extends ChangeNotifier { void reset() { toolIndex = 0; + personalViewIndex = 0; + businessViewIndex = 0; userPosition = null; userLocation = "Unknown Location"; personalSearch = true; @@ -50,6 +55,16 @@ class MzansiDirectoryProvider extends ChangeNotifier { notifyListeners(); } + void setPersonalViewIndex(int index) { + personalViewIndex = index; + notifyListeners(); + } + + void setBusinessViewIndex(int index) { + businessViewIndex = index; + notifyListeners(); + } + void setUserPosition(Position? position) { userPosition = position; if (position == null) {