diff --git a/agconnect-services.json b/agconnect-services.json new file mode 100644 index 00000000..91aad2c7 --- /dev/null +++ b/agconnect-services.json @@ -0,0 +1,74 @@ +{ + "agcgw":{ + "backurl":"connect-drcn.hispace.hicloud.com", + "url":"connect-drcn.dbankcloud.cn", + "websocketbackurl":"connect-ws-drcn.hispace.dbankcloud.com", + "websocketurl":"connect-ws-drcn.hispace.dbankcloud.cn" + }, + "agcgw_all":{ + "CN":"connect-drcn.dbankcloud.cn", + "CN_back":"connect-drcn.hispace.hicloud.com", + "DE":"connect-dre.dbankcloud.cn", + "DE_back":"connect-dre.hispace.hicloud.com", + "RU":"connect-drru.dbankcloud.cn", + "RU_back":"connect-drru.hispace.hicloud.com", + "SG":"connect-dra.dbankcloud.cn", + "SG_back":"connect-dra.hispace.hicloud.com" + }, + "client":{ + "cp_id":"2640966000002322881", + "product_id":"736430079244816567", + "client_id":"563735388191982656", + "client_secret":"650C7C799812AFFD53A10C7756CF05FB9F215A7E49032ABA8EBF3E14B77535CF", + "project_id":"736430079244816567", + "app_id":"102857389", + "api_key":"CgB6e3x9DJzMgRCmnT6dyUEkp6UsIfddb6l3w0ZEXzeiRMHEFi3400Z5fJ5qaHneU0OrAI/JRpk+DMGVs3QpUxlI", + "package_name":"com.ejada.hmg" + }, + "oauth_client":{ + "client_id":"102857389", + "client_type":1 + }, + "app_info":{ + "app_id":"102857389", + "package_name":"com.ejada.hmg" + }, + "service":{ + "analytics":{ + "collector_url":"datacollector-drcn.dt.hicloud.com,datacollector-drcn.dt.dbankcloud.cn", + "collector_url_ru":"datacollector-drru.dt.hicloud.com,datacollector-drru.dt.dbankcloud.cn", + "collector_url_sg":"datacollector-dra.dt.hicloud.com,datacollector-dra.dt.dbankcloud.cn", + "collector_url_de":"datacollector-dre.dt.hicloud.com,datacollector-dre.dt.dbankcloud.cn", + "collector_url_cn":"datacollector-drcn.dt.hicloud.com,datacollector-drcn.dt.dbankcloud.cn", + "resource_id":"p1", + "channel_id":"" + }, + "search":{ + "url":"https://search-drcn.cloud.huawei.com" + }, + "cloudstorage":{ + "storage_url":"https://agc-storage-drcn.platform.dbankcloud.cn" + }, + "ml":{ + "mlservice_url":"ml-api-drcn.ai.dbankcloud.com,ml-api-drcn.ai.dbankcloud.cn" + } + }, + "region":"CN", + "configuration_version":"3.0", + "appInfos":[ + { + "package_name":"com.ejada.hmg", + "client":{ + "app_id":"102857389" + }, + "app_info":{ + "package_name":"com.ejada.hmg", + "app_id":"102857389" + }, + "oauth_client":{ + "client_type":1, + "client_id":"102857389" + } + } + ] +} diff --git a/android/app/build.gradle b/android/app/build.gradle index 3c1e3442..10fbe461 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -4,7 +4,9 @@ plugins { id "com.google.gms.google-services" id "dev.flutter.flutter-gradle-plugin" id "com.google.firebase.crashlytics" - + id "com.huawei.agconnect" +// id("com.mapbox.gradle.application") +// id("com.mapbox.gradle.plugins.ndk") } @@ -18,12 +20,15 @@ if (keystorePropertiesFile.exists()) { android { namespace 'com.ejada.hmg' compileSdk 36 + ndkVersion '28.2.13676358' defaultConfig { applicationId "com.ejada.hmg" // minSdk 24 minSdkVersion 26 - targetSdk = flutter.targetSdkVersion + targetSdkVersion 35 + compileSdkVersion 35 +// targetSdk = flutter.targetSdkVersion versionCode = flutter.versionCode versionName = flutter.versionName multiDexEnabled true @@ -147,6 +152,7 @@ dependencies { annotationProcessor 'com.github.bumptech.glide:compiler:4.16.0' implementation 'com.mapbox.maps:android:11.5.0' +// implementation 'com.mapbox.maps:android:11.4.0' // AARs implementation files('libs/PenNavUI.aar') diff --git a/android/build.gradle b/android/build.gradle index ba03ecf0..74abf447 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -1,3 +1,28 @@ +buildscript { + repositories { + mavenCentral() + google() + maven { url "https://developer.huawei.com/repo/" } + maven { + url = uri("https://api.mapbox.com/downloads/v2/releases/maven") + credentials { + username = "mapbox" + password = "sk.eyJ1IjoicndhaWQiLCJhIjoiY2x6NWo0bTMzMWZodzJrcGZpemYzc3Z4dSJ9.uSSZuwNSGCcCdPAiORECmg" + if (password == null || password == "") { + throw new GradleException("MAPBOX_DOWNLOADS_TOKEN isn't set. Set it to the project properties or to the environment variables.") + } + } + authentication { + basic(BasicAuthentication) + } + } + } + dependencies { + classpath 'com.android.tools.build:gradle:8.1.0' + classpath 'com.huawei.agconnect:agcp:1.9.1.304' + } +} + allprojects { repositories { google() diff --git a/android/settings.gradle b/android/settings.gradle index 984ef784..2a6c7699 100644 --- a/android/settings.gradle +++ b/android/settings.gradle @@ -12,24 +12,29 @@ pluginManagement { includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") // Get vital-sign-engine path - def vitalSignEngine = { - def properties = new Properties() - file("local.properties").withInputStream { properties.load(it) } - def vitalSignEnginePath = properties.getProperty("vital.sign.engine.path") - assert vitalSignEnginePath != null, "vital.sign.engine.path not set in local.properties" - return vitalSignEnginePath - }() - - - - +// def vitalSignEngine = { +// def properties = new Properties() +// file("local.properties").withInputStream { properties.load(it) } +// def vitalSignEnginePath = properties.getProperty("vital.sign.engine.path") +// assert vitalSignEnginePath != null, "vital.sign.engine.path not set in local.properties" +// return vitalSignEnginePath +// }() repositories { google() mavenCentral() + maven { url 'https://developer.huawei.com/repo/' } gradlePluginPortal() } + resolutionStrategy { + eachPlugin { + if (requested.id.id == "com.huawei.agconnect") { + useModule("com.huawei.agconnect:agcp:1.9.1.304") + } + } + } + dependencyResolutionManagement { repositories { google() @@ -46,7 +51,6 @@ pluginManagement { } maven { url 'https://api.mapbox.com/downloads/v2/releases/maven' - credentials { username = 'mapbox' password = "sk.eyJ1IjoicndhaWQiLCJhIjoiY2x6NWo0bTMzMWZodzJrcGZpemYzc3Z4dSJ9.uSSZuwNSGCcCdPAiORECmg" @@ -69,6 +73,7 @@ plugins { id("com.google.gms.google-services") version "4.4.3" apply false id("com.google.firebase.crashlytics") version "3.0.4" apply false id('org.gradle.toolchains.foojay-resolver-convention') version '0.9.0' apply false + id "com.huawei.agconnect" version "1.9.1.304" apply false } diff --git a/lib/core/model/radiology/final_radiology.dart b/lib/core/model/radiology/final_radiology.dart index 82f2bf94..4d0cea68 100644 --- a/lib/core/model/radiology/final_radiology.dart +++ b/lib/core/model/radiology/final_radiology.dart @@ -44,6 +44,7 @@ class FinalRadiology { bool? isCVI; bool? isRadMedicalReport; bool? isLiveCareAppointment; + String? exam_Id; FinalRadiology( {this.setupID, @@ -88,7 +89,8 @@ class FinalRadiology { this.speciality, this.isCVI, this.isRadMedicalReport, - this.isLiveCareAppointment}); + this.isLiveCareAppointment, + this.exam_Id}); FinalRadiology.fromJson(Map json) { try { @@ -135,6 +137,7 @@ class FinalRadiology { // speciality = json['Speciality'].cast(); isCVI = json['isCVI']; isRadMedicalReport = json['isRadMedicalReport']; + exam_Id = json['Exam_id']; } catch (e) { print(e); } diff --git a/lib/core/service/medical/radiology_service.dart b/lib/core/service/medical/radiology_service.dart index d2c6be86..4805432a 100644 --- a/lib/core/service/medical/radiology_service.dart +++ b/lib/core/service/medical/radiology_service.dart @@ -12,7 +12,7 @@ class RadiologyService extends BaseService { String radReportPDF = ""; - Future getRadImageURL({int? invoiceNo, String? invoiceType, int? lineItem, int? projectId, bool? isVidaPlus}) async { + Future getRadImageURL({int? invoiceNo, String? invoiceType, int? lineItem, int? projectId, bool? isVidaPlus, String? examId}) async { hasError = false; final Map body = new Map(); body['InvoiceNo'] = isVidaPlus! ? "0" : invoiceNo; @@ -20,6 +20,7 @@ class RadiologyService extends BaseService { body['LineItemNo'] = lineItem; body['ProjectID'] = projectId; body['InvoiceType'] = invoiceType; + body['ExamId'] = examId; await baseAppClient.post(GET_RAD_IMAGE_URL, isAllowAny: true, onSuccess: (dynamic response, int statusCode) { url = response['Data']; diff --git a/lib/core/viewModels/medical/radiology_view_model.dart b/lib/core/viewModels/medical/radiology_view_model.dart index 2ab38b70..5e1fdf40 100644 --- a/lib/core/viewModels/medical/radiology_view_model.dart +++ b/lib/core/viewModels/medical/radiology_view_model.dart @@ -56,9 +56,9 @@ class RadiologyViewModel extends BaseViewModel { String get radImageURL => _radiologyService.url; - getRadImageURL({required int invoiceNo, String? invoiceType, required int lineItem, required int projectId, required bool isVidaPlus}) async { + getRadImageURL({required int invoiceNo, String? invoiceType, required int lineItem, required int projectId, required bool isVidaPlus, required String examId}) async { setState(ViewState.Busy); - await _radiologyService.getRadImageURL(invoiceNo: invoiceNo, invoiceType: invoiceType, lineItem: lineItem, projectId: projectId, isVidaPlus: isVidaPlus); + await _radiologyService.getRadImageURL(invoiceNo: invoiceNo, invoiceType: invoiceType, lineItem: lineItem, projectId: projectId, isVidaPlus: isVidaPlus, examId: examId); if (_radiologyService.hasError) { error = _radiologyService.error!; setState(ViewState.Error); diff --git a/lib/pages/livecare/incoming_call.dart b/lib/pages/livecare/incoming_call.dart index 229a2c32..7e705780 100644 --- a/lib/pages/livecare/incoming_call.dart +++ b/lib/pages/livecare/incoming_call.dart @@ -1,10 +1,13 @@ import 'dart:ui'; +// import 'package:camera/camera.dart'; import 'package:hmg_patient_app/models/LiveCare/IncomingCallData.dart'; import 'package:hmg_patient_app/pages/conference/widgets/platform_exception_alert_dialog.dart'; import 'package:hmg_patient_app/pages/conference/zoom/call_screen.dart'; import 'package:hmg_patient_app/pages/landing/landing_page.dart'; +import 'package:hmg_patient_app/pages/videocall-webrtc-rnd/webrtc/start_video_call.dart'; import 'package:hmg_patient_app/pages/webRTC/OpenTok/OpenTok.dart'; +import 'package:hmg_patient_app/pages/webRTC/signaling.dart'; import 'package:hmg_patient_app/services/livecare_services/livecare_provider.dart'; import 'package:hmg_patient_app/uitl/translations_delegate_base.dart'; import 'package:hmg_patient_app/uitl/utils_new.dart'; @@ -221,6 +224,7 @@ class _IncomingCallState extends State with SingleTickerProviderSt context, "zoom_call_page", arguments: CallArguments(widget.incomingCallData!.sessionId!, "123", "Patient", "40", "0", false, int.parse(widget.incomingCallData!.appointmentNo!)), + // arguments: CallArguments("SmallDailyStandup9875", "123", "Patient", "40", "0", false, int.parse(widget.incomingCallData!.appointmentNo!)), ); } else { // OpenTok Call Page diff --git a/lib/pages/login/confirm-login.dart b/lib/pages/login/confirm-login.dart index 95971d0b..2863dd20 100644 --- a/lib/pages/login/confirm-login.dart +++ b/lib/pages/login/confirm-login.dart @@ -95,7 +95,7 @@ class _ConfirmLogin extends State { late ToDoCountProviderModel toDoProvider; var dob; - late int isHijri; + int isHijri = 0; var healthId; @override diff --git a/lib/pages/login/user-login-agreement-page.dart b/lib/pages/login/user-login-agreement-page.dart index 5044b5a8..bbc605c2 100644 --- a/lib/pages/login/user-login-agreement-page.dart +++ b/lib/pages/login/user-login-agreement-page.dart @@ -44,7 +44,7 @@ class _UserLoginAgreementPageState extends State { final authService = AuthProvider(); late final WebViewController _controller; - bool isPageLoaded = false; + bool isPageLoaded = true; bool isTermsAndConditionsPage = true; bool acceptTerms = false; diff --git a/lib/pages/medical/radiology/radiology_details_page.dart b/lib/pages/medical/radiology/radiology_details_page.dart index 7bfa2522..e86f22d5 100644 --- a/lib/pages/medical/radiology/radiology_details_page.dart +++ b/lib/pages/medical/radiology/radiology_details_page.dart @@ -33,7 +33,8 @@ class RadiologyDetailsPage extends StatelessWidget { invoiceType: finalRadiology!.invoiceType, lineItem: finalRadiology!.invoiceLineItemNo!, invoiceNo: Utils.isVidaPlusProject(projectViewModel, finalRadiology!.projectID!) ? finalRadiology!.invoiceNo_VP : finalRadiology!.invoiceNo, - isVidaPlus: Utils.isVidaPlusProject(projectViewModel, finalRadiology!.projectID!)), + isVidaPlus: Utils.isVidaPlusProject(projectViewModel, finalRadiology!.projectID!), + examId: finalRadiology!.exam_Id ?? ""), builder: (_, model, widget) => AppScaffold( appBarTitle: TranslationBase.of(context).report, isShowAppBar: true, diff --git a/lib/widgets/in_app_browser/InAppBrowser.dart b/lib/widgets/in_app_browser/InAppBrowser.dart index e4697472..c2afb8d2 100644 --- a/lib/widgets/in_app_browser/InAppBrowser.dart +++ b/lib/widgets/in_app_browser/InAppBrowser.dart @@ -38,9 +38,9 @@ class MyInAppBrowser extends InAppBrowser { static String APPLE_PAY_PAYFORT_URL = 'https://hmgwebservices.com/PayFortWebLive/PayFortApi/MakeApplePayRequest'; // Payfort Payment Gateway URL LIVE // static String APPLE_PAY_PAYFORT_URL = 'https://hmgwebservices.com/PayFortWebLive/PayFortApi/MakeApplePayRequest'; // Payfort Payment Gateway URL UAT - // static String SERVICE_URL = 'https://hmgwebservices.com/PayFortWeb/pages/SendPayFortRequest.aspx'; // Payfort Payment Gateway URL UAT + static String SERVICE_URL = 'https://hmgwebservices.com/PayFortWeb/pages/SendPayFortRequest.aspx'; // Payfort Payment Gateway URL UAT - static String SERVICE_URL = 'https://hmgwebservices.com/PayFortWebLive/pages/SendPayFortRequest.aspx'; //Payfort Payment Gateway URL LIVE + // static String SERVICE_URL = 'https://hmgwebservices.com/PayFortWebLive/pages/SendPayFortRequest.aspx'; //Payfort Payment Gateway URL LIVE // static String SERVICE_URL = 'https://uat.hmgwebservices.com/payfortforvidaplus/pages/SendPayFortRequest.aspx'; //Payfort Payment Gateway URL UAT VIDA PLUS diff --git a/pubspec.yaml b/pubspec.yaml index d1c4547f..027f5d13 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -4,7 +4,7 @@ description: A new Flutter application. version: 4.6.009+1 environment: -# sdk: ">=3.0.0 <3.13.0" + # sdk: ">=3.0.0 <3.13.0" sdk: ">=3.6.0 <4.0.0" dependencies: @@ -19,7 +19,7 @@ dependencies: webview_flutter: ^4.8.0 app_links: ^6.4.0 http: ^1.4.0 - connectivity_plus: 6.1.0 + connectivity_plus: ^6.1.4 async: ^2.8.1 audio_wave: ^0.1.4 provider: ^6.0.5 @@ -28,10 +28,10 @@ dependencies: get_it: ^8.0.3 health: ^13.1.1 fl_chart: ^1.0.0 -# camera: ^0.11.2 + # camera: ^0.11.2 permission_handler: ^12.0.0+1 flutter_html: ^3.0.0-beta.2 - flutter_widget_from_html: ^0.16.0 + flutter_widget_from_html: ^0.17.0 # Pagnation pull_to_refresh: ^2.0.0 local_auth: ^2.1.7 @@ -39,8 +39,9 @@ dependencies: maps_launcher: ^3.0.0+1 url_launcher: ^6.3.1 url_launcher_ios: ^6.3.2 - shared_preferences: ^2.0.0 - fluttertoast: ^8.0.8 + shared_preferences: ^2.5.3 +# fluttertoast: ^8.0.8 + fluttertoast: ^8.2.12 flutter_progress_hud: ^2.0.2 percent_indicator: ^4.2.3 @@ -48,13 +49,13 @@ dependencies: # Icons font_awesome_flutter: any cupertino_icons: ^1.0.0 - image_picker: ^1.0.4 + image_picker: ^1.1.2 photo_view: any gif_view: ^1.0.3 expandable: ^5.0.1 flutter_charts: ^0.5.2 google_maps_flutter: ^2.12.3 -# huawei_map: ^6.11.2+304 + # huawei_map: ^6.11.2+304 huawei_map: git: url: https://github.com/fleoparra/hms-flutter-plugin.git @@ -63,9 +64,9 @@ dependencies: git: url: https://github.com/crasowas/hms-flutter-plugin.git path: flutter-hms-push -# huawei_push: ^6.12.0+303 -# hijri_gregorian_calendar: -# path: /Users/aamir/StudioProjects/hijri_gregorian_calendar + # huawei_push: ^6.12.0+303 + # hijri_gregorian_calendar: + # path: /Users/aamir/StudioProjects/hijri_gregorian_calendar hijri_gregorian_calendar: ^0.0.3 # Qr code Scanner @@ -77,10 +78,10 @@ dependencies: # SVG Images flutter_svg: ^2.0.8 manage_calendar_events: 2.0.3 -# icalendar_plus: ^0.0.6 + # icalendar_plus: ^0.0.6 flutter_inappwebview: ^6.1.5 circular_countdown_timer: ^0.2.0 - just_audio: ^0.9.30 + just_audio: ^0.10.4 hijri: ^3.0.0 flutter_datetime_picker_plus: ^2.1.0 carousel_pro_nullsafety: ^2.0.0 @@ -102,12 +103,12 @@ dependencies: # wakelock: ^0.6.2 wakelock_plus: ^1.3.2 after_layout: ^1.1.0 - cached_network_image: ^3.3.0 + cached_network_image: ^3.4.1 flutter_tts: ^4.2.3 flutter_nfc_kit: ^3.6.0 #geofencing: any - speech_to_text: ^7.1.0 + speech_to_text: ^7.2.0 in_app_update: ^4.2.2 in_app_review: ^2.0.10 badges: ^3.1.2 @@ -120,7 +121,7 @@ dependencies: auto_size_text: ^3.0.0 equatable: ^2.0.3 wave: ^0.2.0 - sms_otp_auto_verify: ^2.1.0 + sms_otp_auto_verify: ^2.2.0 google_api_availability: ^5.0.1 open_filex: ^4.7.0 path_provider: ^2.0.8 @@ -145,7 +146,9 @@ dependencies: dependency_overrides: intl: ^0.20.2 - + flutter_plugin_android_lifecycle: 2.0.27 + image_picker_android: 0.8.12+22 + video_player_android: 2.8.10 dev_dependencies: flutter_test: