From 15106d0a005cb720bf0c33340cd9889f2ffdd5b9 Mon Sep 17 00:00:00 2001 From: Yasien Mac Mini Date: Tue, 21 Oct 2025 09:53:37 +0200 Subject: [PATCH] NEW: fix home nav --- .../mzansi_profile_provider.dart | 5 + Frontend/lib/mih_config/mih_go_router.dart | 14 +- .../lib/mih_packages/about_mih/about_mih.dart | 14 -- .../access_review/mih_access.dart | 1 - .../calculator/mih_calculator.dart | 3 - .../mih_home/components/mih_app_drawer.dart | 115 ++++++++++------ .../lib/mih_packages/mih_home/mih_home.dart | 128 ++++++++---------- .../lib/mih_packages/mzansi_ai/mzansi_ai.dart | 1 - .../mzansi_directory/mzansi_directory.dart | 1 - .../mzansi_business_profile.dart | 1 - .../personal_profile/mzansi_profile.dart | 1 - .../mzansi_wallet/mih_wallet.dart | 1 - .../pat_manager/pat_manager.dart | 1 - .../pat_profile/patient_profile.dart | 1 - 14 files changed, 138 insertions(+), 149 deletions(-) diff --git a/Frontend/lib/mih_components/mih_providers/mzansi_profile_provider.dart b/Frontend/lib/mih_components/mih_providers/mzansi_profile_provider.dart index 109aedf2..cf6e6d8d 100644 --- a/Frontend/lib/mih_components/mih_providers/mzansi_profile_provider.dart +++ b/Frontend/lib/mih_components/mih_providers/mzansi_profile_provider.dart @@ -43,6 +43,11 @@ class MzansiProfileProvider extends ChangeNotifier { userConsent = null; } + void setPersonalHome(bool isPersonalHome) { + personalHome = isPersonalHome; + notifyListeners(); + } + void setPersonalIndex(int index) { personalIndex = index; notifyListeners(); diff --git a/Frontend/lib/mih_config/mih_go_router.dart b/Frontend/lib/mih_config/mih_go_router.dart index 86211a8f..ae242b82 100644 --- a/Frontend/lib/mih_config/mih_go_router.dart +++ b/Frontend/lib/mih_config/mih_go_router.dart @@ -146,12 +146,7 @@ class MihGoRouter { path: MihGoRouterPaths.aboutMih, builder: (BuildContext context, GoRouterState state) { KenLogger.success("MihGoRouter: aboutMih"); - final bool? args = state.extra as bool?; - bool personalSelected = true; - if (args != null) { - personalSelected = args; - } - return AboutMih(personalSelected: personalSelected); + return AboutMih(); }, ), // ========================== Mzansi Profile Personal ================================== @@ -237,12 +232,7 @@ class MihGoRouter { path: MihGoRouterPaths.calculator, builder: (BuildContext context, GoRouterState state) { KenLogger.success("MihGoRouter: mihCalculator"); - final bool? personalSelected = state.extra as bool?; - bool personal = true; - if (personalSelected != null) { - personal = personalSelected; - } - return MIHCalculator(personalSelected: personal); + return MIHCalculator(); }, ), // ========================== MIH Calculator ================================== diff --git a/Frontend/lib/mih_packages/about_mih/about_mih.dart b/Frontend/lib/mih_packages/about_mih/about_mih.dart index 336885f9..07f69340 100644 --- a/Frontend/lib/mih_packages/about_mih/about_mih.dart +++ b/Frontend/lib/mih_packages/about_mih/about_mih.dart @@ -11,12 +11,8 @@ import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; class AboutMih extends StatefulWidget { - final bool? personalSelected; - // final AboutArguments? arguments; const AboutMih({ super.key, - // this.arguments, - this.personalSelected, }); @override @@ -24,18 +20,9 @@ class AboutMih extends StatefulWidget { } class _AboutMihState extends State { - late bool _personalSelected; - @override void initState() { super.initState(); - setState(() { - if (widget.personalSelected == null) { - _personalSelected = true; - } else { - _personalSelected = widget.personalSelected!; - } - }); } @override @@ -59,7 +46,6 @@ class _AboutMihState extends State { onTap: () { context.goNamed( 'mihHome', - extra: _personalSelected, ); FocusScope.of(context).unfocus(); }, diff --git a/Frontend/lib/mih_packages/access_review/mih_access.dart b/Frontend/lib/mih_packages/access_review/mih_access.dart index 3812784a..bd456813 100644 --- a/Frontend/lib/mih_packages/access_review/mih_access.dart +++ b/Frontend/lib/mih_packages/access_review/mih_access.dart @@ -43,7 +43,6 @@ class _MihAccessState extends State { onTap: () { context.goNamed( 'mihHome', - extra: true, ); FocusScope.of(context).unfocus(); }, diff --git a/Frontend/lib/mih_packages/calculator/mih_calculator.dart b/Frontend/lib/mih_packages/calculator/mih_calculator.dart index 96fcbcee..e0ed5add 100644 --- a/Frontend/lib/mih_packages/calculator/mih_calculator.dart +++ b/Frontend/lib/mih_packages/calculator/mih_calculator.dart @@ -12,10 +12,8 @@ import 'package:mzansi_innovation_hub/mih_services/mih_currency_exchange_rate_se import 'package:provider/provider.dart'; class MIHCalculator extends StatefulWidget { - final bool personalSelected; const MIHCalculator({ super.key, - required this.personalSelected, }); @override @@ -57,7 +55,6 @@ class _MIHCalculatorState extends State { onTap: () { context.goNamed( 'mihHome', - extra: widget.personalSelected, ); FocusScope.of(context).unfocus(); }, diff --git a/Frontend/lib/mih_packages/mih_home/components/mih_app_drawer.dart b/Frontend/lib/mih_packages/mih_home/components/mih_app_drawer.dart index 3b3821ea..c74fe1c8 100644 --- a/Frontend/lib/mih_packages/mih_home/components/mih_app_drawer.dart +++ b/Frontend/lib/mih_packages/mih_home/components/mih_app_drawer.dart @@ -1,6 +1,5 @@ import 'package:flutter/material.dart'; import 'package:go_router/go_router.dart'; -import 'package:mzansi_innovation_hub/mih_components/mih_objects/app_user.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_objects/arguments.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_circle_avatar.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_icons.dart'; @@ -12,13 +11,8 @@ import '../../../main.dart'; import 'package:supertokens_flutter/supertokens.dart'; class MIHAppDrawer extends StatefulWidget { - final AppUser signedInUser; - final ImageProvider? propicFile; - const MIHAppDrawer({ super.key, - required this.signedInUser, - required this.propicFile, }); @override @@ -35,19 +29,23 @@ class _MIHAppDrawerState extends State { return true; } - Widget displayProPic() { + Widget displayProPic(MzansiProfileProvider mzansiProfileProvider) { return GestureDetector( onTap: () { - context.goNamed( - 'mzansiProfileManage', - extra: AppProfileUpdateArguments( - widget.signedInUser, - widget.propicFile, - ), - ); + if (mzansiProfileProvider.personalHome) { + context.goNamed( + 'mzansiProfileManage', + ); + } else { + context.goNamed( + "businessProfileManage", + ); + } }, child: MihCircleAvatar( - imageFile: widget.propicFile, + imageFile: mzansiProfileProvider.personalHome + ? mzansiProfileProvider.userProfilePicture + : mzansiProfileProvider.businessProfilePicture, width: 60, editable: false, fileNameController: proPicController, @@ -69,9 +67,6 @@ class _MIHAppDrawerState extends State { @override void initState() { - setState(() { - profilePictureLoaded = displayProPic(); - }); super.initState(); } @@ -102,38 +97,74 @@ class _MIHAppDrawerState extends State { "Dark"), ), child: SizedBox( - height: 400, + // height: 300, width: constraints.maxWidth, child: Column( crossAxisAlignment: CrossAxisAlignment.start, mainAxisSize: MainAxisSize.max, children: [ - profilePictureLoaded, - Text( - "${widget.signedInUser.fname} ${widget.signedInUser.lname}", - style: TextStyle( - fontWeight: FontWeight.bold, - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)! - .theme - .mode == - "Dark"), + displayProPic(mzansiProfileProvider), + Visibility( + visible: !mzansiProfileProvider.personalHome, + child: Text( + mzansiProfileProvider.business!.Name, + style: TextStyle( + fontWeight: FontWeight.bold, + color: MihColors.getPrimaryColor( + MzansiInnovationHub.of(context)! + .theme + .mode == + "Dark"), + ), + ), + ), + Visibility( + visible: mzansiProfileProvider.personalHome, + child: Text( + "${mzansiProfileProvider.user!.fname} ${mzansiProfileProvider.user!.lname}", + style: TextStyle( + fontWeight: FontWeight.bold, + color: MihColors.getPrimaryColor( + MzansiInnovationHub.of(context)! + .theme + .mode == + "Dark"), + ), + ), + ), + Visibility( + visible: !mzansiProfileProvider.personalHome, + child: Text( + mzansiProfileProvider.business!.type, + style: TextStyle( + fontSize: 12, + fontWeight: FontWeight.bold, + color: MihColors.getPrimaryColor( + MzansiInnovationHub.of(context)! + .theme + .mode == + "Dark"), + ), + ), + ), + Visibility( + visible: mzansiProfileProvider.personalHome, + child: Text( + "@${mzansiProfileProvider.user!.username}", + style: TextStyle( + fontSize: 12, + fontWeight: FontWeight.bold, + color: MihColors.getPrimaryColor( + MzansiInnovationHub.of(context)! + .theme + .mode == + "Dark"), + ), ), ), Text( - "@${widget.signedInUser.username}", - style: TextStyle( - fontSize: 12, - fontWeight: FontWeight.bold, - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)! - .theme - .mode == - "Dark"), - ), - ), - Text( - widget.signedInUser.type.toUpperCase(), + mzansiProfileProvider.user!.type + .toUpperCase(), style: TextStyle( fontSize: 10, fontWeight: FontWeight.bold, diff --git a/Frontend/lib/mih_packages/mih_home/mih_home.dart b/Frontend/lib/mih_packages/mih_home/mih_home.dart index 92a4ea8a..b294cc37 100644 --- a/Frontend/lib/mih_packages/mih_home/mih_home.dart +++ b/Frontend/lib/mih_packages/mih_home/mih_home.dart @@ -39,8 +39,6 @@ class MihHome extends StatefulWidget { } class _MihHomeState extends State { - late int _selcetedIndex; - late bool _personalHome; DateTime latestPrivacyPolicyDate = DateTime.parse("2024-12-01"); DateTime latestTermOfServiceDate = DateTime.parse("2024-12-01"); bool _isLoadingInitialData = true; @@ -206,13 +204,6 @@ class _MihHomeState extends State { @override void initState() { super.initState(); - if (context.read().personalHome == true) { - _selcetedIndex = 0; - _personalHome = true; - } else { - _selcetedIndex = 1; - _personalHome = false; - } _loadInitialData(); } @@ -249,26 +240,16 @@ class _MihHomeState extends State { child: SizedBox( height: MediaQuery.of(context).size.height, child: MihPackage( - appActionButton: getAction( - mzansiProfileProvider.userProfilePicUrl as String), - appTools: getTools( + appActionButton: getAction(), + appTools: getTools(mzansiProfileProvider, mzansiProfileProvider.user!.type != "personal"), - appBody: getToolBody(), + appBody: getToolBody(mzansiProfileProvider), appToolTitles: getToolTitle(), actionDrawer: getActionDrawer(), - selectedbodyIndex: _selcetedIndex, + selectedbodyIndex: + mzansiProfileProvider.personalHome ? 0 : 1, onIndexChange: (newValue) { - if (_selcetedIndex == 0) { - setState(() { - _selcetedIndex = newValue; - _personalHome = true; - }); - } else { - setState(() { - _selcetedIndex = newValue; - _personalHome = false; - }); - } + mzansiProfileProvider.setPersonalHome(newValue == 0); }, ), ), @@ -474,81 +455,88 @@ class _MihHomeState extends State { ); } - Widget getAction(String proPicUrl) { + Widget getAction() { return Builder(builder: (context) { - return MihPackageAction( - icon: Padding( - padding: const EdgeInsets.only(left: 5.0), - child: MihCircleAvatar( - imageFile: proPicUrl != "" ? NetworkImage(proPicUrl) : null, - width: 50, - editable: false, - fileNameController: null, - userSelectedfile: null, - // frameColor: frameColor, - frameColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), - backgroundColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), - onChange: (_) {}, - ), - ), - iconSize: 45, - onTap: () { - Scaffold.of(context).openDrawer(); - FocusScope.of(context) - .requestFocus(FocusNode()); // Fully unfocus all fields - // FocusScope.of(context).unfocus(); // Unfocus any text fields + return Consumer( + builder: (BuildContext context, + MzansiProfileProvider mzansiProfileProvider, Widget? child) { + ImageProvider? currentImage; + String imageKey; + if (mzansiProfileProvider.personalHome) { + currentImage = mzansiProfileProvider.userProfilePicture; + imageKey = 'user_${mzansiProfileProvider.userProfilePicUrl}'; + } else { + currentImage = mzansiProfileProvider.businessProfilePicture; + imageKey = + 'business_${mzansiProfileProvider.businessProfilePicUrl}'; + } + return MihPackageAction( + icon: Padding( + padding: const EdgeInsets.only(left: 5.0), + child: MihCircleAvatar( + key: Key(imageKey), + imageFile: currentImage, + width: 50, + editable: false, + fileNameController: null, + userSelectedfile: null, + // frameColor: frameColor, + frameColor: MihColors.getSecondaryColor( + MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + backgroundColor: MihColors.getPrimaryColor( + MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + onChange: (_) {}, + ), + ), + iconSize: 45, + onTap: () { + Scaffold.of(context).openDrawer(); + FocusScope.of(context) + .requestFocus(FocusNode()); // Fully unfocus all fields + // FocusScope.of(context).unfocus(); // Unfocus any text fields + }, + ); }, ); }); } MIHAppDrawer getActionDrawer() { - AppUser signedInUser = - context.watch().user as AppUser; - String proPicUrl = - context.watch().userProfilePicUrl ?? ""; - return MIHAppDrawer( - signedInUser: signedInUser, - propicFile: proPicUrl != "" ? NetworkImage(proPicUrl) : null, - ); + return MIHAppDrawer(); } - MihPackageTools getTools(bool isBusinessUser) { + MihPackageTools getTools( + MzansiProfileProvider mzansiProfileProvider, bool isBusinessUser) { Map temp = {}; temp[const Icon(Icons.person)] = () { setState(() { - _selcetedIndex = 0; - _personalHome = true; + mzansiProfileProvider.setPersonalHome(true); }); }; if (isBusinessUser) { temp[const Icon(Icons.business_center)] = () { setState(() { - _selcetedIndex = 1; - _personalHome = false; + mzansiProfileProvider.setPersonalHome(false); }); }; } return MihPackageTools( tools: temp, - selcetedIndex: _selcetedIndex, + selcetedIndex: mzansiProfileProvider.personalHome ? 0 : 1, ); } - List getToolBody() { + List getToolBody(MzansiProfileProvider mzansiProfileProvider) { List toolBodies = []; - AppUser? user = context.watch().user; - Business? business = context.watch().business; - BusinessUser? businessUser = - context.watch().businessUser; + AppUser? user = mzansiProfileProvider.user; + Business? business = mzansiProfileProvider.business; + BusinessUser? businessUser = mzansiProfileProvider.businessUser; String userProfilePictureUrl = - context.watch().userProfilePicUrl ?? ""; + mzansiProfileProvider.userProfilePicUrl ?? ""; toolBodies.add( MihPersonalHome( signedInUser: user!, - personalSelected: _personalHome, + personalSelected: mzansiProfileProvider.personalHome, business: business, businessUser: businessUser, propicFile: userProfilePictureUrl != "" diff --git a/Frontend/lib/mih_packages/mzansi_ai/mzansi_ai.dart b/Frontend/lib/mih_packages/mzansi_ai/mzansi_ai.dart index ccb43d38..715b0519 100644 --- a/Frontend/lib/mih_packages/mzansi_ai/mzansi_ai.dart +++ b/Frontend/lib/mih_packages/mzansi_ai/mzansi_ai.dart @@ -31,7 +31,6 @@ class _MzansiAiState extends State { onTap: () { context.goNamed( 'mihHome', - extra: widget.arguments.personalSelected, ); FocusScope.of(context).unfocus(); }, diff --git a/Frontend/lib/mih_packages/mzansi_directory/mzansi_directory.dart b/Frontend/lib/mih_packages/mzansi_directory/mzansi_directory.dart index eb390b29..403c62c8 100644 --- a/Frontend/lib/mih_packages/mzansi_directory/mzansi_directory.dart +++ b/Frontend/lib/mih_packages/mzansi_directory/mzansi_directory.dart @@ -100,7 +100,6 @@ class _MzansiDirectoryState extends State { onTap: () { context.goNamed( 'mihHome', - extra: widget.arguments.personalSearch, ); FocusScope.of(context).unfocus(); }, diff --git a/Frontend/lib/mih_packages/mzansi_profile/business_profile/mzansi_business_profile.dart b/Frontend/lib/mih_packages/mzansi_profile/business_profile/mzansi_business_profile.dart index de297b57..3e3736ab 100644 --- a/Frontend/lib/mih_packages/mzansi_profile/business_profile/mzansi_business_profile.dart +++ b/Frontend/lib/mih_packages/mzansi_profile/business_profile/mzansi_business_profile.dart @@ -43,7 +43,6 @@ class _MzansiBusinessProfileState extends State { onTap: () { context.goNamed( 'mihHome', - extra: false, ); FocusScope.of(context).unfocus(); context.read().setBusinessIndex(0); diff --git a/Frontend/lib/mih_packages/mzansi_profile/personal_profile/mzansi_profile.dart b/Frontend/lib/mih_packages/mzansi_profile/personal_profile/mzansi_profile.dart index e1692b51..a03b4364 100644 --- a/Frontend/lib/mih_packages/mzansi_profile/personal_profile/mzansi_profile.dart +++ b/Frontend/lib/mih_packages/mzansi_profile/personal_profile/mzansi_profile.dart @@ -40,7 +40,6 @@ class _MzansiProfileState extends State { // Navigator.of(context).pop(); context.goNamed( 'mihHome', - extra: true, ); FocusScope.of(context).unfocus(); }, diff --git a/Frontend/lib/mih_packages/mzansi_wallet/mih_wallet.dart b/Frontend/lib/mih_packages/mzansi_wallet/mih_wallet.dart index 60d3c0e2..c29bbe4c 100644 --- a/Frontend/lib/mih_packages/mzansi_wallet/mih_wallet.dart +++ b/Frontend/lib/mih_packages/mzansi_wallet/mih_wallet.dart @@ -81,7 +81,6 @@ class _MihWalletState extends State { onTap: () { context.goNamed( 'mihHome', - extra: true, ); FocusScope.of(context).unfocus(); }, diff --git a/Frontend/lib/mih_packages/patient_profile/pat_manager/pat_manager.dart b/Frontend/lib/mih_packages/patient_profile/pat_manager/pat_manager.dart index 77003af1..ed5d077f 100644 --- a/Frontend/lib/mih_packages/patient_profile/pat_manager/pat_manager.dart +++ b/Frontend/lib/mih_packages/patient_profile/pat_manager/pat_manager.dart @@ -52,7 +52,6 @@ class _PatManagerState extends State { // Navigator.of(context).pop(); context.goNamed( 'mihHome', - extra: false, ); FocusScope.of(context).unfocus(); }, diff --git a/Frontend/lib/mih_packages/patient_profile/pat_profile/patient_profile.dart b/Frontend/lib/mih_packages/patient_profile/pat_profile/patient_profile.dart index 01f3d6b6..623d4787 100644 --- a/Frontend/lib/mih_packages/patient_profile/pat_profile/patient_profile.dart +++ b/Frontend/lib/mih_packages/patient_profile/pat_profile/patient_profile.dart @@ -48,7 +48,6 @@ class _PatientProfileState extends State { } else { context.goNamed( 'mihHome', - extra: true, ); } FocusScope.of(context).unfocus();