From 52cead399acc79e6fe3a83c57c57252f5d1fba1f Mon Sep 17 00:00:00 2001 From: SuddenH4X Date: Wed, 29 Jan 2025 19:49:45 +0100 Subject: [PATCH 01/19] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 36f61e8..909e6ca 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # Awesome App Rating -[![Build Status](https://app.bitrise.io/app/3156ba39c3e19393/status.svg?token=xXPr-IjWuLLKVliX5QPZKg&branch=master)](https://app.bitrise.io/app/3156ba39c3e19393) +[![Build Status](https://app.bitrise.io/app/3156ba39c3e19393/status.svg?token=xXPr-IjWuLLKVliX5QPZKg&branch=develop)](https://app.bitrise.io/app/3156ba39c3e19393) A highly customizable Android library providing a dialog, which asks the user to rate the app. If the user rates below the defined threshold, the dialog will show a feedback form or ask the user to mail his feedback. Otherwise it will ask the user to rate the app in the Google Play Store. From 6cc93995ad80cd36958bbfa78e3f305ddd51bd8f Mon Sep 17 00:00:00 2001 From: SuddenH4X Date: Fri, 12 Jun 2026 21:06:28 +0200 Subject: [PATCH 02/19] chore: use gradle toolchain --- gradle/gradle-daemon-jvm.properties | 13 +++++++++++++ settings.gradle.kts | 3 +++ 2 files changed, 16 insertions(+) create mode 100644 gradle/gradle-daemon-jvm.properties diff --git a/gradle/gradle-daemon-jvm.properties b/gradle/gradle-daemon-jvm.properties new file mode 100644 index 0000000..0445017 --- /dev/null +++ b/gradle/gradle-daemon-jvm.properties @@ -0,0 +1,13 @@ +#This file is generated by updateDaemonJvm +toolchainUrl.FREE_BSD.AARCH64=https\://api.foojay.io/disco/v3.0/ids/402983f310a88ac68b3e883c7c91c760/redirect +toolchainUrl.FREE_BSD.X86_64=https\://api.foojay.io/disco/v3.0/ids/e50b80b5a11d194a898bc3e6211b7c4b/redirect +toolchainUrl.LINUX.AARCH64=https\://api.foojay.io/disco/v3.0/ids/402983f310a88ac68b3e883c7c91c760/redirect +toolchainUrl.LINUX.X86_64=https\://api.foojay.io/disco/v3.0/ids/e50b80b5a11d194a898bc3e6211b7c4b/redirect +toolchainUrl.MAC_OS.AARCH64=https\://api.foojay.io/disco/v3.0/ids/f257be9f04bfdf169051808541767806/redirect +toolchainUrl.MAC_OS.X86_64=https\://api.foojay.io/disco/v3.0/ids/1dcbacacca32618bd21ec5465779ade1/redirect +toolchainUrl.UNIX.AARCH64=https\://api.foojay.io/disco/v3.0/ids/402983f310a88ac68b3e883c7c91c760/redirect +toolchainUrl.UNIX.X86_64=https\://api.foojay.io/disco/v3.0/ids/e50b80b5a11d194a898bc3e6211b7c4b/redirect +toolchainUrl.WINDOWS.AARCH64=https\://api.foojay.io/disco/v3.0/ids/476d3c08f4989328dee56d22e202d98d/redirect +toolchainUrl.WINDOWS.X86_64=https\://api.foojay.io/disco/v3.0/ids/5a88b04b5e582b332d2e6bc12b45f1b9/redirect +toolchainVendor=ADOPTIUM +toolchainVersion=21 diff --git a/settings.gradle.kts b/settings.gradle.kts index 0db3063..592d484 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -7,6 +7,9 @@ pluginManagement { mavenCentral() } } +plugins { + id("org.gradle.toolchains.foojay-resolver-convention") version "1.0.0" +} dependencyResolutionManagement { repositories { From 8283804fa9370304e5563a7a81aadc97947a6a41 Mon Sep 17 00:00:00 2001 From: SuddenH4X Date: Sat, 13 Jun 2026 12:38:01 +0200 Subject: [PATCH 03/19] chore: update a lot of dependencies including Kotlin and Gradle --- exampleapp/build.gradle.kts | 1 + gradle/libs.versions.toml | 34 ++++++++++--------- gradle/wrapper/gradle-wrapper.properties | 2 +- .../ratingdialog/dialog/DialogManager.kt | 5 ++- .../preferences/ConditionsChecker.kt | 10 +++--- 5 files changed, 27 insertions(+), 25 deletions(-) diff --git a/exampleapp/build.gradle.kts b/exampleapp/build.gradle.kts index 3229b37..b72860d 100644 --- a/exampleapp/build.gradle.kts +++ b/exampleapp/build.gradle.kts @@ -47,6 +47,7 @@ dependencies { implementation(libs.androidx.activity.compose) implementation(libs.androidx.compose.material3) + implementation(libs.androidx.compose.material.icons.core) implementation(libs.androidx.compose.ui.tooling) implementation(libs.androidx.appcompat) implementation(libs.androidx.constraintlayout) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 8763d97..7dfb59f 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,34 +1,36 @@ [versions] -androidGradlePlugin = "8.8.0" -compileSdk = "35" +androidGradlePlugin = "8.13.2" +compileSdk = "36" jvmToolchain = "21" -kotlin = "2.0.20" minSdk = "14" +kotlin = "2.3.21" targetSdk = "35" -androidxActivityCompose = "1.10.0" -androidxAnnotation = "1.9.1" -androidxAppcompat = "1.7.0" -androidxComposeMaterial3 = "1.3.1" -androidxComposeUiTooling = "1.7.6" -androidxConstraintlayout = "2.2.0" -androidxCore = "1.15.0" -googleMaterial = "1.12.0" +androidxActivityCompose = "1.13.0" +androidxAnnotation = "1.10.0" +androidxAppcompat = "1.7.1" +androidxComposeMaterial3 = "1.4.0" +androidxComposeMaterialIcons = "1.7.8" +androidxComposeUiTooling = "1.11.2" +androidxConstraintlayout = "2.2.1" +androidxCore = "1.16.0" +googleMaterial = "1.14.0" googlePlayReview = "2.0.2" gradleNexusPublish = "2.0.0" -ktlint = "12.1.2" +ktlint = "14.2.0" # Dependencies for testing -mannodermausJunit5 = "1.11.2.0" -testingAssertJ = "3.26.3" -testingJupiterJunit = "5.11.4" -testingMockk = "1.13.14" +mannodermausJunit5 = "2.0.1" +testingAssertJ = "3.27.7" +testingJupiterJunit = "6.1.0" +testingMockk = "1.14.11" [libraries] androidx-activity-compose = { module = "androidx.activity:activity-compose", version.ref = "androidxActivityCompose" } androidx-annotation = { module = "androidx.annotation:annotation", version.ref = "androidxAnnotation" } androidx-appcompat = { module = "androidx.appcompat:appcompat", version.ref = "androidxAppcompat" } androidx-compose-material3 = { module = "androidx.compose.material3:material3", version.ref = "androidxComposeMaterial3" } +androidx-compose-material-icons-core = { module = "androidx.compose.material:material-icons-core", version.ref = "androidxComposeMaterialIcons" } androidx-compose-ui-tooling = { module = "androidx.compose.ui:ui-tooling", version.ref = "androidxComposeUiTooling" } androidx-constraintlayout = { module = "androidx.constraintlayout:constraintlayout", version.ref = "androidxConstraintlayout" } androidx-core-ktx = { module = "androidx.core:core-ktx", version.ref = "androidxCore" } diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index df97d72..5dd3c01 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.10.2-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-9.5.1-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/library/src/main/java/com/suddenh4x/ratingdialog/dialog/DialogManager.kt b/library/src/main/java/com/suddenh4x/ratingdialog/dialog/DialogManager.kt index 19e7007..6f50e3f 100644 --- a/library/src/main/java/com/suddenh4x/ratingdialog/dialog/DialogManager.kt +++ b/library/src/main/java/com/suddenh4x/ratingdialog/dialog/DialogManager.kt @@ -327,12 +327,11 @@ internal object DialogManager { private fun getDialogBuilder( context: Context, theme: Int, - ): AlertDialog.Builder { - return try { + ): AlertDialog.Builder = + try { MaterialAlertDialogBuilder(context, theme) } catch (ex: IllegalArgumentException) { RatingLogger.debug(context.getString(R.string.rating_dialog_log_no_material_components_theme_used)) AlertDialog.Builder(context, theme) } - } } diff --git a/library/src/main/java/com/suddenh4x/ratingdialog/preferences/ConditionsChecker.kt b/library/src/main/java/com/suddenh4x/ratingdialog/preferences/ConditionsChecker.kt index bd71740..1f15f31 100644 --- a/library/src/main/java/com/suddenh4x/ratingdialog/preferences/ConditionsChecker.kt +++ b/library/src/main/java/com/suddenh4x/ratingdialog/preferences/ConditionsChecker.kt @@ -30,7 +30,8 @@ internal object ConditionsChecker { if (!checkCustomConditionToShowAgain(context, dialogOptions)) return false return ( - !isDialogAgreed && !isDoNotShowAgain && + !isDialogAgreed && + !isDoNotShowAgain && daysBetween >= PreferenceUtil.getMinimumDaysToShowAgain(context) && PreferenceUtil.getLaunchTimes(context) >= PreferenceUtil.getMinimumLaunchTimesToShowAgain(context) @@ -42,7 +43,8 @@ internal object ConditionsChecker { RatingLogger.verbose(context.getString(R.string.rating_dialog_log_conditions_checker_days_between, daysBetween)) RatingLogger.debug(context.getString(R.string.rating_dialog_log_conditions_checker_later_button_not_clicked)) return ( - !isDialogAgreed && !isDoNotShowAgain && + !isDialogAgreed && + !isDoNotShowAgain && daysBetween >= PreferenceUtil.getMinimumDays(context) && PreferenceUtil.getLaunchTimes(context) >= PreferenceUtil.getMinimumLaunchTimes(context) @@ -52,9 +54,7 @@ internal object ConditionsChecker { internal fun calculateDaysBetween( d1: Date, d2: Date, - ): Long { - return TimeUnit.MILLISECONDS.toDays(d2.time - d1.time) - } + ): Long = TimeUnit.MILLISECONDS.toDays(d2.time - d1.time) private fun checkCustomCondition( context: Context, From 2cc82c38d5e136f8148ba69902ca0db149f8dc2d Mon Sep 17 00:00:00 2001 From: SuddenH4X Date: Sat, 13 Jun 2026 12:38:32 +0200 Subject: [PATCH 04/19] update minSdk to 23 --- exampleapp/build.gradle.kts | 2 +- gradle/libs.versions.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/exampleapp/build.gradle.kts b/exampleapp/build.gradle.kts index b72860d..e033473 100644 --- a/exampleapp/build.gradle.kts +++ b/exampleapp/build.gradle.kts @@ -10,7 +10,7 @@ android { compileSdk = libs.versions.compileSdk.get().toInt() defaultConfig { applicationId = "com.suddenh4x.ratingdialog.exampleapp" - minSdk = 21 + minSdk = 23 targetSdk = libs.versions.targetSdk.get().toInt() versionCode = 1 versionName = "1.0.0" diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 7dfb59f..b258f7a 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -2,8 +2,8 @@ androidGradlePlugin = "8.13.2" compileSdk = "36" jvmToolchain = "21" -minSdk = "14" kotlin = "2.3.21" +minSdk = "23" targetSdk = "35" androidxActivityCompose = "1.13.0" From e4fd1d34db57a64b4e411bb40702b9716beecc50 Mon Sep 17 00:00:00 2001 From: SuddenH4X Date: Sat, 13 Jun 2026 12:54:50 +0200 Subject: [PATCH 05/19] downgrade jvmTarget to 17 for better compatibility --- exampleapp/build.gradle.kts | 9 +++++++-- library/build.gradle.kts | 9 +++++++-- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/exampleapp/build.gradle.kts b/exampleapp/build.gradle.kts index e033473..351e25e 100644 --- a/exampleapp/build.gradle.kts +++ b/exampleapp/build.gradle.kts @@ -1,3 +1,5 @@ +import org.jetbrains.kotlin.gradle.dsl.JvmTarget + plugins { id(libs.plugins.android.application.get().pluginId) alias(libs.plugins.jlleitschuh.gradle.ktlint) @@ -34,11 +36,14 @@ android { kotlin { jvmToolchain(libs.versions.jvmToolchain.get().toInt()) + compilerOptions { + jvmTarget.set(JvmTarget.JVM_17) + } } compileOptions { - sourceCompatibility = JavaVersion.VERSION_21 - targetCompatibility = JavaVersion.VERSION_21 + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 } } diff --git a/library/build.gradle.kts b/library/build.gradle.kts index 1920bee..a7f9aba 100644 --- a/library/build.gradle.kts +++ b/library/build.gradle.kts @@ -1,3 +1,5 @@ +import org.jetbrains.kotlin.gradle.dsl.JvmTarget + plugins { id(libs.plugins.android.library.get().pluginId) alias(libs.plugins.kotlin.android) @@ -28,11 +30,14 @@ android { kotlin { jvmToolchain(libs.versions.jvmToolchain.get().toInt()) + compilerOptions { + jvmTarget.set(JvmTarget.JVM_17) + } } compileOptions { - sourceCompatibility = JavaVersion.VERSION_21 - targetCompatibility = JavaVersion.VERSION_21 + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 } // Workaround for https://github.com/gradle-nexus/publish-plugin/issues/208 From 82cee4f5b3257c614d39e4f4071ca153a99607c6 Mon Sep 17 00:00:00 2001 From: SuddenH4X Date: Sat, 13 Jun 2026 12:57:48 +0200 Subject: [PATCH 06/19] chore: remove outdated composeOptions flag --- exampleapp/build.gradle.kts | 4 ---- 1 file changed, 4 deletions(-) diff --git a/exampleapp/build.gradle.kts b/exampleapp/build.gradle.kts index 351e25e..bc9b197 100644 --- a/exampleapp/build.gradle.kts +++ b/exampleapp/build.gradle.kts @@ -30,10 +30,6 @@ android { compose = true } - composeOptions { - kotlinCompilerExtensionVersion = "1.5.3" - } - kotlin { jvmToolchain(libs.versions.jvmToolchain.get().toInt()) compilerOptions { From 6f09e51a416151cc77062d612cc862976abe9fd3 Mon Sep 17 00:00:00 2001 From: SuddenH4X Date: Sat, 13 Jun 2026 12:58:01 +0200 Subject: [PATCH 07/19] docs: update min API level in readme --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 909e6ca..d4e04b7 100644 --- a/README.md +++ b/README.md @@ -37,7 +37,7 @@ This library: ## How to use ### Gradle -The library supports API level 14 and higher. You can simply include it in your app via Gradle: +The library supports API level 23 and higher. You can simply include it in your app via Gradle: ```groovy dependencies { From 5d76f32a838c607d0982957cbe7614d3afa7a970 Mon Sep 17 00:00:00 2001 From: SuddenH4X Date: Sat, 13 Jun 2026 13:09:26 +0200 Subject: [PATCH 08/19] add comment regarding androidxCore version requirement --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index b258f7a..a1122d8 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -13,7 +13,7 @@ androidxComposeMaterial3 = "1.4.0" androidxComposeMaterialIcons = "1.7.8" androidxComposeUiTooling = "1.11.2" androidxConstraintlayout = "2.2.1" -androidxCore = "1.16.0" +androidxCore = "1.16.0" # Don't upgrade to 1.17.0 or higher because of compileSdk 36 requirement googleMaterial = "1.14.0" googlePlayReview = "2.0.2" gradleNexusPublish = "2.0.0" From 3b68dff4739db4d81333152d509a910bb8f4487d Mon Sep 17 00:00:00 2001 From: SuddenH4X Date: Sat, 13 Jun 2026 13:16:53 +0200 Subject: [PATCH 09/19] chore: upgrade agp to 9.2.1 --- gradle.properties | 5 +++++ gradle/libs.versions.toml | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 00c483e..63e8ecb 100644 --- a/gradle.properties +++ b/gradle.properties @@ -17,3 +17,8 @@ org.gradle.jvmargs=-Xmx4G -XX:+UseParallelGC -XX:+HeapDumpOnOutOfMemoryError -Df android.useAndroidX=true # Kotlin code style for this project: "official" or "obsolete": kotlin.code.style=official +# Temporary AGP 9 bridge: keep using the standalone 'org.jetbrains.kotlin.android' +# plugin and the legacy DSL. Both bypasses are removed in AGP 10, so the proper +# fix is to migrate to AGP's built-in Kotlin: https://kotl.in/gradle/agp-built-in-kotlin +android.builtInKotlin=false +android.newDsl=false diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index a1122d8..0032779 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,5 +1,5 @@ [versions] -androidGradlePlugin = "8.13.2" +androidGradlePlugin = "9.2.1" compileSdk = "36" jvmToolchain = "21" kotlin = "2.3.21" From 324d44dca9f66db8c4a50f504dd7a9dc53078f50 Mon Sep 17 00:00:00 2001 From: SuddenH4X Date: Sat, 13 Jun 2026 13:27:02 +0200 Subject: [PATCH 10/19] remove AGP 9 workarounds --- build.gradle.kts | 1 - exampleapp/build.gradle.kts | 15 +++++++-------- gradle.properties | 5 ----- gradle/libs.versions.toml | 1 - library/build.gradle.kts | 15 +++++++-------- 5 files changed, 14 insertions(+), 23 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index d079888..77301ee 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -4,7 +4,6 @@ plugins { alias(libs.plugins.android.application) apply false alias(libs.plugins.gradle.nexus.publish) alias(libs.plugins.jlleitschuh.gradle.ktlint) apply false - alias(libs.plugins.kotlin.android) apply false alias(libs.plugins.kotlin.compose.compiler) apply false } diff --git a/exampleapp/build.gradle.kts b/exampleapp/build.gradle.kts index bc9b197..c9a2549 100644 --- a/exampleapp/build.gradle.kts +++ b/exampleapp/build.gradle.kts @@ -3,10 +3,16 @@ import org.jetbrains.kotlin.gradle.dsl.JvmTarget plugins { id(libs.plugins.android.application.get().pluginId) alias(libs.plugins.jlleitschuh.gradle.ktlint) - alias(libs.plugins.kotlin.android) alias(libs.plugins.kotlin.compose.compiler) } +kotlin { + jvmToolchain(libs.versions.jvmToolchain.get().toInt()) + compilerOptions { + jvmTarget.set(JvmTarget.JVM_17) + } +} + android { namespace = "com.suddenh4x.ratingdialog.exampleapp" compileSdk = libs.versions.compileSdk.get().toInt() @@ -30,13 +36,6 @@ android { compose = true } - kotlin { - jvmToolchain(libs.versions.jvmToolchain.get().toInt()) - compilerOptions { - jvmTarget.set(JvmTarget.JVM_17) - } - } - compileOptions { sourceCompatibility = JavaVersion.VERSION_17 targetCompatibility = JavaVersion.VERSION_17 diff --git a/gradle.properties b/gradle.properties index 63e8ecb..00c483e 100644 --- a/gradle.properties +++ b/gradle.properties @@ -17,8 +17,3 @@ org.gradle.jvmargs=-Xmx4G -XX:+UseParallelGC -XX:+HeapDumpOnOutOfMemoryError -Df android.useAndroidX=true # Kotlin code style for this project: "official" or "obsolete": kotlin.code.style=official -# Temporary AGP 9 bridge: keep using the standalone 'org.jetbrains.kotlin.android' -# plugin and the legacy DSL. Both bypasses are removed in AGP 10, so the proper -# fix is to migrate to AGP's built-in Kotlin: https://kotl.in/gradle/agp-built-in-kotlin -android.builtInKotlin=false -android.newDsl=false diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 0032779..8759e66 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -50,6 +50,5 @@ android-application = { id = "com.android.application", version.ref = "androidGr android-library = { id = "com.android.library", version.ref = "androidGradlePlugin" } gradle-nexus-publish = { id = "io.github.gradle-nexus.publish-plugin", version.ref = "gradleNexusPublish" } jlleitschuh-gradle-ktlint = { id = "org.jlleitschuh.gradle.ktlint", version.ref = "ktlint" } -kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" } kotlin-compose-compiler = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlin" } mannodermaus-android-junit5 = { id = "de.mannodermaus.android-junit5", version.ref = "mannodermausJunit5" } diff --git a/library/build.gradle.kts b/library/build.gradle.kts index a7f9aba..2721a1b 100644 --- a/library/build.gradle.kts +++ b/library/build.gradle.kts @@ -2,13 +2,19 @@ import org.jetbrains.kotlin.gradle.dsl.JvmTarget plugins { id(libs.plugins.android.library.get().pluginId) - alias(libs.plugins.kotlin.android) alias(libs.plugins.mannodermaus.android.junit5) alias(libs.plugins.jlleitschuh.gradle.ktlint) } val version = "2.8.0" +kotlin { + jvmToolchain(libs.versions.jvmToolchain.get().toInt()) + compilerOptions { + jvmTarget.set(JvmTarget.JVM_17) + } +} + android { namespace = "com.suddenh4x.ratingdialog" compileSdk = libs.versions.compileSdk.get().toInt() @@ -28,13 +34,6 @@ android { viewBinding = true } - kotlin { - jvmToolchain(libs.versions.jvmToolchain.get().toInt()) - compilerOptions { - jvmTarget.set(JvmTarget.JVM_17) - } - } - compileOptions { sourceCompatibility = JavaVersion.VERSION_17 targetCompatibility = JavaVersion.VERSION_17 From 1644a64dffc2971d50a86e86b7e8e8ddc703caa4 Mon Sep 17 00:00:00 2001 From: SuddenH4X Date: Sat, 13 Jun 2026 13:48:58 +0200 Subject: [PATCH 11/19] refactor: fix warnings --- .../exampleapp/composeexample/ui/ComposeExampleApp.kt | 6 +++--- .../com/suddenh4x/ratingdialog/buttons/RateButtons.kt | 6 +++--- .../ratingdialog/dialog/RateDialogFragment.kt | 9 +++++++-- .../ratingdialog/dialog/RateDialogFragmentTest.kt | 2 ++ .../suddenh4x/ratingdialog/utils/FeedbackUtilsTest.kt | 3 ++- scripts/publish-module.gradle | 10 +++------- 6 files changed, 20 insertions(+), 16 deletions(-) diff --git a/exampleapp/src/main/java/com/suddenh4x/ratingdialog/exampleapp/composeexample/ui/ComposeExampleApp.kt b/exampleapp/src/main/java/com/suddenh4x/ratingdialog/exampleapp/composeexample/ui/ComposeExampleApp.kt index bf58a35..3d2e19b 100644 --- a/exampleapp/src/main/java/com/suddenh4x/ratingdialog/exampleapp/composeexample/ui/ComposeExampleApp.kt +++ b/exampleapp/src/main/java/com/suddenh4x/ratingdialog/exampleapp/composeexample/ui/ComposeExampleApp.kt @@ -7,7 +7,7 @@ import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.ArrowBack +import androidx.compose.material.icons.automirrored.filled.ArrowBack import androidx.compose.material3.Button import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.Icon @@ -69,7 +69,7 @@ private fun ComposeExampleTopAppBar(finishActivity: () -> Unit) { TopAppBar( title = { Text("Jetpack Compose Example") }, navigationIcon = { NavigateBackIcon(finishActivity) }, - colors = TopAppBarDefaults.centerAlignedTopAppBarColors( + colors = TopAppBarDefaults.topAppBarColors( containerColor = MaterialTheme.colorScheme.primary, titleContentColor = MaterialTheme.colorScheme.onPrimary, ), @@ -80,7 +80,7 @@ private fun ComposeExampleTopAppBar(finishActivity: () -> Unit) { private fun NavigateBackIcon(finishActivity: () -> Unit) { IconButton(onClick = { finishActivity() }) { Icon( - imageVector = Icons.Filled.ArrowBack, + imageVector = Icons.AutoMirrored.Filled.ArrowBack, contentDescription = "Navigate back", tint = MaterialTheme.colorScheme.onPrimary, ) diff --git a/library/src/main/java/com/suddenh4x/ratingdialog/buttons/RateButtons.kt b/library/src/main/java/com/suddenh4x/ratingdialog/buttons/RateButtons.kt index 2589808..6454d19 100644 --- a/library/src/main/java/com/suddenh4x/ratingdialog/buttons/RateButtons.kt +++ b/library/src/main/java/com/suddenh4x/ratingdialog/buttons/RateButtons.kt @@ -4,16 +4,16 @@ import androidx.annotation.StringRes import java.io.Serializable internal class RateButton( - @StringRes var textId: Int, + @param:StringRes var textId: Int, @Transient var rateDialogClickListener: RateDialogClickListener?, ) : Serializable internal class ConfirmButton( - @StringRes var textId: Int, + @param:StringRes var textId: Int, @Transient var confirmButtonClickListener: ConfirmButtonClickListener?, ) : Serializable internal class CustomFeedbackButton( - @StringRes var textId: Int, + @param:StringRes var textId: Int, @Transient var customFeedbackButtonClickListener: CustomFeedbackButtonClickListener?, ) : Serializable diff --git a/library/src/main/java/com/suddenh4x/ratingdialog/dialog/RateDialogFragment.kt b/library/src/main/java/com/suddenh4x/ratingdialog/dialog/RateDialogFragment.kt index 90f743d..c62c7e5 100644 --- a/library/src/main/java/com/suddenh4x/ratingdialog/dialog/RateDialogFragment.kt +++ b/library/src/main/java/com/suddenh4x/ratingdialog/dialog/RateDialogFragment.kt @@ -5,6 +5,7 @@ import android.content.DialogInterface import android.os.Bundle import androidx.annotation.VisibleForTesting import androidx.appcompat.app.AlertDialog +import androidx.core.os.BundleCompat import androidx.fragment.app.DialogFragment import com.suddenh4x.ratingdialog.R import com.suddenh4x.ratingdialog.logging.RatingLogger @@ -22,8 +23,12 @@ internal class RateDialogFragment : DialogFragment() { override fun onCreateDialog(savedInstanceState: Bundle?): Dialog { super.onCreateDialog(savedInstanceState) - dialogOptions = arguments?.getSerializable(ARG_DIALOG_OPTIONS) as DialogOptions - dialogType = arguments?.getSerializable(ARG_DIALOG_TYPE) as DialogType? ?: DialogType.RATING_OVERVIEW + val args = requireArguments() + dialogOptions = requireNotNull( + BundleCompat.getSerializable(args, ARG_DIALOG_OPTIONS, DialogOptions::class.java), + ) { "$ARG_DIALOG_OPTIONS argument is missing" } + dialogType = BundleCompat.getSerializable(args, ARG_DIALOG_TYPE, DialogType::class.java) + ?: DialogType.RATING_OVERVIEW isCancelable = dialogOptions.cancelable return when (dialogType) { diff --git a/library/src/test/java/com/suddenh4x/ratingdialog/dialog/RateDialogFragmentTest.kt b/library/src/test/java/com/suddenh4x/ratingdialog/dialog/RateDialogFragmentTest.kt index 5f1fbc8..cc87f2a 100644 --- a/library/src/test/java/com/suddenh4x/ratingdialog/dialog/RateDialogFragmentTest.kt +++ b/library/src/test/java/com/suddenh4x/ratingdialog/dialog/RateDialogFragmentTest.kt @@ -26,6 +26,8 @@ import org.junit.jupiter.params.ParameterizedTest import org.junit.jupiter.params.provider.EnumSource import org.junit.jupiter.params.provider.ValueSource +// getSerializable(String) is mocked because BundleCompat delegates to it below API 33 +@Suppress("DEPRECATION") @ExtendWith(MockKExtension::class) class RateDialogFragmentTest { diff --git a/library/src/test/java/com/suddenh4x/ratingdialog/utils/FeedbackUtilsTest.kt b/library/src/test/java/com/suddenh4x/ratingdialog/utils/FeedbackUtilsTest.kt index 110f1a9..1b3b16d 100644 --- a/library/src/test/java/com/suddenh4x/ratingdialog/utils/FeedbackUtilsTest.kt +++ b/library/src/test/java/com/suddenh4x/ratingdialog/utils/FeedbackUtilsTest.kt @@ -8,6 +8,7 @@ import android.widget.Toast import com.suddenh4x.ratingdialog.logging.RatingLogger import com.suddenh4x.ratingdialog.preferences.MailSettings import io.mockk.Runs +import io.mockk.andThenJust import io.mockk.every import io.mockk.impl.annotations.MockK import io.mockk.junit5.MockKExtension @@ -60,7 +61,7 @@ class FeedbackUtilsTest { @Test fun `opens correct web url if Play Store hasn't been found`() { - every { context.startActivity(any()) } throws ActivityNotFoundException() andThen {} + every { context.startActivity(any()) } throws ActivityNotFoundException() andThenJust Runs FeedbackUtils.openPlayStoreListing(context) verify(exactly = 2) { Uri.parse(any()) } diff --git a/scripts/publish-module.gradle b/scripts/publish-module.gradle index 22155cd..f293bfe 100644 --- a/scripts/publish-module.gradle +++ b/scripts/publish-module.gradle @@ -10,10 +10,6 @@ tasks.register('androidSourcesJar', Jar) { } } -artifacts { - archives androidSourcesJar -} - group = PUBLISH_GROUP_ID version = PUBLISH_VERSION @@ -23,9 +19,9 @@ afterEvaluate { release(MavenPublication) { // The coordinates of the library, being set from variables that // we'll set up later - groupId PUBLISH_GROUP_ID - artifactId PUBLISH_ARTIFACT_ID - version PUBLISH_VERSION + groupId = PUBLISH_GROUP_ID + artifactId = PUBLISH_ARTIFACT_ID + version = PUBLISH_VERSION // Two artifacts, the `aar` (or `jar`) and the sources if (project.plugins.findPlugin("com.android.library")) { From 94f75b917f4cf9deb2e43773f38ad40a7f797c5a Mon Sep 17 00:00:00 2001 From: SuddenH4X Date: Sat, 13 Jun 2026 13:50:16 +0200 Subject: [PATCH 12/19] chore: update gradle wrapper --- gradle/wrapper/gradle-wrapper.jar | Bin 43504 -> 48462 bytes gradle/wrapper/gradle-wrapper.properties | 2 ++ gradlew | 14 ++++------ gradlew.bat | 32 +++++++---------------- 4 files changed, 17 insertions(+), 31 deletions(-) diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index 2c3521197d7c4586c843d1d3e9090525f1898cde..b1b8ef56b44f16b14dc800fa8103a6d89abb526f 100644 GIT binary patch delta 40237 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 /dev/null && printf '%s -' "$PWD" ) || exit +APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s\n' "$PWD" ) || exit # Use the maximum available, or set MAX_FD != -1 to use that value. MAX_FD=maximum @@ -115,7 +114,6 @@ case "$( uname )" in #( NONSTOP* ) nonstop=true ;; esac -CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar # Determine the Java command to use to start the JVM. @@ -173,7 +171,6 @@ fi # For Cygwin or MSYS, switch paths to Windows format before running java if "$cygwin" || "$msys" ; then APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) - CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) JAVACMD=$( cygpath --unix "$JAVACMD" ) @@ -206,15 +203,14 @@ fi DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' # Collect all arguments for the java command: -# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, # and any embedded shellness will be escaped. # * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be # treated as '${Hostname}' itself on the command line. set -- \ "-Dorg.gradle.appname=$APP_BASE_NAME" \ - -classpath "$CLASSPATH" \ - org.gradle.wrapper.GradleWrapperMain \ + -jar "$APP_HOME/gradle/wrapper/gradle-wrapper.jar" \ "$@" # Stop when "xargs" is not available. diff --git a/gradlew.bat b/gradlew.bat index 9b42019..aa5f10b 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -23,8 +23,8 @@ @rem @rem ########################################################################## -@rem Set local scope for the variables with windows NT shell -if "%OS%"=="Windows_NT" setlocal +@rem Set local scope for the variables, and ensure extensions are enabled +setlocal EnableExtensions set DIRNAME=%~dp0 if "%DIRNAME%"=="" set DIRNAME=. @@ -51,7 +51,7 @@ echo. 1>&2 echo Please set the JAVA_HOME variable in your environment to match the 1>&2 echo location of your Java installation. 1>&2 -goto fail +"%COMSPEC%" /c exit 1 :findJavaFromJavaHome set JAVA_HOME=%JAVA_HOME:"=% @@ -65,30 +65,18 @@ echo. 1>&2 echo Please set the JAVA_HOME variable in your environment to match the 1>&2 echo location of your Java installation. 1>&2 -goto fail +"%COMSPEC%" /c exit 1 :execute @rem Setup the command line -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar @rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* +@rem endlocal doesn't take effect until after the line is parsed and variables are expanded +@rem which allows us to clear the local environment before executing the java command +endlocal & "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %* & call :exitWithErrorLevel -:end -@rem End local scope for the variables with windows NT shell -if %ERRORLEVEL% equ 0 goto mainEnd - -:fail -rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of -rem the _cmd.exe /c_ return code! -set EXIT_CODE=%ERRORLEVEL% -if %EXIT_CODE% equ 0 set EXIT_CODE=1 -if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% -exit /b %EXIT_CODE% - -:mainEnd -if "%OS%"=="Windows_NT" endlocal - -:omega +:exitWithErrorLevel +@rem Use "%COMSPEC%" /c exit to allow operators to work properly in scripts +"%COMSPEC%" /c exit %ERRORLEVEL% From 1d4227226a9bb46a966aecdba802e6b556e832f9 Mon Sep 17 00:00:00 2001 From: SuddenH4X Date: Sat, 13 Jun 2026 13:54:14 +0200 Subject: [PATCH 13/19] chore: use Compose bom --- exampleapp/build.gradle.kts | 1 + gradle/libs.versions.toml | 11 +++++------ 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/exampleapp/build.gradle.kts b/exampleapp/build.gradle.kts index c9a2549..8443706 100644 --- a/exampleapp/build.gradle.kts +++ b/exampleapp/build.gradle.kts @@ -45,6 +45,7 @@ android { dependencies { implementation(project(":library")) + implementation(platform(libs.androidx.compose.bom)) implementation(libs.androidx.activity.compose) implementation(libs.androidx.compose.material3) implementation(libs.androidx.compose.material.icons.core) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 8759e66..5981e34 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -9,9 +9,7 @@ targetSdk = "35" androidxActivityCompose = "1.13.0" androidxAnnotation = "1.10.0" androidxAppcompat = "1.7.1" -androidxComposeMaterial3 = "1.4.0" -androidxComposeMaterialIcons = "1.7.8" -androidxComposeUiTooling = "1.11.2" +androidxComposeBom = "2026.05.01" androidxConstraintlayout = "2.2.1" androidxCore = "1.16.0" # Don't upgrade to 1.17.0 or higher because of compileSdk 36 requirement googleMaterial = "1.14.0" @@ -29,9 +27,10 @@ testingMockk = "1.14.11" androidx-activity-compose = { module = "androidx.activity:activity-compose", version.ref = "androidxActivityCompose" } androidx-annotation = { module = "androidx.annotation:annotation", version.ref = "androidxAnnotation" } androidx-appcompat = { module = "androidx.appcompat:appcompat", version.ref = "androidxAppcompat" } -androidx-compose-material3 = { module = "androidx.compose.material3:material3", version.ref = "androidxComposeMaterial3" } -androidx-compose-material-icons-core = { module = "androidx.compose.material:material-icons-core", version.ref = "androidxComposeMaterialIcons" } -androidx-compose-ui-tooling = { module = "androidx.compose.ui:ui-tooling", version.ref = "androidxComposeUiTooling" } +androidx-compose-bom = { module = "androidx.compose:compose-bom", version.ref = "androidxComposeBom" } +androidx-compose-material3 = { module = "androidx.compose.material3:material3" } +androidx-compose-material-icons-core = { module = "androidx.compose.material:material-icons-core" } +androidx-compose-ui-tooling = { module = "androidx.compose.ui:ui-tooling" } androidx-constraintlayout = { module = "androidx.constraintlayout:constraintlayout", version.ref = "androidxConstraintlayout" } androidx-core-ktx = { module = "androidx.core:core-ktx", version.ref = "androidxCore" } google-material = { module = "com.google.android.material:material", version.ref = "googleMaterial" } From 45e20c46fb5af521896ade133009957e16127dfe Mon Sep 17 00:00:00 2001 From: SuddenH4X Date: Sat, 13 Jun 2026 14:18:55 +0200 Subject: [PATCH 14/19] update targetSdk to 36 --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 5981e34..e46ef8d 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -4,7 +4,7 @@ compileSdk = "36" jvmToolchain = "21" kotlin = "2.3.21" minSdk = "23" -targetSdk = "35" +targetSdk = "36" androidxActivityCompose = "1.13.0" androidxAnnotation = "1.10.0" From e929905c11cce3880368ee73bb632c66d21d9d07 Mon Sep 17 00:00:00 2001 From: SuddenH4X Date: Sat, 13 Jun 2026 14:30:25 +0200 Subject: [PATCH 15/19] move to new maven publish plugin --- build.gradle.kts | 4 +- gradle/libs.versions.toml | 4 +- library/build.gradle.kts | 58 ++++++++++++++------------ scripts/publish-module.gradle | 77 ----------------------------------- scripts/publish-root.gradle | 36 ---------------- 5 files changed, 36 insertions(+), 143 deletions(-) delete mode 100644 scripts/publish-module.gradle delete mode 100644 scripts/publish-root.gradle diff --git a/build.gradle.kts b/build.gradle.kts index 77301ee..0a4b9dd 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,10 +1,8 @@ -apply(from = "${rootDir}/scripts/publish-root.gradle") - plugins { alias(libs.plugins.android.application) apply false - alias(libs.plugins.gradle.nexus.publish) alias(libs.plugins.jlleitschuh.gradle.ktlint) apply false alias(libs.plugins.kotlin.compose.compiler) apply false + alias(libs.plugins.vanniktech.maven.publish) apply false } buildscript { diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index e46ef8d..a20cbdc 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -14,8 +14,8 @@ androidxConstraintlayout = "2.2.1" androidxCore = "1.16.0" # Don't upgrade to 1.17.0 or higher because of compileSdk 36 requirement googleMaterial = "1.14.0" googlePlayReview = "2.0.2" -gradleNexusPublish = "2.0.0" ktlint = "14.2.0" +vanniktechMavenPublish = "0.36.0" # Dependencies for testing mannodermausJunit5 = "2.0.1" @@ -47,7 +47,7 @@ testing-mockk = { module = "io.mockk:mockk", version.ref = "testingMockk" } [plugins] android-application = { id = "com.android.application", version.ref = "androidGradlePlugin" } android-library = { id = "com.android.library", version.ref = "androidGradlePlugin" } -gradle-nexus-publish = { id = "io.github.gradle-nexus.publish-plugin", version.ref = "gradleNexusPublish" } jlleitschuh-gradle-ktlint = { id = "org.jlleitschuh.gradle.ktlint", version.ref = "ktlint" } kotlin-compose-compiler = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlin" } mannodermaus-android-junit5 = { id = "de.mannodermaus.android-junit5", version.ref = "mannodermausJunit5" } +vanniktech-maven-publish = { id = "com.vanniktech.maven.publish", version.ref = "vanniktechMavenPublish" } diff --git a/library/build.gradle.kts b/library/build.gradle.kts index 2721a1b..7ce052a 100644 --- a/library/build.gradle.kts +++ b/library/build.gradle.kts @@ -4,6 +4,7 @@ plugins { id(libs.plugins.android.library.get().pluginId) alias(libs.plugins.mannodermaus.android.junit5) alias(libs.plugins.jlleitschuh.gradle.ktlint) + alias(libs.plugins.vanniktech.maven.publish) } val version = "2.8.0" @@ -38,11 +39,6 @@ android { sourceCompatibility = JavaVersion.VERSION_17 targetCompatibility = JavaVersion.VERSION_17 } - - // Workaround for https://github.com/gradle-nexus/publish-plugin/issues/208 - publishing { - singleVariant("release") - } } dependencies { @@ -68,24 +64,36 @@ afterEvaluate { } } -ext { - set("PUBLISH_GROUP_ID", "com.suddenh4x.ratingdialog") - set("PUBLISH_VERSION", version) - set("PUBLISH_ARTIFACT_ID", "awesome-app-rating") - set( - "PUBLISH_DESCRIPTION", - "A highly customizable Android library providing a dialog, which asks the user to rate the app or give feedback. You can also use the" + - "library to show the Google in-app review easily under certain conditions.", - ) - set("PUBLISH_URL", "https://github.com/SuddenH4X/awesome-app-rating") - set("PUBLISH_LICENSE_NAME", "Apache License") - set("PUBLISH_LICENSE_URL", "https://github.com/SuddenH4X/awesome-app-rating/blob/master/LICENSE") - set("PUBLISH_DEVELOPER_ID", "SuddenH4X") - set("PUBLISH_DEVELOPER_NAME", "Sascha Kühne") - set("PUBLISH_DEVELOPER_EMAIL", "SuddenH4X@users.noreply.github.com") - set("PUBLISH_SCM_CONNECTION", "scm:git:github.com/SuddenH4X/awesome-app-rating.git") - set("PUBLISH_SCM_DEVELOPER_CONNECTION", "scm:git:ssh://github.com:SuddenH4X/awesome-app-rating.git") - set("PUBLISH_SCM_URL", "https://github.com/SuddenH4X/awesome-app-rating/tree/master") -} +mavenPublishing { + publishToMavenCentral(automaticRelease = true) + signAllPublications() -apply(from = "${rootProject.projectDir}/scripts/publish-module.gradle") + coordinates("com.suddenh4x.ratingdialog", "awesome-app-rating", version) + + pom { + name.set("awesome-app-rating") + description.set( + "A highly customizable Android library providing a dialog, which asks the user to rate the app or give " + + "feedback. You can also use the library to show the Google in-app review easily under certain conditions.", + ) + url.set("https://github.com/SuddenH4X/awesome-app-rating") + licenses { + license { + name.set("Apache License") + url.set("https://github.com/SuddenH4X/awesome-app-rating/blob/master/LICENSE") + } + } + developers { + developer { + id.set("SuddenH4X") + name.set("Sascha Kühne") + email.set("SuddenH4X@users.noreply.github.com") + } + } + scm { + url.set("https://github.com/SuddenH4X/awesome-app-rating/tree/master") + connection.set("scm:git:github.com/SuddenH4X/awesome-app-rating.git") + developerConnection.set("scm:git:ssh://github.com:SuddenH4X/awesome-app-rating.git") + } + } +} diff --git a/scripts/publish-module.gradle b/scripts/publish-module.gradle deleted file mode 100644 index f293bfe..0000000 --- a/scripts/publish-module.gradle +++ /dev/null @@ -1,77 +0,0 @@ -apply plugin: 'maven-publish' -apply plugin: 'signing' - -tasks.register('androidSourcesJar', Jar) { - archiveClassifier.set('sources') - if (project.plugins.findPlugin("com.android.library")) { - from android.sourceSets.main.java.srcDirs - } else { - from sourceSets.main.java.srcDirs - } -} - -group = PUBLISH_GROUP_ID -version = PUBLISH_VERSION - -afterEvaluate { - publishing { - publications { - release(MavenPublication) { - // The coordinates of the library, being set from variables that - // we'll set up later - groupId = PUBLISH_GROUP_ID - artifactId = PUBLISH_ARTIFACT_ID - version = PUBLISH_VERSION - - // Two artifacts, the `aar` (or `jar`) and the sources - if (project.plugins.findPlugin("com.android.library")) { - from components.release - } else { - artifact("${layout.buildDirectory}/libs/${project.getName()}-${version}.jar") - } - - artifact androidSourcesJar - - // Mostly self-explanatory metadata - pom { - name = PUBLISH_ARTIFACT_ID - description = PUBLISH_DESCRIPTION - url = PUBLISH_URL - licenses { - license { - name = PUBLISH_LICENSE_NAME - url = PUBLISH_LICENSE_URL - } - } - developers { - developer { - id = PUBLISH_DEVELOPER_ID - name = PUBLISH_DEVELOPER_NAME - email = PUBLISH_DEVELOPER_EMAIL - } - } - - // Version control info - if you're using GitHub, follow the - // format as seen here - scm { - connection = PUBLISH_SCM_CONNECTION - developerConnection = PUBLISH_SCM_DEVELOPER_CONNECTION - url = PUBLISH_SCM_URL - } - } - } - } - } -} - -if (rootProject.ext.hasProperty("signing.keyId")) { - ext["signing.keyId"] = rootProject.ext["signing.keyId"] ?: "" - ext["signing.password"] = rootProject.ext["signing.password"] - ext["signing.secretKeyRingFile"] = rootProject.ext["signing.secretKeyRingFile"] -} else { - println "signing.keyId not found in project." -} - -signing { - sign publishing.publications -} diff --git a/scripts/publish-root.gradle b/scripts/publish-root.gradle deleted file mode 100644 index 32508b5..0000000 --- a/scripts/publish-root.gradle +++ /dev/null @@ -1,36 +0,0 @@ -// Create variables with empty default values -ext["signing.keyId"] = '' -ext["signing.password"] = '' -ext["signing.secretKeyRingFile"] = '' -ext["ossrhToken"] = '' -ext["ossrhTokenPassword"] = '' -ext["sonatypeStagingProfileId"] = '' - -File secretPropsFile = project.rootProject.file('local.properties') -if (secretPropsFile.exists()) { - // Read local.properties file first if it exists - Properties p = new Properties() - new FileInputStream(secretPropsFile).withCloseable { is -> p.load(is) } - p.each { name, value -> ext[name] = value } -} else { - // Use system environment variables - ext["ossrhToken"] = System.getenv('OSSRH_USERNAME') - ext["ossrhTokenPassword"] = System.getenv('OSSRH_PASSWORD') - ext["sonatypeStagingProfileId"] = System.getenv('SONATYPE_STAGING_PROFILE_ID') - ext["signing.keyId"] = System.getenv('SIGNING_KEY_ID') - ext["signing.password"] = System.getenv('SIGNING_PASSWORD') - ext["signing.secretKeyRingFile"] = System.getenv('SIGNING_SECRET_KEY_RING_FILE') -} - -// Set up Sonatype repository -nexusPublishing { - repositories { - sonatype { - stagingProfileId = sonatypeStagingProfileId - username = ossrhToken - password = ossrhTokenPassword - nexusUrl.set(uri("https://s01.oss.sonatype.org/service/local/")) - snapshotRepositoryUrl.set(uri("https://s01.oss.sonatype.org/content/repositories/snapshots/")) - } - } -} From 3b3fa9173348a33d60cbfb21ce1e689b5659f694 Mon Sep 17 00:00:00 2001 From: SuddenH4X Date: Sat, 13 Jun 2026 15:03:02 +0200 Subject: [PATCH 16/19] move to GitHub Actions --- .github/workflows/ci.yml | 39 +++++++++++++++++++++++++++++++++++ .github/workflows/release.yml | 35 +++++++++++++++++++++++++++++++ README.md | 2 +- 3 files changed, 75 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/ci.yml create mode 100644 .github/workflows/release.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..8e90224 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,39 @@ +name: CI + +on: + push: + branches: [develop, main] + pull_request: + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + build: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Set up JDK 21 + uses: actions/setup-java@v4 + with: + distribution: temurin + java-version: 21 + + - name: Set up Gradle + uses: gradle/actions/setup-gradle@v4 + + - name: Assemble, test and lint + run: ./gradlew assembleDebug test ktlintCheck lint --stacktrace + + - name: Upload test reports + if: always() + uses: actions/upload-artifact@v4 + with: + name: test-reports + path: | + **/build/reports/tests/ + **/build/reports/lint-results-*.html + if-no-files-found: ignore diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..fcd717e --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,35 @@ +name: Release + +on: + release: + types: [published] + +jobs: + publish: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Set up JDK 21 + uses: actions/setup-java@v4 + with: + distribution: temurin + java-version: 21 + + - name: Set up Gradle + uses: gradle/actions/setup-gradle@v4 + + - name: Publish to Maven Central + env: + ORG_GRADLE_PROJECT_mavenCentralUsername: ${{ secrets.MAVEN_CENTRAL_USERNAME }} + ORG_GRADLE_PROJECT_mavenCentralPassword: ${{ secrets.MAVEN_CENTRAL_PASSWORD }} + SIGNING_SECRET_KEY_RING_FILE_BASE64: ${{ secrets.SIGNING_SECRET_KEY_RING_FILE_BASE64 }} + SIGNING_KEY_ID: ${{ secrets.SIGNING_KEY_ID }} + SIGNING_PASSWORD: ${{ secrets.SIGNING_PASSWORD }} + run: | + echo "$SIGNING_SECRET_KEY_RING_FILE_BASE64" | base64 --decode > "$RUNNER_TEMP/secring.gpg" + ./gradlew publishToMavenCentral --no-configuration-cache --stacktrace \ + "-Psigning.keyId=$SIGNING_KEY_ID" \ + "-Psigning.password=$SIGNING_PASSWORD" \ + "-Psigning.secretKeyRingFile=$RUNNER_TEMP/secring.gpg" diff --git a/README.md b/README.md index d4e04b7..293e0d2 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # Awesome App Rating -[![Build Status](https://app.bitrise.io/app/3156ba39c3e19393/status.svg?token=xXPr-IjWuLLKVliX5QPZKg&branch=develop)](https://app.bitrise.io/app/3156ba39c3e19393) +[![CI](https://github.com/SuddenH4X/awesome-app-rating/actions/workflows/ci.yml/badge.svg?branch=develop)](https://github.com/SuddenH4X/awesome-app-rating/actions/workflows/ci.yml) A highly customizable Android library providing a dialog, which asks the user to rate the app. If the user rates below the defined threshold, the dialog will show a feedback form or ask the user to mail his feedback. Otherwise it will ask the user to rate the app in the Google Play Store. From 48a4949375786f35fb97207eb688402da0ed7b1e Mon Sep 17 00:00:00 2001 From: SuddenH4X Date: Sat, 13 Jun 2026 15:33:37 +0200 Subject: [PATCH 17/19] bump version to 2.9.0 --- README.md | 2 +- library/build.gradle.kts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 293e0d2..65868a6 100644 --- a/README.md +++ b/README.md @@ -42,7 +42,7 @@ The library supports API level 23 and higher. You can simply include it in your ```groovy dependencies { ... - implementation 'com.suddenh4x.ratingdialog:awesome-app-rating:2.8.0' + implementation 'com.suddenh4x.ratingdialog:awesome-app-rating:2.9.0' } ``` diff --git a/library/build.gradle.kts b/library/build.gradle.kts index 7ce052a..f68c0ac 100644 --- a/library/build.gradle.kts +++ b/library/build.gradle.kts @@ -7,7 +7,7 @@ plugins { alias(libs.plugins.vanniktech.maven.publish) } -val version = "2.8.0" +val version = "2.9.0" kotlin { jvmToolchain(libs.versions.jvmToolchain.get().toInt()) From 7e3a6fa48fe847d3ebab15845219583500269c03 Mon Sep 17 00:00:00 2001 From: SuddenH4X Date: Sat, 13 Jun 2026 15:41:13 +0200 Subject: [PATCH 18/19] fix main branch link --- library/build.gradle.kts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/library/build.gradle.kts b/library/build.gradle.kts index f68c0ac..be06225 100644 --- a/library/build.gradle.kts +++ b/library/build.gradle.kts @@ -80,7 +80,7 @@ mavenPublishing { licenses { license { name.set("Apache License") - url.set("https://github.com/SuddenH4X/awesome-app-rating/blob/master/LICENSE") + url.set("https://github.com/SuddenH4X/awesome-app-rating/blob/main/LICENSE") } } developers { @@ -91,7 +91,7 @@ mavenPublishing { } } scm { - url.set("https://github.com/SuddenH4X/awesome-app-rating/tree/master") + url.set("https://github.com/SuddenH4X/awesome-app-rating/tree/main") connection.set("scm:git:github.com/SuddenH4X/awesome-app-rating.git") developerConnection.set("scm:git:ssh://github.com:SuddenH4X/awesome-app-rating.git") } From fd3bba8d41b99838dc5a838d34401d8176559b9e Mon Sep 17 00:00:00 2001 From: SuddenH4X Date: Sat, 13 Jun 2026 15:51:56 +0200 Subject: [PATCH 19/19] add missing annotation --- .../java/com/suddenh4x/ratingdialog/buttons/RateButtons.kt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/library/src/main/java/com/suddenh4x/ratingdialog/buttons/RateButtons.kt b/library/src/main/java/com/suddenh4x/ratingdialog/buttons/RateButtons.kt index 6454d19..f6d43a2 100644 --- a/library/src/main/java/com/suddenh4x/ratingdialog/buttons/RateButtons.kt +++ b/library/src/main/java/com/suddenh4x/ratingdialog/buttons/RateButtons.kt @@ -4,16 +4,16 @@ import androidx.annotation.StringRes import java.io.Serializable internal class RateButton( - @param:StringRes var textId: Int, + @param:StringRes @get:StringRes var textId: Int, @Transient var rateDialogClickListener: RateDialogClickListener?, ) : Serializable internal class ConfirmButton( - @param:StringRes var textId: Int, + @param:StringRes @get:StringRes var textId: Int, @Transient var confirmButtonClickListener: ConfirmButtonClickListener?, ) : Serializable internal class CustomFeedbackButton( - @param:StringRes var textId: Int, + @param:StringRes @get:StringRes var textId: Int, @Transient var customFeedbackButtonClickListener: CustomFeedbackButtonClickListener?, ) : Serializable