diff --git a/build.gradle b/build.gradle deleted file mode 100644 index bf14ea29c..000000000 --- a/build.gradle +++ /dev/null @@ -1,57 +0,0 @@ -// Top-level build file where you can add configuration options common to all sub-projects/modules. - -buildscript { - - repositories { - google() - mavenCentral() - maven { url 'https://maven.google.com' } - maven { url "https://plugins.gradle.org/m2/" } - } - dependencies { - classpath 'com.android.tools.build:gradle:8.1.2' - classpath 'com.google.gms:google-services:4.4.0' - classpath 'com.jakewharton:butterknife-gradle-plugin:10.2.3' - classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.9.10" - classpath "com.google.dagger:hilt-android-gradle-plugin:2.48" - } -} - -allprojects { - repositories { - google() - mavenCentral() - maven { url 'https://maven.google.com' } - maven { url "https://www.jitpack.io" } - maven { url "https://plugins.gradle.org/m2/" } - } -} - -task clean(type: Delete) { - delete rootProject.buildDir -} - -ext { - // Sdk and tools - minSdkVersion = 21 - targetSdkVersion = 34 - compileSdkVersion = 34 - buildToolsVersion = '30.0.3' - kotlinVersion = "1.9.10" // 1.9.10 - compose_version = '1.5.4' - lifecycle_version = '2.6.2' - lifecycleExtensionsVersion = '2.2.0' - activity_version = '1.5.0' - fragment_version = '1.5.0' - - // App dependencies - supportLibraryVersion = '28.0.0' - retrofitVersion = '2.2.0' - okHttp3Version = '3.6.0' - butterKnifeVersion = '10.2.3' - dbflowVersion = '3.1.1' - espressoVersion = '2.2.2' - rxandroidVersion = '1.1.0' - rxjavaVersion = '1.1.4' - junitVersion = '4.12' -} \ No newline at end of file diff --git a/build.gradle.kts b/build.gradle.kts new file mode 100644 index 000000000..4028fb02e --- /dev/null +++ b/build.gradle.kts @@ -0,0 +1,10 @@ +// Top-level build file where you can add configuration options common to all sub-projects/modules. +plugins { + alias(libs.plugins.android.application) apply false + alias(libs.plugins.kotlin.android) apply false + alias(libs.plugins.kotlin.serialization) apply false + alias(libs.plugins.firebase.crashlytics) apply false + alias(libs.plugins.gms) apply false + //alias(libs.plugins.butterknife) apply false + alias(libs.plugins.hilt.gradle) apply false +} diff --git a/core/build.gradle b/core/build.gradle index 25867f172..d5478e918 100644 --- a/core/build.gradle +++ b/core/build.gradle @@ -8,12 +8,11 @@ apply plugin: 'com.google.dagger.hilt.android' group='com.github.ankurs287' android { - compileSdk rootProject.ext.compileSdkVersion + compileSdk 34 namespace 'org.mifos.mobilewallet.core' defaultConfig { - minSdkVersion rootProject.ext.minSdkVersion - targetSdkVersion rootProject.ext.targetSdkVersion - + minSdkVersion 24 + targetSdkVersion 34 testInstrumentationRunner 'androidx.test.runner.AndroidJUnitRunner' } @@ -27,17 +26,23 @@ android { } } - lintOptions { - abortOnError false - disable 'InvalidPackage' - } - compileOptions { sourceCompatibility JavaVersion.VERSION_17 targetCompatibility JavaVersion.VERSION_17 } + + kotlinOptions { + jvmTarget = "17" + } + buildFeatures{ dataBinding true + buildConfig true + } + + lint { + abortOnError false + disable 'InvalidPackage' } } @@ -48,21 +53,21 @@ dependencies { implementation "com.google.dagger:hilt-android:2.48" kapt "com.google.dagger:hilt-compiler:2.48" - implementation ("com.squareup.retrofit2:retrofit:$rootProject.retrofitVersion") { + implementation(libs.squareup.retrofit2) { // exclude Retrofit’s OkHttp peer-dependency module and define your own module import exclude module: 'okhttp' } - implementation "com.squareup.retrofit2:converter-gson:$rootProject.retrofitVersion" - implementation "com.squareup.retrofit2:adapter-rxjava:$rootProject.retrofitVersion" - implementation "com.squareup.okhttp3:okhttp:$rootProject.okHttp3Version" - implementation "com.squareup.okhttp3:logging-interceptor:$rootProject.okHttp3Version" + implementation(libs.squareup.retrofit.adapter.rxjava) + implementation(libs.squareup.retrofit.converter.gson) + implementation(libs.squareup.okhttp) + implementation(libs.squareup.logging.interceptor) - implementation "io.reactivex:rxandroid:$rootProject.rxandroidVersion" - implementation "io.reactivex:rxjava:$rootProject.rxjavaVersion" + implementation(libs.reactivex.rxjava.android) + implementation(libs.reactivex.rxjava) - implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:${rootProject.kotlinVersion}" + implementation(libs.jetbrains.kotlin.jdk7) - testImplementation "junit:junit:$rootProject.junitVersion" + testImplementation(libs.junit) androidTestImplementation('androidx.test.espresso:espresso-core:3.1.0', { exclude group: 'com.android.support', module: 'support-annotations' }) diff --git a/gradle.properties b/gradle.properties index 5706d031d..585634f6a 100644 --- a/gradle.properties +++ b/gradle.properties @@ -21,6 +21,5 @@ org.gradle.daemon=true org.gradle.parallel=true android.useAndroidX=true android.enableJetifier=true -android.defaults.buildfeatures.buildconfig=true android.nonTransitiveRClass=false android.nonFinalResIds=false diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml new file mode 100644 index 000000000..ed1618d1b --- /dev/null +++ b/gradle/libs.versions.toml @@ -0,0 +1,108 @@ +[versions] +compileSdk = "34" +minSdk = "24" +targetSdk = "34" +androidGradlePlugin = "8.2.1" +androidxActivity = "1.7.2" +androidxComposeBom = "2023.10.01" +androidxComposeCompiler = "1.5.1" +androidxCore = "1.10.1" +androidxHilt = "1.1.0-alpha01" +androidxLifecycle = "2.6.1" +androidxNavigation = "2.7.0" +androidxRoom = "2.5.1" +androidxTestCore = "1.5.0" +androidxTestExt = "1.1.5" +androidxTestRunner = "1.5.2" +coroutines = "1.7.3" +hilt = "2.47" +junit = "4.13.2" +kotlin = "1.9.20" +ksp = "1.9.0-1.0.12" +amplify = "2.11.1" +coreLibraryDesugaring = "1.1.5" +androidxWork = "2.9.0-alpha01" +hiltWorker = "1.0.0" +coil = "2.4.0" +okhttp = "4.10.0" +lottie = "6.1.0" +firebaseBom = "31.2.0" +firebaseCrashlyticsPlugin = "2.9.2" +gmsPlugin = "4.3.14" +butterknifePlugin = "10.2.3" +secrets = "2.0.1" +androidxDataStore = "1.0.0" +gmsAdmob = "22.0.0" +userMessagingPlatform = "2.1.0" + +## Sdk and tools +buildToolsVersion = "30.0.3" +composeVersion = "1.5.4" +lifecycleVersion = "2.6.2" +lifecycleExtensionsVersion = "2.2.0" +activityVersion = "1.5.0" +fragmentVersion = "1.5.0" + +## App dependencies +supportLibraryVersion = "28.0.0" +retrofitVersion = "2.2.0" +okHttp3Version = "3.6.0" +butterKnifeVersion = "10.2.3" +dbflowVersion = "3.1.1" +espressoVersion = "2.2.2" +rxandroidVersion = "1.1.0" +rxjavaVersion = "1.1.4" +junitVersion = "4.12" + +[libraries] +androidx-activity-ktx = { module = "androidx.activity:activity-ktx", version.ref = "activityVersion" } +androidx-fragment-ktx = { module = "androidx.fragment:fragment-ktx", version.ref = "fragmentVersion" } +androidx-compose-bom = { group = "androidx.compose", name = "compose-bom", version.ref = "androidxComposeBom" } +androidx-activity-compose = { module = "androidx.activity:activity-compose", version.ref = "androidxActivity" } +androidx-compose-compiler = { module = "androidx.compose.compiler:compiler", version.ref = "androidxComposeCompiler" } +androidx-compose-material3 = { group = "androidx.compose.material3", name = "material3"} +androidx-compose-ui = { group = "androidx.compose.ui", name = "ui"} +androidx-compose-ui-test-junit4 = { group = "androidx.compose.ui", name = "ui-test-junit4"} +androidx-compose-ui-test-manifest = { group = "androidx.compose.ui", name = "ui-test-manifest"} +androidx-compose-ui-tooling = { group = "androidx.compose.ui", name = "ui-tooling"} +androidx-compose-runtime = { group = "androidx.compose.runtime", name = "runtime" } + +androidx-compose-material-icons-extended = { group = "androidx.compose.material", name = "material-icons-extended"} +androidx-compose-ui-tooling-preview = { group = "androidx.compose.ui", name = "ui-tooling-preview"} +androidx-compose-ui-util = { group = "androidx.compose.ui", name = "ui-util"} +androidx-hilt-navigation-compose = { module = "androidx.hilt:hilt-navigation-compose", version.ref = "androidxHilt" } +androidx-lifecycle-runtime-compose = { module = "androidx.lifecycle:lifecycle-runtime-compose", version.ref = "androidxLifecycle" } +androidx-lifecycle-viewmodel-compose = { module = "androidx.lifecycle:lifecycle-viewmodel-compose", version.ref = "androidxLifecycle" } +androidx-lifecycle-ktx = { module = "androidx.lifecycle:lifecycle-viewmodel-ktx", version.ref = "lifecycleVersion" } +androidx-lifecycle-extensions = { module = "androidx.lifecycle:lifecycle-extensions", version.ref = "lifecycleExtensionsVersion" } + +jakewharton-butterknife = { module = "com.jakewharton:butterknife", version.ref = "butterKnifeVersion" } +jakewharton-compiler = { module = "com.jakewharton:butterknife-compiler", version.ref = "butterKnifeVersion" } +squareup-retrofit2 = { module = "com.squareup.retrofit2:retrofit", version.ref = "retrofitVersion" } +squareup-retrofit-adapter-rxjava = { module = "com.squareup.retrofit2:adapter-rxjava", version.ref = "retrofitVersion" } +squareup-retrofit-converter-gson = { module = "com.squareup.retrofit2:converter-gson", version.ref = "retrofitVersion" } +squareup-okhttp = { module = "com.squareup.okhttp3:okhttp", version.ref = "okHttp3Version" } +squareup-logging-interceptor = { module = "com.squareup.okhttp3:logging-interceptor", version.ref = "okHttp3Version" } + +reactivex-rxjava-android = { module = "io.reactivex:rxandroid", version.ref = "rxandroidVersion" } +reactivex-rxjava = { module = "io.reactivex:rxjava", version.ref = "rxjavaVersion" } + +junit = { module = "junit:junit", version.ref = "junitVersion"} + +jetbrains-kotlin-jdk7 = { module = "org.jetbrains.kotlin:kotlin-stdlib-jdk7", version.ref = "kotlin" } + +[plugins] +android-application = { id = "com.android.application", version.ref = "androidGradlePlugin" } +android-library = { id = "com.android.library", version.ref = "androidGradlePlugin" } +gms = { id = "com.google.gms.google-services", version.ref = "gmsPlugin" } +firebase-crashlytics = { id = "com.google.firebase.crashlytics", version.ref = "firebaseCrashlyticsPlugin" } +secrets = { id = "com.google.android.libraries.mapsplatform.secrets-gradle-plugin", version.ref = "secrets" } +kotlin-serialization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "kotlin" } +butterknife = { id = "com.jakewharton.butterknife-gradle-plugin", version.ref = "butterknifePlugin" } +kotlin-jvm = { id = "org.jetbrains.kotlin.jvm", version.ref = "kotlin" } +android-test = { id = "com.android.test", version.ref = "androidGradlePlugin" } +hilt-gradle = { id = "com.google.dagger.hilt.android", version.ref = "hilt" } +kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" } +kotlin-kapt = { id = "org.jetbrains.kotlin.kapt", version.ref = "kotlin" } +kotlin-parcelize = { id = "org.jetbrains.kotlin.plugin.parcelize", version.ref = "kotlin" } +ksp = { id = "com.google.devtools.ksp", version.ref = "ksp"} diff --git a/mifospay/build.gradle b/mifospay/build.gradle index 53c4fd3af..98a22c2ce 100644 --- a/mifospay/build.gradle +++ b/mifospay/build.gradle @@ -7,12 +7,12 @@ apply plugin: 'kotlin-parcelize' apply plugin: 'com.google.dagger.hilt.android' android { - compileSdk rootProject.ext.compileSdkVersion + compileSdk 34 namespace 'org.mifos.mobilewallet.mifospay' defaultConfig { applicationId "org.mifos.mobilewallet.mifospay" - minSdkVersion rootProject.ext.minSdkVersion - targetSdkVersion rootProject.ext.targetSdkVersion + minSdkVersion 24 + targetSdkVersion 34 versionCode 1 versionName "1.0" vectorDrawables.useSupportLibrary = true @@ -27,19 +27,11 @@ android { buildFeatures{ dataBinding true compose = true + buildConfig true } composeOptions { - kotlinCompilerExtensionVersion "1.5.3" - } - - aaptOptions { - cruncherEnabled = false - } - - lintOptions { - abortOnError false - disable 'InvalidPackage' + kotlinCompilerExtensionVersion "1.5.5" } compileOptions { @@ -47,6 +39,15 @@ android { sourceCompatibility JavaVersion.VERSION_17 targetCompatibility JavaVersion.VERSION_17 } + + kotlinOptions { + jvmTarget = "17" + } + + lint { + abortOnError false + disable 'InvalidPackage' + } } dependencies { @@ -56,8 +57,8 @@ dependencies { implementation 'androidx.appcompat:appcompat:1.6.1' implementation "androidx.core:core-ktx:1.12.0" - implementation "androidx.activity:activity-ktx:$activity_version" - implementation "androidx.fragment:fragment-ktx:$fragment_version" + implementation libs.androidx.activity.ktx + implementation libs.androidx.fragment.ktx implementation 'androidx.legacy:legacy-support-v4:1.0.0' implementation 'androidx.vectordrawable:vectordrawable-animated:1.1.0' implementation 'androidx.media:media:1.6.0' @@ -66,24 +67,26 @@ dependencies { api 'com.google.android.material:material:1.0.0' // update require alot of UI changes // Compose - implementation "androidx.compose.ui:ui:$compose_version" - implementation "androidx.compose.material:material:$compose_version" - implementation "androidx.compose.ui:ui-tooling-preview:$compose_version" - implementation("androidx.hilt:hilt-navigation-compose:1.0.0") - implementation "androidx.lifecycle:lifecycle-viewmodel-compose:$lifecycle_version" - implementation("androidx.lifecycle:lifecycle-runtime-compose:$lifecycle_version") - implementation "androidx.compose.material:material-icons-extended:$compose_version" + def composeBom = platform(libs.androidx.compose.bom) + implementation(composeBom) + implementation(libs.androidx.compose.ui) + implementation(libs.androidx.compose.ui.tooling.preview) + implementation(libs.androidx.compose.material3) + implementation(libs.androidx.hilt.navigation.compose) + implementation(libs.androidx.lifecycle.runtime.compose) + implementation(libs.androidx.lifecycle.viewmodel.compose) + implementation(libs.androidx.compose.material.icons.extended) // ViewModel - implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycle_version" - implementation "androidx.lifecycle:lifecycle-extensions:$rootProject.lifecycleExtensionsVersion" + implementation(libs.androidx.lifecycle.ktx) + implementation(libs.androidx.lifecycle.extensions) implementation("org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.4") implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.6.4") - implementation "com.jakewharton:butterknife:$rootProject.butterKnifeVersion" - kapt "com.jakewharton:butterknife-compiler:$rootProject.butterKnifeVersion" + implementation(libs.jakewharton.butterknife) + implementation(libs.jakewharton.compiler) // Splash API implementation("androidx.core:core-splashscreen:1.0.1") @@ -96,25 +99,26 @@ dependencies { implementation("androidx.compose.material3:material3") implementation("androidx.activity:activity-compose:1.8.0") - runtimeOnly("androidx.compose.runtime:runtime:$compose_version") - debugImplementation "androidx.compose.ui:ui-tooling:$compose_version" + + runtimeOnly(libs.androidx.compose.runtime) + debugImplementation(libs.androidx.compose.ui.tooling) implementation "com.google.dagger:hilt-android:2.48" kapt "com.google.dagger:hilt-compiler:2.48" - implementation("com.squareup.retrofit2:retrofit:$rootProject.retrofitVersion") { + implementation(libs.squareup.retrofit2) { // exclude Retrofit’s OkHttp peer-dependency module and define your own module import exclude module: 'okhttp' } - implementation "com.squareup.retrofit2:converter-gson:$rootProject.retrofitVersion" - implementation "com.squareup.retrofit2:adapter-rxjava:$rootProject.retrofitVersion" - implementation "com.squareup.okhttp3:okhttp:$rootProject.okHttp3Version" - implementation "com.squareup.okhttp3:logging-interceptor:$rootProject.okHttp3Version" + implementation(libs.squareup.retrofit.adapter.rxjava) + implementation(libs.squareup.retrofit.converter.gson) + implementation(libs.squareup.okhttp) + implementation(libs.squareup.logging.interceptor) implementation 'com.github.barteksc:android-pdf-viewer:2.8.2' - implementation "io.reactivex:rxandroid:$rootProject.rxandroidVersion" - implementation "io.reactivex:rxjava:$rootProject.rxjavaVersion" + implementation(libs.reactivex.rxjava.android) + implementation(libs.reactivex.rxjava) implementation "io.michaelrocks:libphonenumber-android:8.11.0" @@ -124,6 +128,7 @@ dependencies { implementation 'com.google.firebase:firebase-messaging:17.3.4' implementation 'com.google.android.gms:play-services-auth:16.0.1' implementation 'com.google.firebase:firebase-core:16.0.1' + implementation 'com.google.guava:guava:27.0.1-android' implementation 'com.hbb20:ccp:2.2.0' implementation 'com.github.MdFarhanRaja:SearchableSpinner:1.9' @@ -135,7 +140,7 @@ dependencies { exclude group: 'com.android.support', module: 'support-annotations' }) androidTestImplementation 'androidx.test.ext:junit:1.1.5' - testImplementation "junit:junit:$rootProject.junitVersion" + testImplementation(libs.junit) } kapt { diff --git a/mifospay/src/main/java/org/mifos/mobilewallet/mifospay/auth/ui/LoginScreen.kt b/mifospay/src/main/java/org/mifos/mobilewallet/mifospay/auth/ui/LoginScreen.kt index 8dbf04e9f..57dcb6cae 100644 --- a/mifospay/src/main/java/org/mifos/mobilewallet/mifospay/auth/ui/LoginScreen.kt +++ b/mifospay/src/main/java/org/mifos/mobilewallet/mifospay/auth/ui/LoginScreen.kt @@ -11,14 +11,14 @@ import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.verticalScroll -import androidx.compose.material.Button -import androidx.compose.material.ButtonDefaults -import androidx.compose.material.Text import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.Visibility import androidx.compose.material.icons.filled.VisibilityOff +import androidx.compose.material3.Button +import androidx.compose.material3.ButtonDefaults import androidx.compose.material3.Icon import androidx.compose.material3.IconButton +import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf @@ -109,7 +109,7 @@ fun LoginScreen( modifier = Modifier .fillMaxWidth() .padding(top = 16.dp), - colors = ButtonDefaults.buttonColors(backgroundColor = Color.Black), + colors = ButtonDefaults.buttonColors(containerColor = Color.Black), enabled = userName.text.isNotEmpty() && password.text.isNotEmpty(), onClick = { login.invoke(userName.text, password.text) diff --git a/mifospay/src/main/java/org/mifos/mobilewallet/mifospay/payments/ui/PayVpaMobileScreen.kt b/mifospay/src/main/java/org/mifos/mobilewallet/mifospay/payments/ui/PayVpaMobileScreen.kt index f64ca5c11..5165d3972 100644 --- a/mifospay/src/main/java/org/mifos/mobilewallet/mifospay/payments/ui/PayVpaMobileScreen.kt +++ b/mifospay/src/main/java/org/mifos/mobilewallet/mifospay/payments/ui/PayVpaMobileScreen.kt @@ -5,10 +5,10 @@ import androidx.compose.foundation.Image import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding -import androidx.compose.material.Button -import androidx.compose.material.ButtonDefaults -import androidx.compose.material.Text -import androidx.compose.material.TextField +import androidx.compose.material3.Button +import androidx.compose.material3.ButtonDefaults +import androidx.compose.material3.Text +import androidx.compose.material3.TextField import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.getValue @@ -68,7 +68,7 @@ fun PayVpsMobileScreen() { modifier = Modifier .fillMaxWidth() .padding(top = 16.dp), - colors = ButtonDefaults.buttonColors(backgroundColor = Color.Black), + colors = ButtonDefaults.buttonColors(containerColor = Color.Black), enabled = amount.isNotEmpty() && description.isNotEmpty(), onClick = { diff --git a/settings.gradle b/settings.gradle deleted file mode 100644 index 839db11cb..000000000 --- a/settings.gradle +++ /dev/null @@ -1 +0,0 @@ -include ':core', ':mifospay' diff --git a/settings.gradle.kts b/settings.gradle.kts new file mode 100644 index 000000000..d13411ef1 --- /dev/null +++ b/settings.gradle.kts @@ -0,0 +1,22 @@ +pluginManagement { + repositories { + gradlePluginPortal() + google() + mavenCentral() + maven("https://www.jitpack.io") + maven("https://plugins.gradle.org/m2/") + } +} +dependencyResolutionManagement { + repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) + repositories { + google() + mavenCentral() + maven("https://www.jitpack.io") + maven("https://plugins.gradle.org/m2/") + } +} +rootProject.name = "Mobile-Wallet" + +include(":mifospay") +include(":core")