From f48e05bb438a152d7efb20a507faaaf88db33cb5 Mon Sep 17 00:00:00 2001 From: webianks Date: Sun, 26 Jul 2026 21:12:52 +0530 Subject: [PATCH 1/3] Migrate to AGP 9.3.1 --- app/build.gradle | 17 ++----- .../salroid/filmy/data/local/db/Converters.kt | 48 +++++++++---------- build.gradle | 5 +- gradle.properties | 5 +- gradle/wrapper/gradle-wrapper.properties | 4 +- 5 files changed, 36 insertions(+), 43 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 9c7b1619..f7fce19c 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,12 +1,11 @@ plugins { - id 'kotlin-kapt' + id 'com.google.devtools.ksp' id 'com.google.dagger.hilt.android' } apply plugin: 'com.android.application' apply plugin: 'com.google.gms.google-services' apply plugin: 'com.google.firebase.crashlytics' -apply plugin: 'kotlin-android' apply plugin: 'kotlin-parcelize' repositories { @@ -49,10 +48,6 @@ android { targetCompatibility JavaVersion.VERSION_21 } - kotlinOptions { - jvmTarget = '21' - } - buildFeatures { viewBinding = true buildConfig = true @@ -60,10 +55,6 @@ android { namespace 'tech.salroid.filmy' } -kapt { - correctErrorTypes true -} - static def getTMDBApiKey() { Properties props = new Properties() props.load(new FileInputStream(new File('secrets.properties'))) @@ -109,11 +100,11 @@ dependencies { def roomVersion = "2.8.1" implementation "androidx.room:room-runtime:$roomVersion" - kapt "androidx.room:room-compiler:$roomVersion" + ksp "androidx.room:room-compiler:$roomVersion" // Dagger Hilt - implementation "com.google.dagger:hilt-android:2.57.2" - kapt "com.google.dagger:hilt-compiler:2.57.2" + implementation "com.google.dagger:hilt-android:2.60.1" + ksp "com.google.dagger:hilt-compiler:2.60.1" // Navigation def nav_version = "2.9.5" diff --git a/app/src/main/java/tech/salroid/filmy/data/local/db/Converters.kt b/app/src/main/java/tech/salroid/filmy/data/local/db/Converters.kt index 80d51a75..e6d52574 100644 --- a/app/src/main/java/tech/salroid/filmy/data/local/db/Converters.kt +++ b/app/src/main/java/tech/salroid/filmy/data/local/db/Converters.kt @@ -35,51 +35,51 @@ class Converters { } @TypeConverter - fun fromStringOfArrayListOfGenres(value: String?): ArrayList? { - val listType: Type = object : TypeToken?>() {}.type - return Gson().fromJson(value, listType) + fun fromStringOfArrayListOfGenres(value: String?): ArrayList { + if (value.isNullOrEmpty()) return arrayListOf() + val listType: Type = object : TypeToken>() {}.type + return Gson().fromJson(value, listType) ?: arrayListOf() } @TypeConverter - fun fromArrayListOfGenres(genres: ArrayList?): String? { - val gson = Gson() - return gson.toJson(genres) + fun fromArrayListOfGenres(genres: ArrayList): String { + return Gson().toJson(genres) } @TypeConverter - fun fromStringOfArrayListOfProductionCompanies(value: String?): ArrayList? { - val listType: Type = object : TypeToken?>() {}.type - return Gson().fromJson(value, listType) + fun fromStringOfArrayListOfProductionCompanies(value: String?): ArrayList { + if (value.isNullOrEmpty()) return arrayListOf() + val listType: Type = object : TypeToken>() {}.type + return Gson().fromJson(value, listType) ?: arrayListOf() } @TypeConverter - fun fromArrayListOfProductionCompanies(genres: ArrayList?): String? { - val gson = Gson() - return gson.toJson(genres) + fun fromArrayListOfProductionCompanies(genres: ArrayList): String { + return Gson().toJson(genres) } @TypeConverter - fun fromStringOfArrayListOfProductionCountries(value: String?): ArrayList? { - val listType: Type = object : TypeToken?>() {}.type - return Gson().fromJson(value, listType) + fun fromStringOfArrayListOfProductionCountries(value: String?): ArrayList { + if (value.isNullOrEmpty()) return arrayListOf() + val listType: Type = object : TypeToken>() {}.type + return Gson().fromJson(value, listType) ?: arrayListOf() } @TypeConverter - fun fromArrayListOfProductionCountries(genres: ArrayList?): String? { - val gson = Gson() - return gson.toJson(genres) + fun fromArrayListOfProductionCountries(genres: ArrayList): String { + return Gson().toJson(genres) } @TypeConverter - fun fromStringOfArrayListOfSpokenLanguages(value: String?): ArrayList? { - val listType: Type = object : TypeToken?>() {}.type - return Gson().fromJson(value, listType) + fun fromStringOfArrayListOfSpokenLanguages(value: String?): ArrayList { + if (value.isNullOrEmpty()) return arrayListOf() + val listType: Type = object : TypeToken>() {}.type + return Gson().fromJson(value, listType) ?: arrayListOf() } @TypeConverter - fun fromArrayListOfSpokenLanguages(genres: ArrayList?): String? { - val gson = Gson() - return gson.toJson(genres) + fun fromArrayListOfSpokenLanguages(genres: ArrayList): String { + return Gson().toJson(genres) } @TypeConverter diff --git a/build.gradle b/build.gradle index abb40bcd..de8b0626 100644 --- a/build.gradle +++ b/build.gradle @@ -7,7 +7,7 @@ buildscript { maven { url "https://www.jitpack.io" } } dependencies { - classpath 'com.android.tools.build:gradle:8.13.0' + classpath 'com.android.tools.build:gradle:9.3.1' classpath 'com.google.gms:google-services:4.4.3' classpath 'com.google.firebase:firebase-crashlytics-gradle:3.0.6' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" @@ -15,7 +15,8 @@ buildscript { } plugins { - id 'com.google.dagger.hilt.android' version '2.57.2' apply false + id 'com.google.dagger.hilt.android' version '2.60.1' apply false + id 'com.google.devtools.ksp' version '2.3.10' apply false } allprojects { diff --git a/gradle.properties b/gradle.properties index 512bd1fb..d43a42f6 100644 --- a/gradle.properties +++ b/gradle.properties @@ -23,5 +23,6 @@ android.useAndroidX=true android.enableJetifier=true kotlin.code.style=official android.nonTransitiveRClass=false -android.nonFinalResIds=false -org.gradle.jvmargs=-Xmx1024m \ No newline at end of file +org.gradle.jvmargs=-Xmx1024m +# Enabled parallel sync for Gradle 9.4+ +org.gradle.tooling.parallel=true diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index c8ebcf5c..beb03955 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Sun Sep 28 17:15:23 IST 2025 +#Sun Jul 26 20:31:27 IST 2026 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-9.1.0-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-9.6.1-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists From 342a7fb138fa76ce37c627a4570004c2fe08c25b Mon Sep 17 00:00:00 2001 From: webianks Date: Sun, 26 Jul 2026 21:35:50 +0530 Subject: [PATCH 2/3] Migrate to Android 16 --- app/build.gradle | 2 +- .../ui/cast_crew/CastCrewDetailsActivity.kt | 23 +++++++++++------ .../salroid/filmy/ui/home/MainActivity.kt | 25 +++++++++++-------- 3 files changed, 31 insertions(+), 19 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index f7fce19c..b42cea3f 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -19,7 +19,7 @@ android { defaultConfig { applicationId "tech.salroid.filmy" minSdkVersion 24 - targetSdkVersion 35 + targetSdkVersion 36 versionCode 23 versionName "3.0.0" multiDexEnabled true diff --git a/app/src/main/java/tech/salroid/filmy/ui/cast_crew/CastCrewDetailsActivity.kt b/app/src/main/java/tech/salroid/filmy/ui/cast_crew/CastCrewDetailsActivity.kt index 34edeac0..ba36ec6d 100644 --- a/app/src/main/java/tech/salroid/filmy/ui/cast_crew/CastCrewDetailsActivity.kt +++ b/app/src/main/java/tech/salroid/filmy/ui/cast_crew/CastCrewDetailsActivity.kt @@ -7,6 +7,7 @@ import android.os.Bundle import android.text.Html import android.view.MenuItem import android.view.View +import androidx.activity.addCallback import androidx.activity.viewModels import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.lifecycleScope @@ -83,6 +84,20 @@ class CastCrewDetailsActivity : AppCompatActivity() { viewModel.getCastCrewDetails(it) viewModel.getCastCrewMovies(it) } + + addBackPressListener() + } + + private fun addBackPressListener() { + onBackPressedDispatcher.addCallback(this) { + val fragment = supportFragmentManager.findFragmentByTag(DESCRIPTION) as FullReadFragment? + if (fragment != null && fragment.isVisible) { + fragment.dismiss() + } else { + isEnabled = false + onBackPressedDispatcher.onBackPressed() + } + } } private fun observeUiState() { @@ -177,12 +192,4 @@ class CastCrewDetailsActivity : AppCompatActivity() { return super.onOptionsItemSelected(item) } - override fun onBackPressed() { - val fragment = supportFragmentManager.findFragmentByTag(DESCRIPTION) as FullReadFragment? - if (fragment != null && fragment.isVisible) { - fragment.dismiss() - } else { - super.onBackPressed() - } - } } \ No newline at end of file diff --git a/app/src/main/java/tech/salroid/filmy/ui/home/MainActivity.kt b/app/src/main/java/tech/salroid/filmy/ui/home/MainActivity.kt index 7e829ef9..d194ee97 100644 --- a/app/src/main/java/tech/salroid/filmy/ui/home/MainActivity.kt +++ b/app/src/main/java/tech/salroid/filmy/ui/home/MainActivity.kt @@ -9,6 +9,7 @@ import android.os.Build import android.os.Bundle import android.view.animation.Animation import android.view.animation.Transformation +import androidx.activity.addCallback import androidx.activity.enableEdgeToEdge import androidx.activity.viewModels import androidx.appcompat.app.AppCompatActivity @@ -64,6 +65,20 @@ class MainActivity : AppCompatActivity() { introLogic() setupNavigation() observerUiStates() + addBackPressListener() + } + + private fun addBackPressListener() { + onBackPressedDispatcher.addCallback(this) { + lifecycleScope.launch { + if (viewModelSearch.isSearchOpen.value) { + viewModelSearch.closeSearch() + } else { + isEnabled = false + onBackPressedDispatcher.onBackPressed() + } + } + } } private fun isDarkMode(): Boolean { @@ -155,16 +170,6 @@ class MainActivity : AppCompatActivity() { //trendingFragment?.retryLoading() } - override fun onBackPressed() { - lifecycleScope.launch { - if (viewModelSearch.isSearchOpen.value) { - viewModelSearch.closeSearch() - } else { - super.onBackPressed() - } - } - } - override fun onResume() { super.onResume() if (darkMode != isDarkMode()) recreate() From f6c1350cd60d200595570d09c5cf4508b66badb6 Mon Sep 17 00:00:00 2001 From: webianks Date: Sun, 26 Jul 2026 21:36:33 +0530 Subject: [PATCH 3/3] Bump version to 3.1.0 --- app/build.gradle | 4 ++-- app/src/main/res/xml/preference.xml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index b42cea3f..272480a0 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -20,8 +20,8 @@ android { applicationId "tech.salroid.filmy" minSdkVersion 24 targetSdkVersion 36 - versionCode 23 - versionName "3.0.0" + versionCode 24 + versionName "3.1.0" multiDexEnabled true resourceConfigurations += ['en', 'de', 'es-rES', 'hi-rIN', 'nl-rNL'] } diff --git a/app/src/main/res/xml/preference.xml b/app/src/main/res/xml/preference.xml index 1144d673..a38cb77a 100644 --- a/app/src/main/res/xml/preference.xml +++ b/app/src/main/res/xml/preference.xml @@ -32,7 +32,7 @@ android:icon="@drawable/ic_document" android:key="Version" android:selectable="true" - android:summary="3.0.0" + android:summary="3.1.0" android:title="@string/version" />