diff --git a/lib/pages/DrawerPages/family/my-family.dart b/lib/pages/DrawerPages/family/my-family.dart index 5fac645b..be746e58 100644 --- a/lib/pages/DrawerPages/family/my-family.dart +++ b/lib/pages/DrawerPages/family/my-family.dart @@ -475,17 +475,20 @@ class _MyFamily extends State with TickerProviderStateMixin { var currentLang = await sharedPref.getString(APP_LANGUAGE); Provider.of(AppGlobal.context, listen: false).setPrivilege(privilegeList: result, isLoginChild: true); result = list.CheckActivationCode.fromJson(result); - var familyFile = await sharedPref.getObject(FAMILY_FILE); var bloodType = await sharedPref.getString(BLOOD_TYPE); var mainUser = await sharedPref.getObject(MAIN_USER); var loginType = await sharedPref.getInt(LAST_LOGIN); + var pushToken = await sharedPref.getString(PUSH_TOKEN); + var oneSignalPushToken = await sharedPref.getString(ONESIGNAL_APNS_TOKEN); this.sharedPref.clear(); if (mainUser["PatientID"] != result.list.patientID) { result.list.isFamily = true; } - this.sharedPref.setString(BLOOD_TYPE, bloodType); this.sharedPref.setString(APP_LANGUAGE, currentLang); + this.sharedPref.setString(BLOOD_TYPE, bloodType); + this.sharedPref.setString(PUSH_TOKEN, pushToken); + this.sharedPref.setString(ONESIGNAL_APNS_TOKEN, oneSignalPushToken); this.sharedPref.setInt(LAST_LOGIN, loginType ?? 1); await this.sharedPref.setObject(MAIN_USER, mainUser); await this.sharedPref.setObject(USER_PROFILE, result.list); diff --git a/lib/pages/MyAppointments/AppointmentDetails.dart b/lib/pages/MyAppointments/AppointmentDetails.dart index 7889c531..b3844eb2 100644 --- a/lib/pages/MyAppointments/AppointmentDetails.dart +++ b/lib/pages/MyAppointments/AppointmentDetails.dart @@ -150,6 +150,7 @@ class _AppointmentDetailsState extends State with SingleTick Material( color: Color(0xffF8F8F8), child: TabBar( + onTap: (index) { setState(() { if (index == 1) { diff --git a/lib/pages/ToDoList/ToDo.dart b/lib/pages/ToDoList/ToDo.dart index cefaaa4f..0a5bb78d 100644 --- a/lib/pages/ToDoList/ToDo.dart +++ b/lib/pages/ToDoList/ToDo.dart @@ -46,7 +46,7 @@ import 'package:flutter_svg/flutter_svg.dart'; import 'package:provider/provider.dart'; class ToDo extends StatefulWidget { - late PatientShareResponse patientShareResponse; + PatientShareResponse patientShareResponse = PatientShareResponse(); List appoList = []; List ancillaryLists = []; List obGyneAppoList = []; @@ -1066,7 +1066,7 @@ class _ToDoState extends State with SingleTickerProviderStateMixin { projectViewModel.analytics.todoList.to_do_list_pay_now(appo); } - openPayment(List paymentMethod, AuthenticatedUser authenticatedUser, num amount, PatientShareResponse patientShareResponse, AppoitmentAllHistoryResultList appo) { + openPayment(paymentMethod, AuthenticatedUser authenticatedUser, num amount, PatientShareResponse patientShareResponse, AppoitmentAllHistoryResultList appo) { widget.browser = new MyInAppBrowser(onExitCallback: onBrowserExit, appo: appo, onLoadStartCallback: onBrowserLoadStart, context: context); widget.browser.openPaymentBrowser( @@ -1075,7 +1075,7 @@ class _ToDoState extends State with SingleTickerProviderStateMixin { Utils.getAppointmentTransID(appo.projectID!, appo.clinicID!, appo.appointmentNo!), appo.projectID.toString(), authenticatedUser.emailAddress!, - paymentMethod[0], + paymentMethod[0]!, authenticatedUser.patientType, authenticatedUser.firstName!, authenticatedUser.patientID, @@ -1315,7 +1315,7 @@ class _ToDoState extends State with SingleTickerProviderStateMixin { if (value != null) { final appType = appo.isLiveCareAppointment! ? 'livecare' : 'regular'; - openPayment(value, projectViewModel.user!, double.parse(patientShareResponse.patientShareWithTax.toString()), patientShareResponse, appo); + openPayment(value, projectViewModel.user , double.parse(patientShareResponse.patientShareWithTax.toString()), patientShareResponse, appo); projectViewModel.analytics.appointment.payment_method(appointment_type: appType, clinic: appo.clinicName, payment_method: value[0], payment_type: 'appointment'); } }); diff --git a/lib/pages/landing/landing_page.dart b/lib/pages/landing/landing_page.dart index 13fa4e23..8af30b63 100644 --- a/lib/pages/landing/landing_page.dart +++ b/lib/pages/landing/landing_page.dart @@ -641,20 +641,20 @@ class _LandingPageState extends State with WidgetsBindingObserver { projectViewModel.analytics.setUser(AuthenticatedUser()); } if (Platform.isIOS) { - String? voipToken = await sharedPref.getString(APNS_TOKEN?? ""); - // getOneSignalVOIPToken(voipToken); + String voipToken = await sharedPref.getString(APNS_TOKEN); + getOneSignalVOIPToken(voipToken); } } - // getOneSignalVOIPToken(String voipToken) { - // LiveCareService service = new LiveCareService(); - // service.getOneSignalVOIPToken(voipToken, context).then((res) { - // print("OneSignalID: $res"); - // AppSharedPreferences().setString(ONESIGNAL_APNS_TOKEN, res['id']); - // }).catchError((err) { - // print(err); - // }); - // } + getOneSignalVOIPToken(String voipToken) { + LiveCareService service = new LiveCareService(); + service.getOneSignalVOIPToken(voipToken, context).then((res) { + print("OneSignalID: $res"); + AppSharedPreferences().setString(ONESIGNAL_APNS_TOKEN, res['id']); + }).catchError((err) { + print(err); + }); + } void showUserConsent() { sharedPref.setString(IS_COVID_CONSENT_SHOWN, "true"); diff --git a/lib/splashPage.dart b/lib/splashPage.dart index c52a00ad..eda593ec 100644 --- a/lib/splashPage.dart +++ b/lib/splashPage.dart @@ -45,10 +45,10 @@ class _SplashScreenState extends State { }, ); - AppSharedPreferences().getAll().then((value) { - debugPrint("ALL SHARED PREFERENCES!!!!!"); - debugPrint(jsonEncode(value)); - }); + // AppSharedPreferences().getAll().then((value) { + // debugPrint("ALL SHARED PREFERENCES!!!!!"); + // debugPrint(jsonEncode(value)); + // }); } /// load the Privilege from service diff --git a/lib/uitl/push-notification-handler.dart b/lib/uitl/push-notification-handler.dart index bd016434..4f0d914a 100644 --- a/lib/uitl/push-notification-handler.dart +++ b/lib/uitl/push-notification-handler.dart @@ -19,6 +19,7 @@ import 'package:firebase_messaging/firebase_messaging.dart' as fir; import 'package:flutter/cupertino.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; +import 'package:flutter_ios_voip_kit/flutter_ios_voip_kit.dart'; import 'package:flutter_local_notifications/flutter_local_notifications.dart'; import 'package:get_it/get_it.dart'; import 'package:huawei_hmsavailability/huawei_hmsavailability.dart'; @@ -124,6 +125,8 @@ class PushNotificationHandler { late HmsApiAvailability hmsApiAvailability; + final voIPKit = FlutterIOSVoIPKit.instance; + late Timer timeOutTimer; bool isTalking = false; @@ -155,6 +158,14 @@ class PushNotificationHandler { init(BuildContext context) async { this.context = context; + + if (Platform.isIOS) { + voIPKit.getVoIPToken().then((value) { + print("APNS VOIP KIT TOKEN: $value"); + AppSharedPreferences().setString(APNS_TOKEN, value!); + }); + } + if (Platform.isAndroid) { try { if (!(await Utils.isGoogleServicesAvailable())) { @@ -228,6 +239,11 @@ class PushNotificationHandler { FirebaseMessaging.onBackgroundMessage(backgroundMessageHandler); + FirebaseMessaging.instance.getToken(vapidKey: 'BHRJG8sIzcysWxPw3B6xQjz_85nUuCfU6EAmpH18kyUTmB2cj35IdFwCyWSab80SA1v6oBSWVh-p6PcHPw_y00Y').then((String? token) { + print("Push Notification getToken: " + token!); + onToken(token!); + }); + FirebaseMessaging.instance.onTokenRefresh.listen((fcm_token) { print("Push Notification onTokenRefresh: " + fcm_token); onToken(fcm_token); @@ -265,7 +281,7 @@ class PushNotificationHandler { onToken(String token) async { print("Push Notification Token: " + token); - AppSharedPreferences().setString(PUSH_TOKEN, token); + await AppSharedPreferences().setString(PUSH_TOKEN, token); DEVICE_TOKEN = token; } diff --git a/lib/widgets/data_display/medical/medical_profile_item.dart b/lib/widgets/data_display/medical/medical_profile_item.dart index 35c82288..d9ffce3f 100644 --- a/lib/widgets/data_display/medical/medical_profile_item.dart +++ b/lib/widgets/data_display/medical/medical_profile_item.dart @@ -15,7 +15,16 @@ class MedicalProfileItem extends StatelessWidget { final width; final height; - MedicalProfileItem({required this.imagePath, required this.title, required this.subTitle, hasBadge, this.isEnable = true, this.imgColor, this.isPngImage = false, this.width, this.height}); + MedicalProfileItem( + {required this.imagePath, + required this.title, + required this.subTitle, + hasBadge, + this.isEnable = true, + this.imgColor, + this.isPngImage = false, + this.width, + this.height}); @override Widget build(BuildContext context) { @@ -24,7 +33,8 @@ class MedicalProfileItem extends StatelessWidget { height: double.infinity, width: double.infinity, margin: EdgeInsets.all(0), - decoration: containerColorRadiusBorderWidth(Colors.white, 15, CustomColors.pharmacyGreyColor, 1), + decoration: containerColorRadiusBorderWidth( + Colors.white, 15, CustomColors.pharmacyGreyColor, 1), clipBehavior: Clip.antiAlias, child: Stack( children: [ @@ -45,14 +55,22 @@ class MedicalProfileItem extends StatelessWidget { isPngImage ? Image.asset( imagePath, - width: width != null ? width : SizeConfig.widthMultiplier! * 7, - height: height != null ? height : SizeConfig.widthMultiplier! * 7, + width: width != null + ? width + : SizeConfig.widthMultiplier! * 7, + height: height != null + ? height + : SizeConfig.widthMultiplier! * 7, color: imgColor, ) : SvgPicture.asset( "assets/images/new/services/$imagePath", - height: SizeConfig.widthMultiplier! * 7, - width: SizeConfig.widthMultiplier! * 7, + height: height != null + ? height + : SizeConfig.widthMultiplier! * 7, + width: width != null + ? width + : SizeConfig.widthMultiplier! * 7, color: imgColor, ), mFlex(2), diff --git a/lib/widgets/drawer/app_drawer_widget.dart b/lib/widgets/drawer/app_drawer_widget.dart index c759bb03..9d3fe17b 100644 --- a/lib/widgets/drawer/app_drawer_widget.dart +++ b/lib/widgets/drawer/app_drawer_widget.dart @@ -691,6 +691,8 @@ class _AppDrawerState extends State { var currentLang = await sharedPref.getString(APP_LANGUAGE); var mainUser = await sharedPref.getObject(MAIN_USER); var loginType = await sharedPref.getInt(LAST_LOGIN); + var pushToken = await sharedPref.getString(PUSH_TOKEN); + var oneSignalPushToken = await sharedPref.getString(ONESIGNAL_APNS_TOKEN); this.sharedPref.clear(); if (mainUser["PatientID"] != result.list.patientID) { result.list.isFamily = true; @@ -700,12 +702,15 @@ class _AppDrawerState extends State { // result.list.cRSVerificationStatus = result['CRSVerificationStatus']; this.sharedPref.setString(APP_LANGUAGE, currentLang); this.sharedPref.setString(BLOOD_TYPE, bloodType); + this.sharedPref.setString(PUSH_TOKEN, pushToken); + this.sharedPref.setString(ONESIGNAL_APNS_TOKEN, oneSignalPushToken); this.sharedPref.setInt(LAST_LOGIN, loginType ?? 1); await this.sharedPref.setObject(MAIN_USER, mainUser); await this.sharedPref.setObject(USER_PROFILE, result.list); await this.sharedPref.setObject(FAMILY_FILE, familyFile); await this.sharedPref.setObject(LOGIN_TOKEN_ID, result.logInTokenID); await this.sharedPref.setString(TOKEN, result.authenticationTokenID); + // Navigator.of(context).pop(); Provider.of(context, listen: false).user = result.list; Provider.of(context, listen: false).setUser(result.list); diff --git a/pubspec.yaml b/pubspec.yaml index 1382380b..e0e4c4ab 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -163,7 +163,7 @@ dependencies: equatable: ^2.0.3 wave: ^0.2.0 sms_otp_auto_verify: ^2.1.0 - #flutter_ios_voip_kit: ^0.1.0 + flutter_ios_voip_kit: ^0.1.0 google_api_availability: ^5.0.0 open_filex: ^4.3.2 path_provider: ^2.0.8