Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 7 additions & 16 deletions app/build.gradle
Original file line number Diff line number Diff line change
@@ -1,12 +1,11 @@
plugins {
id 'kotlin-kapt'
id 'com.google.devtools.ksp'
id 'com.google.dagger.hilt.android'
}
Comment thread
webianks marked this conversation as resolved.

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 {
Expand All @@ -20,9 +19,9 @@ android {
defaultConfig {
applicationId "tech.salroid.filmy"
minSdkVersion 24
targetSdkVersion 35
versionCode 23
versionName "3.0.0"
targetSdkVersion 36
versionCode 24
versionName "3.1.0"
multiDexEnabled true
resourceConfigurations += ['en', 'de', 'es-rES', 'hi-rIN', 'nl-rNL']
}
Expand All @@ -49,21 +48,13 @@ android {
targetCompatibility JavaVersion.VERSION_21
}

kotlinOptions {
jvmTarget = '21'
}

buildFeatures {
viewBinding = true
buildConfig = true
}
namespace 'tech.salroid.filmy'
}

kapt {
correctErrorTypes true
}

static def getTMDBApiKey() {
Properties props = new Properties()
props.load(new FileInputStream(new File('secrets.properties')))
Expand Down Expand Up @@ -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"
Expand Down
48 changes: 24 additions & 24 deletions app/src/main/java/tech/salroid/filmy/data/local/db/Converters.kt
Original file line number Diff line number Diff line change
Expand Up @@ -35,51 +35,51 @@ class Converters {
}

@TypeConverter
fun fromStringOfArrayListOfGenres(value: String?): ArrayList<Genres?>? {
val listType: Type = object : TypeToken<ArrayList<Genres?>?>() {}.type
return Gson().fromJson(value, listType)
fun fromStringOfArrayListOfGenres(value: String?): ArrayList<Genres> {
if (value.isNullOrEmpty()) return arrayListOf()
val listType: Type = object : TypeToken<ArrayList<Genres>>() {}.type
return Gson().fromJson(value, listType) ?: arrayListOf()
}

@TypeConverter
fun fromArrayListOfGenres(genres: ArrayList<Genres?>?): String? {
val gson = Gson()
return gson.toJson(genres)
fun fromArrayListOfGenres(genres: ArrayList<Genres>): String {
return Gson().toJson(genres)
}

@TypeConverter
fun fromStringOfArrayListOfProductionCompanies(value: String?): ArrayList<ProductionCompanies?>? {
val listType: Type = object : TypeToken<ArrayList<ProductionCompanies?>?>() {}.type
return Gson().fromJson(value, listType)
fun fromStringOfArrayListOfProductionCompanies(value: String?): ArrayList<ProductionCompanies> {
if (value.isNullOrEmpty()) return arrayListOf()
val listType: Type = object : TypeToken<ArrayList<ProductionCompanies>>() {}.type
return Gson().fromJson(value, listType) ?: arrayListOf()
}

@TypeConverter
fun fromArrayListOfProductionCompanies(genres: ArrayList<ProductionCompanies?>?): String? {
val gson = Gson()
return gson.toJson(genres)
fun fromArrayListOfProductionCompanies(genres: ArrayList<ProductionCompanies>): String {
return Gson().toJson(genres)
Comment thread
webianks marked this conversation as resolved.
}

@TypeConverter
fun fromStringOfArrayListOfProductionCountries(value: String?): ArrayList<ProductionCountries?>? {
val listType: Type = object : TypeToken<ArrayList<ProductionCountries?>?>() {}.type
return Gson().fromJson(value, listType)
fun fromStringOfArrayListOfProductionCountries(value: String?): ArrayList<ProductionCountries> {
if (value.isNullOrEmpty()) return arrayListOf()
val listType: Type = object : TypeToken<ArrayList<ProductionCountries>>() {}.type
return Gson().fromJson(value, listType) ?: arrayListOf()
}

@TypeConverter
fun fromArrayListOfProductionCountries(genres: ArrayList<ProductionCountries?>?): String? {
val gson = Gson()
return gson.toJson(genres)
fun fromArrayListOfProductionCountries(genres: ArrayList<ProductionCountries>): String {
return Gson().toJson(genres)
}

@TypeConverter
fun fromStringOfArrayListOfSpokenLanguages(value: String?): ArrayList<SpokenLanguages?>? {
val listType: Type = object : TypeToken<ArrayList<SpokenLanguages?>?>() {}.type
return Gson().fromJson(value, listType)
fun fromStringOfArrayListOfSpokenLanguages(value: String?): ArrayList<SpokenLanguages> {
if (value.isNullOrEmpty()) return arrayListOf()
val listType: Type = object : TypeToken<ArrayList<SpokenLanguages>>() {}.type
return Gson().fromJson(value, listType) ?: arrayListOf()
}

@TypeConverter
fun fromArrayListOfSpokenLanguages(genres: ArrayList<SpokenLanguages?>?): String? {
val gson = Gson()
return gson.toJson(genres)
fun fromArrayListOfSpokenLanguages(genres: ArrayList<SpokenLanguages>): String {
return Gson().toJson(genres)
}

@TypeConverter
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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) {
Comment thread
webianks marked this conversation as resolved.
fragment.dismiss()
} else {
isEnabled = false
onBackPressedDispatcher.onBackPressed()
}
}
}

private fun observeUiState() {
Expand Down Expand Up @@ -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()
}
}
}
25 changes: 15 additions & 10 deletions app/src/main/java/tech/salroid/filmy/ui/home/MainActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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 {
Expand Down Expand Up @@ -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()
Expand Down
2 changes: 1 addition & 1 deletion app/src/main/res/xml/preference.xml
Original file line number Diff line number Diff line change
Expand Up @@ -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" />

<Preference
Expand Down
5 changes: 3 additions & 2 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -7,15 +7,16 @@ 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"
}
}

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 {
Expand Down
5 changes: 3 additions & 2 deletions gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -23,5 +23,6 @@ android.useAndroidX=true
android.enableJetifier=true
kotlin.code.style=official
android.nonTransitiveRClass=false
android.nonFinalResIds=false
org.gradle.jvmargs=-Xmx1024m
org.gradle.jvmargs=-Xmx1024m
# Enabled parallel sync for Gradle 9.4+
org.gradle.tooling.parallel=true
4 changes: 2 additions & 2 deletions gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -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