rset pass and business profile

This commit is contained in:
2025-09-02 07:42:00 +02:00
parent 6913ed3966
commit 3573e1e470
7 changed files with 145 additions and 115 deletions

View File

@@ -13,6 +13,7 @@ import 'package:mzansi_innovation_hub/mih_packages/mih_authentication/mih_authen
import 'package:mzansi_innovation_hub/mih_packages/mih_home/mih_home.dart'; import 'package:mzansi_innovation_hub/mih_packages/mih_home/mih_home.dart';
import 'package:mzansi_innovation_hub/mih_packages/mzansi_ai/mzansi_ai.dart'; import 'package:mzansi_innovation_hub/mih_packages/mzansi_ai/mzansi_ai.dart';
import 'package:mzansi_innovation_hub/mih_packages/mzansi_directory/mzansi_directory.dart'; import 'package:mzansi_innovation_hub/mih_packages/mzansi_directory/mzansi_directory.dart';
import 'package:mzansi_innovation_hub/mih_packages/mzansi_profile/business_profile/mzansi_business_profile.dart';
import 'package:mzansi_innovation_hub/mih_packages/mzansi_profile/business_profile/mzansi_business_profile_view.dart'; import 'package:mzansi_innovation_hub/mih_packages/mzansi_profile/business_profile/mzansi_business_profile_view.dart';
import 'package:mzansi_innovation_hub/mih_packages/mzansi_profile/personal_profile/mzansi_profile.dart'; import 'package:mzansi_innovation_hub/mih_packages/mzansi_profile/personal_profile/mzansi_profile.dart';
import 'package:mzansi_innovation_hub/mih_packages/mzansi_profile/personal_profile/mzansi_profile_view.dart'; import 'package:mzansi_innovation_hub/mih_packages/mzansi_profile/personal_profile/mzansi_profile_view.dart';
@@ -68,11 +69,16 @@ class MihGoRouter {
MihGoRouterPaths.mihAuthentication, MihGoRouterPaths.mihAuthentication,
MihGoRouterPaths.forgotPassword, MihGoRouterPaths.forgotPassword,
MihGoRouterPaths.resetPassword, MihGoRouterPaths.resetPassword,
MihGoRouterPaths.aboutMih,
]; ];
KenLogger.success(
"Redirect Check: ${state.fullPath}, isUserSignedIn: $isUserSignedIn");
if (!isUserSignedIn && !unauthenticatedPaths.contains(state.fullPath)) { if (!isUserSignedIn && !unauthenticatedPaths.contains(state.fullPath)) {
return MihGoRouterPaths.mihAuthentication; return MihGoRouterPaths.mihAuthentication;
} }
if (isUserSignedIn && unauthenticatedPaths.contains(state.fullPath)) { if (isUserSignedIn &&
unauthenticatedPaths.contains(state.fullPath) &&
state.fullPath != MihGoRouterPaths.aboutMih) {
return MihGoRouterPaths.mihHome; return MihGoRouterPaths.mihHome;
} }
return null; // Stay on current route return null; // Stay on current route
@@ -114,7 +120,9 @@ class MihGoRouter {
name: "resetPassword", name: "resetPassword",
path: MihGoRouterPaths.resetPassword, path: MihGoRouterPaths.resetPassword,
builder: (BuildContext context, GoRouterState state) { builder: (BuildContext context, GoRouterState state) {
KenLogger.success("MihGoRouter: resetPassword");
String? token = state.uri.queryParameters['token']; String? token = state.uri.queryParameters['token'];
KenLogger.success("token: $token");
if (token == null) { if (token == null) {
WidgetsBinding.instance.addPostFrameCallback((_) { WidgetsBinding.instance.addPostFrameCallback((_) {
context.go(MihGoRouterPaths.mihHome); context.go(MihGoRouterPaths.mihHome);
@@ -188,6 +196,21 @@ class MihGoRouter {
}, },
), ),
// ========================== Mzansi Profile Business ================================== // ========================== Mzansi Profile Business ==================================
GoRoute(
name: "businessProfileManage",
path: MihGoRouterPaths.businessProfileManage,
builder: (BuildContext context, GoRouterState state) {
KenLogger.success("MihGoRouter: businessProfileManage");
final BusinessArguments? args = state.extra as BusinessArguments?;
if (args == null) {
WidgetsBinding.instance.addPostFrameCallback((_) {
context.go(MihGoRouterPaths.mihHome);
});
return const SizedBox.shrink();
}
return MzansiBusinessProfile(arguments: args);
},
),
GoRoute( GoRoute(
name: "businessProfileView", name: "businessProfileView",
path: MihGoRouterPaths.businessProfileView, path: MihGoRouterPaths.businessProfileView,
@@ -389,15 +412,6 @@ class MihGoRouter {
// }, // },
// ), // ),
// GoRoute( // GoRoute(
// name: "businessProfileManage",
// path: MihGoRouterPaths.businessProfileManage,
// builder: (BuildContext context, GoRouterState state) {
// KenLogger.success("MihGoRouter: businessProfileManage");
// final BusinessArguments? args = state.extra as BusinessArguments?;
// return MzansiBusinessProfile(arguments: args!);
// },
// ),
// GoRoute(
// name: "mihAuthentication", // name: "mihAuthentication",
// path: MihGoRouterPaths.mihAuthentication, // path: MihGoRouterPaths.mihAuthentication,
// builder: (BuildContext context, GoRouterState state) => // builder: (BuildContext context, GoRouterState state) =>

View File

@@ -81,10 +81,10 @@ class RouteGenerator {
// as it avoids string hashing for each case. For a small number, // as it avoids string hashing for each case. For a small number,
// a switch is also fine. // a switch is also fine.
if (extPath == AppRoutes.resetPasswordExternal) { if (extPath == AppRoutes.resetPasswordExternal) {
return MaterialPageRoute( // return MaterialPageRoute(
settings: settings, // settings: settings,
builder: (_) => ResetPassword(token: Uri.base.queryParameters['token']), // builder: (_) => ResetPassword(token: Uri.base.queryParameters['token']),
); // );
} else if (extPath == AppRoutes.privacyPolicyExternal) { } else if (extPath == AppRoutes.privacyPolicyExternal) {
return MaterialPageRoute( return MaterialPageRoute(
settings: settings, settings: settings,

View File

@@ -20,7 +20,7 @@ import '../../mih_components/mih_pop_up_messages/mih_success_message.dart';
import '../../mih_config/mih_env.dart'; import '../../mih_config/mih_env.dart';
class ResetPassword extends StatefulWidget { class ResetPassword extends StatefulWidget {
final String? token; final String token;
const ResetPassword({ const ResetPassword({
super.key, super.key,
required this.token, required this.token,
@@ -208,6 +208,16 @@ class _ResetPasswordState extends State<ResetPassword> {
child: Column( child: Column(
mainAxisAlignment: MainAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center,
children: [ children: [
Text(
widget.token,
style: TextStyle(
fontSize: 20,
color: MihColors.getSecondaryColor(
MzansiInnovationHub.of(context)!.theme.mode ==
"Dark"),
),
),
const SizedBox(height: 25),
//logo //logo
Icon( Icon(
Icons.lock, Icons.lock,

View File

@@ -155,7 +155,6 @@ class _MihResetPasswordState extends State<MihResetPassword> {
} }
}, },
child: SafeArea( child: SafeArea(
child: Center(
child: SingleChildScrollView( child: SingleChildScrollView(
physics: const BouncingScrollPhysics(), physics: const BouncingScrollPhysics(),
child: Padding( child: Padding(
@@ -164,8 +163,9 @@ class _MihResetPasswordState extends State<MihResetPassword> {
? EdgeInsets.symmetric(horizontal: width * 0.2) ? EdgeInsets.symmetric(horizontal: width * 0.2)
: EdgeInsets.symmetric(horizontal: width * 0.075), : EdgeInsets.symmetric(horizontal: width * 0.075),
child: Column( child: Column(
mainAxisAlignment: MainAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.start,
children: [ children: [
Text("Token: ${widget.token}"), // For testing purposes only
//logo //logo
Icon( Icon(
Icons.lock, Icons.lock,
@@ -182,8 +182,7 @@ class _MihResetPasswordState extends State<MihResetPassword> {
fontSize: 25, fontSize: 25,
fontWeight: FontWeight.bold, fontWeight: FontWeight.bold,
color: MihColors.getSecondaryColor( color: MihColors.getSecondaryColor(
MzansiInnovationHub.of(context)!.theme.mode == MzansiInnovationHub.of(context)!.theme.mode == "Dark"),
"Dark"),
), ),
), ),
//spacer //spacer
@@ -205,8 +204,7 @@ class _MihResetPasswordState extends State<MihResetPassword> {
passwordMode: true, passwordMode: true,
autofillHints: const [AutofillHints.password], autofillHints: const [AutofillHints.password],
validator: (value) { validator: (value) {
return MihValidationServices() return MihValidationServices().validatePassword(value);
.validatePassword(value);
}, },
), ),
//spacer //spacer
@@ -225,8 +223,7 @@ class _MihResetPasswordState extends State<MihResetPassword> {
passwordMode: true, passwordMode: true,
autofillHints: const [AutofillHints.password], autofillHints: const [AutofillHints.password],
validator: (value) { validator: (value) {
return MihValidationServices() return MihValidationServices().validatePassword(value);
.validatePassword(value);
}, },
), ),
//spacer //spacer
@@ -238,8 +235,7 @@ class _MihResetPasswordState extends State<MihResetPassword> {
if (_formKey.currentState!.validate()) { if (_formKey.currentState!.validate()) {
submitFormInput(); submitFormInput();
} else { } else {
MihAlertServices() MihAlertServices().formNotFilledCompletely(context);
.formNotFilledCompletely(context);
} }
}, },
buttonColor: MihColors.getGreenColor( buttonColor: MihColors.getGreenColor(
@@ -265,7 +261,6 @@ class _MihResetPasswordState extends State<MihResetPassword> {
), ),
), ),
), ),
),
); );
} }
} }

View File

@@ -1,3 +1,4 @@
import 'package:go_router/go_router.dart';
import 'package:mzansi_innovation_hub/mih_packages/mzansi_profile/business_profile/package_tools/mih_business_reviews.dart'; import 'package:mzansi_innovation_hub/mih_packages/mzansi_profile/business_profile/package_tools/mih_business_reviews.dart';
import 'package:mzansi_innovation_hub/mih_services/mih_file_services.dart'; import 'package:mzansi_innovation_hub/mih_services/mih_file_services.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';
@@ -66,7 +67,10 @@ class _MzansiBusinessProfileState extends State<MzansiBusinessProfile> {
icon: const Icon(Icons.arrow_back), icon: const Icon(Icons.arrow_back),
iconSize: 35, iconSize: 35,
onTap: () { onTap: () {
Navigator.of(context).pop(); context.goNamed(
'mihHome',
extra: false,
);
FocusScope.of(context).unfocus(); FocusScope.of(context).unfocus();
}, },
); );

View File

@@ -1,3 +1,4 @@
import 'package:go_router/go_router.dart';
import 'package:mzansi_innovation_hub/main.dart'; import 'package:mzansi_innovation_hub/main.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package_tile.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package_tile.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';
@@ -24,10 +25,14 @@ class _MzansiBusinessProfileTileState extends State<MzansiBusinessProfileTile> {
Widget build(BuildContext context) { Widget build(BuildContext context) {
return MihPackageTile( return MihPackageTile(
onTap: () { onTap: () {
Navigator.of(context).pushNamed( context.goNamed(
'/business-profile/manage', "businessProfileManage",
arguments: widget.arguments, extra: widget.arguments,
); );
// Navigator.of(context).pushNamed(
// '/business-profile/manage',
// arguments: widget.arguments,
// );
}, },
appName: "Business Profile", appName: "Business Profile",
appIcon: Icon( appIcon: Icon(

View File

@@ -1,6 +1,7 @@
import 'package:country_code_picker/country_code_picker.dart'; import 'package:country_code_picker/country_code_picker.dart';
import 'package:file_picker/file_picker.dart'; import 'package:file_picker/file_picker.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:go_router/go_router.dart';
import 'package:mzansi_innovation_hub/main.dart'; import 'package:mzansi_innovation_hub/main.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package_window.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package_window.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_pop_up_messages/mih_loading_circle.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_pop_up_messages/mih_loading_circle.dart';
@@ -78,6 +79,7 @@ class _MihBusinessDetailsState extends State<MihBusinessDetails> {
if (statusCode == 200) { if (statusCode == 200) {
bool successfullyUploadedFile = await uploadFile(); bool successfullyUploadedFile = await uploadFile();
if (successfullyUploadedFile) { if (successfullyUploadedFile) {
//You left of here
Navigator.of(context).pop(); Navigator.of(context).pop();
Navigator.of(context).pop(); Navigator.of(context).pop();
Navigator.of(context).pushNamed( Navigator.of(context).pushNamed(
@@ -234,7 +236,7 @@ class _MihBusinessDetailsState extends State<MihBusinessDetails> {
fullscreen: false, fullscreen: false,
windowTitle: 'Edit Profile', windowTitle: 'Edit Profile',
onWindowTapClose: () { onWindowTapClose: () {
Navigator.of(context).pop(); context.pop();
resetControllers(); resetControllers();
}, },
windowBody: MihSingleChildScroll( windowBody: MihSingleChildScroll(