diff --git a/android/app/build.gradle.kts b/android/app/build.gradle.kts index f531524..226d4dd 100644 --- a/android/app/build.gradle.kts +++ b/android/app/build.gradle.kts @@ -1,46 +1,188 @@ +import java.util.Properties +import java.io.FileInputStream + plugins { id("com.android.application") id("kotlin-android") - // The Flutter Gradle Plugin must be applied after the Android and Kotlin Gradle plugins. + id("com.google.gms.google-services") version "4.4.1" // Add the version here id("dev.flutter.flutter-gradle-plugin") - id("com.google.gms.google-services") id("com.huawei.agconnect") + // id("com.mapbox.gradle.application") + // id("com.mapbox.gradle.plugins.ndk") +} + +val keystoreProperties = Properties() +val keystorePropertiesFile = rootProject.file("key.properties") +if (keystorePropertiesFile.exists()) { + keystoreProperties.load(FileInputStream(keystorePropertiesFile)) } android { - namespace = "com.ejada.hmg.hmg_patient_app_new" - compileSdk = flutter.compileSdkVersion - ndkVersion = flutter.ndkVersion + namespace = "com.ejada.hmg" + compileSdk = 36 + ndkVersion = "28.2.13676358" - compileOptions { - sourceCompatibility = JavaVersion.VERSION_11 - targetCompatibility = JavaVersion.VERSION_11 + defaultConfig { + applicationId = "com.ejada.hmg" + // minSdk = 24 + minSdk = 26 + targetSdk = 35 + compileSdk = 35 + // targetSdk = flutter.targetSdkVersion + versionCode = flutter.versionCode + versionName = flutter.versionName + multiDexEnabled = true } - kotlinOptions { - jvmTarget = JavaVersion.VERSION_11.toString() + buildFeatures { + viewBinding = true + dataBinding = true } - defaultConfig { - // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). - applicationId = "com.ejada.hmg.hmg_patient_app_new" - // You can update the following values to match your application needs. - // For more information, see: https://flutter.dev/to/review-gradle-config. - minSdk = flutter.minSdkVersion - targetSdk = flutter.targetSdkVersion - versionCode = flutter.versionCode - versionName = flutter.versionName + sourceSets { +// getByName("main") { +// java.srcDirs += "src/main/kotlin" +// jniLibs.srcDir("src/main/libs") +// jni.srcDirs = listOf() // disables automatic ndk-build +// } + getByName("main") { + java.srcDir("src/main/kotlin") + jniLibs.srcDir("src/main/libs") + // To disable automatic ndk-build, do not set jni.srcDirs + // If you need to clear jni.srcDirs: + // set("jni.srcDirs", emptyList()) + } + } + + signingConfigs { + create("release") { + keyAlias = keystoreProperties.getProperty("keyAlias") + keyPassword = keystoreProperties.getProperty("keyPassword") + storeFile = keystoreProperties.getProperty("storeFile")?.let { file(it) } + storePassword = keystoreProperties.getProperty("storePassword") + } } buildTypes { - release { - // TODO: Add your own signing config for the release build. - // Signing with the debug keys for now, so `flutter run --release` works. + getByName("debug") { + isDebuggable = true signingConfig = signingConfigs.getByName("debug") + isMinifyEnabled = false + isShrinkResources = false + } + getByName("release") { + isDebuggable = false + signingConfig = signingConfigs.getByName("release") + isMinifyEnabled = true + isShrinkResources = true + proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro") + } + create("staging") { + matchingFallbacks += listOf("debug", "qa", "release") } } + + packagingOptions { + jniLibs { + pickFirsts += listOf( + "lib/x86/libc++_shared.so", + "lib/x86_64/libc++_shared.so", + "lib/armeabi-v7a/libc++_shared.so", + "lib/arm64-v8a/libc++_shared.so", + "**/*.so" + ) + useLegacyPackaging = true + } + resources { + excludes += listOf("META-INF/proguard/androidx-annotations.pro") + } + } + + compileOptions { + sourceCompatibility = JavaVersion.VERSION_21 + targetCompatibility = JavaVersion.VERSION_21 + isCoreLibraryDesugaringEnabled = true + } + + // kotlinOptions { + // jvmTarget = "17" + // } + + lint { + disable += "MissingTranslation" + checkReleaseBuilds = false + } } flutter { source = "../.." } + +dependencies { + implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8:2.1.20") + implementation("com.google.firebase:firebase-messaging:24.1.2") + implementation("pub.devrel:easypermissions:3.0.0") + implementation("com.google.guava:guava:33.4.0-android") + implementation(fileTree(mapOf("dir" to "libs", "include" to listOf("*.jar"), "exclude" to listOf("bcprov-jdk16-1.46.jar")))) + implementation("com.google.code.gson:gson:2.12.0") + + // Zoom SDKs + implementation("us.zoom.videosdk:zoomvideosdk-core:1.12.10") + implementation("us.zoom.videosdk:zoomvideosdk-annotation:1.12.10") + implementation("us.zoom.videosdk:zoomvideosdk-videoeffects:1.12.10") + + // Networking + implementation("com.squareup.okhttp3:logging-interceptor:5.0.0-alpha.11") + implementation("com.squareup.okhttp3:okhttp:5.0.0-alpha.11") + implementation("com.squareup.retrofit2:retrofit:2.11.0") + implementation("com.squareup.retrofit2:converter-gson:2.11.0") + implementation("com.squareup.retrofit2:adapter-java8:2.11.0") + + // Google Services + implementation("com.google.android.gms:play-services-location:21.3.0") + implementation("com.google.android.gms:play-services-basement:18.7.0") + + implementation("com.android.volley:volley:1.2.1") + implementation("androidx.constraintlayout:constraintlayout:2.2.1") + implementation("androidx.navigation:navigation-fragment-ktx:2.9.0") + implementation("androidx.navigation:navigation-ui-ktx:2.9.0") + implementation("androidx.activity:activity-ktx:1.10.1") + +// val room_version = "2.6.1" +// implementation("androidx.room:room-runtime:$room_version") +// annotationProcessor("androidx.room:room-compiler:$room_version") + + implementation("net.zetetic:android-database-sqlcipher:4.5.4") + implementation("com.intuit.ssp:ssp-android:1.1.0") + implementation("com.intuit.sdp:sdp-android:1.1.0") + +// implementation("com.github.bumptech.glide:glide:4.16.0") +// 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")) +// implementation(files("libs/Penguin.aar")) +// implementation(files("libs/PenguinRenderer.aar")) + + implementation("com.github.kittinunf.fuel:fuel:2.3.1") + implementation("com.github.kittinunf.fuel:fuel-android:2.3.1") + +// implementation("com.opentok.android:opentok-android-sdk:2.25.2") + +// implementation("com.facebook.stetho:stetho:1.6.0") +// implementation("com.facebook.stetho:stetho-urlconnection:1.6.0") + + implementation("androidx.core:core-ktx:1.16.0") + implementation("androidx.appcompat:appcompat:1.7.1") + implementation("com.google.android.material:material:1.12.0") + + implementation("pl.droidsonroids.gif:android-gif-drawable:1.2.25") + + androidTestImplementation("androidx.test:core:1.6.1") + implementation("com.whatsapp.otp:whatsapp-otp-android-sdk:0.1.0") + coreLibraryDesugaring("com.android.tools:desugar_jdk_libs:2.1.5") + // implementation(project(":vitalSignEngine")) +} \ No newline at end of file diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index 9eef101..e07754e 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -193,31 +193,31 @@ android:exported="true" android:permission="android.permission.BIND_JOB_SERVICE" /> - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + - + + + + - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + diff --git a/android/app/src/main/kotlin/com/ejada/hmg/hmg_patient_app_new/MainActivity.kt b/android/app/src/main/kotlin/com/ejada/hmg/hmg_patient_app_new/MainActivity.kt deleted file mode 100644 index 1fd6200..0000000 --- a/android/app/src/main/kotlin/com/ejada/hmg/hmg_patient_app_new/MainActivity.kt +++ /dev/null @@ -1,5 +0,0 @@ -package com.ejada.hmg.hmg_patient_app_new - -import io.flutter.embedding.android.FlutterActivity - -class MainActivity : FlutterActivity() diff --git a/android/app/src/main/res/values/styles.xml b/android/app/src/main/res/values/styles.xml index cb1ef88..1f83a33 100644 --- a/android/app/src/main/res/values/styles.xml +++ b/android/app/src/main/res/values/styles.xml @@ -1,18 +1,18 @@ - - - diff --git a/android/build.gradle.kts b/android/build.gradle.kts index 89176ef..4b24dd7 100644 --- a/android/build.gradle.kts +++ b/android/build.gradle.kts @@ -1,16 +1,99 @@ +buildscript { + repositories { + mavenCentral() + google() + maven { url = uri("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.isNullOrEmpty()) { + throw GradleException("MAPBOX_DOWNLOADS_TOKEN isn't set. Set it to the project properties or to the environment variables.") + } + } + authentication { + create("basic") + } + } + } + dependencies { + classpath("com.android.tools.build:gradle:8.1.0") + classpath("com.huawei.agconnect:agcp:1.9.1.304") + } +} + allprojects { repositories { google() mavenCentral() + maven { url = uri("https://developer.huawei.com/repo/") } + maven { url = uri("https://artifactory.ess-dev.com/artifactory/gradle-dev-local") } + maven { + url = uri("https://api.mapbox.com/downloads/v2/releases/maven") + credentials { + username = "mapbox" + password = "sk.eyJ1IjoicndhaWQiLCJhIjoiY2x6NWo0bTMzMWZodzJrcGZpemYzc3Z4dSJ9.uSSZuwNSGCcCdPAiORECmg" + if (password.isNullOrEmpty()) { + throw GradleException("MAPBOX_DOWNLOADS_TOKEN isn't set. Set it to the project properties or to the environment variables.") + } + } + authentication { + create("basic") + } + } } -} -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() -rootProject.layout.buildDirectory.value(newBuildDir) + configurations.all { + exclude(group = "org.bouncycastle", module = "bcprov-jdk16") + } + tasks.withType().configureEach { + sourceCompatibility = JavaVersion.VERSION_21.toString() + targetCompatibility = JavaVersion.VERSION_21.toString() + } + + tasks.withType().configureEach { + kotlinOptions { + jvmTarget = "21" + } + } + + subprojects { + afterEvaluate { + if (project.hasProperty("android")) { + project.extensions.findByName("android")?.let { androidExt -> + val android = androidExt as com.android.build.gradle.BaseExtension + if (android.namespace == null) { + android.namespace = project.group.toString() + } + android.buildFeatures.apply { + if (buildConfig == null) { + buildConfig = true + } + } + android.compileOptions.apply { + sourceCompatibility = JavaVersion.VERSION_21 + targetCompatibility = JavaVersion.VERSION_21 + } + } + } + project.tasks.withType().configureEach { + sourceCompatibility = JavaVersion.VERSION_21.toString() + targetCompatibility = JavaVersion.VERSION_21.toString() + } + project.tasks.withType().configureEach { + kotlinOptions { + jvmTarget = "21" + } + } + } + } +} + +rootProject.buildDir = File("../build") subprojects { - val newSubprojectBuildDir: Directory = newBuildDir.dir(project.name) - project.layout.buildDirectory.value(newSubprojectBuildDir) + project.buildDir = File("${rootProject.buildDir}/${project.name}") } subprojects { project.evaluationDependsOn(":app") @@ -18,4 +101,4 @@ subprojects { tasks.register("clean") { delete(rootProject.layout.buildDirectory) -} +} \ No newline at end of file diff --git a/lib/core/utils/push-notification-handler.dart b/lib/core/utils/push-notification-handler.dart index 0cd3be7..d71bdcf 100644 --- a/lib/core/utils/push-notification-handler.dart +++ b/lib/core/utils/push-notification-handler.dart @@ -9,7 +9,7 @@ import 'package:firebase_core/firebase_core.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; -import 'package:flutter_callkit_incoming/flutter_callkit_incoming.dart'; +// import 'package:flutter_callkit_incoming/flutter_callkit_incoming.dart'; import 'package:flutter_local_notifications/flutter_local_notifications.dart'; import 'package:hmg_patient_app_new/core/utils/LocalNotification.dart'; @@ -319,7 +319,7 @@ class PushNotificationHandler { int sdkInt = androidInfo.version.sdkInt ?? 0; if (sdkInt >= 33) { - await FlutterCallkitIncoming.requestFullIntentPermission(); + // await FlutterCallkitIncoming.requestFullIntentPermission(); } } } diff --git a/lib/presentation/authantication/login.dart b/lib/presentation/authantication/login.dart index 150d446..6e52eb8 100644 --- a/lib/presentation/authantication/login.dart +++ b/lib/presentation/authantication/login.dart @@ -11,7 +11,6 @@ import 'package:hmg_patient_app_new/theme/colors.dart'; import 'package:hmg_patient_app_new/widgets/appbar/app_bar_widget.dart'; import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart'; import 'package:hmg_patient_app_new/widgets/input_widget.dart'; -import 'package:hmg_patient_app_new/widgets/language_switcher.dart'; import 'package:sizer/sizer.dart'; // Import sizer class LoginScreen extends StatefulWidget { @@ -57,10 +56,11 @@ class _LoginScreen extends State { children: [ Utils.showLottie(context: context, assetPath: AppAnimations.login, width: 45.w, height: 22.h, repeat: true, fit: BoxFit.cover), SizedBox(height: 19.h), // Adjusted to sizer unit + LocaleKeys.welcomeToDrSulaiman.tr().toText22(), Text( LocaleKeys.welcomeToDrSulaiman.tr(), style: context.dynamicTextStyle( - fontSize: 22.sp, + fontSize: 22, fontWeight: FontWeight.w600, color: AppColors.textColor, letterSpacing: -0.4, diff --git a/pubspec.lock b/pubspec.lock index 6ba3395..0588d96 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -367,15 +367,6 @@ packages: url: "https://pub.dev" source: hosted version: "3.4.1" - flutter_callkit_incoming: - dependency: "direct main" - description: - path: "." - ref: dev - resolved-ref: "4b5aa9798a77eaba1c1726c314c5de74cd37ad6d" - url: "https://github.com/hiennguyen92/flutter_callkit_incoming.git" - source: git - version: "2.5.8" flutter_hooks: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index e7dd29a..4f553c5 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -33,10 +33,10 @@ dependencies: injector: ^4.0.0 provider: ^6.1.5+1 just_audio: ^0.10.4 - flutter_callkit_incoming: - git: - url: https://github.com/hiennguyen92/flutter_callkit_incoming.git - ref: dev +# flutter_callkit_incoming: +# git: +# url: https://github.com/hiennguyen92/flutter_callkit_incoming.git +# ref: dev url_launcher: ^6.3.2 logger: ^2.6.1 lottie: ^3.3.1