Added checks for isDisclosureEnabled

faiz_disclosure
Faiz Hashmi 1 year ago
parent d77ace678d
commit b821026063

@ -92,7 +92,6 @@ class AppState {
final PostParamsModel _postParamsInitConfig = PostParamsModel(channel: 31, versionID: 8.2, mobileType: Platform.isAndroid ? "android" : "ios"); final PostParamsModel _postParamsInitConfig = PostParamsModel(channel: 31, versionID: 8.2, mobileType: Platform.isAndroid ? "android" : "ios");
void setPostParamsInitConfig() { void setPostParamsInitConfig() {
isAuthenticated = false; isAuthenticated = false;
isLogged = false; isLogged = false;
@ -194,4 +193,8 @@ class AppState {
} }
bool cancelRequestTrancsection = true; bool cancelRequestTrancsection = true;
bool isDisclosureEnabled = true;
set setIsDisclosureEnabled(v) => isDisclosureEnabled = v;
} }

@ -471,6 +471,8 @@ class _DashboardScreenState extends State<DashboardScreen> with WidgetsBindingOb
? const OffersShimmerWidget() ? const OffersShimmerWidget()
: InkWell( : InkWell(
onTap: () { onTap: () {
if (AppState().isDisclosureEnabled) return;
navigateToDetails(data.getOffersList[index]); navigateToDetails(data.getOffersList[index]);
}, },
child: SizedBox( child: SizedBox(
@ -488,18 +490,33 @@ class _DashboardScreenState extends State<DashboardScreen> with WidgetsBindingOb
), ),
border: Border.all(color: MyColors.lightGreyE3Color, width: 1), border: Border.all(color: MyColors.lightGreyE3Color, width: 1),
), ),
child: ClipRRect( child: Stack(
borderRadius: const BorderRadius.all( fit: StackFit.expand,
Radius.circular(50), children: [
), ClipRRect(
child: Hero( borderRadius: const BorderRadius.all(Radius.circular(50)),
tag: "ItemImage" + data.getOffersList[index].offersDiscountId.toString()!, child: Hero(
transitionOnUserGestures: true, tag: "ItemImage" + data.getOffersList[index].offersDiscountId.toString()!,
child: Image.network( transitionOnUserGestures: true,
data.getOffersList[index].logo ?? "", child: Image.network(
fit: BoxFit.contain, data.getOffersList[index].logo ?? "",
fit: BoxFit.contain,
),
),
), ),
), if (AppState().isDisclosureEnabled) ...[
Container(
width: double.infinity,
height: double.infinity,
decoration: BoxDecoration(borderRadius: BorderRadius.circular(100), color: Colors.grey.withOpacity(0.6)),
child: const Icon(
Icons.lock_outline,
color: MyColors.grey57Color,
size: 40,
),
),
]
],
), ),
), ),
4.height, 4.height,
@ -601,7 +618,7 @@ class _DashboardScreenState extends State<DashboardScreen> with WidgetsBindingOb
BottomNavigationBarItem( BottomNavigationBarItem(
icon: SvgPicture.asset( icon: SvgPicture.asset(
"assets/icons/create_req.svg", "assets/icons/create_req.svg",
color: currentIndex == 1 ? MyColors.grey3AColor : MyColors.grey98Color, color: AppState().isDisclosureEnabled ? MyColors.greyC4Color : (currentIndex == 1 ? MyColors.grey3AColor : MyColors.grey98Color),
).paddingAll(4), ).paddingAll(4),
label: LocaleKeys.mowadhafhiRequest.tr(), label: LocaleKeys.mowadhafhiRequest.tr(),
), ),
@ -611,7 +628,7 @@ class _DashboardScreenState extends State<DashboardScreen> with WidgetsBindingOb
children: [ children: [
SvgPicture.asset( SvgPicture.asset(
"assets/icons/work_list.svg", "assets/icons/work_list.svg",
color: currentIndex == 2 ? MyColors.grey3AColor : MyColors.grey98Color, color: AppState().isDisclosureEnabled ? MyColors.greyC4Color : (currentIndex == 2 ? MyColors.grey3AColor : MyColors.grey98Color),
).paddingAll(4), ).paddingAll(4),
Consumer<DashboardProviderModel>( Consumer<DashboardProviderModel>(
builder: (BuildContext cxt, DashboardProviderModel data, Widget? child) { builder: (BuildContext cxt, DashboardProviderModel data, Widget? child) {
@ -637,7 +654,7 @@ class _DashboardScreenState extends State<DashboardScreen> with WidgetsBindingOb
BottomNavigationBarItem( BottomNavigationBarItem(
icon: SvgPicture.asset( icon: SvgPicture.asset(
"assets/icons/item_for_sale.svg", "assets/icons/item_for_sale.svg",
color: currentIndex == 3 ? MyColors.grey3AColor : MyColors.grey98Color, color: AppState().isDisclosureEnabled ? MyColors.greyC4Color : (currentIndex == 3 ? MyColors.grey3AColor : MyColors.grey98Color),
).paddingAll(4), ).paddingAll(4),
label: LocaleKeys.itemsForSale.tr(), label: LocaleKeys.itemsForSale.tr(),
), ),
@ -647,13 +664,15 @@ class _DashboardScreenState extends State<DashboardScreen> with WidgetsBindingOb
children: [ children: [
SvgPicture.asset( SvgPicture.asset(
"assets/icons/chat/chat.svg", "assets/icons/chat/chat.svg",
color: !checkIfPrivilegedForChat() color: AppState().isDisclosureEnabled
? MyColors.lightGreyE3Color ? MyColors.greyC4Color
: currentIndex == 4 : (!checkIfPrivilegedForChat()
? MyColors.grey3AColor ? MyColors.lightGreyE3Color
: cProvider.disbaleChatForThisUser : currentIndex == 4
? MyColors.lightGreyE3Color ? MyColors.grey3AColor
: MyColors.grey98Color, : cProvider.disbaleChatForThisUser
? MyColors.lightGreyE3Color
: MyColors.grey98Color),
).paddingAll(4), ).paddingAll(4),
Consumer<ChatProviderModel>( Consumer<ChatProviderModel>(
builder: (BuildContext cxt, ChatProviderModel data, Widget? child) { builder: (BuildContext cxt, ChatProviderModel data, Widget? child) {
@ -681,10 +700,14 @@ class _DashboardScreenState extends State<DashboardScreen> with WidgetsBindingOb
unselectedLabelStyle: const TextStyle(fontSize: 10, color: MyColors.grey98Color, fontWeight: FontWeight.w600), unselectedLabelStyle: const TextStyle(fontSize: 10, color: MyColors.grey98Color, fontWeight: FontWeight.w600),
type: BottomNavigationBarType.fixed, type: BottomNavigationBarType.fixed,
selectedItemColor: MyColors.grey3AColor, selectedItemColor: MyColors.grey3AColor,
unselectedItemColor: AppState().isDisclosureEnabled ? MyColors.greyC4Color : null,
backgroundColor: MyColors.backgroundColor, backgroundColor: MyColors.backgroundColor,
selectedIconTheme: const IconThemeData(color: MyColors.grey3AColor, size: 28), selectedIconTheme: const IconThemeData(color: MyColors.grey3AColor, size: 28),
unselectedIconTheme: const IconThemeData(color: MyColors.grey98Color, size: 28), unselectedIconTheme: const IconThemeData(color: MyColors.grey98Color, size: 28),
onTap: (int index) { onTap: (int index) {
if (AppState().isDisclosureEnabled) {
return;
}
if (index == 1) { if (index == 1) {
Navigator.pushNamed(context, AppRoutes.mowadhafhi); Navigator.pushNamed(context, AppRoutes.mowadhafhi);
} else if (index == 2) { } else if (index == 2) {

@ -2,6 +2,7 @@ import 'package:easy_localization/src/public_ext.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_svg/svg.dart'; import 'package:flutter_svg/svg.dart';
import 'package:mohem_flutter_app/app_state/app_state.dart'; import 'package:mohem_flutter_app/app_state/app_state.dart';
import 'package:mohem_flutter_app/classes/colors.dart';
import 'package:mohem_flutter_app/config/routes.dart'; import 'package:mohem_flutter_app/config/routes.dart';
import 'package:mohem_flutter_app/extensions/string_extensions.dart'; import 'package:mohem_flutter_app/extensions/string_extensions.dart';
import 'package:mohem_flutter_app/extensions/widget_extensions.dart'; import 'package:mohem_flutter_app/extensions/widget_extensions.dart';
@ -14,6 +15,16 @@ import 'package:provider/provider.dart';
class MenusWidget extends StatelessWidget { class MenusWidget extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
Widget disabledWidget = Container(
width: double.infinity,
height: double.infinity,
decoration: BoxDecoration(borderRadius: BorderRadius.circular(10), color: Colors.grey.withOpacity(0.6)),
child: const Icon(
Icons.lock_outline,
color: MyColors.grey57Color,
size: 40,
),
);
List<int> namesColor = [0xff125765, 0xff239D8F, 0xff2BB8A8, 0xff1D92AA]; List<int> namesColor = [0xff125765, 0xff239D8F, 0xff2BB8A8, 0xff1D92AA];
return Consumer<DashboardProviderModel>( return Consumer<DashboardProviderModel>(
@ -29,109 +40,141 @@ class MenusWidget extends StatelessWidget {
? MenuShimmer().onPress(() { ? MenuShimmer().onPress(() {
data.fetchWorkListCounter(context, showLoading: true); data.fetchWorkListCounter(context, showLoading: true);
}) })
: Container( : Stack(
decoration: BoxDecoration( children: [
color: Color(namesColor[0]), Container(
borderRadius: BorderRadius.circular(10), decoration: BoxDecoration(
), color: Color(namesColor[0]),
child: Column( borderRadius: BorderRadius.circular(10),
mainAxisAlignment: MainAxisAlignment.spaceBetween, ),
crossAxisAlignment: CrossAxisAlignment.start, child: Column(
children: [ mainAxisAlignment: MainAxisAlignment.spaceBetween,
LocaleKeys.workList.tr().toText12(color: Colors.white), crossAxisAlignment: CrossAxisAlignment.start,
Row(
children: [ children: [
Expanded( LocaleKeys.workList.tr().toText12(color: Colors.white),
child: data.workListCounter.toString().toText16(color: Colors.white, isBold: true, maxlines: 1), Row(
), children: [
RotatedBox(quarterTurns: AppState().isArabic(context) ? 2 : 4, child: SvgPicture.asset("assets/images/arrow_next.svg", color: Colors.white)), Expanded(
child: data.workListCounter.toString().toText16(color: Colors.white, isBold: true, maxlines: 1),
),
RotatedBox(quarterTurns: AppState().isArabic(context) ? 2 : 4, child: SvgPicture.asset("assets/images/arrow_next.svg", color: Colors.white)),
],
)
], ],
) ).paddingOnly(left: 10, right: 10, bottom: 6, top: 6),
], ),
).paddingOnly(left: 10, right: 10, bottom: 6, top: 6), if (AppState().isDisclosureEnabled) ...[disabledWidget]
],
).onPress(() { ).onPress(() {
if (AppState().isDisclosureEnabled) {
return;
}
Navigator.pushNamed(context, AppRoutes.workList); Navigator.pushNamed(context, AppRoutes.workList);
}), }),
data.isMissingSwipeLoading data.isMissingSwipeLoading
? MenuShimmer().onPress(() { ? MenuShimmer().onPress(() {
data.fetchWorkListCounter(context); data.fetchWorkListCounter(context);
}) })
: Container( : Stack(
decoration: BoxDecoration( children: [
color: Color(namesColor[1]), Container(
borderRadius: BorderRadius.circular(10), decoration: BoxDecoration(
), color: Color(namesColor[1]),
child: Column( borderRadius: BorderRadius.circular(10),
mainAxisAlignment: MainAxisAlignment.spaceBetween, ),
crossAxisAlignment: CrossAxisAlignment.start, child: Column(
children: [ mainAxisAlignment: MainAxisAlignment.spaceBetween,
LocaleKeys.missingSwipes.tr().toText12(color: Colors.white), crossAxisAlignment: CrossAxisAlignment.start,
Row(
children: [ children: [
Expanded( LocaleKeys.missingSwipes.tr().toText12(color: Colors.white),
child: data.missingSwipeCounter.toString().toText16(color: Colors.white, isBold: true, maxlines: 1), Row(
), children: [
RotatedBox(quarterTurns: AppState().isArabic(context) ? 2 : 4, child: SvgPicture.asset("assets/images/arrow_next.svg", color: Colors.white)), Expanded(
child: data.missingSwipeCounter.toString().toText16(color: Colors.white, isBold: true, maxlines: 1),
),
RotatedBox(quarterTurns: AppState().isArabic(context) ? 2 : 4, child: SvgPicture.asset("assets/images/arrow_next.svg", color: Colors.white)),
],
)
], ],
) ).paddingOnly(left: 10, right: 10, bottom: 6, top: 6),
], ),
).paddingOnly(left: 10, right: 10, bottom: 6, top: 6), if (AppState().isDisclosureEnabled) ...[disabledWidget]
],
).onPress(() { ).onPress(() {
if (AppState().isDisclosureEnabled) {
return;
}
Navigator.pushNamed(context, AppRoutes.dynamicScreen, arguments: DynamicListViewParams(LocaleKeys.missingSwipes.tr(), "HMG_OTL_MISSING_SWIPE_EIT_SS")); Navigator.pushNamed(context, AppRoutes.dynamicScreen, arguments: DynamicListViewParams(LocaleKeys.missingSwipes.tr(), "HMG_OTL_MISSING_SWIPE_EIT_SS"));
}), }),
data.isLeaveTicketBalanceLoading data.isLeaveTicketBalanceLoading
? MenuShimmer().onPress(() { ? MenuShimmer().onPress(() {
data.fetchWorkListCounter(context); data.fetchWorkListCounter(context);
}) })
: Container( : Stack(
decoration: BoxDecoration( children: [
color: Color(namesColor[2]), Container(
borderRadius: BorderRadius.circular(10), decoration: BoxDecoration(
), color: Color(namesColor[2]),
child: Column( borderRadius: BorderRadius.circular(10),
mainAxisAlignment: MainAxisAlignment.spaceBetween, ),
crossAxisAlignment: CrossAxisAlignment.start, child: Column(
children: [ mainAxisAlignment: MainAxisAlignment.spaceBetween,
LocaleKeys.leaveBalance.tr().toText12(color: Colors.white), crossAxisAlignment: CrossAxisAlignment.start,
Row(
children: [ children: [
Expanded( LocaleKeys.leaveBalance.tr().toText12(color: Colors.white),
child: data.leaveBalance.toStringAsFixed(2).toText16(color: Colors.white, isBold: true, maxlines: 1), Row(
), children: [
RotatedBox(quarterTurns: AppState().isArabic(context) ? 2 : 4, child: SvgPicture.asset("assets/images/arrow_next.svg", color: Colors.white)), Expanded(
child: data.leaveBalance.toStringAsFixed(2).toText16(color: Colors.white, isBold: true, maxlines: 1),
),
RotatedBox(quarterTurns: AppState().isArabic(context) ? 2 : 4, child: SvgPicture.asset("assets/images/arrow_next.svg", color: Colors.white)),
],
)
], ],
) ).paddingOnly(left: 10, right: 10, bottom: 6, top: 6),
], ),
).paddingOnly(left: 10, right: 10, bottom: 6, top: 6), if (AppState().isDisclosureEnabled) ...[disabledWidget]
],
).onPress(() { ).onPress(() {
if (AppState().isDisclosureEnabled) {
return;
}
Navigator.pushNamed(context, AppRoutes.leaveBalance); Navigator.pushNamed(context, AppRoutes.leaveBalance);
}), }),
data.isLeaveTicketBalanceLoading data.isLeaveTicketBalanceLoading
? MenuShimmer().onPress(() { ? MenuShimmer().onPress(() {
data.fetchWorkListCounter(context); data.fetchWorkListCounter(context);
}) })
: Container( : Stack(
decoration: BoxDecoration( children: [
color: Color(namesColor[3]), Container(
borderRadius: BorderRadius.circular(10), decoration: BoxDecoration(
), color: Color(namesColor[3]),
child: Column( borderRadius: BorderRadius.circular(10),
mainAxisAlignment: MainAxisAlignment.spaceBetween, ),
crossAxisAlignment: CrossAxisAlignment.start, child: Column(
children: [ mainAxisAlignment: MainAxisAlignment.spaceBetween,
LocaleKeys.ticketBalance.tr().toText12(color: Colors.white), crossAxisAlignment: CrossAxisAlignment.start,
Row(
children: [ children: [
Expanded( LocaleKeys.ticketBalance.tr().toText12(color: Colors.white),
child: data.ticketBalance.toStringAsFixed(2).toText16(color: Colors.white, isBold: true, maxlines: 1), Row(
), children: [
RotatedBox(quarterTurns: AppState().isArabic(context) ? 2 : 4, child: SvgPicture.asset("assets/images/arrow_next.svg", color: Colors.white)), Expanded(
child: data.ticketBalance.toStringAsFixed(2).toText16(color: Colors.white, isBold: true, maxlines: 1),
),
RotatedBox(quarterTurns: AppState().isArabic(context) ? 2 : 4, child: SvgPicture.asset("assets/images/arrow_next.svg", color: Colors.white)),
],
)
], ],
) ).paddingOnly(left: 10, right: 10, bottom: 6, top: 6),
], ),
).paddingOnly(left: 10, right: 10, bottom: 6, top: 6), if (AppState().isDisclosureEnabled) ...[disabledWidget]
],
).onPress( ).onPress(
() { () {
if (AppState().isDisclosureEnabled) {
return;
}
Navigator.pushNamed(context, AppRoutes.dynamicScreen, arguments: DynamicListViewParams(LocaleKeys.ticketBalance.tr(), "HMG_TKT_NEW_EIT_SS")); Navigator.pushNamed(context, AppRoutes.dynamicScreen, arguments: DynamicListViewParams(LocaleKeys.ticketBalance.tr(), "HMG_TKT_NEW_EIT_SS"));
}, },
) )

@ -1,7 +1,10 @@
import 'dart:developer';
import 'package:easy_localization/src/public_ext.dart'; import 'package:easy_localization/src/public_ext.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_svg/svg.dart'; import 'package:flutter_svg/svg.dart';
import 'package:mohem_flutter_app/app_state/app_state.dart'; import 'package:mohem_flutter_app/app_state/app_state.dart';
import 'package:mohem_flutter_app/classes/colors.dart';
import 'package:mohem_flutter_app/config/routes.dart'; import 'package:mohem_flutter_app/config/routes.dart';
import 'package:mohem_flutter_app/extensions/int_extensions.dart'; import 'package:mohem_flutter_app/extensions/int_extensions.dart';
import 'package:mohem_flutter_app/extensions/string_extensions.dart'; import 'package:mohem_flutter_app/extensions/string_extensions.dart';
@ -49,41 +52,59 @@ class ServicesWidget extends StatelessWidget {
padding: const EdgeInsets.only(left: 21, right: 21, top: 13, bottom: 13), padding: const EdgeInsets.only(left: 21, right: 21, top: 13, bottom: 13),
scrollDirection: Axis.horizontal, scrollDirection: Axis.horizontal,
itemBuilder: (cxt, index) { itemBuilder: (cxt, index) {
log("data.homeMenus![parentIndex].menuEntiesList[index].prompt: ${data.homeMenus![parentIndex].menuEntiesList[index].prompt}");
return AspectRatio( return AspectRatio(
aspectRatio: 105 / 105, aspectRatio: 105 / 105,
child: data.isServicesMenusLoading child: data.isServicesMenusLoading
? ServicesMenuShimmer() ? ServicesMenuShimmer()
: Container( : Stack(
decoration: BoxDecoration( children: [
color: Colors.white, Container(
borderRadius: BorderRadius.circular(15), decoration: BoxDecoration(
boxShadow: [ color: Colors.white,
BoxShadow( borderRadius: BorderRadius.circular(15),
color: const Color(0xff000000).withOpacity(.05), boxShadow: [
blurRadius: 26, BoxShadow(
offset: const Offset(0, -3), color: const Color(0xff000000).withOpacity(.05),
blurRadius: 26,
offset: const Offset(0, -3),
),
],
), ),
], child: Column(
), mainAxisAlignment: MainAxisAlignment.spaceBetween,
child: Column( crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.spaceBetween,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
SvgPicture.asset(AppState().isArabic(context)
? getMenuIconAr(data.homeMenus![parentIndex].menuEntiesList[index].prompt!)
: getMenuIconEn(data.homeMenus![parentIndex].menuEntiesList[index].prompt!)),
Row(
crossAxisAlignment: CrossAxisAlignment.end,
children: [ children: [
Expanded( SvgPicture.asset(AppState().isArabic(context) ? getMenuIconAr(data.homeMenus![parentIndex].menuEntiesList[index].prompt!) : getMenuIconEn(data.homeMenus![parentIndex].menuEntiesList[index].prompt!)),
child: data.homeMenus![parentIndex].menuEntiesList[index].prompt!.toText11(isBold: true), Row(
), crossAxisAlignment: CrossAxisAlignment.end,
RotatedBox(quarterTurns: AppState().isArabic(context) ? 2 : 4, child: SvgPicture.asset("assets/images/arrow_next.svg").paddingOnly(bottom: 4)), children: [
Expanded(
child: data.homeMenus![parentIndex].menuEntiesList[index].prompt!.toText11(isBold: true),
),
RotatedBox(quarterTurns: AppState().isArabic(context) ? 2 : 4, child: SvgPicture.asset("assets/images/arrow_next.svg").paddingOnly(bottom: 4)),
],
)
], ],
) ).paddingOnly(left: 10, right: 10, bottom: 10, top: 12),
], ),
).paddingOnly(left: 10, right: 10, bottom: 10, top: 12), if (AppState().isDisclosureEnabled && (parentIndex == 0 && index != 0) || (parentIndex > 0)) ...[
Container(
width: double.infinity,
height: double.infinity,
decoration: BoxDecoration(borderRadius: BorderRadius.circular(15), color: Colors.grey.withOpacity(0.6)),
child: const Icon(
Icons.lock_outline,
color: MyColors.grey57Color,
size: 40,
),
),
]
],
).onPress(() { ).onPress(() {
if (AppState().isDisclosureEnabled && (parentIndex == 0 && index != 0) || (parentIndex > 0)) {
return;
}
handleOnPress(context, data.homeMenus![parentIndex].menuEntiesList[index]); handleOnPress(context, data.homeMenus![parentIndex].menuEntiesList[index]);
}), }),
); );
@ -220,8 +241,7 @@ class ServicesWidget extends StatelessWidget {
Navigator.pushNamed(context, AppRoutes.monthlyPaySlip); Navigator.pushNamed(context, AppRoutes.monthlyPaySlip);
} }
} else { } else {
List<GetMenuEntriesList> _menuList = List<GetMenuEntriesList> _menuList = pro.getMenuEntriesList?.where((element) => element.parentMenuName == menuEntry.menuName && (element.menuEntryType == "FUNCTION" || element.menuEntryType == "MENU")).toList() ?? [];
pro.getMenuEntriesList?.where((element) => element.parentMenuName == menuEntry.menuName && (element.menuEntryType == "FUNCTION" || element.menuEntryType == "MENU")).toList() ?? [];
Navigator.pushNamed(context, AppRoutes.servicesMenuListScreen, arguments: ServicesMenuListScreenParams(menuEntry.prompt!, _menuList.isEmpty ? menuList : _menuList)); Navigator.pushNamed(context, AppRoutes.servicesMenuListScreen, arguments: ServicesMenuListScreenParams(menuEntry.prompt!, _menuList.isEmpty ? menuList : _menuList));
} }
return; return;

Loading…
Cancel
Save