From 2455e27595960b6e0ec88278dfb8081ddba21cc2 Mon Sep 17 00:00:00 2001 From: "mirza.shafique" Date: Tue, 31 Jan 2023 11:47:13 +0300 Subject: [PATCH 1/2] hmg wifi implementation --- assets/langs/ar-SA.json | 16 +++--- assets/langs/en-US.json | 4 +- lib/app_state/app_state.dart | 3 +- lib/generated/locale_keys.g.dart | 2 + lib/main.dart | 4 ++ lib/provider/hmg_connection_provider.dart | 46 +++++++++++++++++ lib/ui/login/login_screen.dart | 6 ++- .../button/hmg_connectivity_button.dart | 50 +++++++++++++++++++ 8 files changed, 120 insertions(+), 11 deletions(-) create mode 100644 lib/provider/hmg_connection_provider.dart create mode 100644 lib/widgets/button/hmg_connectivity_button.dart diff --git a/assets/langs/ar-SA.json b/assets/langs/ar-SA.json index 4178d17..84e0e45 100644 --- a/assets/langs/ar-SA.json +++ b/assets/langs/ar-SA.json @@ -424,7 +424,7 @@ "typeCurrentPasswordBelow": "اكتب كلمة المرور الحاليه", "currentPassword": "كلمة المرور الحاليه", "concurrentReports": "التقارير المتزامنه", - "EnterNewAddressMoved" : "أدخل عنوان جديد إذا كنت قد انتقلت", + "EnterNewAddressMoved": "أدخل عنوان جديد إذا كنت قد انتقلت", "CorrectAddress": "تصحيح أو تعديل هذا العنوان", "SelectChangeWantToMake": " حدد نوع التغيير الذي تريد القيام به.", "profile": { @@ -480,7 +480,7 @@ "gameTime": "وقت اللعب:", "joinMarathon": "انضم إلى ماراثون", "joinDemoMarathon": "انضم إلى الماراثون التجريبي", - "demo":"تجريبي", + "demo": "تجريبي", "minutes": "الدقائق", "seconds": "ثواني", "note": "ملحوظة:", @@ -517,12 +517,14 @@ "startingIn": "يبدأ في", "youAreOutOfContest": "أنت خارج المسابقة.", "winners": "الفائزين!!!", - "expireAfter":"تنتهي بعد", - "oneWeek":"أسبوع 1", - "twoWeek":"2 أسبوع", + "expireAfter": "تنتهي بعد", + "oneWeek": "أسبوع 1", + "twoWeek": "2 أسبوع", "noUpcoming": "لا يوجد قادم", "fakeLocation": ".لقد تتبعنا أنك تحاول استخدام موقع مزيف! يعتبر هذا مخالفة وقد تم إخطار الموارد البشرية", "noWinner": "حزين! لم يفز أحد اليوم.", - "myTeam" : "فريقي", - "youCanPlayDemo": "لكن يمكنك لعب العرض" + "myTeam": "فريقي", + "youCanPlayDemo": "لكن يمكنك لعب العرض", + "connectHmgWifi": "قم بتوصيل HMG WIFI", + "connectedHmgWifi": "اتصال HMG WIFI" } \ No newline at end of file diff --git a/assets/langs/en-US.json b/assets/langs/en-US.json index e4a4266..fc1a2be 100644 --- a/assets/langs/en-US.json +++ b/assets/langs/en-US.json @@ -524,5 +524,7 @@ "fakeLocation": "We traced out that you try to use a fake location! This is considered a violation, and HR has been notified.", "noWinner": "Sad! No one won today.", "myTeam" : "My Team", - "youCanPlayDemo": "But you can play demo" + "youCanPlayDemo": "But you can play demo", + "connectHmgWifi": "Connect HMG WIFI", + "connectedHmgWifi": "Connected HMG WIFI" } \ No newline at end of file diff --git a/lib/app_state/app_state.dart b/lib/app_state/app_state.dart index ea7b85e..cf7b96c 100644 --- a/lib/app_state/app_state.dart +++ b/lib/app_state/app_state.dart @@ -46,6 +46,8 @@ class AppState { String? get getForgetPasswordTokenID => forgetPasswordTokenID; + bool isConnectedToHMG = false; + //Wifi info String? _mohemmWifiSSID; @@ -180,5 +182,4 @@ class AppState { } bool cancelRequestTrancsection = true; - } diff --git a/lib/generated/locale_keys.g.dart b/lib/generated/locale_keys.g.dart index 4eb91c9..d320588 100644 --- a/lib/generated/locale_keys.g.dart +++ b/lib/generated/locale_keys.g.dart @@ -511,5 +511,7 @@ abstract class LocaleKeys { static const noWinner = 'noWinner'; static const myTeam = 'myTeam'; static const youCanPlayDemo = 'youCanPlayDemo'; + static const connectHmgWifi = 'connectHmgWifi'; + static const connectedHmgWifi = 'connectedHmgWifi'; } diff --git a/lib/main.dart b/lib/main.dart index 8624525..ae2d367 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -12,6 +12,7 @@ import 'package:mohem_flutter_app/models/post_params_model.dart'; import 'package:mohem_flutter_app/provider/chat_provider_model.dart'; import 'package:mohem_flutter_app/provider/dashboard_provider_model.dart'; import 'package:mohem_flutter_app/provider/eit_provider_model.dart'; +import 'package:mohem_flutter_app/provider/hmg_connection_provider.dart'; import 'package:mohem_flutter_app/theme/app_theme.dart'; import 'package:mohem_flutter_app/ui/marathon/marathon_provider.dart'; import 'package:month_year_picker/month_year_picker.dart'; @@ -69,6 +70,9 @@ Future main() async { ), ChangeNotifierProvider( create: (_) => MarathonProvider(), + ), + ChangeNotifierProvider( + create: (_) => HmgConnectionProvider(), ) ], child: const MyApp(), diff --git a/lib/provider/hmg_connection_provider.dart b/lib/provider/hmg_connection_provider.dart new file mode 100644 index 0000000..b19c1cc --- /dev/null +++ b/lib/provider/hmg_connection_provider.dart @@ -0,0 +1,46 @@ +import 'dart:io'; + +import 'package:flutter/cupertino.dart'; +import 'package:mohem_flutter_app/app_state/app_state.dart'; +import 'package:wifi_iot/wifi_iot.dart'; + +class HmgConnectionProvider extends ChangeNotifier { + bool isConnectedToHMG = false; + + Future checkHmgNetworkConnectivity() async { + if (await WiFiForIoTPlugin.getSSID() == AppState().getMohemmWifiSSID) { + isConnectedToHMG = true; + } else { + isConnectedToHMG = false; + } + AppState().isConnectedToHMG = isConnectedToHMG; + return isConnectedToHMG; + } + + void connectWithHmgNetwork() async { + try { + bool isConnected = await WiFiForIoTPlugin.connect("MOHEMM-CONNECT", password: "0987654321", joinOnce: Platform.isIOS ? false : true, security: NetworkSecurity.WPA, withInternet: false); + + if (isConnected) { + await WiFiForIoTPlugin.forceWifiUsage(true); + await Future.delayed(const Duration(seconds: 2)); + isConnectedToHMG=true; + + } + } catch (e) { + isConnectedToHMG = false; + AppState().isConnectedToHMG = isConnectedToHMG; + print("----------------o----"); + print(e); + } + } + + Future closeWifiRequest() async { + if (Platform.isAndroid) { + await WiFiForIoTPlugin.forceWifiUsage(false); + } + isConnectedToHMG = false; + AppState().isConnectedToHMG = isConnectedToHMG; + return await WiFiForIoTPlugin.disconnect(); + } +} diff --git a/lib/ui/login/login_screen.dart b/lib/ui/login/login_screen.dart index 69750fa..784b337 100644 --- a/lib/ui/login/login_screen.dart +++ b/lib/ui/login/login_screen.dart @@ -26,6 +26,7 @@ import 'package:mohem_flutter_app/models/member_information_list_model.dart'; import 'package:mohem_flutter_app/models/member_login_list_model.dart'; import 'package:mohem_flutter_app/models/privilege_list_model.dart'; import 'package:mohem_flutter_app/widgets/button/default_button.dart'; +import 'package:mohem_flutter_app/widgets/button/hmg_connectivity_button.dart'; import 'package:mohem_flutter_app/widgets/input_widget.dart'; import 'package:permission_handler/permission_handler.dart'; import 'package:safe_device/safe_device.dart'; @@ -165,7 +166,6 @@ class _LoginScreenState extends State { } } - @override Widget build(BuildContext context) { if (isAppOpenBySystem == null) { @@ -198,7 +198,9 @@ class _LoginScreenState extends State { children: [ Row( children: [ - Expanded(child: SizedBox()), + Expanded( + child:SizedBox(child: HmgConnectivityButton(),), + ), Row( children: [ LocaleKeys.english.tr().toText14(color: AppState().isArabic(context) ? null : MyColors.textMixColor).onPress(() { diff --git a/lib/widgets/button/hmg_connectivity_button.dart b/lib/widgets/button/hmg_connectivity_button.dart new file mode 100644 index 0000000..bc2b9df --- /dev/null +++ b/lib/widgets/button/hmg_connectivity_button.dart @@ -0,0 +1,50 @@ +import 'package:easy_localization/easy_localization.dart'; +import 'package:flutter/material.dart'; +import 'package:mohem_flutter_app/classes/colors.dart'; +import 'package:mohem_flutter_app/extensions/int_extensions.dart'; +import 'package:mohem_flutter_app/extensions/string_extensions.dart'; +import 'package:mohem_flutter_app/generated/locale_keys.g.dart'; +import 'package:mohem_flutter_app/provider/hmg_connection_provider.dart'; +import 'package:provider/provider.dart'; + +class HmgConnectivityButton extends StatelessWidget { + @override + Widget build(BuildContext context) { + Provider.of(context, listen: false).checkHmgNetworkConnectivity(); + return Consumer( + builder: (_, HmgConnectionProvider foo, __) { + return Container( + height: 45, + padding: const EdgeInsets.only(left: 12, right: 12), + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(200.0), + gradient: const LinearGradient( + transform: GradientRotation(.83), + begin: Alignment.topRight, + end: Alignment.bottomLeft, + colors: [ + MyColors.gradiantEndColor, + MyColors.gradiantStartColor, + ], + ), + ), + child: InkWell( + onTap: (){ + + }, + child: Row( + children: [ + const Icon( + Icons.wifi, + color: Colors.white, + ), + 12.width, + LocaleKeys.connectHmgWifi.tr().toText18(color: Colors.white), + ], + ), + ), + ); + }, + ); + } +} From 13d8aac22e2b3aa2b1f09cacf59954869c58de9c Mon Sep 17 00:00:00 2001 From: "mirza.shafique" Date: Mon, 6 Mar 2023 15:57:14 +0300 Subject: [PATCH 2/2] ERM fixes --- assets/langs/ar-SA.json | 3 ++- assets/langs/en-US.json | 3 ++- .../itg/its_add_screen_video_image.dart | 25 +++++++++++++++++-- lib/ui/landing/itg/survey_screen.dart | 11 +++----- 4 files changed, 31 insertions(+), 11 deletions(-) diff --git a/assets/langs/ar-SA.json b/assets/langs/ar-SA.json index 84e0e45..6b4dca7 100644 --- a/assets/langs/ar-SA.json +++ b/assets/langs/ar-SA.json @@ -404,7 +404,8 @@ "stamp": "ختم", "addFavoriteList": "هل تريد اضافة {name} لقائمة المفضله", "feedbackUserExperience": "هذا للحصول على تعليقات حول تجربة المستخدم", - "rateUI": ".1 كيف تريد تقييم التطبيق", + "rateUI": "كيف تريد أن تقيم", + "rateUI2": "ما مدى رضائك عن هذا التطبيق", "submitSurvey": "ارسال الاستبيان", "typeHere": "اكتب هنا", "infoDetail": "تفاصيل المعلومات", diff --git a/assets/langs/en-US.json b/assets/langs/en-US.json index fc1a2be..3aa2705 100644 --- a/assets/langs/en-US.json +++ b/assets/langs/en-US.json @@ -404,7 +404,8 @@ "stamp": "Stamp", "addFavoriteList": "Do you want to add {name} in your favorite list", "feedbackUserExperience": "This is to get the feedback about the user experience", - "rateUI": "1. How would you rate this UI?", + "rateUI": "How would you like to rate", + "rateUI2": "How do you satisfied with this application", "submitSurvey": "Submit Survey", "typeHere": "Type here", "infoDetail": "Info Detail", diff --git a/lib/ui/landing/itg/its_add_screen_video_image.dart b/lib/ui/landing/itg/its_add_screen_video_image.dart index be16a89..61b2766 100644 --- a/lib/ui/landing/itg/its_add_screen_video_image.dart +++ b/lib/ui/landing/itg/its_add_screen_video_image.dart @@ -93,7 +93,7 @@ class _ITGAdsScreenState extends State { @override void dispose() { - _controller.dispose(); + if (_controller != null) _controller.dispose(); // player.stop(); // player.dispose(); super.dispose(); @@ -172,7 +172,28 @@ class _ITGAdsScreenState extends State { } }, ), - if (isImage) Image.file(imageFile), + if (isImage) + Column( + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Image.file(imageFile), + 50.height, + Container(padding: const EdgeInsets.all(16), decoration: Utils.containerRadius(MyColors.white, 10), child: const Icon(Icons.thumb_up, color: MyColors.gradiantEndColor)).onPress( + () { + try { + DashboardApiClient().setAdvertisementViewed(masterID!, advertisementData!.advertisementId!).then((value) { + logger.d(value); + Navigator.pop(context); + }); + } catch (ex) { + logger.wtf(ex); + Utils.handleException(ex, context, null); + } + }, + ), + ], + ), ], ), ); diff --git a/lib/ui/landing/itg/survey_screen.dart b/lib/ui/landing/itg/survey_screen.dart index ec79d0f..6240934 100644 --- a/lib/ui/landing/itg/survey_screen.dart +++ b/lib/ui/landing/itg/survey_screen.dart @@ -72,7 +72,7 @@ class _SurveyScreenState extends State { ], ).paddingOnly(left: 22, right: 22, top: 12, bottom: 12).objectContainerView(disablePadding: true), 39.height, - LocaleKeys.rateUI.tr().toText16(), + LocaleKeys.rateUI2.tr().toText16(), 10.height, GridView( gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: 5, crossAxisSpacing: 7, mainAxisSpacing: 7), @@ -134,7 +134,7 @@ class _SurveyScreenState extends State { void performAPI() async { Utils.showLoading(context); try { - ItgMainRes? res= await DashboardApiClient().submitItgForm( + ItgMainRes? res = await DashboardApiClient().submitItgForm( comment: reviewText, masterId: itgResponseData!.notificationMasterId ?? "", itgList: [ @@ -144,15 +144,12 @@ class _SurveyScreenState extends State { serviceId: itgResponseData!.serviceId ?? 0); Utils.hideLoading(context); - - - if(res!.mohemmItgResponseItem!.statusCode==200){ + if (res!.mohemmItgResponseItem!.statusCode == 200) { Utils.showToast("Survey has been submitted successfully"); Navigator.pop(context); - }else{ + } else { Utils.showToast(res.mohemmItgResponseItem!.message.toString()); } - } catch (ex) { Utils.hideLoading(context); Utils.handleException(ex, context, (msg) {