switch from query paramater to path paramater for profile views

This commit is contained in:
2026-06-01 14:14:56 +02:00
parent efe225b9f8
commit 93942ff060
7 changed files with 51 additions and 15 deletions
+24 -3
View File
@@ -164,9 +164,20 @@ class MihGoRouter {
path: MihGoRouterPaths.mzansiProfileView, path: MihGoRouterPaths.mzansiProfileView,
builder: (BuildContext context, GoRouterState state) { builder: (BuildContext context, GoRouterState state) {
KenLogger.success("MihGoRouter: mzansiProfileView"); KenLogger.success("MihGoRouter: mzansiProfileView");
String? username = state.uri.queryParameters['username']; return MzansiProfileView(
KenLogger.success("username: username"); username: null,
);
},
),
GoRoute(
name: "mzansiProfileView+username",
path: "${MihGoRouterPaths.mzansiProfileView}/:username",
builder: (BuildContext context, GoRouterState state) {
KenLogger.success("MihGoRouter: mzansiProfileView"); KenLogger.success("MihGoRouter: mzansiProfileView");
String? username = state.pathParameters['username'];
// String? username = state.uri.queryParameters['username'];
KenLogger.success("MihGoRouter: mzansiProfileView");
KenLogger.success("username: $username");
MzansiDirectoryProvider directoryProvider = MzansiDirectoryProvider directoryProvider =
context.read<MzansiDirectoryProvider>(); context.read<MzansiDirectoryProvider>();
if (directoryProvider.selectedUser == null && username == null) { if (directoryProvider.selectedUser == null && username == null) {
@@ -192,9 +203,19 @@ class MihGoRouter {
GoRoute( GoRoute(
name: "businessProfileView", name: "businessProfileView",
path: MihGoRouterPaths.businessProfileView, path: MihGoRouterPaths.businessProfileView,
builder: (BuildContext context, GoRouterState state) {
return MzansiBusinessProfileView(
businessId: null,
fromMzansiDirectory: true,
);
},
),
GoRoute(
name: "businessProfileView+business_id",
path: "${MihGoRouterPaths.businessProfileView}/:business_id",
builder: (BuildContext context, GoRouterState state) { builder: (BuildContext context, GoRouterState state) {
// KenLogger.success("MihGoRouter: businessProfileView"); // KenLogger.success("MihGoRouter: businessProfileView");
String? businessId = state.uri.queryParameters['business_id']; String? businessId = state.pathParameters['business_id'];
// KenLogger.success("businessId: $businessId"); // KenLogger.success("businessId: $businessId");
MzansiDirectoryProvider directoryProvider = MzansiDirectoryProvider directoryProvider =
context.read<MzansiDirectoryProvider>(); context.read<MzansiDirectoryProvider>();
@@ -140,6 +140,7 @@ class _MihManageBusinessLinkWindowState
), ),
), ),
child: ReorderableListView.builder( child: ReorderableListView.builder(
buildDefaultDragHandles: false,
itemBuilder: (context, index) { itemBuilder: (context, index) {
ProfileLink link = profileProvider.businessLinks[index]; ProfileLink link = profileProvider.businessLinks[index];
String display = link.site_name; String display = link.site_name;
@@ -149,7 +150,7 @@ class _MihManageBusinessLinkWindowState
return ListTile( return ListTile(
key: ValueKey("$index"), key: ValueKey("$index"),
title: Text( title: Text(
"$display", display,
style: TextStyle( style: TextStyle(
// fontWeight: FontWeight.bold, // fontWeight: FontWeight.bold,
fontSize: 18, fontSize: 18,
@@ -159,6 +160,13 @@ class _MihManageBusinessLinkWindowState
profileProvider, profileProvider,
link, link,
), ),
trailing: ReorderableDragStartListener(
index: index,
child: Icon(
Icons.drag_indicator,
color: MihColors.secondary(),
),
),
); );
}, },
itemCount: profileProvider.businessLinks.length, itemCount: profileProvider.businessLinks.length,
@@ -59,7 +59,6 @@ class _MzansiBusinessProfileViewState extends State<MzansiBusinessProfileView> {
super.initState(); super.initState();
MzansiDirectoryProvider directoryProvider = MzansiDirectoryProvider directoryProvider =
context.read<MzansiDirectoryProvider>(); context.read<MzansiDirectoryProvider>();
directoryProvider.setBusinessViewIndex(0);
_fetchBusinessDetails(directoryProvider); _fetchBusinessDetails(directoryProvider);
} }
@@ -77,7 +76,7 @@ class _MzansiBusinessProfileViewState extends State<MzansiBusinessProfileView> {
); );
} else { } else {
return MihPackage( return MihPackage(
packageActionButton: getAction(), packageActionButton: getAction(directoryProvider),
packageTools: getTools(), packageTools: getTools(),
packageToolBodies: getToolBody(directoryProvider), packageToolBodies: getToolBody(directoryProvider),
packageToolTitles: getToolTitle(), packageToolTitles: getToolTitle(),
@@ -91,7 +90,7 @@ class _MzansiBusinessProfileViewState extends State<MzansiBusinessProfileView> {
); );
} }
MihPackageAction getAction() { MihPackageAction getAction(MzansiDirectoryProvider directoryProvider) {
return MihPackageAction( return MihPackageAction(
icon: const Icon(Icons.arrow_back), icon: const Icon(Icons.arrow_back),
iconColor: MihColors.secondary(), iconColor: MihColors.secondary(),
@@ -107,6 +106,7 @@ class _MzansiBusinessProfileViewState extends State<MzansiBusinessProfileView> {
// context.goNamed( // context.goNamed(
// "mzansiDirectory", // "mzansiDirectory",
// ); // );
directoryProvider.setBusinessViewIndex(0);
FocusScope.of(context).unfocus(); FocusScope.of(context).unfocus();
}, },
); );
@@ -325,8 +325,7 @@ class _MihBusinessQrCodeState extends State<MihBusinessQrCode> {
} }
_checkUserSession(); _checkUserSession();
futureImageUrl = MihFileApi.getMinioFileUrl(business.logo_path); futureImageUrl = MihFileApi.getMinioFileUrl(business.logo_path);
qrCodedata = qrCodedata = "${AppEnviroment.baseAppUrl}/business-profile/view/";
"${AppEnviroment.baseAppUrl}/business-profile/view?business_id=";
} }
@override @override
@@ -1,4 +1,5 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_markdown_plus/flutter_markdown_plus.dart';
import 'package:go_router/go_router.dart'; import 'package:go_router/go_router.dart';
import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import 'package:mih_package_toolkit/mih_package_toolkit.dart';
import 'package:mzansi_innovation_hub/mih_objects/profile_link.dart'; import 'package:mzansi_innovation_hub/mih_objects/profile_link.dart';
@@ -138,6 +139,7 @@ class _MihManageUserProfileLinksWindowState
), ),
), ),
child: ReorderableListView.builder( child: ReorderableListView.builder(
buildDefaultDragHandles: false,
itemBuilder: (context, index) { itemBuilder: (context, index) {
ProfileLink link = profileProvider.personalLinks[index]; ProfileLink link = profileProvider.personalLinks[index];
String display = link.site_name; String display = link.site_name;
@@ -147,7 +149,7 @@ class _MihManageUserProfileLinksWindowState
return ListTile( return ListTile(
key: ValueKey("$index"), key: ValueKey("$index"),
title: Text( title: Text(
"$display", display,
style: TextStyle( style: TextStyle(
// fontWeight: FontWeight.bold, // fontWeight: FontWeight.bold,
fontSize: 18, fontSize: 18,
@@ -157,6 +159,13 @@ class _MihManageUserProfileLinksWindowState
profileProvider, profileProvider,
link, link,
), ),
trailing: ReorderableDragStartListener(
index: index,
child: Icon(
Icons.drag_indicator,
color: MihColors.secondary(),
),
),
); );
}, },
itemCount: profileProvider.personalLinks.length, itemCount: profileProvider.personalLinks.length,
@@ -26,7 +26,6 @@ class _MzansiProfileViewState extends State<MzansiProfileView> {
void _loadUserData() async { void _loadUserData() async {
MzansiDirectoryProvider directoryProvider = MzansiDirectoryProvider directoryProvider =
context.read<MzansiDirectoryProvider>(); context.read<MzansiDirectoryProvider>();
directoryProvider.setPersonalViewIndex(0);
if (widget.username != null) { if (widget.username != null) {
final user = await MihUserServices() final user = await MihUserServices()
.getMIHUserDetailsByUsername(widget.username!, context); .getMIHUserDetailsByUsername(widget.username!, context);
@@ -64,7 +63,7 @@ class _MzansiProfileViewState extends State<MzansiProfileView> {
); );
} else { } else {
return MihPackage( return MihPackage(
packageActionButton: getAction(), packageActionButton: getAction(directoryProvider),
packageTools: getTools(), packageTools: getTools(),
packageToolBodies: getToolBody(), packageToolBodies: getToolBody(),
packageToolTitles: getToolTitle(), packageToolTitles: getToolTitle(),
@@ -78,13 +77,14 @@ class _MzansiProfileViewState extends State<MzansiProfileView> {
); );
} }
MihPackageAction getAction() { MihPackageAction getAction(MzansiDirectoryProvider directoryProvider) {
return MihPackageAction( return MihPackageAction(
icon: const Icon(Icons.arrow_back), icon: const Icon(Icons.arrow_back),
iconColor: MihColors.secondary(), iconColor: MihColors.secondary(),
iconSize: 35, iconSize: 35,
onTap: () { onTap: () {
context.pop(); context.pop();
directoryProvider.setPersonalViewIndex(0);
FocusScope.of(context).unfocus(); FocusScope.of(context).unfocus();
}, },
); );
@@ -39,8 +39,7 @@ class _MihPersonalQrCodeState extends State<MihPersonalQrCode> {
ScreenshotController screenshotController = ScreenshotController(); ScreenshotController screenshotController = ScreenshotController();
Uint8List? personalQRImageFile; Uint8List? personalQRImageFile;
bool _isUserSignedIn = false; bool _isUserSignedIn = false;
final String _qrCodedata = final String _qrCodedata = "${AppEnviroment.baseAppUrl}/mzansi-profile/view/";
"${AppEnviroment.baseAppUrl}/mzansi-profile/view?username=";
Future<void> _checkUserSession() async { Future<void> _checkUserSession() async {
final doesSessionExist = await SuperTokens.doesSessionExist(); final doesSessionExist = await SuperTokens.doesSessionExist();