From 7a6f5f4570be546bb58bd2dc977bc5b94c212195 Mon Sep 17 00:00:00 2001 From: Raj Date: Sat, 21 Dec 2024 20:35:21 +0530 Subject: [PATCH 1/4] Introduce core package to contain network and database resources --- .../core/database/AppDatabase.kt | 19 +++++++++++++++++++ .../database/dao/FavoriteActorsDao.kt | 4 ++-- .../database/dao/FavoriteMoviesDao.kt | 4 ++-- .../database/entity/FavoriteActorsEntity.kt | 2 +- .../database/entity/FavoriteMoviesEntity.kt | 2 +- .../{utils => core/network}/Constants.kt | 2 +- .../network}/HttpRequestHandler.kt | 3 +-- .../{data => core/network}/PagedResponse.kt | 2 +- .../{utils => core/network}/TmdbApiKey.kt | 8 ++------ .../data/datasource/database/AppDatabase.kt | 19 ------------------- .../datasource/database/DatabaseDataSource.kt | 1 + .../datasource/network/NetworkDataSource.kt | 4 ++-- .../data/datasource/network/RequestUrls.kt | 2 +- .../composeactors/data/model/Actor.kt | 4 ++-- .../composeactors/data/model/ActorDetail.kt | 4 ++-- .../composeactors/data/model/Cast.kt | 2 +- .../composeactors/data/model/Movie.kt | 10 +++++----- .../composeactors/data/model/MovieDetail.kt | 2 +- .../composeactors/data/model/MovieProvider.kt | 2 +- .../data/repository/movie/MovieRepository.kt | 2 +- .../composeactors/di/DaosModule.kt | 6 +++--- .../composeactors/di/DatabaseModule.kt | 2 +- .../domain/MoviesPagingSource.kt | 2 +- .../composeactors/ui/components/Components.kt | 2 +- .../composeactors/utils/Utilities.kt | 7 ++++++- 25 files changed, 59 insertions(+), 58 deletions(-) create mode 100644 app/src/main/java/com/developersbreach/composeactors/core/database/AppDatabase.kt rename app/src/main/java/com/developersbreach/composeactors/{data/datasource => core}/database/dao/FavoriteActorsDao.kt (80%) rename app/src/main/java/com/developersbreach/composeactors/{data/datasource => core}/database/dao/FavoriteMoviesDao.kt (80%) rename app/src/main/java/com/developersbreach/composeactors/{data/datasource => core}/database/entity/FavoriteActorsEntity.kt (88%) rename app/src/main/java/com/developersbreach/composeactors/{data/datasource => core}/database/entity/FavoriteMoviesEntity.kt (87%) rename app/src/main/java/com/developersbreach/composeactors/{utils => core/network}/Constants.kt (68%) rename app/src/main/java/com/developersbreach/composeactors/{utils => core/network}/HttpRequestHandler.kt (87%) rename app/src/main/java/com/developersbreach/composeactors/{data => core/network}/PagedResponse.kt (82%) rename app/src/main/java/com/developersbreach/composeactors/{utils => core/network}/TmdbApiKey.kt (57%) delete mode 100644 app/src/main/java/com/developersbreach/composeactors/data/datasource/database/AppDatabase.kt diff --git a/app/src/main/java/com/developersbreach/composeactors/core/database/AppDatabase.kt b/app/src/main/java/com/developersbreach/composeactors/core/database/AppDatabase.kt new file mode 100644 index 0000000..f35de36 --- /dev/null +++ b/app/src/main/java/com/developersbreach/composeactors/core/database/AppDatabase.kt @@ -0,0 +1,19 @@ +package com.developersbreach.composeactors.core.database + +import androidx.room.Database +import androidx.room.RoomDatabase +import com.developersbreach.composeactors.core.database.dao.FavoriteActorsDao +import com.developersbreach.composeactors.core.database.dao.FavoriteMoviesDao +import com.developersbreach.composeactors.core.database.entity.FavoriteActorsEntity +import com.developersbreach.composeactors.core.database.entity.FavoriteMoviesEntity + + +@Database( + entities = [FavoriteActorsEntity::class, FavoriteMoviesEntity::class], + version = 4, + exportSchema = false, +) +abstract class AppDatabase : RoomDatabase() { + abstract val favoriteActorsDao: FavoriteActorsDao + abstract val favoriteMoviesDao: FavoriteMoviesDao +} \ No newline at end of file diff --git a/app/src/main/java/com/developersbreach/composeactors/data/datasource/database/dao/FavoriteActorsDao.kt b/app/src/main/java/com/developersbreach/composeactors/core/database/dao/FavoriteActorsDao.kt similarity index 80% rename from app/src/main/java/com/developersbreach/composeactors/data/datasource/database/dao/FavoriteActorsDao.kt rename to app/src/main/java/com/developersbreach/composeactors/core/database/dao/FavoriteActorsDao.kt index dfc5723..77f9a36 100644 --- a/app/src/main/java/com/developersbreach/composeactors/data/datasource/database/dao/FavoriteActorsDao.kt +++ b/app/src/main/java/com/developersbreach/composeactors/core/database/dao/FavoriteActorsDao.kt @@ -1,8 +1,8 @@ -package com.developersbreach.composeactors.data.datasource.database.dao +package com.developersbreach.composeactors.core.database.dao import androidx.lifecycle.LiveData import androidx.room.* -import com.developersbreach.composeactors.data.datasource.database.entity.FavoriteActorsEntity +import com.developersbreach.composeactors.core.database.entity.FavoriteActorsEntity @Dao interface FavoriteActorsDao { diff --git a/app/src/main/java/com/developersbreach/composeactors/data/datasource/database/dao/FavoriteMoviesDao.kt b/app/src/main/java/com/developersbreach/composeactors/core/database/dao/FavoriteMoviesDao.kt similarity index 80% rename from app/src/main/java/com/developersbreach/composeactors/data/datasource/database/dao/FavoriteMoviesDao.kt rename to app/src/main/java/com/developersbreach/composeactors/core/database/dao/FavoriteMoviesDao.kt index f61a88a..88de5eb 100644 --- a/app/src/main/java/com/developersbreach/composeactors/data/datasource/database/dao/FavoriteMoviesDao.kt +++ b/app/src/main/java/com/developersbreach/composeactors/core/database/dao/FavoriteMoviesDao.kt @@ -1,8 +1,8 @@ -package com.developersbreach.composeactors.data.datasource.database.dao +package com.developersbreach.composeactors.core.database.dao import androidx.lifecycle.LiveData import androidx.room.* -import com.developersbreach.composeactors.data.datasource.database.entity.FavoriteMoviesEntity +import com.developersbreach.composeactors.core.database.entity.FavoriteMoviesEntity @Dao interface FavoriteMoviesDao { diff --git a/app/src/main/java/com/developersbreach/composeactors/data/datasource/database/entity/FavoriteActorsEntity.kt b/app/src/main/java/com/developersbreach/composeactors/core/database/entity/FavoriteActorsEntity.kt similarity index 88% rename from app/src/main/java/com/developersbreach/composeactors/data/datasource/database/entity/FavoriteActorsEntity.kt rename to app/src/main/java/com/developersbreach/composeactors/core/database/entity/FavoriteActorsEntity.kt index 00b9fb6..936daf4 100644 --- a/app/src/main/java/com/developersbreach/composeactors/data/datasource/database/entity/FavoriteActorsEntity.kt +++ b/app/src/main/java/com/developersbreach/composeactors/core/database/entity/FavoriteActorsEntity.kt @@ -1,4 +1,4 @@ -package com.developersbreach.composeactors.data.datasource.database.entity +package com.developersbreach.composeactors.core.database.entity import androidx.compose.runtime.Stable import androidx.room.ColumnInfo diff --git a/app/src/main/java/com/developersbreach/composeactors/data/datasource/database/entity/FavoriteMoviesEntity.kt b/app/src/main/java/com/developersbreach/composeactors/core/database/entity/FavoriteMoviesEntity.kt similarity index 87% rename from app/src/main/java/com/developersbreach/composeactors/data/datasource/database/entity/FavoriteMoviesEntity.kt rename to app/src/main/java/com/developersbreach/composeactors/core/database/entity/FavoriteMoviesEntity.kt index 6207e77..6dd09ad 100644 --- a/app/src/main/java/com/developersbreach/composeactors/data/datasource/database/entity/FavoriteMoviesEntity.kt +++ b/app/src/main/java/com/developersbreach/composeactors/core/database/entity/FavoriteMoviesEntity.kt @@ -1,4 +1,4 @@ -package com.developersbreach.composeactors.data.datasource.database.entity +package com.developersbreach.composeactors.core.database.entity import androidx.compose.runtime.Stable import androidx.room.ColumnInfo diff --git a/app/src/main/java/com/developersbreach/composeactors/utils/Constants.kt b/app/src/main/java/com/developersbreach/composeactors/core/network/Constants.kt similarity index 68% rename from app/src/main/java/com/developersbreach/composeactors/utils/Constants.kt rename to app/src/main/java/com/developersbreach/composeactors/core/network/Constants.kt index 1779321..c1ec183 100644 --- a/app/src/main/java/com/developersbreach/composeactors/utils/Constants.kt +++ b/app/src/main/java/com/developersbreach/composeactors/core/network/Constants.kt @@ -1,4 +1,4 @@ -package com.developersbreach.composeactors.utils +package com.developersbreach.composeactors.core.network const val LOW_RES_IMAGE = "https://image.tmdb.org/t/p/w200" const val HIGH_RES_IMAGE = "https://image.tmdb.org/t/p/w500" \ No newline at end of file diff --git a/app/src/main/java/com/developersbreach/composeactors/utils/HttpRequestHandler.kt b/app/src/main/java/com/developersbreach/composeactors/core/network/HttpRequestHandler.kt similarity index 87% rename from app/src/main/java/com/developersbreach/composeactors/utils/HttpRequestHandler.kt rename to app/src/main/java/com/developersbreach/composeactors/core/network/HttpRequestHandler.kt index c0f7859..e7857a8 100644 --- a/app/src/main/java/com/developersbreach/composeactors/utils/HttpRequestHandler.kt +++ b/app/src/main/java/com/developersbreach/composeactors/core/network/HttpRequestHandler.kt @@ -1,6 +1,5 @@ -package com.developersbreach.composeactors.utils +package com.developersbreach.composeactors.core.network -import com.developersbreach.composeactors.data.PagedResponse import io.ktor.client.HttpClient import io.ktor.client.call.body import io.ktor.client.request.get diff --git a/app/src/main/java/com/developersbreach/composeactors/data/PagedResponse.kt b/app/src/main/java/com/developersbreach/composeactors/core/network/PagedResponse.kt similarity index 82% rename from app/src/main/java/com/developersbreach/composeactors/data/PagedResponse.kt rename to app/src/main/java/com/developersbreach/composeactors/core/network/PagedResponse.kt index f68a5aa..2032c49 100644 --- a/app/src/main/java/com/developersbreach/composeactors/data/PagedResponse.kt +++ b/app/src/main/java/com/developersbreach/composeactors/core/network/PagedResponse.kt @@ -1,4 +1,4 @@ -package com.developersbreach.composeactors.data +package com.developersbreach.composeactors.core.network import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable diff --git a/app/src/main/java/com/developersbreach/composeactors/utils/TmdbApiKey.kt b/app/src/main/java/com/developersbreach/composeactors/core/network/TmdbApiKey.kt similarity index 57% rename from app/src/main/java/com/developersbreach/composeactors/utils/TmdbApiKey.kt rename to app/src/main/java/com/developersbreach/composeactors/core/network/TmdbApiKey.kt index fcc7c52..138e843 100644 --- a/app/src/main/java/com/developersbreach/composeactors/utils/TmdbApiKey.kt +++ b/app/src/main/java/com/developersbreach/composeactors/core/network/TmdbApiKey.kt @@ -1,4 +1,4 @@ -package com.developersbreach.composeactors.utils +package com.developersbreach.composeactors.core.network /** * Add your own TMDB_API key here. @@ -7,8 +7,4 @@ package com.developersbreach.composeactors.utils */ object TmdbApiKey { const val TMDB_API_KEY = "" -} - -fun isTmdbApiKeyNotValid(): Boolean { - return TmdbApiKey.TMDB_API_KEY.isEmpty() -} +} \ No newline at end of file diff --git a/app/src/main/java/com/developersbreach/composeactors/data/datasource/database/AppDatabase.kt b/app/src/main/java/com/developersbreach/composeactors/data/datasource/database/AppDatabase.kt deleted file mode 100644 index bb786c2..0000000 --- a/app/src/main/java/com/developersbreach/composeactors/data/datasource/database/AppDatabase.kt +++ /dev/null @@ -1,19 +0,0 @@ -package com.developersbreach.composeactors.data.datasource.database - -import androidx.room.Database -import androidx.room.RoomDatabase -import com.developersbreach.composeactors.data.datasource.database.dao.FavoriteActorsDao -import com.developersbreach.composeactors.data.datasource.database.dao.FavoriteMoviesDao -import com.developersbreach.composeactors.data.datasource.database.entity.FavoriteActorsEntity -import com.developersbreach.composeactors.data.datasource.database.entity.FavoriteMoviesEntity - - -@Database( - entities = [FavoriteActorsEntity::class, FavoriteMoviesEntity::class], - version = 4, - exportSchema = false, -) -abstract class AppDatabase : RoomDatabase() { - abstract val favoriteActorsDao: FavoriteActorsDao - abstract val favoriteMoviesDao: FavoriteMoviesDao -} \ No newline at end of file diff --git a/app/src/main/java/com/developersbreach/composeactors/data/datasource/database/DatabaseDataSource.kt b/app/src/main/java/com/developersbreach/composeactors/data/datasource/database/DatabaseDataSource.kt index 8e2a66a..7d6e406 100644 --- a/app/src/main/java/com/developersbreach/composeactors/data/datasource/database/DatabaseDataSource.kt +++ b/app/src/main/java/com/developersbreach/composeactors/data/datasource/database/DatabaseDataSource.kt @@ -2,6 +2,7 @@ package com.developersbreach.composeactors.data.datasource.database import androidx.lifecycle.LiveData import androidx.lifecycle.map +import com.developersbreach.composeactors.core.database.AppDatabase import com.developersbreach.composeactors.data.model.FavoriteActor import com.developersbreach.composeactors.data.model.Movie import com.developersbreach.composeactors.data.model.actorAsDatabaseModel diff --git a/app/src/main/java/com/developersbreach/composeactors/data/datasource/network/NetworkDataSource.kt b/app/src/main/java/com/developersbreach/composeactors/data/datasource/network/NetworkDataSource.kt index f7167ad..999b568 100644 --- a/app/src/main/java/com/developersbreach/composeactors/data/datasource/network/NetworkDataSource.kt +++ b/app/src/main/java/com/developersbreach/composeactors/data/datasource/network/NetworkDataSource.kt @@ -1,6 +1,6 @@ package com.developersbreach.composeactors.data.datasource.network -import com.developersbreach.composeactors.data.PagedResponse +import com.developersbreach.composeactors.core.network.PagedResponse import com.developersbreach.composeactors.data.model.Actor import com.developersbreach.composeactors.data.model.ActorDetail import com.developersbreach.composeactors.data.model.Cast @@ -10,7 +10,7 @@ import com.developersbreach.composeactors.data.model.Movie import com.developersbreach.composeactors.data.model.MovieDetail import com.developersbreach.composeactors.data.model.MovieProvidersResponse import com.developersbreach.composeactors.data.model.MoviesResponse -import com.developersbreach.composeactors.utils.HttpRequestHandler +import com.developersbreach.composeactors.core.network.HttpRequestHandler import java.util.* import javax.inject.Inject import javax.inject.Singleton diff --git a/app/src/main/java/com/developersbreach/composeactors/data/datasource/network/RequestUrls.kt b/app/src/main/java/com/developersbreach/composeactors/data/datasource/network/RequestUrls.kt index 81f575e..b883fd9 100644 --- a/app/src/main/java/com/developersbreach/composeactors/data/datasource/network/RequestUrls.kt +++ b/app/src/main/java/com/developersbreach/composeactors/data/datasource/network/RequestUrls.kt @@ -1,6 +1,6 @@ package com.developersbreach.composeactors.data.datasource.network -import com.developersbreach.composeactors.utils.TmdbApiKey +import com.developersbreach.composeactors.core.network.TmdbApiKey import java.net.URL import java.net.URLEncoder import java.nio.charset.StandardCharsets diff --git a/app/src/main/java/com/developersbreach/composeactors/data/model/Actor.kt b/app/src/main/java/com/developersbreach/composeactors/data/model/Actor.kt index dcad481..b953e4d 100644 --- a/app/src/main/java/com/developersbreach/composeactors/data/model/Actor.kt +++ b/app/src/main/java/com/developersbreach/composeactors/data/model/Actor.kt @@ -2,7 +2,7 @@ package com.developersbreach.composeactors.data.model import androidx.compose.runtime.Immutable import androidx.compose.runtime.Stable -import com.developersbreach.composeactors.utils.LOW_RES_IMAGE +import com.developersbreach.composeactors.core.network.LOW_RES_IMAGE import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @@ -13,5 +13,5 @@ data class Actor( @SerialName("name") val actorName: String, @SerialName("profile_path") private val profilePath: String? ) { - val profileUrl: String = "${LOW_RES_IMAGE}$profilePath" + val profileUrl: String = "$LOW_RES_IMAGE$profilePath" } \ No newline at end of file diff --git a/app/src/main/java/com/developersbreach/composeactors/data/model/ActorDetail.kt b/app/src/main/java/com/developersbreach/composeactors/data/model/ActorDetail.kt index 9cb8693..db41413 100644 --- a/app/src/main/java/com/developersbreach/composeactors/data/model/ActorDetail.kt +++ b/app/src/main/java/com/developersbreach/composeactors/data/model/ActorDetail.kt @@ -2,8 +2,8 @@ package com.developersbreach.composeactors.data.model import androidx.compose.runtime.Immutable import androidx.compose.runtime.Stable -import com.developersbreach.composeactors.data.datasource.database.entity.FavoriteActorsEntity -import com.developersbreach.composeactors.utils.HIGH_RES_IMAGE +import com.developersbreach.composeactors.core.database.entity.FavoriteActorsEntity +import com.developersbreach.composeactors.core.network.HIGH_RES_IMAGE import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable diff --git a/app/src/main/java/com/developersbreach/composeactors/data/model/Cast.kt b/app/src/main/java/com/developersbreach/composeactors/data/model/Cast.kt index a60b7da..9c93183 100644 --- a/app/src/main/java/com/developersbreach/composeactors/data/model/Cast.kt +++ b/app/src/main/java/com/developersbreach/composeactors/data/model/Cast.kt @@ -2,7 +2,7 @@ package com.developersbreach.composeactors.data.model import androidx.compose.runtime.Immutable import androidx.compose.runtime.Stable -import com.developersbreach.composeactors.utils.LOW_RES_IMAGE +import com.developersbreach.composeactors.core.network.LOW_RES_IMAGE import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable diff --git a/app/src/main/java/com/developersbreach/composeactors/data/model/Movie.kt b/app/src/main/java/com/developersbreach/composeactors/data/model/Movie.kt index 70f8111..517111b 100644 --- a/app/src/main/java/com/developersbreach/composeactors/data/model/Movie.kt +++ b/app/src/main/java/com/developersbreach/composeactors/data/model/Movie.kt @@ -2,9 +2,9 @@ package com.developersbreach.composeactors.data.model import androidx.compose.runtime.Immutable import androidx.compose.runtime.Stable -import com.developersbreach.composeactors.data.datasource.database.entity.FavoriteMoviesEntity -import com.developersbreach.composeactors.utils.HIGH_RES_IMAGE -import com.developersbreach.composeactors.utils.LOW_RES_IMAGE +import com.developersbreach.composeactors.core.database.entity.FavoriteMoviesEntity +import com.developersbreach.composeactors.core.network.HIGH_RES_IMAGE +import com.developersbreach.composeactors.core.network.LOW_RES_IMAGE import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @@ -16,8 +16,8 @@ data class Movie( @SerialName("poster_path") private val posterPath: String?, @SerialName("backdrop_path") private val backdropPath: String? ) { - val posterPathUrl: String = "${LOW_RES_IMAGE}$posterPath" - val bannerUrl: String = "${HIGH_RES_IMAGE}$backdropPath" + val posterPathUrl: String = "$LOW_RES_IMAGE$posterPath" + val bannerUrl: String = "$HIGH_RES_IMAGE$backdropPath" } @Serializable diff --git a/app/src/main/java/com/developersbreach/composeactors/data/model/MovieDetail.kt b/app/src/main/java/com/developersbreach/composeactors/data/model/MovieDetail.kt index 054f176..df02511 100644 --- a/app/src/main/java/com/developersbreach/composeactors/data/model/MovieDetail.kt +++ b/app/src/main/java/com/developersbreach/composeactors/data/model/MovieDetail.kt @@ -2,7 +2,7 @@ package com.developersbreach.composeactors.data.model import androidx.compose.runtime.Immutable import androidx.compose.runtime.Stable -import com.developersbreach.composeactors.utils.HIGH_RES_IMAGE +import com.developersbreach.composeactors.core.network.HIGH_RES_IMAGE import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable diff --git a/app/src/main/java/com/developersbreach/composeactors/data/model/MovieProvider.kt b/app/src/main/java/com/developersbreach/composeactors/data/model/MovieProvider.kt index 94c9017..a7a6f39 100644 --- a/app/src/main/java/com/developersbreach/composeactors/data/model/MovieProvider.kt +++ b/app/src/main/java/com/developersbreach/composeactors/data/model/MovieProvider.kt @@ -1,6 +1,6 @@ package com.developersbreach.composeactors.data.model -import com.developersbreach.composeactors.utils.HIGH_RES_IMAGE +import com.developersbreach.composeactors.core.network.HIGH_RES_IMAGE import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable diff --git a/app/src/main/java/com/developersbreach/composeactors/data/repository/movie/MovieRepository.kt b/app/src/main/java/com/developersbreach/composeactors/data/repository/movie/MovieRepository.kt index fa6973f..ccc4def 100644 --- a/app/src/main/java/com/developersbreach/composeactors/data/repository/movie/MovieRepository.kt +++ b/app/src/main/java/com/developersbreach/composeactors/data/repository/movie/MovieRepository.kt @@ -1,7 +1,7 @@ package com.developersbreach.composeactors.data.repository.movie import androidx.lifecycle.LiveData -import com.developersbreach.composeactors.data.PagedResponse +import com.developersbreach.composeactors.core.network.PagedResponse import com.developersbreach.composeactors.data.datasource.database.DatabaseDataSource import com.developersbreach.composeactors.data.datasource.network.NetworkDataSource import com.developersbreach.composeactors.data.model.Cast diff --git a/app/src/main/java/com/developersbreach/composeactors/di/DaosModule.kt b/app/src/main/java/com/developersbreach/composeactors/di/DaosModule.kt index 3bbb158..d7ca0a3 100644 --- a/app/src/main/java/com/developersbreach/composeactors/di/DaosModule.kt +++ b/app/src/main/java/com/developersbreach/composeactors/di/DaosModule.kt @@ -1,8 +1,8 @@ package com.developersbreach.composeactors.di -import com.developersbreach.composeactors.data.datasource.database.AppDatabase -import com.developersbreach.composeactors.data.datasource.database.dao.FavoriteActorsDao -import com.developersbreach.composeactors.data.datasource.database.dao.FavoriteMoviesDao +import com.developersbreach.composeactors.core.database.AppDatabase +import com.developersbreach.composeactors.core.database.dao.FavoriteActorsDao +import com.developersbreach.composeactors.core.database.dao.FavoriteMoviesDao import dagger.Module import dagger.Provides import dagger.hilt.InstallIn diff --git a/app/src/main/java/com/developersbreach/composeactors/di/DatabaseModule.kt b/app/src/main/java/com/developersbreach/composeactors/di/DatabaseModule.kt index ff6b520..712524e 100644 --- a/app/src/main/java/com/developersbreach/composeactors/di/DatabaseModule.kt +++ b/app/src/main/java/com/developersbreach/composeactors/di/DatabaseModule.kt @@ -2,7 +2,7 @@ package com.developersbreach.composeactors.di import android.content.Context import androidx.room.Room -import com.developersbreach.composeactors.data.datasource.database.AppDatabase +import com.developersbreach.composeactors.core.database.AppDatabase import dagger.Module import dagger.Provides import dagger.hilt.InstallIn diff --git a/app/src/main/java/com/developersbreach/composeactors/domain/MoviesPagingSource.kt b/app/src/main/java/com/developersbreach/composeactors/domain/MoviesPagingSource.kt index 4bcf894..461dd84 100644 --- a/app/src/main/java/com/developersbreach/composeactors/domain/MoviesPagingSource.kt +++ b/app/src/main/java/com/developersbreach/composeactors/domain/MoviesPagingSource.kt @@ -2,7 +2,7 @@ package com.developersbreach.composeactors.domain import androidx.paging.PagingSource import androidx.paging.PagingState -import com.developersbreach.composeactors.data.PagedResponse +import com.developersbreach.composeactors.core.network.PagedResponse import com.developersbreach.composeactors.data.model.Movie import com.developersbreach.composeactors.data.repository.movie.MovieRepository diff --git a/app/src/main/java/com/developersbreach/composeactors/ui/components/Components.kt b/app/src/main/java/com/developersbreach/composeactors/ui/components/Components.kt index 40e2f63..90f90d8 100644 --- a/app/src/main/java/com/developersbreach/composeactors/ui/components/Components.kt +++ b/app/src/main/java/com/developersbreach/composeactors/ui/components/Components.kt @@ -15,7 +15,7 @@ import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp import com.developersbreach.composeactors.R -import com.developersbreach.composeactors.utils.TmdbApiKey +import com.developersbreach.composeactors.core.network.TmdbApiKey import com.developersbreach.composeactors.utils.NetworkManager import com.developersbreach.composeactors.utils.isTmdbApiKeyNotValid import kotlinx.coroutines.CoroutineScope diff --git a/app/src/main/java/com/developersbreach/composeactors/utils/Utilities.kt b/app/src/main/java/com/developersbreach/composeactors/utils/Utilities.kt index 0a95d5f..ca29308 100644 --- a/app/src/main/java/com/developersbreach/composeactors/utils/Utilities.kt +++ b/app/src/main/java/com/developersbreach/composeactors/utils/Utilities.kt @@ -1,5 +1,6 @@ package com.developersbreach.composeactors.utils +import com.developersbreach.composeactors.core.network.TmdbApiKey import java.util.* /** @@ -59,4 +60,8 @@ fun getMovieRuntimeFormatted( val hours: Int? = runtime?.div(60) val minutes: Int? = runtime?.rem(60) return "${hours}h:${minutes}m" -} \ No newline at end of file +} + +fun isTmdbApiKeyNotValid(): Boolean { + return TmdbApiKey.TMDB_API_KEY.isEmpty() +} From 410a440b2a309c2366254b39235f9b200f2aad85 Mon Sep 17 00:00:00 2001 From: Raj Date: Sun, 22 Dec 2024 21:03:27 +0530 Subject: [PATCH 2/4] Relocate feature modules into dedicated remote/local/repository packages for clearer separation of concerns --- .../core/network/BaseUrlProvider.kt | 21 +++ .../datasource/database/DatabaseDataSource.kt | 3 - .../datasource/network/NetworkDataSource.kt | 172 ------------------ .../data/datasource/network/RequestUrls.kt | 127 ------------- .../movie/paging}/MoviesPagingSource.kt | 6 +- .../data/movie/remote/MovieApi.kt | 23 +++ .../data/movie/remote/MovieApiImpl.kt | 83 +++++++++ .../data/movie/repository/MovieRepository.kt | 28 +++ .../movie/repository/MovieRepositoryImpl.kt | 85 +++++++++ .../data/person/remote/PersonApi.kt | 13 ++ .../data/person/remote/PersonApiImpl.kt | 49 +++++ .../person/repository/PersonRepository.kt | 18 ++ .../person/repository/PersonRepositoryImpl.kt | 52 ++++++ .../data/repository/actor/ActorRepository.kt | 53 ------ .../data/repository/movie/MovieRepository.kt | 59 ------ .../movie/MovieTrailerRepository.kt | 19 -- .../repository/search/SearchRepository.kt | 21 --- .../data/search/remote/SearchApi.kt | 10 + .../data/search/remote/SearchApiImpl.kt | 34 ++++ .../search/repository/SearchRepository.kt | 9 + .../search/repository/SearchRepositoryImpl.kt | 27 +++ .../remote/YouTubeThumbnailProviderApi.kt | 5 + .../remote/YouTubeThumbnailProviderApiImpl.kt | 19 ++ .../data/trending/remote/TrendingApi.kt | 8 + .../data/trending/remote/TrendingApiImpl.kt | 22 +++ .../trending/repository/TrendingRepository.kt | 7 + .../repository/TrendingRepositoryImpl.kt | 18 ++ .../composeactors/di/ApiModule.kt | 96 ++++++++++ .../domain/{ => movie}/GetPagedMovies.kt | 7 +- .../RemoveActorsFromFavoritesUseCase.kt | 15 -- .../RemoveMovieFromFavoritesUseCase.kt | 15 -- .../actorDetails/ActorDetailsViewModel.kt | 20 +- .../ui/screens/favorites/FavoriteViewModel.kt | 16 +- .../ui/screens/home/HomeViewModel.kt | 14 +- .../movieDetail/MovieDetailViewModel.kt | 24 ++- .../ui/screens/search/SearchViewModel.kt | 2 +- 36 files changed, 669 insertions(+), 531 deletions(-) create mode 100644 app/src/main/java/com/developersbreach/composeactors/core/network/BaseUrlProvider.kt delete mode 100644 app/src/main/java/com/developersbreach/composeactors/data/datasource/network/NetworkDataSource.kt delete mode 100644 app/src/main/java/com/developersbreach/composeactors/data/datasource/network/RequestUrls.kt rename app/src/main/java/com/developersbreach/composeactors/{domain => data/movie/paging}/MoviesPagingSource.kt (90%) create mode 100644 app/src/main/java/com/developersbreach/composeactors/data/movie/remote/MovieApi.kt create mode 100644 app/src/main/java/com/developersbreach/composeactors/data/movie/remote/MovieApiImpl.kt create mode 100644 app/src/main/java/com/developersbreach/composeactors/data/movie/repository/MovieRepository.kt create mode 100644 app/src/main/java/com/developersbreach/composeactors/data/movie/repository/MovieRepositoryImpl.kt create mode 100644 app/src/main/java/com/developersbreach/composeactors/data/person/remote/PersonApi.kt create mode 100644 app/src/main/java/com/developersbreach/composeactors/data/person/remote/PersonApiImpl.kt create mode 100644 app/src/main/java/com/developersbreach/composeactors/data/person/repository/PersonRepository.kt create mode 100644 app/src/main/java/com/developersbreach/composeactors/data/person/repository/PersonRepositoryImpl.kt delete mode 100644 app/src/main/java/com/developersbreach/composeactors/data/repository/actor/ActorRepository.kt delete mode 100644 app/src/main/java/com/developersbreach/composeactors/data/repository/movie/MovieRepository.kt delete mode 100644 app/src/main/java/com/developersbreach/composeactors/data/repository/movie/MovieTrailerRepository.kt delete mode 100644 app/src/main/java/com/developersbreach/composeactors/data/repository/search/SearchRepository.kt create mode 100644 app/src/main/java/com/developersbreach/composeactors/data/search/remote/SearchApi.kt create mode 100644 app/src/main/java/com/developersbreach/composeactors/data/search/remote/SearchApiImpl.kt create mode 100644 app/src/main/java/com/developersbreach/composeactors/data/search/repository/SearchRepository.kt create mode 100644 app/src/main/java/com/developersbreach/composeactors/data/search/repository/SearchRepositoryImpl.kt create mode 100644 app/src/main/java/com/developersbreach/composeactors/data/thumbnail/remote/YouTubeThumbnailProviderApi.kt create mode 100644 app/src/main/java/com/developersbreach/composeactors/data/thumbnail/remote/YouTubeThumbnailProviderApiImpl.kt create mode 100644 app/src/main/java/com/developersbreach/composeactors/data/trending/remote/TrendingApi.kt create mode 100644 app/src/main/java/com/developersbreach/composeactors/data/trending/remote/TrendingApiImpl.kt create mode 100644 app/src/main/java/com/developersbreach/composeactors/data/trending/repository/TrendingRepository.kt create mode 100644 app/src/main/java/com/developersbreach/composeactors/data/trending/repository/TrendingRepositoryImpl.kt create mode 100644 app/src/main/java/com/developersbreach/composeactors/di/ApiModule.kt rename app/src/main/java/com/developersbreach/composeactors/domain/{ => movie}/GetPagedMovies.kt (79%) delete mode 100644 app/src/main/java/com/developersbreach/composeactors/domain/useCase/RemoveActorsFromFavoritesUseCase.kt delete mode 100644 app/src/main/java/com/developersbreach/composeactors/domain/useCase/RemoveMovieFromFavoritesUseCase.kt diff --git a/app/src/main/java/com/developersbreach/composeactors/core/network/BaseUrlProvider.kt b/app/src/main/java/com/developersbreach/composeactors/core/network/BaseUrlProvider.kt new file mode 100644 index 0000000..eab5f6d --- /dev/null +++ b/app/src/main/java/com/developersbreach/composeactors/core/network/BaseUrlProvider.kt @@ -0,0 +1,21 @@ +package com.developersbreach.composeactors.core.network + +import java.io.UnsupportedEncodingException +import java.net.URLEncoder +import java.nio.charset.StandardCharsets + +open class BaseUrlProvider { + + fun String.toEncodedQuery(): String { + return try { + URLEncoder.encode(this, StandardCharsets.UTF_8.toString()) + } catch (e: UnsupportedEncodingException) { + throw IllegalArgumentException("Failed to encode query: $this", e) + } + } + + protected companion object { + const val BASE_URL = "https://api.themoviedb.org/3/" + const val API_KEY = "api_key=${TmdbApiKey.TMDB_API_KEY}" + } +} \ No newline at end of file diff --git a/app/src/main/java/com/developersbreach/composeactors/data/datasource/database/DatabaseDataSource.kt b/app/src/main/java/com/developersbreach/composeactors/data/datasource/database/DatabaseDataSource.kt index 7d6e406..4784235 100644 --- a/app/src/main/java/com/developersbreach/composeactors/data/datasource/database/DatabaseDataSource.kt +++ b/app/src/main/java/com/developersbreach/composeactors/data/datasource/database/DatabaseDataSource.kt @@ -14,7 +14,6 @@ import javax.inject.Singleton import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.withContext - @Singleton class DatabaseDataSource @Inject constructor( private val database: AppDatabase @@ -22,7 +21,6 @@ class DatabaseDataSource @Inject constructor( fun getAllFavoriteMovies(): LiveData> { val allFavoriteMovies = database.favoriteMoviesDao.getAllFavoriteMovies() - // Change to distinct until changed return allFavoriteMovies.map { favEntityList -> favEntityList.movieAsDomainModel() } @@ -30,7 +28,6 @@ class DatabaseDataSource @Inject constructor( fun getAllFavoriteActors(): LiveData> { val allFavoriteActors = database.favoriteActorsDao.getAllFavoriteActors() - // Change to distinct until changed return allFavoriteActors.map { favEntityList -> favEntityList.actorAsDomainModel() } diff --git a/app/src/main/java/com/developersbreach/composeactors/data/datasource/network/NetworkDataSource.kt b/app/src/main/java/com/developersbreach/composeactors/data/datasource/network/NetworkDataSource.kt deleted file mode 100644 index 999b568..0000000 --- a/app/src/main/java/com/developersbreach/composeactors/data/datasource/network/NetworkDataSource.kt +++ /dev/null @@ -1,172 +0,0 @@ -package com.developersbreach.composeactors.data.datasource.network - -import com.developersbreach.composeactors.core.network.PagedResponse -import com.developersbreach.composeactors.data.model.Actor -import com.developersbreach.composeactors.data.model.ActorDetail -import com.developersbreach.composeactors.data.model.Cast -import com.developersbreach.composeactors.data.model.CastResponse -import com.developersbreach.composeactors.data.model.Flatrate -import com.developersbreach.composeactors.data.model.Movie -import com.developersbreach.composeactors.data.model.MovieDetail -import com.developersbreach.composeactors.data.model.MovieProvidersResponse -import com.developersbreach.composeactors.data.model.MoviesResponse -import com.developersbreach.composeactors.core.network.HttpRequestHandler -import java.util.* -import javax.inject.Inject -import javax.inject.Singleton -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.withContext - -/** - * Functions in this repository executes on an IO-optimized thread pool, makes main-safe. - * Repository class executes network calls from different class functions to return data. - * Data returned from this functions will be exposed to ViewModels. - * - * Class contains functions which can fetch data from network. - * This is the only network data source for whole app. - */ -@Singleton -class NetworkDataSource @Inject constructor( - private val requestUrls: RequestUrls, - private val requestHandler: HttpRequestHandler -) { - - /*** @return the result of latest list of all popular actors fetched from the network.*/ - suspend fun getPopularActorsData(): List = withContext(Dispatchers.IO) { - val requestUrl = requestUrls.getPopularActorsUrl() - requestHandler.getPagedResponse(requestUrl).data - } - - /** @return the result of latest list of all trending actors fetched from the network. */ - suspend fun getTrendingActorsData(): List = withContext(Dispatchers.IO) { - val requestUrl = requestUrls.getTrendingActorsUrl() - requestHandler.getPagedResponse(requestUrl).data - } - - /** - * @param actorId user selected actor. - * @return the result of details of actor which fetched from the network. - */ - suspend fun getSelectedActorData( - actorId: Int - ): ActorDetail = withContext(Dispatchers.IO) { - val requestUrl = requestUrls.getActorDetailsUrl(actorId) - requestHandler.getResponse(requestUrl) - } - - /** - * @param actorId user selected actor. - * @return the result of list of movies which actor was casted with from the network. - */ - suspend fun getCastData( - actorId: Int - ): List = withContext(Dispatchers.IO) { - val requestUrl = requestUrls.getCastDetailsUrl(actorId) - requestHandler.getResponse(requestUrl).movies - } - - suspend fun getSelectedMovieData( - movieId: Int - ): MovieDetail = withContext(Dispatchers.IO) { - val requestUrl = requestUrls.getMovieDetailsUrl(movieId) - requestHandler.getResponse(requestUrl) - } - - /** - * @param movieId for finding similar movies. - * @return the result of list of movies which are based on current movie id. - */ - suspend fun getSimilarMoviesByIdData( - movieId: Int - ): List = withContext(Dispatchers.IO) { - val requestUrl = requestUrls.getSimilarMoviesUrl(movieId) - requestHandler.getPagedResponse(requestUrl).data - } - - /** - * @param movieId for finding recommended movies. - * @return the result of list of movies which are based on current movie id. - */ - suspend fun getRecommendedMoviesByIdData( - movieId: Int - ): List = withContext(Dispatchers.IO) { - val requestUrl = requestUrls.getRecommendedMoviesUrl(movieId) - requestHandler.getPagedResponse(requestUrl).data - } - - /** - * @param movieId for finding cast & crew. - * @return the result of list of cast which are based on current movie id. - */ - suspend fun getMovieCastByIdData( - movieId: Int - ): List { - return withContext(Dispatchers.IO) { - val requestUrl = requestUrls.getMovieCastUrl(movieId) - requestHandler.getResponse(requestUrl).cast - } - } - - suspend fun getUpcomingMoviesData(): List = withContext(Dispatchers.IO) { - val requestUrl = requestUrls.getUpcomingMoviesUrl() - requestHandler.getPagedResponse(requestUrl).data - } - - suspend fun getMovieProvidersData( - movieId: Int - ): List = withContext(Dispatchers.IO) { - val requestUrl = requestUrls.getMovieProviderUrl(movieId) - val response: MovieProvidersResponse = requestHandler.getResponse(requestUrl) - val countryCode = Locale.getDefault().country - response.results[countryCode]?.flatrate ?: emptyList() - } - - suspend fun getNowPlayingMoviesData( - page: Int - ): PagedResponse = withContext(Dispatchers.IO) { - val requestUrl = requestUrls.getNowPlayingMoviesUrl(page) - requestHandler.getResponse(requestUrl) - } - - /** - * @param query user submitted query to search actors. - * @return the result of list of actors with matching query fetched from the network. - */ - suspend fun getSearchableActorsData( - query: String - ): List = withContext(Dispatchers.IO) { - val requestUrl = requestUrls.getSearchActorsUrl(query) - requestHandler.getPagedResponse(requestUrl).data - } - - suspend fun getSearchableMoviesData( - query: String - ): List = withContext(Dispatchers.IO) { - val requestUrl = requestUrls.getSearchMoviesUrl(query) - requestHandler.getPagedResponse(requestUrl).data - } - - suspend fun getMovieTrailerUrl( - movieId: Int - ) { - withContext(Dispatchers.IO) { - val requestUrl = requestUrls.getMovieTrailerUrl(movieId) - // val response = requestHandler.getResponseFromHttpUrl(requestUrl) - - // Watching trailer for movies needs to implemented - // Planned for v0.5.0 - } - } - - suspend fun getMovieTrailerThumbnail( - trailerId: String - ) { - withContext(Dispatchers.IO) { - val requestUrl = requestUrls.buildMovieTrailerThumbnail(trailerId) - // val response = requestHandler.getResponseFromHttpUrl(requestUrl) - - // Watching trailer for movies needs to implemented - // Planned for v0.5.0 - } - } -} \ No newline at end of file diff --git a/app/src/main/java/com/developersbreach/composeactors/data/datasource/network/RequestUrls.kt b/app/src/main/java/com/developersbreach/composeactors/data/datasource/network/RequestUrls.kt deleted file mode 100644 index b883fd9..0000000 --- a/app/src/main/java/com/developersbreach/composeactors/data/datasource/network/RequestUrls.kt +++ /dev/null @@ -1,127 +0,0 @@ -package com.developersbreach.composeactors.data.datasource.network - -import com.developersbreach.composeactors.core.network.TmdbApiKey -import java.net.URL -import java.net.URLEncoder -import java.nio.charset.StandardCharsets -import javax.inject.Inject -import javax.inject.Singleton - -/** - * Builds and returns URL used to fetch data from the server. - */ -@Singleton -class RequestUrls @Inject constructor() { - - // https://api.themoviedb.org/3/person/popular?api_key=API_KEY - fun getPopularActorsUrl(): URL { - return URL("${BASE_URL}person/popular?$API_KEY") - } - - // https://api.themoviedb.org/3/trending/person/week?api_key=API_KEY - fun getTrendingActorsUrl(): URL { - return URL("${BASE_URL}trending/person/week?$API_KEY") - } - - // https://api.themoviedb.org/3/person/3233?api_key=API_KEY - fun getActorDetailsUrl( - actorId: Int - ): URL { - return URL("${BASE_URL}person/${actorId}?$API_KEY") - } - - // https://api.themoviedb.org/3/person/3233/movie_credits?api_key=API_KEY - fun getCastDetailsUrl( - actorId: Int - ): URL { - return URL("${BASE_URL}person/${actorId}/movie_credits?$API_KEY") - } - - // https://api.themoviedb.org/3/search/person?api_key=API_KEY&query=$pacino - fun getSearchActorsUrl( - query: String - ): URL { - val encodedQuery = URLEncoder.encode(query, StandardCharsets.UTF_8.toString()) - return URL("${BASE_URL}search/person?$API_KEY&query=$encodedQuery") - } - - // https://api.themoviedb.org/3/search/movie?api_key=API_KEY&query=$thor - fun getSearchMoviesUrl( - query: String - ): URL { - val encodedQuery = URLEncoder.encode(query, StandardCharsets.UTF_8.toString()) - return URL("${BASE_URL}search/movie?$API_KEY&query=$encodedQuery") - } - - // https://api.themoviedb.org/3/movie/{movie_id}?api_key=API_KEY - fun getMovieDetailsUrl( - movieId: Int - ): URL { - return URL("${BASE_URL}movie/$movieId?$API_KEY") - } - - // https://api.themoviedb.org/3/movie/{movie_id}/recommendations?api_key=API_KEY&page=1 - fun getRecommendedMoviesUrl( - movieId: Int, - page: Int = 1 - ): URL { - return URL("${BASE_URL}movie/$movieId/recommendations?$API_KEY&page=$page") - } - - // https://api.themoviedb.org/3/movie/{movie_id}/similar?api_key=API_KEY&page=1 - fun getSimilarMoviesUrl( - movieId: Int, - page: Int = 1 - ): URL { - return URL("${BASE_URL}movie/$movieId/similar?$API_KEY&page=$page") - } - - // 299536 - // https://api.themoviedb.org/3/movie/{movie_id}/credits?api_key=API_KEY - fun getMovieCastUrl( - movieId: Int - ): URL { - return URL("${BASE_URL}movie/$movieId/credits?$API_KEY") - } - - // 299536 - // https://api.themoviedb.org/3/movie/{movie_id}/videos?api_key=API_KEY - fun getMovieTrailerUrl( - movieId: Int - ): URL { - return URL("${BASE_URL}movie/$movieId/videos?$API_KEY") - } - - // https://img.youtube.com/vi/SUXWAEX2jlg/sddefault.jpg - fun buildMovieTrailerThumbnail( - trailerId: String - ): URL { - return URL("https://img.youtube.com/vi/$trailerId/sddefault.jpg") - } - - // https://api.themoviedb.org/3/movie/upcoming?api_key=API_KEY&page=1 - fun getUpcomingMoviesUrl( - page: Int = 1 - ): URL { - return URL("${BASE_URL}movie/upcoming?$API_KEY&page=$page") - } - - // https://api.themoviedb.org/3/movie/{movie_id}/watch/providers?api_key - fun getMovieProviderUrl( - movieId: Int - ): URL { - return URL("${BASE_URL}movie/$movieId/watch/providers?$API_KEY") - } - - // https://api.themoviedb.org/3/movie/now_playing?api_key=API_KEY&page=1 - fun getNowPlayingMoviesUrl( - page: Int - ): URL { - return URL("${BASE_URL}movie/now_playing?$API_KEY&page=$page") - } - - companion object { - private const val BASE_URL = "https://api.themoviedb.org/3/" - private const val API_KEY = "api_key=${TmdbApiKey.TMDB_API_KEY}" - } -} \ No newline at end of file diff --git a/app/src/main/java/com/developersbreach/composeactors/domain/MoviesPagingSource.kt b/app/src/main/java/com/developersbreach/composeactors/data/movie/paging/MoviesPagingSource.kt similarity index 90% rename from app/src/main/java/com/developersbreach/composeactors/domain/MoviesPagingSource.kt rename to app/src/main/java/com/developersbreach/composeactors/data/movie/paging/MoviesPagingSource.kt index 461dd84..d97d98b 100644 --- a/app/src/main/java/com/developersbreach/composeactors/domain/MoviesPagingSource.kt +++ b/app/src/main/java/com/developersbreach/composeactors/data/movie/paging/MoviesPagingSource.kt @@ -1,10 +1,10 @@ -package com.developersbreach.composeactors.domain +package com.developersbreach.composeactors.data.movie.paging import androidx.paging.PagingSource import androidx.paging.PagingState import com.developersbreach.composeactors.core.network.PagedResponse import com.developersbreach.composeactors.data.model.Movie -import com.developersbreach.composeactors.data.repository.movie.MovieRepository +import com.developersbreach.composeactors.data.movie.repository.MovieRepository class MoviesPagingSource( private val movieRepository: MovieRepository @@ -21,7 +21,7 @@ class MoviesPagingSource( return try { val currentPageNumber = params.key ?: 1 - val movies: PagedResponse = movieRepository.getNowPlayingMoviesData( + val movies: PagedResponse = movieRepository.getNowPlayingMovies( page = currentPageNumber ) diff --git a/app/src/main/java/com/developersbreach/composeactors/data/movie/remote/MovieApi.kt b/app/src/main/java/com/developersbreach/composeactors/data/movie/remote/MovieApi.kt new file mode 100644 index 0000000..e027062 --- /dev/null +++ b/app/src/main/java/com/developersbreach/composeactors/data/movie/remote/MovieApi.kt @@ -0,0 +1,23 @@ +package com.developersbreach.composeactors.data.movie.remote + +import com.developersbreach.composeactors.core.network.PagedResponse +import com.developersbreach.composeactors.data.model.CastResponse +import com.developersbreach.composeactors.data.model.Movie +import com.developersbreach.composeactors.data.model.MovieDetail +import com.developersbreach.composeactors.data.model.MovieProvidersResponse + +interface MovieApi { + suspend fun getNowPlayingMovies(page: Int): PagedResponse + suspend fun getUpcomingMovies(page: Int): PagedResponse + suspend fun getMovieDetails(movieId: Int): MovieDetail + suspend fun getSimilarMovies( + movieId: Int, + page: Int = 1, + ): PagedResponse + suspend fun getRecommendedMovies( + movieId: Int, + page: Int = 1, + ): PagedResponse + suspend fun getMovieCast(movieId: Int): CastResponse + suspend fun getMovieProviders(movieId: Int): MovieProvidersResponse +} \ No newline at end of file diff --git a/app/src/main/java/com/developersbreach/composeactors/data/movie/remote/MovieApiImpl.kt b/app/src/main/java/com/developersbreach/composeactors/data/movie/remote/MovieApiImpl.kt new file mode 100644 index 0000000..1de1fc4 --- /dev/null +++ b/app/src/main/java/com/developersbreach/composeactors/data/movie/remote/MovieApiImpl.kt @@ -0,0 +1,83 @@ +package com.developersbreach.composeactors.data.movie.remote + +import com.developersbreach.composeactors.core.network.BaseUrlProvider +import com.developersbreach.composeactors.core.network.HttpRequestHandler +import com.developersbreach.composeactors.core.network.PagedResponse +import com.developersbreach.composeactors.data.model.CastResponse +import com.developersbreach.composeactors.data.model.Movie +import com.developersbreach.composeactors.data.model.MovieDetail +import com.developersbreach.composeactors.data.model.MovieProvidersResponse +import java.net.URL +import javax.inject.Inject +import javax.inject.Singleton + +@Singleton +class MovieApiImpl @Inject constructor( + private val requestHandler: HttpRequestHandler +) : MovieApi, BaseUrlProvider() { + + // movie/now_playing?api_key=API_KEY&page=1 + override suspend fun getNowPlayingMovies( + page: Int + ): PagedResponse { + return requestHandler.getPagedResponse( + URL("${BASE_URL}movie/now_playing?${API_KEY}&page=$page") + ) + } + + // movie/upcoming?api_key=API_KEY&page=1 + override suspend fun getUpcomingMovies( + page: Int + ): PagedResponse { + return requestHandler.getPagedResponse( + URL("${BASE_URL}movie/upcoming?${API_KEY}&page=$page") + ) + } + + // movie/{movie_id}?api_key=API_KEY + override suspend fun getMovieDetails( + movieId: Int + ): MovieDetail { + return requestHandler.getResponse( + URL("${BASE_URL}movie/$movieId?${API_KEY}") + ) + } + + // movie/{movie_id}/similar?api_key=API_KEY&page=1 + override suspend fun getSimilarMovies( + movieId: Int, + page: Int + ): PagedResponse { + return requestHandler.getPagedResponse( + URL("${BASE_URL}movie/$movieId/similar?${API_KEY}&page=$page") + ) + } + + // movie/{movie_id}/recommendations?api_key=API_KEY&page=1 + override suspend fun getRecommendedMovies( + movieId: Int, + page: Int + ): PagedResponse { + return requestHandler.getPagedResponse( + URL("${BASE_URL}movie/$movieId/recommendations?${API_KEY}&page=$page") + ) + } + + // movie/{movie_id}/credits?api_key=API_KEY - 299536 + override suspend fun getMovieCast( + movieId: Int + ): CastResponse { + return requestHandler.getResponse( + URL("${BASE_URL}movie/$movieId/credits?${API_KEY}") + ) + } + + // movie/{movie_id}/watch/providers?api_key + override suspend fun getMovieProviders( + movieId: Int + ): MovieProvidersResponse { + return requestHandler.getResponse( + URL("${BASE_URL}movie/$movieId/watch/providers?${API_KEY}") + ) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/developersbreach/composeactors/data/movie/repository/MovieRepository.kt b/app/src/main/java/com/developersbreach/composeactors/data/movie/repository/MovieRepository.kt new file mode 100644 index 0000000..e36bceb --- /dev/null +++ b/app/src/main/java/com/developersbreach/composeactors/data/movie/repository/MovieRepository.kt @@ -0,0 +1,28 @@ +package com.developersbreach.composeactors.data.movie.repository + +import androidx.lifecycle.LiveData +import com.developersbreach.composeactors.core.network.PagedResponse +import com.developersbreach.composeactors.data.model.Cast +import com.developersbreach.composeactors.data.model.Flatrate +import com.developersbreach.composeactors.data.model.Movie +import com.developersbreach.composeactors.data.model.MovieDetail + +interface MovieRepository { + suspend fun getNowPlayingMovies(page: Int): PagedResponse + suspend fun getUpcomingMovies(page: Int = 1): List + suspend fun getMovieDetails(movieId: Int): MovieDetail + suspend fun getSimilarMovies( + movieId: Int, + page: Int = 1, + ): List + suspend fun getRecommendedMovies( + movieId: Int, + page: Int = 1, + ): List + suspend fun getMovieCast(movieId: Int): List + suspend fun getMovieProviders(movieId: Int): List + fun getAllFavoriteMovies(): LiveData> + fun isFavoriteMovie(movieId: Int): LiveData + suspend fun addMovieToFavorites(movie: Movie) + suspend fun deleteSelectedFavoriteMovie(movie: Movie) +} \ No newline at end of file diff --git a/app/src/main/java/com/developersbreach/composeactors/data/movie/repository/MovieRepositoryImpl.kt b/app/src/main/java/com/developersbreach/composeactors/data/movie/repository/MovieRepositoryImpl.kt new file mode 100644 index 0000000..07543c4 --- /dev/null +++ b/app/src/main/java/com/developersbreach/composeactors/data/movie/repository/MovieRepositoryImpl.kt @@ -0,0 +1,85 @@ +package com.developersbreach.composeactors.data.movie.repository + +import androidx.lifecycle.LiveData +import com.developersbreach.composeactors.core.network.PagedResponse +import com.developersbreach.composeactors.data.datasource.database.DatabaseDataSource +import com.developersbreach.composeactors.data.model.Cast +import com.developersbreach.composeactors.data.model.Flatrate +import com.developersbreach.composeactors.data.model.Movie +import com.developersbreach.composeactors.data.model.MovieDetail +import com.developersbreach.composeactors.data.model.MovieProvidersResponse +import com.developersbreach.composeactors.data.movie.remote.MovieApi +import java.util.* +import javax.inject.Inject +import javax.inject.Singleton +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.withContext + +@Singleton +class MovieRepositoryImpl @Inject constructor( + private val movieApi: MovieApi, + private val databaseDataSource: DatabaseDataSource +) : MovieRepository { + + override suspend fun getNowPlayingMovies( + page: Int + ): PagedResponse = withContext(Dispatchers.IO) { + movieApi.getNowPlayingMovies(page) + } + + override suspend fun getUpcomingMovies( + page: Int + ): List = withContext(Dispatchers.IO) { + movieApi.getUpcomingMovies(page).data + } + + override suspend fun getMovieDetails( + movieId: Int + ): MovieDetail = withContext(Dispatchers.IO) { + movieApi.getMovieDetails(movieId) + } + + override suspend fun getSimilarMovies( + movieId: Int, + page: Int + ): List = withContext(Dispatchers.IO) { + movieApi.getSimilarMovies(movieId, page).data + } + + override suspend fun getRecommendedMovies( + movieId: Int, + page: Int + ): List = withContext(Dispatchers.IO) { + movieApi.getRecommendedMovies(movieId, page).data + } + + override suspend fun getMovieCast( + movieId: Int + ): List = withContext(Dispatchers.IO) { + movieApi.getMovieCast(movieId).cast + } + + override suspend fun getMovieProviders( + movieId: Int + ): List = withContext(Dispatchers.IO) { + val response: MovieProvidersResponse = movieApi.getMovieProviders(movieId) + val countryCode = Locale.getDefault().country + response.results[countryCode]?.flatrate ?: emptyList() + } + + override fun getAllFavoriteMovies(): LiveData> { + return databaseDataSource.getAllFavoriteMovies() + } + + override fun isFavoriteMovie(movieId: Int): LiveData { + return databaseDataSource.checkIfMovieIsFavorite(movieId) + } + + override suspend fun addMovieToFavorites(movie: Movie) { + return databaseDataSource.addMovieToFavorites(movie) + } + + override suspend fun deleteSelectedFavoriteMovie(movie: Movie) { + return databaseDataSource.deleteSelectedFavoriteMovie(movie) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/developersbreach/composeactors/data/person/remote/PersonApi.kt b/app/src/main/java/com/developersbreach/composeactors/data/person/remote/PersonApi.kt new file mode 100644 index 0000000..6ac7a70 --- /dev/null +++ b/app/src/main/java/com/developersbreach/composeactors/data/person/remote/PersonApi.kt @@ -0,0 +1,13 @@ +package com.developersbreach.composeactors.data.person.remote + +import com.developersbreach.composeactors.core.network.PagedResponse +import com.developersbreach.composeactors.data.model.Actor +import com.developersbreach.composeactors.data.model.ActorDetail +import com.developersbreach.composeactors.data.model.MoviesResponse + +interface PersonApi { + suspend fun getPopularPersons(): PagedResponse + suspend fun getTrendingPersons(): PagedResponse + suspend fun getPersonDetails(actorId: Int): ActorDetail + suspend fun getCastDetails(actorId: Int): MoviesResponse +} \ No newline at end of file diff --git a/app/src/main/java/com/developersbreach/composeactors/data/person/remote/PersonApiImpl.kt b/app/src/main/java/com/developersbreach/composeactors/data/person/remote/PersonApiImpl.kt new file mode 100644 index 0000000..73a9ec2 --- /dev/null +++ b/app/src/main/java/com/developersbreach/composeactors/data/person/remote/PersonApiImpl.kt @@ -0,0 +1,49 @@ +package com.developersbreach.composeactors.data.person.remote + +import com.developersbreach.composeactors.core.network.BaseUrlProvider +import com.developersbreach.composeactors.core.network.HttpRequestHandler +import com.developersbreach.composeactors.core.network.PagedResponse +import com.developersbreach.composeactors.data.model.Actor +import com.developersbreach.composeactors.data.model.ActorDetail +import com.developersbreach.composeactors.data.model.MoviesResponse +import java.net.URL +import javax.inject.Inject +import javax.inject.Singleton + +@Singleton +class PersonApiImpl @Inject constructor( + private val requestHandler: HttpRequestHandler, +) : PersonApi, BaseUrlProvider() { + + // person/popular?api_key=API_KEY + override suspend fun getPopularPersons(): PagedResponse { + return requestHandler.getPagedResponse( + URL("${BASE_URL}person/popular?$API_KEY") + ) + } + + // person/3233?api_key=API_KEY + override suspend fun getTrendingPersons(): PagedResponse { + return requestHandler.getPagedResponse( + URL("${BASE_URL}trending/person/week?$API_KEY") + ) + } + + // person/3233?api_key=API_KEY + override suspend fun getPersonDetails( + actorId: Int + ): ActorDetail { + return requestHandler.getResponse( + URL("${BASE_URL}person/${actorId}?$API_KEY") + ) + } + + // person/3233/movie_credits?api_key=API_KEY + override suspend fun getCastDetails( + actorId: Int + ): MoviesResponse { + return requestHandler.getResponse( + URL("${BASE_URL}person/${actorId}/movie_credits?$API_KEY") + ) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/developersbreach/composeactors/data/person/repository/PersonRepository.kt b/app/src/main/java/com/developersbreach/composeactors/data/person/repository/PersonRepository.kt new file mode 100644 index 0000000..38d6623 --- /dev/null +++ b/app/src/main/java/com/developersbreach/composeactors/data/person/repository/PersonRepository.kt @@ -0,0 +1,18 @@ +package com.developersbreach.composeactors.data.person.repository + +import androidx.lifecycle.LiveData +import com.developersbreach.composeactors.data.model.Actor +import com.developersbreach.composeactors.data.model.ActorDetail +import com.developersbreach.composeactors.data.model.FavoriteActor +import com.developersbreach.composeactors.data.model.Movie + +interface PersonRepository { + suspend fun getPopularPersons(): List + suspend fun getTrendingPersons(): List + suspend fun getPersonDetails(actorId: Int): ActorDetail + suspend fun getCastDetails(actorId: Int): List + fun isFavoritePerson(actorId: Int): LiveData + suspend fun addPersonToFavorite(favoriteActor: FavoriteActor) + suspend fun deleteSelectedFavoritePerson(favoriteActor: FavoriteActor) + fun getAllFavoritePersons(): LiveData> +} \ No newline at end of file diff --git a/app/src/main/java/com/developersbreach/composeactors/data/person/repository/PersonRepositoryImpl.kt b/app/src/main/java/com/developersbreach/composeactors/data/person/repository/PersonRepositoryImpl.kt new file mode 100644 index 0000000..872ae3e --- /dev/null +++ b/app/src/main/java/com/developersbreach/composeactors/data/person/repository/PersonRepositoryImpl.kt @@ -0,0 +1,52 @@ +package com.developersbreach.composeactors.data.person.repository + +import androidx.lifecycle.LiveData +import com.developersbreach.composeactors.data.datasource.database.DatabaseDataSource +import com.developersbreach.composeactors.data.model.Actor +import com.developersbreach.composeactors.data.model.ActorDetail +import com.developersbreach.composeactors.data.model.FavoriteActor +import com.developersbreach.composeactors.data.model.Movie +import com.developersbreach.composeactors.data.person.remote.PersonApi +import javax.inject.Inject +import javax.inject.Singleton +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.withContext + +@Singleton +class PersonRepositoryImpl @Inject constructor( + private val personApi: PersonApi, + private val databaseDataSource: DatabaseDataSource +) : PersonRepository { + + override suspend fun getPopularPersons(): List = withContext(Dispatchers.IO) { + personApi.getPopularPersons().data + } + + override suspend fun getTrendingPersons(): List = withContext(Dispatchers.IO) { + personApi.getTrendingPersons().data + } + + override suspend fun getPersonDetails(actorId: Int): ActorDetail = withContext(Dispatchers.IO) { + personApi.getPersonDetails(actorId) + } + + override suspend fun getCastDetails(actorId: Int): List = withContext(Dispatchers.IO) { + personApi.getCastDetails(actorId).movies + } + + override fun isFavoritePerson(actorId: Int): LiveData { + return databaseDataSource.checkIfActorIsFavorite(actorId) + } + + override suspend fun addPersonToFavorite(favoriteActor: FavoriteActor) { + databaseDataSource.addActorToFavorites(favoriteActor) + } + + override suspend fun deleteSelectedFavoritePerson(favoriteActor: FavoriteActor) { + databaseDataSource.deleteSelectedFavoriteActor(favoriteActor) + } + + override fun getAllFavoritePersons(): LiveData> { + return databaseDataSource.getAllFavoriteActors() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/developersbreach/composeactors/data/repository/actor/ActorRepository.kt b/app/src/main/java/com/developersbreach/composeactors/data/repository/actor/ActorRepository.kt deleted file mode 100644 index 160ef48..0000000 --- a/app/src/main/java/com/developersbreach/composeactors/data/repository/actor/ActorRepository.kt +++ /dev/null @@ -1,53 +0,0 @@ -package com.developersbreach.composeactors.data.repository.actor - -import androidx.lifecycle.LiveData -import com.developersbreach.composeactors.data.datasource.database.DatabaseDataSource -import com.developersbreach.composeactors.data.datasource.network.NetworkDataSource -import com.developersbreach.composeactors.data.model.Actor -import com.developersbreach.composeactors.data.model.ActorDetail -import com.developersbreach.composeactors.data.model.FavoriteActor -import com.developersbreach.composeactors.data.model.Movie -import javax.inject.Inject -import javax.inject.Singleton - -@Singleton -class ActorRepository @Inject constructor( - private val networkDataSource: NetworkDataSource, - private val databaseDataSource: DatabaseDataSource -) { - suspend fun getPopularActorsData(): List { - return networkDataSource.getPopularActorsData() - } - - suspend fun getTrendingActorsData(): List { - return networkDataSource.getTrendingActorsData() - } - - suspend fun getUpcomingMoviesData(): List { - return networkDataSource.getUpcomingMoviesData() - } - - suspend fun getSelectedActorData(actorInt: Int): ActorDetail { - return networkDataSource.getSelectedActorData(actorInt) - } - - suspend fun getCastData(actorInt: Int): List { - return networkDataSource.getCastData(actorInt) - } - - fun isFavoriteActor(actorId: Int): LiveData { - return databaseDataSource.checkIfActorIsFavorite(actorId) - } - - suspend fun addActorsToFavorite(favoriteActor: FavoriteActor) { - databaseDataSource.addActorToFavorites(favoriteActor) - } - - suspend fun deleteSelectedFavoriteActor(favoriteActor: FavoriteActor) { - databaseDataSource.deleteSelectedFavoriteActor(favoriteActor) - } - - fun getAllFavoriteActors(): LiveData> { - return databaseDataSource.getAllFavoriteActors() - } -} \ No newline at end of file diff --git a/app/src/main/java/com/developersbreach/composeactors/data/repository/movie/MovieRepository.kt b/app/src/main/java/com/developersbreach/composeactors/data/repository/movie/MovieRepository.kt deleted file mode 100644 index ccc4def..0000000 --- a/app/src/main/java/com/developersbreach/composeactors/data/repository/movie/MovieRepository.kt +++ /dev/null @@ -1,59 +0,0 @@ -package com.developersbreach.composeactors.data.repository.movie - -import androidx.lifecycle.LiveData -import com.developersbreach.composeactors.core.network.PagedResponse -import com.developersbreach.composeactors.data.datasource.database.DatabaseDataSource -import com.developersbreach.composeactors.data.datasource.network.NetworkDataSource -import com.developersbreach.composeactors.data.model.Cast -import com.developersbreach.composeactors.data.model.Flatrate -import com.developersbreach.composeactors.data.model.Movie -import com.developersbreach.composeactors.data.model.MovieDetail -import javax.inject.Inject -import javax.inject.Singleton - -@Singleton -class MovieRepository @Inject constructor( - private val networkDataSource: NetworkDataSource, - private val databaseDataSource: DatabaseDataSource -) { - - suspend fun getNowPlayingMoviesData(page: Int): PagedResponse { - return networkDataSource.getNowPlayingMoviesData(page) - } - - suspend fun getSelectedMovieData(movieId: Int): MovieDetail { - return networkDataSource.getSelectedMovieData(movieId) - } - - suspend fun getSimilarMoviesByIdData(movieId: Int): List { - return networkDataSource.getSimilarMoviesByIdData(movieId) - } - - suspend fun getRecommendedMoviesByIdData(movieId: Int): List { - return networkDataSource.getRecommendedMoviesByIdData(movieId) - } - - suspend fun getMovieCastByIdData(movieId: Int): List { - return networkDataSource.getMovieCastByIdData(movieId) - } - - fun getAllFavoriteMovies(): LiveData> { - return databaseDataSource.getAllFavoriteMovies() - } - - fun isFavoriteMovie(movieId: Int): LiveData { - return databaseDataSource.checkIfMovieIsFavorite(movieId) - } - - suspend fun getMovieProvidersData(movieId: Int): List { - return networkDataSource.getMovieProvidersData(movieId) - } - - suspend fun addMovieToFavorites(movie: Movie) { - return databaseDataSource.addMovieToFavorites(movie) - } - - suspend fun deleteSelectedFavoriteMovie(movie: Movie) { - return databaseDataSource.deleteSelectedFavoriteMovie(movie) - } -} \ No newline at end of file diff --git a/app/src/main/java/com/developersbreach/composeactors/data/repository/movie/MovieTrailerRepository.kt b/app/src/main/java/com/developersbreach/composeactors/data/repository/movie/MovieTrailerRepository.kt deleted file mode 100644 index 2c626ce..0000000 --- a/app/src/main/java/com/developersbreach/composeactors/data/repository/movie/MovieTrailerRepository.kt +++ /dev/null @@ -1,19 +0,0 @@ -package com.developersbreach.composeactors.data.repository.movie - -import com.developersbreach.composeactors.data.datasource.network.NetworkDataSource -import javax.inject.Inject -import javax.inject.Singleton - -@Singleton -class MovieTrailerRepository @Inject constructor( - private val networkDataSource: NetworkDataSource -) { - - suspend fun getMovieTrailerUrl(movieId: Int) { - networkDataSource.getMovieTrailerUrl(movieId) - } - - suspend fun getMovieTrailerThumbnail(trailerId: String) { - networkDataSource.getMovieTrailerThumbnail(trailerId) - } -} \ No newline at end of file diff --git a/app/src/main/java/com/developersbreach/composeactors/data/repository/search/SearchRepository.kt b/app/src/main/java/com/developersbreach/composeactors/data/repository/search/SearchRepository.kt deleted file mode 100644 index b6cb284..0000000 --- a/app/src/main/java/com/developersbreach/composeactors/data/repository/search/SearchRepository.kt +++ /dev/null @@ -1,21 +0,0 @@ -package com.developersbreach.composeactors.data.repository.search - -import com.developersbreach.composeactors.data.datasource.network.NetworkDataSource -import com.developersbreach.composeactors.data.model.Actor -import com.developersbreach.composeactors.data.model.Movie -import javax.inject.Inject -import javax.inject.Singleton - -@Singleton -class SearchRepository @Inject constructor( - private val networkDataSource: NetworkDataSource -) { - - suspend fun getSearchableActorsData(query: String): List { - return networkDataSource.getSearchableActorsData(query) - } - - suspend fun getSearchableMoviesData(query: String): List { - return networkDataSource.getSearchableMoviesData(query) - } -} \ No newline at end of file diff --git a/app/src/main/java/com/developersbreach/composeactors/data/search/remote/SearchApi.kt b/app/src/main/java/com/developersbreach/composeactors/data/search/remote/SearchApi.kt new file mode 100644 index 0000000..b2e8851 --- /dev/null +++ b/app/src/main/java/com/developersbreach/composeactors/data/search/remote/SearchApi.kt @@ -0,0 +1,10 @@ +package com.developersbreach.composeactors.data.search.remote + +import com.developersbreach.composeactors.core.network.PagedResponse +import com.developersbreach.composeactors.data.model.Actor +import com.developersbreach.composeactors.data.model.Movie + +interface SearchApi { + suspend fun getSearchableActorsData(query: String): PagedResponse + suspend fun getSearchableMoviesData(query: String): PagedResponse +} \ No newline at end of file diff --git a/app/src/main/java/com/developersbreach/composeactors/data/search/remote/SearchApiImpl.kt b/app/src/main/java/com/developersbreach/composeactors/data/search/remote/SearchApiImpl.kt new file mode 100644 index 0000000..3bc3e02 --- /dev/null +++ b/app/src/main/java/com/developersbreach/composeactors/data/search/remote/SearchApiImpl.kt @@ -0,0 +1,34 @@ +package com.developersbreach.composeactors.data.search.remote + +import com.developersbreach.composeactors.core.network.BaseUrlProvider +import com.developersbreach.composeactors.core.network.HttpRequestHandler +import com.developersbreach.composeactors.core.network.PagedResponse +import com.developersbreach.composeactors.data.model.Actor +import com.developersbreach.composeactors.data.model.Movie +import java.net.URL +import javax.inject.Inject +import javax.inject.Singleton + +@Singleton +class SearchApiImpl @Inject constructor( + private val requestHandler: HttpRequestHandler +) : SearchApi, BaseUrlProvider() { + + // search/person?api_key=API_KEY&query=$pacino + override suspend fun getSearchableActorsData( + query: String + ): PagedResponse { + return requestHandler.getPagedResponse( + URL("${BASE_URL}search/person?${API_KEY}&query=${query.toEncodedQuery()}") + ) + } + + // search/movie?api_key=API_KEY&query=$thor + override suspend fun getSearchableMoviesData( + query: String + ): PagedResponse { + return requestHandler.getPagedResponse( + URL("${BASE_URL}search/movie?${API_KEY}&query=${query.toEncodedQuery()}") + ) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/developersbreach/composeactors/data/search/repository/SearchRepository.kt b/app/src/main/java/com/developersbreach/composeactors/data/search/repository/SearchRepository.kt new file mode 100644 index 0000000..f7daef8 --- /dev/null +++ b/app/src/main/java/com/developersbreach/composeactors/data/search/repository/SearchRepository.kt @@ -0,0 +1,9 @@ +package com.developersbreach.composeactors.data.search.repository + +import com.developersbreach.composeactors.data.model.Actor +import com.developersbreach.composeactors.data.model.Movie + +interface SearchRepository { + suspend fun getSearchableActorsData(query: String): List + suspend fun getSearchableMoviesData(query: String): List +} \ No newline at end of file diff --git a/app/src/main/java/com/developersbreach/composeactors/data/search/repository/SearchRepositoryImpl.kt b/app/src/main/java/com/developersbreach/composeactors/data/search/repository/SearchRepositoryImpl.kt new file mode 100644 index 0000000..85695bc --- /dev/null +++ b/app/src/main/java/com/developersbreach/composeactors/data/search/repository/SearchRepositoryImpl.kt @@ -0,0 +1,27 @@ +package com.developersbreach.composeactors.data.search.repository + +import com.developersbreach.composeactors.data.model.Actor +import com.developersbreach.composeactors.data.model.Movie +import com.developersbreach.composeactors.data.search.remote.SearchApi +import javax.inject.Inject +import javax.inject.Singleton +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.withContext + +@Singleton +class SearchRepositoryImpl @Inject constructor( + private val searchApi: SearchApi +) : SearchRepository { + + override suspend fun getSearchableActorsData( + query: String + ): List = withContext(Dispatchers.IO) { + searchApi.getSearchableActorsData(query).data + } + + override suspend fun getSearchableMoviesData( + query: String + ): List = withContext(Dispatchers.IO) { + searchApi.getSearchableMoviesData(query).data + } +} \ No newline at end of file diff --git a/app/src/main/java/com/developersbreach/composeactors/data/thumbnail/remote/YouTubeThumbnailProviderApi.kt b/app/src/main/java/com/developersbreach/composeactors/data/thumbnail/remote/YouTubeThumbnailProviderApi.kt new file mode 100644 index 0000000..55fbdd1 --- /dev/null +++ b/app/src/main/java/com/developersbreach/composeactors/data/thumbnail/remote/YouTubeThumbnailProviderApi.kt @@ -0,0 +1,5 @@ +package com.developersbreach.composeactors.data.thumbnail.remote + +interface YouTubeThumbnailProviderApi { + suspend fun getMovieTrailerThumbnail(trailerId: String) +} \ No newline at end of file diff --git a/app/src/main/java/com/developersbreach/composeactors/data/thumbnail/remote/YouTubeThumbnailProviderApiImpl.kt b/app/src/main/java/com/developersbreach/composeactors/data/thumbnail/remote/YouTubeThumbnailProviderApiImpl.kt new file mode 100644 index 0000000..1db720b --- /dev/null +++ b/app/src/main/java/com/developersbreach/composeactors/data/thumbnail/remote/YouTubeThumbnailProviderApiImpl.kt @@ -0,0 +1,19 @@ +package com.developersbreach.composeactors.data.thumbnail.remote + +import com.developersbreach.composeactors.core.network.HttpRequestHandler +import java.net.URL +import javax.inject.Inject +import javax.inject.Singleton + +@Singleton +class YouTubeThumbnailProviderApiImpl @Inject constructor( + private val requestHandler: HttpRequestHandler +) : YouTubeThumbnailProviderApi { + + // SUXWAEX2jlg + override suspend fun getMovieTrailerThumbnail(trailerId: String) { + return requestHandler.getResponse( + URL("https://img.youtube.com/vi/$trailerId/sddefault.jpg") + ) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/developersbreach/composeactors/data/trending/remote/TrendingApi.kt b/app/src/main/java/com/developersbreach/composeactors/data/trending/remote/TrendingApi.kt new file mode 100644 index 0000000..1ecadf1 --- /dev/null +++ b/app/src/main/java/com/developersbreach/composeactors/data/trending/remote/TrendingApi.kt @@ -0,0 +1,8 @@ +package com.developersbreach.composeactors.data.trending.remote + +import com.developersbreach.composeactors.core.network.PagedResponse +import com.developersbreach.composeactors.data.model.Actor + +interface TrendingApi { + suspend fun getTrendingActors(): PagedResponse +} \ No newline at end of file diff --git a/app/src/main/java/com/developersbreach/composeactors/data/trending/remote/TrendingApiImpl.kt b/app/src/main/java/com/developersbreach/composeactors/data/trending/remote/TrendingApiImpl.kt new file mode 100644 index 0000000..9926212 --- /dev/null +++ b/app/src/main/java/com/developersbreach/composeactors/data/trending/remote/TrendingApiImpl.kt @@ -0,0 +1,22 @@ +package com.developersbreach.composeactors.data.trending.remote + +import com.developersbreach.composeactors.core.network.BaseUrlProvider +import com.developersbreach.composeactors.core.network.HttpRequestHandler +import com.developersbreach.composeactors.core.network.PagedResponse +import com.developersbreach.composeactors.data.model.Actor +import java.net.URL +import javax.inject.Inject +import javax.inject.Singleton + +@Singleton +class TrendingApiImpl @Inject constructor( + private val requestHandler: HttpRequestHandler +) : TrendingApi, BaseUrlProvider() { + + // trending/person/week?api_key=API_KEY + override suspend fun getTrendingActors(): PagedResponse { + return requestHandler.getPagedResponse( + URL("${BASE_URL}trending/person/week?${API_KEY}") + ) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/developersbreach/composeactors/data/trending/repository/TrendingRepository.kt b/app/src/main/java/com/developersbreach/composeactors/data/trending/repository/TrendingRepository.kt new file mode 100644 index 0000000..b247bf8 --- /dev/null +++ b/app/src/main/java/com/developersbreach/composeactors/data/trending/repository/TrendingRepository.kt @@ -0,0 +1,7 @@ +package com.developersbreach.composeactors.data.trending.repository + +import com.developersbreach.composeactors.data.model.Actor + +interface TrendingRepository { + suspend fun getTrendingActors(): List +} \ No newline at end of file diff --git a/app/src/main/java/com/developersbreach/composeactors/data/trending/repository/TrendingRepositoryImpl.kt b/app/src/main/java/com/developersbreach/composeactors/data/trending/repository/TrendingRepositoryImpl.kt new file mode 100644 index 0000000..8b0ad0a --- /dev/null +++ b/app/src/main/java/com/developersbreach/composeactors/data/trending/repository/TrendingRepositoryImpl.kt @@ -0,0 +1,18 @@ +package com.developersbreach.composeactors.data.trending.repository + +import com.developersbreach.composeactors.data.model.Actor +import com.developersbreach.composeactors.data.trending.remote.TrendingApi +import javax.inject.Inject +import javax.inject.Singleton +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.withContext + +@Singleton +class TrendingRepositoryImpl @Inject constructor( + private val trendingApi: TrendingApi, +) : TrendingRepository { + + override suspend fun getTrendingActors(): List = withContext(Dispatchers.IO) { + trendingApi.getTrendingActors().data + } +} \ No newline at end of file diff --git a/app/src/main/java/com/developersbreach/composeactors/di/ApiModule.kt b/app/src/main/java/com/developersbreach/composeactors/di/ApiModule.kt new file mode 100644 index 0000000..17d8c01 --- /dev/null +++ b/app/src/main/java/com/developersbreach/composeactors/di/ApiModule.kt @@ -0,0 +1,96 @@ +package com.developersbreach.composeactors.di + +import com.developersbreach.composeactors.core.network.HttpRequestHandler +import com.developersbreach.composeactors.data.datasource.database.DatabaseDataSource +import com.developersbreach.composeactors.data.movie.remote.MovieApi +import com.developersbreach.composeactors.data.movie.remote.MovieApiImpl +import com.developersbreach.composeactors.data.movie.repository.MovieRepository +import com.developersbreach.composeactors.data.movie.repository.MovieRepositoryImpl +import com.developersbreach.composeactors.data.person.remote.PersonApi +import com.developersbreach.composeactors.data.person.remote.PersonApiImpl +import com.developersbreach.composeactors.data.person.repository.PersonRepository +import com.developersbreach.composeactors.data.person.repository.PersonRepositoryImpl +import com.developersbreach.composeactors.data.search.remote.SearchApi +import com.developersbreach.composeactors.data.search.remote.SearchApiImpl +import com.developersbreach.composeactors.data.search.repository.SearchRepository +import com.developersbreach.composeactors.data.search.repository.SearchRepositoryImpl +import com.developersbreach.composeactors.data.trending.remote.TrendingApi +import com.developersbreach.composeactors.data.trending.remote.TrendingApiImpl +import com.developersbreach.composeactors.data.trending.repository.TrendingRepository +import com.developersbreach.composeactors.data.trending.repository.TrendingRepositoryImpl +import dagger.Module +import dagger.Provides +import dagger.hilt.InstallIn +import dagger.hilt.components.SingletonComponent +import javax.inject.Singleton + +@Module +@InstallIn(SingletonComponent::class) +object ApiModule { + + @Provides + @Singleton + fun provideTrendingApi( + requestHandler: HttpRequestHandler + ): TrendingApi { + return TrendingApiImpl(requestHandler) + } + + @Provides + @Singleton + fun provideTrendingRepository( + trendingApi: TrendingApi + ): TrendingRepository { + return TrendingRepositoryImpl(trendingApi) + } + + @Provides + @Singleton + fun provideSearchApiImpl( + requestHandler: HttpRequestHandler + ): SearchApi { + return SearchApiImpl(requestHandler) + } + + @Provides + @Singleton + fun provideSearchRepository( + searchApi: SearchApi + ): SearchRepository { + return SearchRepositoryImpl(searchApi) + } + + @Provides + @Singleton + fun provideMovieApiImpl( + requestHandler: HttpRequestHandler + ): MovieApi { + return MovieApiImpl(requestHandler) + } + + @Provides + @Singleton + fun provideMovieRepository( + movieApi: MovieApi, + databaseDataSource: DatabaseDataSource + ): MovieRepository { + return MovieRepositoryImpl(movieApi, databaseDataSource) + } + + @Provides + @Singleton + fun providePersonApiImpl( + requestHandler: HttpRequestHandler + ): PersonApi { + return PersonApiImpl(requestHandler) + } + + @Provides + @Singleton + fun providePersonRepository( + personApi: PersonApi, + databaseDataSource: DatabaseDataSource + ): PersonRepository { + return PersonRepositoryImpl(personApi, databaseDataSource) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/developersbreach/composeactors/domain/GetPagedMovies.kt b/app/src/main/java/com/developersbreach/composeactors/domain/movie/GetPagedMovies.kt similarity index 79% rename from app/src/main/java/com/developersbreach/composeactors/domain/GetPagedMovies.kt rename to app/src/main/java/com/developersbreach/composeactors/domain/movie/GetPagedMovies.kt index 709d756..e8d5574 100644 --- a/app/src/main/java/com/developersbreach/composeactors/domain/GetPagedMovies.kt +++ b/app/src/main/java/com/developersbreach/composeactors/domain/movie/GetPagedMovies.kt @@ -1,13 +1,12 @@ -package com.developersbreach.composeactors.domain +package com.developersbreach.composeactors.domain.movie import androidx.paging.Pager import androidx.paging.PagingConfig import androidx.paging.PagingData -import androidx.paging.cachedIn import com.developersbreach.composeactors.data.model.Movie -import com.developersbreach.composeactors.data.repository.movie.MovieRepository +import com.developersbreach.composeactors.data.movie.paging.MoviesPagingSource +import com.developersbreach.composeactors.data.movie.repository.MovieRepository import javax.inject.Inject -import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.Flow class GetPagedMovies @Inject constructor( diff --git a/app/src/main/java/com/developersbreach/composeactors/domain/useCase/RemoveActorsFromFavoritesUseCase.kt b/app/src/main/java/com/developersbreach/composeactors/domain/useCase/RemoveActorsFromFavoritesUseCase.kt deleted file mode 100644 index 6afe7b4..0000000 --- a/app/src/main/java/com/developersbreach/composeactors/domain/useCase/RemoveActorsFromFavoritesUseCase.kt +++ /dev/null @@ -1,15 +0,0 @@ -package com.developersbreach.composeactors.domain.useCase - -import com.developersbreach.composeactors.data.model.FavoriteActor -import com.developersbreach.composeactors.data.repository.actor.ActorRepository -import javax.inject.Inject - -class RemoveActorsFromFavoritesUseCase @Inject constructor( - private val actorRepository: ActorRepository -) { - suspend operator fun invoke(favoriteActor: FavoriteActor) { - actorRepository.deleteSelectedFavoriteActor( - favoriteActor = favoriteActor - ) - } -} \ No newline at end of file diff --git a/app/src/main/java/com/developersbreach/composeactors/domain/useCase/RemoveMovieFromFavoritesUseCase.kt b/app/src/main/java/com/developersbreach/composeactors/domain/useCase/RemoveMovieFromFavoritesUseCase.kt deleted file mode 100644 index cb71a96..0000000 --- a/app/src/main/java/com/developersbreach/composeactors/domain/useCase/RemoveMovieFromFavoritesUseCase.kt +++ /dev/null @@ -1,15 +0,0 @@ -package com.developersbreach.composeactors.domain.useCase - -import com.developersbreach.composeactors.data.model.Movie -import com.developersbreach.composeactors.data.repository.movie.MovieRepository -import javax.inject.Inject - -class RemoveMovieFromFavoritesUseCase @Inject constructor( - private val movieRepository: MovieRepository -) { - suspend operator fun invoke(movie: Movie) { - movieRepository.deleteSelectedFavoriteMovie( - movie = movie - ) - } -} \ No newline at end of file diff --git a/app/src/main/java/com/developersbreach/composeactors/ui/screens/actorDetails/ActorDetailsViewModel.kt b/app/src/main/java/com/developersbreach/composeactors/ui/screens/actorDetails/ActorDetailsViewModel.kt index 092c0e4..94ff8fe 100644 --- a/app/src/main/java/com/developersbreach/composeactors/ui/screens/actorDetails/ActorDetailsViewModel.kt +++ b/app/src/main/java/com/developersbreach/composeactors/ui/screens/actorDetails/ActorDetailsViewModel.kt @@ -9,9 +9,8 @@ import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import com.developersbreach.composeactors.data.model.ActorDetail import com.developersbreach.composeactors.data.model.toFavoriteActor -import com.developersbreach.composeactors.data.repository.actor.ActorRepository -import com.developersbreach.composeactors.data.repository.movie.MovieRepository -import com.developersbreach.composeactors.domain.useCase.RemoveActorsFromFavoritesUseCase +import com.developersbreach.composeactors.data.movie.repository.MovieRepository +import com.developersbreach.composeactors.data.person.repository.PersonRepository import com.developersbreach.composeactors.ui.navigation.AppDestinations.ACTOR_DETAIL_ID_KEY import dagger.hilt.android.lifecycle.HiltViewModel import java.io.IOException @@ -26,8 +25,7 @@ import timber.log.Timber class ActorDetailsViewModel @Inject constructor( savedStateHandle: SavedStateHandle, private val movieRepository: MovieRepository, - private val actorRepository: ActorRepository, - private val removeActorsFromFavoritesUseCase: RemoveActorsFromFavoritesUseCase + private val personRepository: PersonRepository, ) : ViewModel() { private val actorId: Int = checkNotNull(savedStateHandle[ACTOR_DETAIL_ID_KEY]) @@ -38,7 +36,7 @@ class ActorDetailsViewModel @Inject constructor( var sheetUIState by mutableStateOf(ActorDetailsSheetUIState()) private set - val isFavoriteMovie: LiveData = actorRepository.isFavoriteActor(actorId) + val isFavoriteMovie: LiveData = personRepository.isFavoritePerson(actorId) init { viewModelScope.launch { @@ -52,8 +50,8 @@ class ActorDetailsViewModel @Inject constructor( private suspend fun startFetchingDetails() { detailUIState = ActorDetailsUIState(isFetchingDetails = true, actorData = null) - val actorData = actorRepository.getSelectedActorData(actorId) - val castData = actorRepository.getCastData(actorId) + val actorData = personRepository.getPersonDetails(actorId) + val castData = personRepository.getCastDetails(actorId) detailUIState = ActorDetailsUIState( castList = castData, actorData = actorData, @@ -72,7 +70,7 @@ class ActorDetailsViewModel @Inject constructor( viewModelScope.launch { try { movieId?.let { id -> - val movieData = movieRepository.getSelectedMovieData(id) + val movieData = movieRepository.getMovieDetails(id) sheetUIState = ActorDetailsSheetUIState(selectedMovieDetails = movieData) } } catch (e: IOException) { @@ -85,7 +83,7 @@ class ActorDetailsViewModel @Inject constructor( viewModelScope.launch { val actor: ActorDetail? = detailUIState.actorData if (actor != null) { - actorRepository.addActorsToFavorite( + personRepository.addPersonToFavorite( actor.toFavoriteActor() ) } else { @@ -98,7 +96,7 @@ class ActorDetailsViewModel @Inject constructor( viewModelScope.launch { val actor: ActorDetail? = detailUIState.actorData if (actor != null) { - removeActorsFromFavoritesUseCase( + personRepository.deleteSelectedFavoritePerson( actor.toFavoriteActor() ) } else { diff --git a/app/src/main/java/com/developersbreach/composeactors/ui/screens/favorites/FavoriteViewModel.kt b/app/src/main/java/com/developersbreach/composeactors/ui/screens/favorites/FavoriteViewModel.kt index a2d175d..31fc10f 100644 --- a/app/src/main/java/com/developersbreach/composeactors/ui/screens/favorites/FavoriteViewModel.kt +++ b/app/src/main/java/com/developersbreach/composeactors/ui/screens/favorites/FavoriteViewModel.kt @@ -5,32 +5,30 @@ import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import com.developersbreach.composeactors.data.model.FavoriteActor import com.developersbreach.composeactors.data.model.Movie -import com.developersbreach.composeactors.data.repository.actor.ActorRepository -import com.developersbreach.composeactors.data.repository.movie.MovieRepository -import com.developersbreach.composeactors.domain.useCase.RemoveMovieFromFavoritesUseCase +import com.developersbreach.composeactors.data.movie.repository.MovieRepository +import com.developersbreach.composeactors.data.person.repository.PersonRepository import dagger.hilt.android.lifecycle.HiltViewModel import javax.inject.Inject import kotlinx.coroutines.launch @HiltViewModel class FavoriteViewModel @Inject constructor( - movieRepository: MovieRepository, - private val actorRepository: ActorRepository, - private val removeMovieFromFavoritesUseCase: RemoveMovieFromFavoritesUseCase, + private val movieRepository: MovieRepository, + private val personRepository: PersonRepository, ) : ViewModel() { val favoriteMovies: LiveData> = movieRepository.getAllFavoriteMovies() - val favoriteActors: LiveData> = actorRepository.getAllFavoriteActors() + val favoriteActors: LiveData> = personRepository.getAllFavoritePersons() fun removeMovieFromFavorites(movie: Movie) { viewModelScope.launch { - removeMovieFromFavoritesUseCase.invoke(movie) + movieRepository.deleteSelectedFavoriteMovie(movie) } } fun removeActorFromFavorites(favoriteActor: FavoriteActor) { viewModelScope.launch { - actorRepository.deleteSelectedFavoriteActor(favoriteActor) + personRepository.deleteSelectedFavoritePerson(favoriteActor) } } } \ No newline at end of file diff --git a/app/src/main/java/com/developersbreach/composeactors/ui/screens/home/HomeViewModel.kt b/app/src/main/java/com/developersbreach/composeactors/ui/screens/home/HomeViewModel.kt index 98dc506..ca8ce49 100644 --- a/app/src/main/java/com/developersbreach/composeactors/ui/screens/home/HomeViewModel.kt +++ b/app/src/main/java/com/developersbreach/composeactors/ui/screens/home/HomeViewModel.kt @@ -8,8 +8,9 @@ import androidx.lifecycle.MutableLiveData import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import androidx.paging.cachedIn -import com.developersbreach.composeactors.data.repository.actor.ActorRepository -import com.developersbreach.composeactors.domain.GetPagedMovies +import com.developersbreach.composeactors.data.movie.repository.MovieRepository +import com.developersbreach.composeactors.data.person.repository.PersonRepository +import com.developersbreach.composeactors.domain.movie.GetPagedMovies import com.developersbreach.composeactors.ui.screens.search.SearchType import dagger.hilt.android.lifecycle.HiltViewModel import java.io.IOException @@ -22,7 +23,8 @@ import timber.log.Timber */ @HiltViewModel class HomeViewModel @Inject constructor( - private val actorRepository: ActorRepository, + private val personRepository: PersonRepository, + private val movieRepository: MovieRepository, private val getPagedMovies: GetPagedMovies ) : ViewModel() { @@ -48,10 +50,10 @@ class HomeViewModel @Inject constructor( private suspend fun startFetchingActors() { uiState = HomeUIState(isFetchingActors = true) uiState = HomeUIState( - popularActorList = actorRepository.getPopularActorsData(), - trendingActorList = actorRepository.getTrendingActorsData(), + popularActorList = personRepository.getPopularPersons(), + trendingActorList = personRepository.getTrendingPersons(), isFetchingActors = false, - upcomingMoviesList = actorRepository.getUpcomingMoviesData(), + upcomingMoviesList = movieRepository.getUpcomingMovies(), nowPlayingMoviesList = getPagedMovies().cachedIn(viewModelScope) ) } diff --git a/app/src/main/java/com/developersbreach/composeactors/ui/screens/movieDetail/MovieDetailViewModel.kt b/app/src/main/java/com/developersbreach/composeactors/ui/screens/movieDetail/MovieDetailViewModel.kt index a133b6e..5421761 100644 --- a/app/src/main/java/com/developersbreach/composeactors/ui/screens/movieDetail/MovieDetailViewModel.kt +++ b/app/src/main/java/com/developersbreach/composeactors/ui/screens/movieDetail/MovieDetailViewModel.kt @@ -9,9 +9,8 @@ import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import com.developersbreach.composeactors.data.model.Movie import com.developersbreach.composeactors.data.model.MovieDetail -import com.developersbreach.composeactors.data.repository.actor.ActorRepository -import com.developersbreach.composeactors.data.repository.movie.MovieRepository -import com.developersbreach.composeactors.domain.useCase.RemoveMovieFromFavoritesUseCase +import com.developersbreach.composeactors.data.movie.repository.MovieRepository +import com.developersbreach.composeactors.data.person.repository.PersonRepository import com.developersbreach.composeactors.ui.navigation.AppDestinations.MOVIE_DETAILS_ID_KEY import dagger.hilt.android.lifecycle.HiltViewModel import java.io.IOException @@ -23,8 +22,7 @@ import timber.log.Timber class MovieDetailViewModel @Inject constructor( savedStateHandle: SavedStateHandle, private val movieRepository: MovieRepository, - private val actorRepository: ActorRepository, - private val removeMovieFromFavoritesUseCase: RemoveMovieFromFavoritesUseCase, + private val personRepository: PersonRepository, ) : ViewModel() { private val movieId: Int = checkNotNull(savedStateHandle[MOVIE_DETAILS_ID_KEY]) @@ -52,11 +50,11 @@ class MovieDetailViewModel @Inject constructor( private suspend fun startFetchingDetails() { uiState = MovieDetailsUIState(isFetchingDetails = true, movieData = null) uiState = MovieDetailsUIState( - movieData = movieRepository.getSelectedMovieData(movieId), - similarMovies = movieRepository.getSimilarMoviesByIdData(movieId), - recommendedMovies = movieRepository.getRecommendedMoviesByIdData(movieId), - movieCast = movieRepository.getMovieCastByIdData(movieId), - movieProviders = movieRepository.getMovieProvidersData(movieId), + movieData = movieRepository.getMovieDetails(movieId), + similarMovies = movieRepository.getSimilarMovies(movieId), + recommendedMovies = movieRepository.getRecommendedMovies(movieId), + movieCast = movieRepository.getMovieCast(movieId), + movieProviders = movieRepository.getMovieProviders(movieId), isFetchingDetails = false ) } @@ -81,7 +79,7 @@ class MovieDetailViewModel @Inject constructor( viewModelScope.launch { val movie: MovieDetail? = uiState.movieData if (movie != null) { - removeMovieFromFavoritesUseCase( + movieRepository.deleteSelectedFavoriteMovie( Movie( movieId = movie.movieId, movieName = movie.movieTitle, @@ -106,7 +104,7 @@ class MovieDetailViewModel @Inject constructor( viewModelScope.launch { try { if (actorId != null) { - val actorsData = actorRepository.getSelectedActorData(actorId) + val actorsData = personRepository.getPersonDetails(actorId) sheetUiState = ActorsSheetUIState(selectedActorDetails = actorsData) } } catch (e: IOException) { @@ -121,7 +119,7 @@ class MovieDetailViewModel @Inject constructor( viewModelScope.launch { try { movieId?.let { id -> - val movieData = movieRepository.getSelectedMovieData(id) + val movieData = movieRepository.getMovieDetails(id) movieSheetUiState = MovieSheetUIState(selectedMovieDetails = movieData) } } catch (e: IOException) { diff --git a/app/src/main/java/com/developersbreach/composeactors/ui/screens/search/SearchViewModel.kt b/app/src/main/java/com/developersbreach/composeactors/ui/screens/search/SearchViewModel.kt index 4d25dcb..69957d9 100644 --- a/app/src/main/java/com/developersbreach/composeactors/ui/screens/search/SearchViewModel.kt +++ b/app/src/main/java/com/developersbreach/composeactors/ui/screens/search/SearchViewModel.kt @@ -6,7 +6,7 @@ import androidx.compose.runtime.setValue import androidx.lifecycle.SavedStateHandle import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope -import com.developersbreach.composeactors.data.repository.search.SearchRepository +import com.developersbreach.composeactors.data.search.repository.SearchRepository import com.developersbreach.composeactors.ui.navigation.AppDestinations.SEARCH_TYPE import dagger.hilt.android.lifecycle.HiltViewModel import javax.inject.Inject From ca90d14ff2f79159170dc7b79f5035bfa196803b Mon Sep 17 00:00:00 2001 From: Raj Date: Sun, 22 Dec 2024 21:54:18 +0530 Subject: [PATCH 3/4] Renamed all references of Actor/Actors to Person/Persons --- .../ui/screens/home/HomeScreenUITest.kt | 18 ++-- .../core/database/AppDatabase.kt | 8 +- .../core/database/dao/FavoriteActorsDao.kt | 24 ------ .../core/database/dao/FavoritePersonsDao.kt | 24 ++++++ .../database/entity/FavoriteActorsEntity.kt | 24 ------ .../database/entity/FavoritePersonsEntity.kt | 24 ++++++ .../datasource/database/DatabaseDataSource.kt | 36 ++++---- .../fake/{ActorData.kt => PersonData.kt} | 62 +++++++------- .../data/model/BottomSheetType.kt | 6 +- .../composeactors/data/model/Cast.kt | 2 +- .../{FavoriteActor.kt => FavoritePerson.kt} | 6 +- .../data/model/{Actor.kt => Person.kt} | 6 +- .../model/{ActorDetail.kt => PersonDetail.kt} | 38 ++++----- .../data/person/remote/PersonApi.kt | 12 +-- .../data/person/remote/PersonApiImpl.kt | 18 ++-- .../person/repository/PersonRepository.kt | 22 ++--- .../person/repository/PersonRepositoryImpl.kt | 34 ++++---- .../data/search/remote/SearchApi.kt | 4 +- .../data/search/remote/SearchApiImpl.kt | 6 +- .../search/repository/SearchRepository.kt | 4 +- .../search/repository/SearchRepositoryImpl.kt | 4 +- .../data/trending/remote/TrendingApi.kt | 4 +- .../data/trending/remote/TrendingApiImpl.kt | 6 +- .../trending/repository/TrendingRepository.kt | 4 +- .../repository/TrendingRepositoryImpl.kt | 4 +- .../composeactors/di/DaosModule.kt | 8 +- .../composeactors/ui/navigation/AppActions.kt | 8 +- .../ui/navigation/AppDestinations.kt | 2 +- .../ui/navigation/AppNavigation.kt | 6 +- .../ui/screens/actorDetails/ActorDetailsUI.kt | 8 +- .../actorDetails/ActorDetailsUIState.kt | 4 +- .../actorDetails/ActorDetailsViewModel.kt | 20 ++--- .../composables/ActorInfoHeader.kt | 10 +-- .../ui/screens/favorites/FavoriteViewModel.kt | 8 +- .../ui/screens/favorites/FavoritesScreen.kt | 16 ++-- .../ui/screens/favorites/FavoritesScreenUI.kt | 30 +++---- .../tabs/FavoriteActorsTabContent.kt | 84 +++++++++---------- .../ui/screens/home/HomeScreen.kt | 17 +--- .../ui/screens/home/HomeScreenUI.kt | 40 ++++----- .../ui/screens/home/HomeTopAppBar.kt | 2 +- .../ui/screens/home/HomeUIState.kt | 8 +- .../ui/screens/home/HomeViewModel.kt | 10 +-- .../ui/screens/home/tabs/ActorsTabContent.kt | 71 ++++++++-------- .../ui/screens/home/tabs/MoviesTabContent.kt | 6 +- .../modalSheets/SheetContentActorDetails.kt | 12 +-- .../movieDetail/MovieDetailViewModel.kt | 14 ++-- .../screens/movieDetail/MovieDetailsScreen.kt | 4 +- .../ui/screens/movieDetail/MovieDetailsUI.kt | 2 +- .../movieDetail/MovieDetailsUIState.kt | 4 +- .../movieDetail/composables/GetMovieCast.kt | 4 +- .../GetSimilarOrRecommendedMovies.kt | 2 +- .../ui/screens/search/ActorSearchUI.kt | 51 +++++------ .../ui/screens/search/SearchScreen.kt | 16 +--- .../ui/screens/search/SearchScreenUI.kt | 14 ++-- .../ui/screens/search/SearchType.kt | 2 +- .../ui/screens/search/SearchUIState.kt | 4 +- .../ui/screens/search/SearchViewModel.kt | 4 +- 57 files changed, 429 insertions(+), 462 deletions(-) delete mode 100644 app/src/main/java/com/developersbreach/composeactors/core/database/dao/FavoriteActorsDao.kt create mode 100644 app/src/main/java/com/developersbreach/composeactors/core/database/dao/FavoritePersonsDao.kt delete mode 100644 app/src/main/java/com/developersbreach/composeactors/core/database/entity/FavoriteActorsEntity.kt create mode 100644 app/src/main/java/com/developersbreach/composeactors/core/database/entity/FavoritePersonsEntity.kt rename app/src/main/java/com/developersbreach/composeactors/data/datasource/fake/{ActorData.kt => PersonData.kt} (50%) rename app/src/main/java/com/developersbreach/composeactors/data/model/{FavoriteActor.kt => FavoritePerson.kt} (64%) rename app/src/main/java/com/developersbreach/composeactors/data/model/{Actor.kt => Person.kt} (79%) rename app/src/main/java/com/developersbreach/composeactors/data/model/{ActorDetail.kt => PersonDetail.kt} (51%) diff --git a/app/src/androidTest/java/com/developersbreach/composeactors/ui/screens/home/HomeScreenUITest.kt b/app/src/androidTest/java/com/developersbreach/composeactors/ui/screens/home/HomeScreenUITest.kt index 268316f..f7a6326 100644 --- a/app/src/androidTest/java/com/developersbreach/composeactors/ui/screens/home/HomeScreenUITest.kt +++ b/app/src/androidTest/java/com/developersbreach/composeactors/ui/screens/home/HomeScreenUITest.kt @@ -11,8 +11,8 @@ import androidx.compose.ui.test.performClick import androidx.paging.PagingData import androidx.test.ext.junit.runners.AndroidJUnit4 import com.developersbreach.composeactors.data.datasource.fake.nowPlayingMoviesList -import com.developersbreach.composeactors.data.datasource.fake.popularActorList -import com.developersbreach.composeactors.data.datasource.fake.trendingActorList +import com.developersbreach.composeactors.data.datasource.fake.popularPersonLists +import com.developersbreach.composeactors.data.datasource.fake.trendingPersonLists import com.developersbreach.composeactors.data.datasource.fake.upcomingMoviesList import com.developersbreach.composeactors.ui.screens.search.SearchType import kotlinx.coroutines.flow.flowOf @@ -28,28 +28,28 @@ class HomeScreenUITest { val composeTestRule = createComposeRule() private val mockHomeUIState: HomeUIState = HomeUIState( - popularActorList = popularActorList, - trendingActorList = trendingActorList, - isFetchingActors = false, + popularPersonList = popularPersonLists, + trendingPersonList = trendingPersonLists, + isFetchingPersons = false, upcomingMoviesList = upcomingMoviesList, nowPlayingMoviesList = flowOf(PagingData.from(nowPlayingMoviesList)) ) @Composable private fun HomeScreenUIContent( - navigateToSelectedActor: (actorId: Int) -> Unit = { }, + navigateToSelectedPerson: (personId: Int) -> Unit = { }, navigateToSelectedMovie: (movieId: Int) -> Unit = { }, navigateToFavorite: () -> Unit = { }, navigateToSearch: (searchType: SearchType) -> Unit = { }, updateHomeSearchType: (searchType: SearchType) -> Unit = { }, navigateToAbout: () -> Unit = { }, - navigateToSearchBySearchType: SearchType = SearchType.Actors, + navigateToSearchBySearchType: SearchType = SearchType.Persons, homeSheetUIState: HomeSheetUIState = HomeSheetUIState(), homeUIState: HomeUIState = mockHomeUIState ) { HomeScreenUI( modifier = Modifier, - navigateToSelectedActor = navigateToSelectedActor, + navigateToSelectedPerson = navigateToSelectedPerson, navigateToSelectedMovie = navigateToSelectedMovie, navigateToFavorite = navigateToFavorite, navigateToSearch = navigateToSearch, @@ -145,7 +145,7 @@ class HomeScreenUITest { fun onClickSearchTopAppBar_shouldNavigateToSearchScreen() { composeTestRule.setContent { HomeScreenUIContent( - navigateToSearch = { SearchType.Actors }, + navigateToSearch = { SearchType.Persons }, ) } diff --git a/app/src/main/java/com/developersbreach/composeactors/core/database/AppDatabase.kt b/app/src/main/java/com/developersbreach/composeactors/core/database/AppDatabase.kt index f35de36..3453e3c 100644 --- a/app/src/main/java/com/developersbreach/composeactors/core/database/AppDatabase.kt +++ b/app/src/main/java/com/developersbreach/composeactors/core/database/AppDatabase.kt @@ -2,18 +2,18 @@ package com.developersbreach.composeactors.core.database import androidx.room.Database import androidx.room.RoomDatabase -import com.developersbreach.composeactors.core.database.dao.FavoriteActorsDao +import com.developersbreach.composeactors.core.database.dao.FavoritePersonsDao import com.developersbreach.composeactors.core.database.dao.FavoriteMoviesDao -import com.developersbreach.composeactors.core.database.entity.FavoriteActorsEntity +import com.developersbreach.composeactors.core.database.entity.FavoritePersonsEntity import com.developersbreach.composeactors.core.database.entity.FavoriteMoviesEntity @Database( - entities = [FavoriteActorsEntity::class, FavoriteMoviesEntity::class], + entities = [FavoritePersonsEntity::class, FavoriteMoviesEntity::class], version = 4, exportSchema = false, ) abstract class AppDatabase : RoomDatabase() { - abstract val favoriteActorsDao: FavoriteActorsDao + abstract val favoritePersonsDao: FavoritePersonsDao abstract val favoriteMoviesDao: FavoriteMoviesDao } \ No newline at end of file diff --git a/app/src/main/java/com/developersbreach/composeactors/core/database/dao/FavoriteActorsDao.kt b/app/src/main/java/com/developersbreach/composeactors/core/database/dao/FavoriteActorsDao.kt deleted file mode 100644 index 77f9a36..0000000 --- a/app/src/main/java/com/developersbreach/composeactors/core/database/dao/FavoriteActorsDao.kt +++ /dev/null @@ -1,24 +0,0 @@ -package com.developersbreach.composeactors.core.database.dao - -import androidx.lifecycle.LiveData -import androidx.room.* -import com.developersbreach.composeactors.core.database.entity.FavoriteActorsEntity - -@Dao -interface FavoriteActorsDao { - - @Insert(onConflict = OnConflictStrategy.REPLACE) - fun addActorToFavorites(favoriteActorsEntity: FavoriteActorsEntity) - - @Query("SELECT * FROM favorite_actors_table") - fun getAllFavoriteActors(): LiveData> - - @Query("DELETE FROM favorite_actors_table") - fun deleteAllFavoriteActors() - - @Delete - fun deleteSelectedFavoriteActor(favoriteActorsEntity: FavoriteActorsEntity) - - @Query("SELECT column_actor_id FROM favorite_actors_table WHERE column_actor_id = :actorId") - fun checkIfActorIsFavorite(actorId: Int): LiveData -} \ No newline at end of file diff --git a/app/src/main/java/com/developersbreach/composeactors/core/database/dao/FavoritePersonsDao.kt b/app/src/main/java/com/developersbreach/composeactors/core/database/dao/FavoritePersonsDao.kt new file mode 100644 index 0000000..dbb6bc9 --- /dev/null +++ b/app/src/main/java/com/developersbreach/composeactors/core/database/dao/FavoritePersonsDao.kt @@ -0,0 +1,24 @@ +package com.developersbreach.composeactors.core.database.dao + +import androidx.lifecycle.LiveData +import androidx.room.* +import com.developersbreach.composeactors.core.database.entity.FavoritePersonsEntity + +@Dao +interface FavoritePersonsDao { + + @Insert(onConflict = OnConflictStrategy.REPLACE) + fun addPersonToFavorites(favoritePersonsEntity: FavoritePersonsEntity) + + @Query("SELECT * FROM favorite_persons_table") + fun getAllFavoritePersons(): LiveData> + + @Query("DELETE FROM favorite_persons_table") + fun deleteAllFavoritePersons() + + @Delete + fun deleteSelectedFavoritePerson(favoritePersonsEntity: FavoritePersonsEntity) + + @Query("SELECT column_person_id FROM favorite_persons_table WHERE column_person_id = :personId") + fun checkIfPersonIsFavorite(personId: Int): LiveData +} \ No newline at end of file diff --git a/app/src/main/java/com/developersbreach/composeactors/core/database/entity/FavoriteActorsEntity.kt b/app/src/main/java/com/developersbreach/composeactors/core/database/entity/FavoriteActorsEntity.kt deleted file mode 100644 index 936daf4..0000000 --- a/app/src/main/java/com/developersbreach/composeactors/core/database/entity/FavoriteActorsEntity.kt +++ /dev/null @@ -1,24 +0,0 @@ -package com.developersbreach.composeactors.core.database.entity - -import androidx.compose.runtime.Stable -import androidx.room.ColumnInfo -import androidx.room.Entity -import androidx.room.PrimaryKey - -@Entity(tableName = "favorite_actors_table") -data class FavoriteActorsEntity( - - @Stable - @PrimaryKey - @ColumnInfo(name = "column_actor_id") - val actorId: Int, - - @ColumnInfo(name = "column_actor_name") - val actorName: String, - - @ColumnInfo(name = "column_actor_profileUrl") - val actorProfileUrl: String, - - @ColumnInfo(name = "column_actor_placeOfBirth") - val actorPlaceOfBirth: String? -) diff --git a/app/src/main/java/com/developersbreach/composeactors/core/database/entity/FavoritePersonsEntity.kt b/app/src/main/java/com/developersbreach/composeactors/core/database/entity/FavoritePersonsEntity.kt new file mode 100644 index 0000000..8643dc5 --- /dev/null +++ b/app/src/main/java/com/developersbreach/composeactors/core/database/entity/FavoritePersonsEntity.kt @@ -0,0 +1,24 @@ +package com.developersbreach.composeactors.core.database.entity + +import androidx.compose.runtime.Stable +import androidx.room.ColumnInfo +import androidx.room.Entity +import androidx.room.PrimaryKey + +@Entity(tableName = "favorite_persons_table") +data class FavoritePersonsEntity( + + @Stable + @PrimaryKey + @ColumnInfo(name = "column_person_id") + val personId: Int, + + @ColumnInfo(name = "column_person_name") + val personName: String, + + @ColumnInfo(name = "column_person_profileUrl") + val personProfileUrl: String, + + @ColumnInfo(name = "column_person_placeOfBirth") + val personPlaceOfBirth: String? +) diff --git a/app/src/main/java/com/developersbreach/composeactors/data/datasource/database/DatabaseDataSource.kt b/app/src/main/java/com/developersbreach/composeactors/data/datasource/database/DatabaseDataSource.kt index 4784235..bb5f22e 100644 --- a/app/src/main/java/com/developersbreach/composeactors/data/datasource/database/DatabaseDataSource.kt +++ b/app/src/main/java/com/developersbreach/composeactors/data/datasource/database/DatabaseDataSource.kt @@ -3,10 +3,10 @@ package com.developersbreach.composeactors.data.datasource.database import androidx.lifecycle.LiveData import androidx.lifecycle.map import com.developersbreach.composeactors.core.database.AppDatabase -import com.developersbreach.composeactors.data.model.FavoriteActor +import com.developersbreach.composeactors.data.model.FavoritePerson import com.developersbreach.composeactors.data.model.Movie -import com.developersbreach.composeactors.data.model.actorAsDatabaseModel -import com.developersbreach.composeactors.data.model.actorAsDomainModel +import com.developersbreach.composeactors.data.model.personAsDatabaseModel +import com.developersbreach.composeactors.data.model.personAsDomainModel import com.developersbreach.composeactors.data.model.movieAsDatabaseModel import com.developersbreach.composeactors.data.model.movieAsDomainModel import javax.inject.Inject @@ -26,10 +26,10 @@ class DatabaseDataSource @Inject constructor( } } - fun getAllFavoriteActors(): LiveData> { - val allFavoriteActors = database.favoriteActorsDao.getAllFavoriteActors() - return allFavoriteActors.map { favEntityList -> - favEntityList.actorAsDomainModel() + fun getAllFavoritePersons(): LiveData> { + val allFavoritePersons = database.favoritePersonsDao.getAllFavoritePersons() + return allFavoritePersons.map { favEntityList -> + favEntityList.personAsDomainModel() } } @@ -37,9 +37,9 @@ class DatabaseDataSource @Inject constructor( movieId: Int ) = database.favoriteMoviesDao.checkIfMovieIsFavorite(movieId) - fun checkIfActorIsFavorite( - actorId: Int - ) = database.favoriteActorsDao.checkIfActorIsFavorite(actorId) + fun checkIfPersonIsFavorite( + personId: Int + ) = database.favoritePersonsDao.checkIfPersonIsFavorite(personId) suspend fun addMovieToFavorites( movie: Movie @@ -49,11 +49,11 @@ class DatabaseDataSource @Inject constructor( } } - suspend fun addActorToFavorites( - favoriteActor: FavoriteActor + suspend fun addPersonToFavorites( + favoritePerson: FavoritePerson ) = withContext(Dispatchers.IO) { - with(favoriteActor.actorAsDatabaseModel()) { - database.favoriteActorsDao.addActorToFavorites(favoriteActorsEntity = this) + with(favoritePerson.personAsDatabaseModel()) { + database.favoritePersonsDao.addPersonToFavorites(favoritePersonsEntity = this) } } @@ -65,11 +65,11 @@ class DatabaseDataSource @Inject constructor( } } - suspend fun deleteSelectedFavoriteActor( - favoriteActor: FavoriteActor + suspend fun deleteSelectedFavoritePerson( + favoritePerson: FavoritePerson ) = withContext(Dispatchers.IO) { - with(favoriteActor.actorAsDatabaseModel()) { - database.favoriteActorsDao.deleteSelectedFavoriteActor(favoriteActorsEntity = this) + with(favoritePerson.personAsDatabaseModel()) { + database.favoritePersonsDao.deleteSelectedFavoritePerson(favoritePersonsEntity = this) } } } \ No newline at end of file diff --git a/app/src/main/java/com/developersbreach/composeactors/data/datasource/fake/ActorData.kt b/app/src/main/java/com/developersbreach/composeactors/data/datasource/fake/PersonData.kt similarity index 50% rename from app/src/main/java/com/developersbreach/composeactors/data/datasource/fake/ActorData.kt rename to app/src/main/java/com/developersbreach/composeactors/data/datasource/fake/PersonData.kt index 19bc502..491373d 100644 --- a/app/src/main/java/com/developersbreach/composeactors/data/datasource/fake/ActorData.kt +++ b/app/src/main/java/com/developersbreach/composeactors/data/datasource/fake/PersonData.kt @@ -1,11 +1,11 @@ package com.developersbreach.composeactors.data.datasource.fake -import com.developersbreach.composeactors.data.model.Actor -import com.developersbreach.composeactors.data.model.ActorDetail +import com.developersbreach.composeactors.data.model.Person +import com.developersbreach.composeactors.data.model.PersonDetail import com.developersbreach.composeactors.data.model.Cast -import com.developersbreach.composeactors.data.model.FavoriteActor +import com.developersbreach.composeactors.data.model.FavoritePerson -private val actorsData = listOf( +private val personsData = listOf( "John travolta", "Samuel L Jackson", "Uma Thurman", @@ -22,59 +22,59 @@ private val actorsData = listOf( "Sophia Lillis", ) -fun fakeActorsList(): MutableList { - val actors = mutableListOf() - actorsData.forEachIndexed { index, name -> - actors.add(Actor(index, name, "")) +fun fakePersonsList(): MutableList { + val persons = mutableListOf() + personsData.forEachIndexed { index, name -> + persons.add(Person(index, name, "")) } - return actors + return persons } -fun fakeFavoriteActorsList(): MutableList { - val actors = mutableListOf() - actorsData.forEachIndexed { index, name -> - actors.add(FavoriteActor(index, name, "", "Berlin")) +fun fakeFavoritePersonsList(): MutableList { + val actors = mutableListOf() + personsData.forEachIndexed { index, name -> + actors.add(FavoritePerson(index, name, "", "Berlin")) } return actors } fun fakeMovieCastList(): MutableList { val cast = mutableListOf() - actorsData.forEachIndexed { index, name -> + personsData.forEachIndexed { index, name -> cast.add(Cast(index, name, "")) } return cast } -val popularActorList = listOf( - Actor( - actorId = 28782, - actorName = "Monica Bellucci", +val popularPersonLists = listOf( + Person( + personId = 28782, + personName = "Monica Bellucci", profilePath = "z3sLuRKP7hQVrvSTsqdLjGSldwG.jpg" ), - Actor( - actorId = 287, - actorName = "Brad Pitt", + Person( + personId = 287, + personName = "Brad Pitt", profilePath = "kU3B75TyRiCgE270EyZnHjfivoq.jpg" ) ) -val trendingActorList = listOf( - Actor( - actorId = 8784, - actorName = "Daniel Craig", +val trendingPersonLists = listOf( + Person( + personId = 8784, + personName = "Daniel Craig", profilePath = "rFuETZeyOAfIqBahOObF7Soq5Dh.jpg" ), - Actor( - actorId = 1892, - actorName = "Matt Damon", + Person( + personId = 1892, + personName = "Matt Damon", profilePath = "7wbHIn7GziFlJLPl8Zu1XVl24EG.jpg" ), ) -val fakeActorDetail = ActorDetail( - actorId = 28782, - actorName = "Monica Bellucci", +val fakePersonDetail = PersonDetail( + personId = 28782, + personName = "Monica Bellucci", profilePath = "z3sLuRKP7hQVrvSTsqdLjGSldwG.jpg", biography = "This is fake biography for the actor added here to see how the actual preview looks in the screen so don't get any serious about this.", dateOfBirth = "59", diff --git a/app/src/main/java/com/developersbreach/composeactors/data/model/BottomSheetType.kt b/app/src/main/java/com/developersbreach/composeactors/data/model/BottomSheetType.kt index 39140df..d31ff40 100644 --- a/app/src/main/java/com/developersbreach/composeactors/data/model/BottomSheetType.kt +++ b/app/src/main/java/com/developersbreach/composeactors/data/model/BottomSheetType.kt @@ -1,6 +1,6 @@ package com.developersbreach.composeactors.data.model -enum class BottomSheetType(var movieOrActorId: Int? = null) { - MovieDetailBottomSheet(movieOrActorId = null), - ActorDetailBottomSheet(movieOrActorId = null) +enum class BottomSheetType(var movieOrPersonId: Int? = null) { + MovieDetailBottomSheet(movieOrPersonId = null), + ActorDetailBottomSheet(movieOrPersonId = null) } \ No newline at end of file diff --git a/app/src/main/java/com/developersbreach/composeactors/data/model/Cast.kt b/app/src/main/java/com/developersbreach/composeactors/data/model/Cast.kt index 9c93183..570b25a 100644 --- a/app/src/main/java/com/developersbreach/composeactors/data/model/Cast.kt +++ b/app/src/main/java/com/developersbreach/composeactors/data/model/Cast.kt @@ -9,7 +9,7 @@ import kotlinx.serialization.Serializable @Immutable @Serializable data class Cast( - @SerialName("id") @Stable val actorId: Int, + @SerialName("id") @Stable val personId: Int, @SerialName("name") val castName: String, @SerialName("profile_path") private val profilePath: String? ) { diff --git a/app/src/main/java/com/developersbreach/composeactors/data/model/FavoriteActor.kt b/app/src/main/java/com/developersbreach/composeactors/data/model/FavoritePerson.kt similarity index 64% rename from app/src/main/java/com/developersbreach/composeactors/data/model/FavoriteActor.kt rename to app/src/main/java/com/developersbreach/composeactors/data/model/FavoritePerson.kt index ec4330c..e18ab65 100644 --- a/app/src/main/java/com/developersbreach/composeactors/data/model/FavoriteActor.kt +++ b/app/src/main/java/com/developersbreach/composeactors/data/model/FavoritePerson.kt @@ -2,9 +2,9 @@ package com.developersbreach.composeactors.data.model import androidx.compose.runtime.Stable -data class FavoriteActor( - @Stable val actorId: Int, - val actorName: String, +data class FavoritePerson( + @Stable val personId: Int, + val personName: String, val profileUrl: String, val placeOfBirth: String? ) \ No newline at end of file diff --git a/app/src/main/java/com/developersbreach/composeactors/data/model/Actor.kt b/app/src/main/java/com/developersbreach/composeactors/data/model/Person.kt similarity index 79% rename from app/src/main/java/com/developersbreach/composeactors/data/model/Actor.kt rename to app/src/main/java/com/developersbreach/composeactors/data/model/Person.kt index b953e4d..8c5c1d1 100644 --- a/app/src/main/java/com/developersbreach/composeactors/data/model/Actor.kt +++ b/app/src/main/java/com/developersbreach/composeactors/data/model/Person.kt @@ -8,9 +8,9 @@ import kotlinx.serialization.Serializable @Immutable @Serializable -data class Actor( - @SerialName("id") @Stable val actorId: Int, - @SerialName("name") val actorName: String, +data class Person( + @SerialName("id") @Stable val personId: Int, + @SerialName("name") val personName: String, @SerialName("profile_path") private val profilePath: String? ) { val profileUrl: String = "$LOW_RES_IMAGE$profilePath" diff --git a/app/src/main/java/com/developersbreach/composeactors/data/model/ActorDetail.kt b/app/src/main/java/com/developersbreach/composeactors/data/model/PersonDetail.kt similarity index 51% rename from app/src/main/java/com/developersbreach/composeactors/data/model/ActorDetail.kt rename to app/src/main/java/com/developersbreach/composeactors/data/model/PersonDetail.kt index db41413..9c63926 100644 --- a/app/src/main/java/com/developersbreach/composeactors/data/model/ActorDetail.kt +++ b/app/src/main/java/com/developersbreach/composeactors/data/model/PersonDetail.kt @@ -2,16 +2,16 @@ package com.developersbreach.composeactors.data.model import androidx.compose.runtime.Immutable import androidx.compose.runtime.Stable -import com.developersbreach.composeactors.core.database.entity.FavoriteActorsEntity +import com.developersbreach.composeactors.core.database.entity.FavoritePersonsEntity import com.developersbreach.composeactors.core.network.HIGH_RES_IMAGE import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @Immutable @Serializable -data class ActorDetail( - @SerialName("id") @Stable val actorId: Int, - @SerialName("name") val actorName: String, +data class PersonDetail( + @SerialName("id") @Stable val personId: Int, + @SerialName("name") val personName: String, @SerialName("profile_path") private val profilePath: String?, @SerialName("biography") val biography: String, @SerialName("birthday") val dateOfBirth: String?, @@ -21,29 +21,29 @@ data class ActorDetail( val profileUrl: String = "$HIGH_RES_IMAGE$profilePath" } -fun ActorDetail.toFavoriteActor() = FavoriteActor( - actorId = this.actorId, - actorName = this.actorName, +fun PersonDetail.toFavoritePerson() = FavoritePerson( + personId = this.personId, + personName = this.personName, profileUrl = this.profileUrl, placeOfBirth = this.placeOfBirth ) -fun FavoriteActor.actorAsDatabaseModel(): FavoriteActorsEntity { - return FavoriteActorsEntity( - actorId = this.actorId, - actorName = this.actorName, - actorProfileUrl = this.profileUrl, - actorPlaceOfBirth = this.placeOfBirth +fun FavoritePerson.personAsDatabaseModel(): FavoritePersonsEntity { + return FavoritePersonsEntity( + personId = this.personId, + personName = this.personName, + personProfileUrl = this.profileUrl, + personPlaceOfBirth = this.placeOfBirth ) } -fun List.actorAsDomainModel(): List { +fun List.personAsDomainModel(): List { return map { - FavoriteActor( - actorId = it.actorId, - actorName = it.actorName, - profileUrl = it.actorProfileUrl, - placeOfBirth = it.actorPlaceOfBirth + FavoritePerson( + personId = it.personId, + personName = it.personName, + profileUrl = it.personProfileUrl, + placeOfBirth = it.personPlaceOfBirth ) } } \ No newline at end of file diff --git a/app/src/main/java/com/developersbreach/composeactors/data/person/remote/PersonApi.kt b/app/src/main/java/com/developersbreach/composeactors/data/person/remote/PersonApi.kt index 6ac7a70..901349f 100644 --- a/app/src/main/java/com/developersbreach/composeactors/data/person/remote/PersonApi.kt +++ b/app/src/main/java/com/developersbreach/composeactors/data/person/remote/PersonApi.kt @@ -1,13 +1,13 @@ package com.developersbreach.composeactors.data.person.remote import com.developersbreach.composeactors.core.network.PagedResponse -import com.developersbreach.composeactors.data.model.Actor -import com.developersbreach.composeactors.data.model.ActorDetail +import com.developersbreach.composeactors.data.model.Person +import com.developersbreach.composeactors.data.model.PersonDetail import com.developersbreach.composeactors.data.model.MoviesResponse interface PersonApi { - suspend fun getPopularPersons(): PagedResponse - suspend fun getTrendingPersons(): PagedResponse - suspend fun getPersonDetails(actorId: Int): ActorDetail - suspend fun getCastDetails(actorId: Int): MoviesResponse + suspend fun getPopularPersons(): PagedResponse + suspend fun getTrendingPersons(): PagedResponse + suspend fun getPersonDetails(personId: Int): PersonDetail + suspend fun getCastDetails(personId: Int): MoviesResponse } \ No newline at end of file diff --git a/app/src/main/java/com/developersbreach/composeactors/data/person/remote/PersonApiImpl.kt b/app/src/main/java/com/developersbreach/composeactors/data/person/remote/PersonApiImpl.kt index 73a9ec2..a2b2b01 100644 --- a/app/src/main/java/com/developersbreach/composeactors/data/person/remote/PersonApiImpl.kt +++ b/app/src/main/java/com/developersbreach/composeactors/data/person/remote/PersonApiImpl.kt @@ -3,8 +3,8 @@ package com.developersbreach.composeactors.data.person.remote import com.developersbreach.composeactors.core.network.BaseUrlProvider import com.developersbreach.composeactors.core.network.HttpRequestHandler import com.developersbreach.composeactors.core.network.PagedResponse -import com.developersbreach.composeactors.data.model.Actor -import com.developersbreach.composeactors.data.model.ActorDetail +import com.developersbreach.composeactors.data.model.Person +import com.developersbreach.composeactors.data.model.PersonDetail import com.developersbreach.composeactors.data.model.MoviesResponse import java.net.URL import javax.inject.Inject @@ -16,14 +16,14 @@ class PersonApiImpl @Inject constructor( ) : PersonApi, BaseUrlProvider() { // person/popular?api_key=API_KEY - override suspend fun getPopularPersons(): PagedResponse { + override suspend fun getPopularPersons(): PagedResponse { return requestHandler.getPagedResponse( URL("${BASE_URL}person/popular?$API_KEY") ) } // person/3233?api_key=API_KEY - override suspend fun getTrendingPersons(): PagedResponse { + override suspend fun getTrendingPersons(): PagedResponse { return requestHandler.getPagedResponse( URL("${BASE_URL}trending/person/week?$API_KEY") ) @@ -31,19 +31,19 @@ class PersonApiImpl @Inject constructor( // person/3233?api_key=API_KEY override suspend fun getPersonDetails( - actorId: Int - ): ActorDetail { + personId: Int + ): PersonDetail { return requestHandler.getResponse( - URL("${BASE_URL}person/${actorId}?$API_KEY") + URL("${BASE_URL}person/${personId}?$API_KEY") ) } // person/3233/movie_credits?api_key=API_KEY override suspend fun getCastDetails( - actorId: Int + personId: Int ): MoviesResponse { return requestHandler.getResponse( - URL("${BASE_URL}person/${actorId}/movie_credits?$API_KEY") + URL("${BASE_URL}person/${personId}/movie_credits?$API_KEY") ) } } \ No newline at end of file diff --git a/app/src/main/java/com/developersbreach/composeactors/data/person/repository/PersonRepository.kt b/app/src/main/java/com/developersbreach/composeactors/data/person/repository/PersonRepository.kt index 38d6623..d0956b8 100644 --- a/app/src/main/java/com/developersbreach/composeactors/data/person/repository/PersonRepository.kt +++ b/app/src/main/java/com/developersbreach/composeactors/data/person/repository/PersonRepository.kt @@ -1,18 +1,18 @@ package com.developersbreach.composeactors.data.person.repository import androidx.lifecycle.LiveData -import com.developersbreach.composeactors.data.model.Actor -import com.developersbreach.composeactors.data.model.ActorDetail -import com.developersbreach.composeactors.data.model.FavoriteActor +import com.developersbreach.composeactors.data.model.Person +import com.developersbreach.composeactors.data.model.PersonDetail +import com.developersbreach.composeactors.data.model.FavoritePerson import com.developersbreach.composeactors.data.model.Movie interface PersonRepository { - suspend fun getPopularPersons(): List - suspend fun getTrendingPersons(): List - suspend fun getPersonDetails(actorId: Int): ActorDetail - suspend fun getCastDetails(actorId: Int): List - fun isFavoritePerson(actorId: Int): LiveData - suspend fun addPersonToFavorite(favoriteActor: FavoriteActor) - suspend fun deleteSelectedFavoritePerson(favoriteActor: FavoriteActor) - fun getAllFavoritePersons(): LiveData> + suspend fun getPopularPersons(): List + suspend fun getTrendingPersons(): List + suspend fun getPersonDetails(personId: Int): PersonDetail + suspend fun getCastDetails(personId: Int): List + fun isFavoritePerson(personId: Int): LiveData + suspend fun addPersonToFavorite(favoritePerson: FavoritePerson) + suspend fun deleteSelectedFavoritePerson(favoritePerson: FavoritePerson) + fun getAllFavoritePersons(): LiveData> } \ No newline at end of file diff --git a/app/src/main/java/com/developersbreach/composeactors/data/person/repository/PersonRepositoryImpl.kt b/app/src/main/java/com/developersbreach/composeactors/data/person/repository/PersonRepositoryImpl.kt index 872ae3e..8d3c7c5 100644 --- a/app/src/main/java/com/developersbreach/composeactors/data/person/repository/PersonRepositoryImpl.kt +++ b/app/src/main/java/com/developersbreach/composeactors/data/person/repository/PersonRepositoryImpl.kt @@ -2,9 +2,9 @@ package com.developersbreach.composeactors.data.person.repository import androidx.lifecycle.LiveData import com.developersbreach.composeactors.data.datasource.database.DatabaseDataSource -import com.developersbreach.composeactors.data.model.Actor -import com.developersbreach.composeactors.data.model.ActorDetail -import com.developersbreach.composeactors.data.model.FavoriteActor +import com.developersbreach.composeactors.data.model.Person +import com.developersbreach.composeactors.data.model.PersonDetail +import com.developersbreach.composeactors.data.model.FavoritePerson import com.developersbreach.composeactors.data.model.Movie import com.developersbreach.composeactors.data.person.remote.PersonApi import javax.inject.Inject @@ -18,35 +18,35 @@ class PersonRepositoryImpl @Inject constructor( private val databaseDataSource: DatabaseDataSource ) : PersonRepository { - override suspend fun getPopularPersons(): List = withContext(Dispatchers.IO) { + override suspend fun getPopularPersons(): List = withContext(Dispatchers.IO) { personApi.getPopularPersons().data } - override suspend fun getTrendingPersons(): List = withContext(Dispatchers.IO) { + override suspend fun getTrendingPersons(): List = withContext(Dispatchers.IO) { personApi.getTrendingPersons().data } - override suspend fun getPersonDetails(actorId: Int): ActorDetail = withContext(Dispatchers.IO) { - personApi.getPersonDetails(actorId) + override suspend fun getPersonDetails(personId: Int): PersonDetail = withContext(Dispatchers.IO) { + personApi.getPersonDetails(personId) } - override suspend fun getCastDetails(actorId: Int): List = withContext(Dispatchers.IO) { - personApi.getCastDetails(actorId).movies + override suspend fun getCastDetails(personId: Int): List = withContext(Dispatchers.IO) { + personApi.getCastDetails(personId).movies } - override fun isFavoritePerson(actorId: Int): LiveData { - return databaseDataSource.checkIfActorIsFavorite(actorId) + override fun isFavoritePerson(personId: Int): LiveData { + return databaseDataSource.checkIfPersonIsFavorite(personId) } - override suspend fun addPersonToFavorite(favoriteActor: FavoriteActor) { - databaseDataSource.addActorToFavorites(favoriteActor) + override suspend fun addPersonToFavorite(favoritePerson: FavoritePerson) { + databaseDataSource.addPersonToFavorites(favoritePerson) } - override suspend fun deleteSelectedFavoritePerson(favoriteActor: FavoriteActor) { - databaseDataSource.deleteSelectedFavoriteActor(favoriteActor) + override suspend fun deleteSelectedFavoritePerson(favoritePerson: FavoritePerson) { + databaseDataSource.deleteSelectedFavoritePerson(favoritePerson) } - override fun getAllFavoritePersons(): LiveData> { - return databaseDataSource.getAllFavoriteActors() + override fun getAllFavoritePersons(): LiveData> { + return databaseDataSource.getAllFavoritePersons() } } \ No newline at end of file diff --git a/app/src/main/java/com/developersbreach/composeactors/data/search/remote/SearchApi.kt b/app/src/main/java/com/developersbreach/composeactors/data/search/remote/SearchApi.kt index b2e8851..bac033f 100644 --- a/app/src/main/java/com/developersbreach/composeactors/data/search/remote/SearchApi.kt +++ b/app/src/main/java/com/developersbreach/composeactors/data/search/remote/SearchApi.kt @@ -1,10 +1,10 @@ package com.developersbreach.composeactors.data.search.remote import com.developersbreach.composeactors.core.network.PagedResponse -import com.developersbreach.composeactors.data.model.Actor +import com.developersbreach.composeactors.data.model.Person import com.developersbreach.composeactors.data.model.Movie interface SearchApi { - suspend fun getSearchableActorsData(query: String): PagedResponse + suspend fun getSearchableActorsData(query: String): PagedResponse suspend fun getSearchableMoviesData(query: String): PagedResponse } \ No newline at end of file diff --git a/app/src/main/java/com/developersbreach/composeactors/data/search/remote/SearchApiImpl.kt b/app/src/main/java/com/developersbreach/composeactors/data/search/remote/SearchApiImpl.kt index 3bc3e02..aeb89b4 100644 --- a/app/src/main/java/com/developersbreach/composeactors/data/search/remote/SearchApiImpl.kt +++ b/app/src/main/java/com/developersbreach/composeactors/data/search/remote/SearchApiImpl.kt @@ -3,7 +3,7 @@ package com.developersbreach.composeactors.data.search.remote import com.developersbreach.composeactors.core.network.BaseUrlProvider import com.developersbreach.composeactors.core.network.HttpRequestHandler import com.developersbreach.composeactors.core.network.PagedResponse -import com.developersbreach.composeactors.data.model.Actor +import com.developersbreach.composeactors.data.model.Person import com.developersbreach.composeactors.data.model.Movie import java.net.URL import javax.inject.Inject @@ -17,8 +17,8 @@ class SearchApiImpl @Inject constructor( // search/person?api_key=API_KEY&query=$pacino override suspend fun getSearchableActorsData( query: String - ): PagedResponse { - return requestHandler.getPagedResponse( + ): PagedResponse { + return requestHandler.getPagedResponse( URL("${BASE_URL}search/person?${API_KEY}&query=${query.toEncodedQuery()}") ) } diff --git a/app/src/main/java/com/developersbreach/composeactors/data/search/repository/SearchRepository.kt b/app/src/main/java/com/developersbreach/composeactors/data/search/repository/SearchRepository.kt index f7daef8..3ea1059 100644 --- a/app/src/main/java/com/developersbreach/composeactors/data/search/repository/SearchRepository.kt +++ b/app/src/main/java/com/developersbreach/composeactors/data/search/repository/SearchRepository.kt @@ -1,9 +1,9 @@ package com.developersbreach.composeactors.data.search.repository -import com.developersbreach.composeactors.data.model.Actor +import com.developersbreach.composeactors.data.model.Person import com.developersbreach.composeactors.data.model.Movie interface SearchRepository { - suspend fun getSearchableActorsData(query: String): List + suspend fun getSearchableActorsData(query: String): List suspend fun getSearchableMoviesData(query: String): List } \ No newline at end of file diff --git a/app/src/main/java/com/developersbreach/composeactors/data/search/repository/SearchRepositoryImpl.kt b/app/src/main/java/com/developersbreach/composeactors/data/search/repository/SearchRepositoryImpl.kt index 85695bc..1a58233 100644 --- a/app/src/main/java/com/developersbreach/composeactors/data/search/repository/SearchRepositoryImpl.kt +++ b/app/src/main/java/com/developersbreach/composeactors/data/search/repository/SearchRepositoryImpl.kt @@ -1,6 +1,6 @@ package com.developersbreach.composeactors.data.search.repository -import com.developersbreach.composeactors.data.model.Actor +import com.developersbreach.composeactors.data.model.Person import com.developersbreach.composeactors.data.model.Movie import com.developersbreach.composeactors.data.search.remote.SearchApi import javax.inject.Inject @@ -15,7 +15,7 @@ class SearchRepositoryImpl @Inject constructor( override suspend fun getSearchableActorsData( query: String - ): List = withContext(Dispatchers.IO) { + ): List = withContext(Dispatchers.IO) { searchApi.getSearchableActorsData(query).data } diff --git a/app/src/main/java/com/developersbreach/composeactors/data/trending/remote/TrendingApi.kt b/app/src/main/java/com/developersbreach/composeactors/data/trending/remote/TrendingApi.kt index 1ecadf1..df7f408 100644 --- a/app/src/main/java/com/developersbreach/composeactors/data/trending/remote/TrendingApi.kt +++ b/app/src/main/java/com/developersbreach/composeactors/data/trending/remote/TrendingApi.kt @@ -1,8 +1,8 @@ package com.developersbreach.composeactors.data.trending.remote import com.developersbreach.composeactors.core.network.PagedResponse -import com.developersbreach.composeactors.data.model.Actor +import com.developersbreach.composeactors.data.model.Person interface TrendingApi { - suspend fun getTrendingActors(): PagedResponse + suspend fun getTrendingActors(): PagedResponse } \ No newline at end of file diff --git a/app/src/main/java/com/developersbreach/composeactors/data/trending/remote/TrendingApiImpl.kt b/app/src/main/java/com/developersbreach/composeactors/data/trending/remote/TrendingApiImpl.kt index 9926212..4f5b945 100644 --- a/app/src/main/java/com/developersbreach/composeactors/data/trending/remote/TrendingApiImpl.kt +++ b/app/src/main/java/com/developersbreach/composeactors/data/trending/remote/TrendingApiImpl.kt @@ -3,7 +3,7 @@ package com.developersbreach.composeactors.data.trending.remote import com.developersbreach.composeactors.core.network.BaseUrlProvider import com.developersbreach.composeactors.core.network.HttpRequestHandler import com.developersbreach.composeactors.core.network.PagedResponse -import com.developersbreach.composeactors.data.model.Actor +import com.developersbreach.composeactors.data.model.Person import java.net.URL import javax.inject.Inject import javax.inject.Singleton @@ -14,8 +14,8 @@ class TrendingApiImpl @Inject constructor( ) : TrendingApi, BaseUrlProvider() { // trending/person/week?api_key=API_KEY - override suspend fun getTrendingActors(): PagedResponse { - return requestHandler.getPagedResponse( + override suspend fun getTrendingActors(): PagedResponse { + return requestHandler.getPagedResponse( URL("${BASE_URL}trending/person/week?${API_KEY}") ) } diff --git a/app/src/main/java/com/developersbreach/composeactors/data/trending/repository/TrendingRepository.kt b/app/src/main/java/com/developersbreach/composeactors/data/trending/repository/TrendingRepository.kt index b247bf8..8c51fbd 100644 --- a/app/src/main/java/com/developersbreach/composeactors/data/trending/repository/TrendingRepository.kt +++ b/app/src/main/java/com/developersbreach/composeactors/data/trending/repository/TrendingRepository.kt @@ -1,7 +1,7 @@ package com.developersbreach.composeactors.data.trending.repository -import com.developersbreach.composeactors.data.model.Actor +import com.developersbreach.composeactors.data.model.Person interface TrendingRepository { - suspend fun getTrendingActors(): List + suspend fun getTrendingActors(): List } \ No newline at end of file diff --git a/app/src/main/java/com/developersbreach/composeactors/data/trending/repository/TrendingRepositoryImpl.kt b/app/src/main/java/com/developersbreach/composeactors/data/trending/repository/TrendingRepositoryImpl.kt index 8b0ad0a..97f6030 100644 --- a/app/src/main/java/com/developersbreach/composeactors/data/trending/repository/TrendingRepositoryImpl.kt +++ b/app/src/main/java/com/developersbreach/composeactors/data/trending/repository/TrendingRepositoryImpl.kt @@ -1,6 +1,6 @@ package com.developersbreach.composeactors.data.trending.repository -import com.developersbreach.composeactors.data.model.Actor +import com.developersbreach.composeactors.data.model.Person import com.developersbreach.composeactors.data.trending.remote.TrendingApi import javax.inject.Inject import javax.inject.Singleton @@ -12,7 +12,7 @@ class TrendingRepositoryImpl @Inject constructor( private val trendingApi: TrendingApi, ) : TrendingRepository { - override suspend fun getTrendingActors(): List = withContext(Dispatchers.IO) { + override suspend fun getTrendingActors(): List = withContext(Dispatchers.IO) { trendingApi.getTrendingActors().data } } \ No newline at end of file diff --git a/app/src/main/java/com/developersbreach/composeactors/di/DaosModule.kt b/app/src/main/java/com/developersbreach/composeactors/di/DaosModule.kt index d7ca0a3..f223be1 100644 --- a/app/src/main/java/com/developersbreach/composeactors/di/DaosModule.kt +++ b/app/src/main/java/com/developersbreach/composeactors/di/DaosModule.kt @@ -1,7 +1,7 @@ package com.developersbreach.composeactors.di import com.developersbreach.composeactors.core.database.AppDatabase -import com.developersbreach.composeactors.core.database.dao.FavoriteActorsDao +import com.developersbreach.composeactors.core.database.dao.FavoritePersonsDao import com.developersbreach.composeactors.core.database.dao.FavoriteMoviesDao import dagger.Module import dagger.Provides @@ -14,10 +14,10 @@ object DaosModule { @Provides @JvmStatic - fun providesFavoriteActorsDao( + fun providesFavoritePersonsDao( database: AppDatabase - ): FavoriteActorsDao { - return database.favoriteActorsDao + ): FavoritePersonsDao { + return database.favoritePersonsDao } @Provides diff --git a/app/src/main/java/com/developersbreach/composeactors/ui/navigation/AppActions.kt b/app/src/main/java/com/developersbreach/composeactors/ui/navigation/AppActions.kt index 856fb47..6533fdf 100644 --- a/app/src/main/java/com/developersbreach/composeactors/ui/navigation/AppActions.kt +++ b/app/src/main/java/com/developersbreach/composeactors/ui/navigation/AppActions.kt @@ -12,12 +12,12 @@ class AppActions( private val routes: AppDestinations ) { - // Triggered when user tries to navigate to details of an actor from list with Id. - val navigateToSelectedActor: (Int) -> Unit = { actorId: Int -> - navController.navigate("${routes.ACTOR_DETAIL_ROUTE}/$actorId") + // Triggered when user tries to navigate to details of an person from list with Id. + val navigateToSelectedPerson: (Int) -> Unit = { personId: Int -> + navController.navigate("${routes.ACTOR_DETAIL_ROUTE}/$personId") } - // Triggered when user tries to navigate to details of an actor from list with Id. + // Triggered when user tries to navigate to details of an person from list with Id. val navigateToSelectedMovie: (Int) -> Unit = { movieId: Int -> navController.navigate("${routes.MOVIE_DETAILS_ROUTE}/$movieId") } diff --git a/app/src/main/java/com/developersbreach/composeactors/ui/navigation/AppDestinations.kt b/app/src/main/java/com/developersbreach/composeactors/ui/navigation/AppDestinations.kt index ccfa1fb..6fc444b 100644 --- a/app/src/main/java/com/developersbreach/composeactors/ui/navigation/AppDestinations.kt +++ b/app/src/main/java/com/developersbreach/composeactors/ui/navigation/AppDestinations.kt @@ -19,7 +19,7 @@ object AppDestinations { // list to details destination const val ACTOR_DETAIL_ROUTE = "actor-detail" // list to selected actor detail destination - const val ACTOR_DETAIL_ID_KEY = "actorId" + const val ACTOR_DETAIL_ID_KEY = "personId" // destination for searching actors const val MOVIE_DETAILS_ROUTE = "movie-detail" diff --git a/app/src/main/java/com/developersbreach/composeactors/ui/navigation/AppNavigation.kt b/app/src/main/java/com/developersbreach/composeactors/ui/navigation/AppNavigation.kt index 7410636..36fc649 100644 --- a/app/src/main/java/com/developersbreach/composeactors/ui/navigation/AppNavigation.kt +++ b/app/src/main/java/com/developersbreach/composeactors/ui/navigation/AppNavigation.kt @@ -51,7 +51,7 @@ fun AppNavigation( AppDestinations.HOME_ROUTE ) { HomeScreen( - navigateToSelectedActor = actions.navigateToSelectedActor, + navigateToSelectedPerson = actions.navigateToSelectedPerson, navigateToSearch = actions.navigateToSearch, navigateToFavorite = actions.navigateToFavorite, navigateToSelectedMovie = actions.navigateToSelectedMovie, @@ -72,7 +72,7 @@ fun AppNavigation( ) { SearchScreen( navigateUp = actions.navigateUp, - navigateToSelectedActor = actions.navigateToSelectedActor, + navigateToSelectedPerson = actions.navigateToSelectedPerson, navigateToSelectedMovie = actions.navigateToSelectedMovie, ) } @@ -121,7 +121,7 @@ fun AppNavigation( FavoritesScreen( navigateUp = actions.navigateUp, navigateToSelectedMovie = actions.navigateToSelectedMovie, - navigateToSelectedActor = actions.navigateToSelectedActor, + navigateToSelectedPerson = actions.navigateToSelectedPerson, ) } diff --git a/app/src/main/java/com/developersbreach/composeactors/ui/screens/actorDetails/ActorDetailsUI.kt b/app/src/main/java/com/developersbreach/composeactors/ui/screens/actorDetails/ActorDetailsUI.kt index bed639e..56a56a5 100644 --- a/app/src/main/java/com/developersbreach/composeactors/ui/screens/actorDetails/ActorDetailsUI.kt +++ b/app/src/main/java/com/developersbreach/composeactors/ui/screens/actorDetails/ActorDetailsUI.kt @@ -12,7 +12,7 @@ import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.ui.graphics.Color import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp -import com.developersbreach.composeactors.data.datasource.fake.fakeActorDetail +import com.developersbreach.composeactors.data.datasource.fake.fakePersonDetail import com.developersbreach.composeactors.data.datasource.fake.fakeMovieDetail import com.developersbreach.composeactors.data.datasource.fake.fakeMovieList import com.developersbreach.composeactors.ui.components.ImageBackgroundThemeGenerator @@ -66,7 +66,7 @@ internal fun ActorDetailsUI( // Custom top app bar ActorDetailsTopAppBar( navigateUp = navigateUp, - title = "${detailUIState.actorData?.actorName}" + title = "${detailUIState.actorData?.personName}" ) // Main details content @@ -100,7 +100,7 @@ private fun ActorDetailsUIDarkPreview() { ActorDetailsUI( detailUIState = ActorDetailsUIState( castList = fakeMovieList(), - actorData = fakeActorDetail, + actorData = fakePersonDetail, isFetchingDetails = false ), sheetUIState = ActorDetailsSheetUIState(fakeMovieDetail), @@ -121,7 +121,7 @@ private fun ActorDetailsUILightPreview() { ActorDetailsUI( detailUIState = ActorDetailsUIState( castList = fakeMovieList(), - actorData = fakeActorDetail, + actorData = fakePersonDetail, isFetchingDetails = false ), sheetUIState = ActorDetailsSheetUIState(fakeMovieDetail), diff --git a/app/src/main/java/com/developersbreach/composeactors/ui/screens/actorDetails/ActorDetailsUIState.kt b/app/src/main/java/com/developersbreach/composeactors/ui/screens/actorDetails/ActorDetailsUIState.kt index 7ecc105..75feca4 100644 --- a/app/src/main/java/com/developersbreach/composeactors/ui/screens/actorDetails/ActorDetailsUIState.kt +++ b/app/src/main/java/com/developersbreach/composeactors/ui/screens/actorDetails/ActorDetailsUIState.kt @@ -1,6 +1,6 @@ package com.developersbreach.composeactors.ui.screens.actorDetails -import com.developersbreach.composeactors.data.model.ActorDetail +import com.developersbreach.composeactors.data.model.PersonDetail import com.developersbreach.composeactors.data.model.Movie import com.developersbreach.composeactors.data.model.MovieDetail @@ -11,7 +11,7 @@ import com.developersbreach.composeactors.data.model.MovieDetail */ data class ActorDetailsUIState( val castList: List = listOf(), - val actorData: ActorDetail? = null, + val actorData: PersonDetail? = null, val isFetchingDetails: Boolean = false, ) diff --git a/app/src/main/java/com/developersbreach/composeactors/ui/screens/actorDetails/ActorDetailsViewModel.kt b/app/src/main/java/com/developersbreach/composeactors/ui/screens/actorDetails/ActorDetailsViewModel.kt index 94ff8fe..307c661 100644 --- a/app/src/main/java/com/developersbreach/composeactors/ui/screens/actorDetails/ActorDetailsViewModel.kt +++ b/app/src/main/java/com/developersbreach/composeactors/ui/screens/actorDetails/ActorDetailsViewModel.kt @@ -7,8 +7,8 @@ import androidx.lifecycle.LiveData import androidx.lifecycle.SavedStateHandle import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope -import com.developersbreach.composeactors.data.model.ActorDetail -import com.developersbreach.composeactors.data.model.toFavoriteActor +import com.developersbreach.composeactors.data.model.PersonDetail +import com.developersbreach.composeactors.data.model.toFavoritePerson import com.developersbreach.composeactors.data.movie.repository.MovieRepository import com.developersbreach.composeactors.data.person.repository.PersonRepository import com.developersbreach.composeactors.ui.navigation.AppDestinations.ACTOR_DETAIL_ID_KEY @@ -28,7 +28,7 @@ class ActorDetailsViewModel @Inject constructor( private val personRepository: PersonRepository, ) : ViewModel() { - private val actorId: Int = checkNotNull(savedStateHandle[ACTOR_DETAIL_ID_KEY]) + private val personId: Int = checkNotNull(savedStateHandle[ACTOR_DETAIL_ID_KEY]) var detailUIState by mutableStateOf(ActorDetailsUIState(actorData = null)) private set @@ -36,7 +36,7 @@ class ActorDetailsViewModel @Inject constructor( var sheetUIState by mutableStateOf(ActorDetailsSheetUIState()) private set - val isFavoriteMovie: LiveData = personRepository.isFavoritePerson(actorId) + val isFavoriteMovie: LiveData = personRepository.isFavoritePerson(personId) init { viewModelScope.launch { @@ -50,8 +50,8 @@ class ActorDetailsViewModel @Inject constructor( private suspend fun startFetchingDetails() { detailUIState = ActorDetailsUIState(isFetchingDetails = true, actorData = null) - val actorData = personRepository.getPersonDetails(actorId) - val castData = personRepository.getCastDetails(actorId) + val actorData = personRepository.getPersonDetails(personId) + val castData = personRepository.getCastDetails(personId) detailUIState = ActorDetailsUIState( castList = castData, actorData = actorData, @@ -81,10 +81,10 @@ class ActorDetailsViewModel @Inject constructor( fun addActorToFavorites() { viewModelScope.launch { - val actor: ActorDetail? = detailUIState.actorData + val actor: PersonDetail? = detailUIState.actorData if (actor != null) { personRepository.addPersonToFavorite( - actor.toFavoriteActor() + actor.toFavoritePerson() ) } else { Timber.e("Id of ${actor} was null while adding to favorite operation.") @@ -94,10 +94,10 @@ class ActorDetailsViewModel @Inject constructor( fun removeActorFromFavorites() { viewModelScope.launch { - val actor: ActorDetail? = detailUIState.actorData + val actor: PersonDetail? = detailUIState.actorData if (actor != null) { personRepository.deleteSelectedFavoritePerson( - actor.toFavoriteActor() + actor.toFavoritePerson() ) } else { Timber.e("Id of ${actor} was null while delete operation.") diff --git a/app/src/main/java/com/developersbreach/composeactors/ui/screens/actorDetails/composables/ActorInfoHeader.kt b/app/src/main/java/com/developersbreach/composeactors/ui/screens/actorDetails/composables/ActorInfoHeader.kt index 0c6034f..59f4f14 100644 --- a/app/src/main/java/com/developersbreach/composeactors/ui/screens/actorDetails/composables/ActorInfoHeader.kt +++ b/app/src/main/java/com/developersbreach/composeactors/ui/screens/actorDetails/composables/ActorInfoHeader.kt @@ -19,7 +19,7 @@ import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import com.developersbreach.composeactors.R -import com.developersbreach.composeactors.data.model.ActorDetail +import com.developersbreach.composeactors.data.model.PersonDetail import com.developersbreach.composeactors.ui.animations.borderRevealAnimation import com.developersbreach.composeactors.ui.theme.ComposeActorsTheme import com.developersbreach.composeactors.utils.calculateAge @@ -34,7 +34,7 @@ import com.developersbreach.composeactors.utils.getPopularity */ @Composable internal fun ActorInfoHeader( - actorData: ActorDetail? + actorData: PersonDetail? ) { LazyRow( modifier = Modifier.fillMaxWidth(), @@ -154,9 +154,9 @@ private fun ActorInfoHeaderSubtitle( private fun ActorInfoHeaderPreview() { ComposeActorsTheme { ActorInfoHeader( - actorData = ActorDetail( - actorId = 1, - actorName = "Kate WinsletKate Winslet", + actorData = PersonDetail( + personId = 1, + personName = "Kate WinsletKate Winslet", profilePath = "", biography = "Kate Elizabeth Winslet CBE born 5 October 1975 is an English actress. Known for her work in independent films, particularly period dramas, and for her portrayals of headstrong and complicated women, she has received numerous accolades, including an Academy Award, a Grammy Award, two Primetime Emmy Awards, three BAFTA Awards, and five Golden Globe Awards. Time magazine named Winslet one of the 100 most influential people in the world in 2009 and 2021. She was appointed Commander of the Order of the British Empire (CBE) in 2012.", dateOfBirth = "47", diff --git a/app/src/main/java/com/developersbreach/composeactors/ui/screens/favorites/FavoriteViewModel.kt b/app/src/main/java/com/developersbreach/composeactors/ui/screens/favorites/FavoriteViewModel.kt index 31fc10f..7a5e706 100644 --- a/app/src/main/java/com/developersbreach/composeactors/ui/screens/favorites/FavoriteViewModel.kt +++ b/app/src/main/java/com/developersbreach/composeactors/ui/screens/favorites/FavoriteViewModel.kt @@ -3,7 +3,7 @@ package com.developersbreach.composeactors.ui.screens.favorites import androidx.lifecycle.LiveData import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope -import com.developersbreach.composeactors.data.model.FavoriteActor +import com.developersbreach.composeactors.data.model.FavoritePerson import com.developersbreach.composeactors.data.model.Movie import com.developersbreach.composeactors.data.movie.repository.MovieRepository import com.developersbreach.composeactors.data.person.repository.PersonRepository @@ -18,7 +18,7 @@ class FavoriteViewModel @Inject constructor( ) : ViewModel() { val favoriteMovies: LiveData> = movieRepository.getAllFavoriteMovies() - val favoriteActors: LiveData> = personRepository.getAllFavoritePersons() + val favoritePersons: LiveData> = personRepository.getAllFavoritePersons() fun removeMovieFromFavorites(movie: Movie) { viewModelScope.launch { @@ -26,9 +26,9 @@ class FavoriteViewModel @Inject constructor( } } - fun removeActorFromFavorites(favoriteActor: FavoriteActor) { + fun removePersonFromFavorites(favoritePerson: FavoritePerson) { viewModelScope.launch { - personRepository.deleteSelectedFavoritePerson(favoriteActor) + personRepository.deleteSelectedFavoritePerson(favoritePerson) } } } \ No newline at end of file diff --git a/app/src/main/java/com/developersbreach/composeactors/ui/screens/favorites/FavoritesScreen.kt b/app/src/main/java/com/developersbreach/composeactors/ui/screens/favorites/FavoritesScreen.kt index 5df813d..d90cf55 100644 --- a/app/src/main/java/com/developersbreach/composeactors/ui/screens/favorites/FavoritesScreen.kt +++ b/app/src/main/java/com/developersbreach/composeactors/ui/screens/favorites/FavoritesScreen.kt @@ -4,7 +4,7 @@ import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.livedata.observeAsState import androidx.hilt.navigation.compose.hiltViewModel -import com.developersbreach.composeactors.data.model.FavoriteActor +import com.developersbreach.composeactors.data.model.FavoritePerson import com.developersbreach.composeactors.data.model.Movie @Composable @@ -12,17 +12,17 @@ fun FavoritesScreen( favoriteViewModel: FavoriteViewModel = hiltViewModel(), navigateUp: () -> Unit, navigateToSelectedMovie: (Int) -> Unit, - navigateToSelectedActor: (Int) -> Unit, + navigateToSelectedPerson: (Int) -> Unit, ) { val favoriteMovies by favoriteViewModel.favoriteMovies.observeAsState(emptyList()) - val favoriteActors by favoriteViewModel.favoriteActors.observeAsState(emptyList()) + val favoritePersons by favoriteViewModel.favoritePersons.observeAsState(emptyList()) val removeFavoriteMovie = { movie: Movie -> favoriteViewModel.removeMovieFromFavorites(movie) } - val removeFavoriteActor = { favoriteActor: FavoriteActor -> - favoriteViewModel.removeActorFromFavorites(favoriteActor) + val removeFavoritePerson = { favoritePerson: FavoritePerson -> + favoriteViewModel.removePersonFromFavorites(favoritePerson) } FavoritesScreenUI( @@ -30,8 +30,8 @@ fun FavoritesScreen( favoriteMovies = favoriteMovies, navigateToSelectedMovie = navigateToSelectedMovie, removeFavoriteMovie = removeFavoriteMovie, - navigateToSelectedActor = navigateToSelectedActor, - favoriteActors = favoriteActors, - removeFavoriteActor = removeFavoriteActor + navigateToSelectedPerson = navigateToSelectedPerson, + favoritePeople = favoritePersons, + removeFavoritePerson = removeFavoritePerson ) } \ No newline at end of file diff --git a/app/src/main/java/com/developersbreach/composeactors/ui/screens/favorites/FavoritesScreenUI.kt b/app/src/main/java/com/developersbreach/composeactors/ui/screens/favorites/FavoritesScreenUI.kt index 550482c..1508a0b 100644 --- a/app/src/main/java/com/developersbreach/composeactors/ui/screens/favorites/FavoritesScreenUI.kt +++ b/app/src/main/java/com/developersbreach/composeactors/ui/screens/favorites/FavoritesScreenUI.kt @@ -18,12 +18,12 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp -import com.developersbreach.composeactors.data.model.FavoriteActor +import com.developersbreach.composeactors.data.model.FavoritePerson import com.developersbreach.composeactors.data.model.Movie import com.developersbreach.composeactors.ui.components.AppDivider import com.developersbreach.composeactors.ui.components.TabItem import com.developersbreach.composeactors.ui.components.TabsContainer -import com.developersbreach.composeactors.ui.screens.favorites.tabs.FavoriteActorsTabContent +import com.developersbreach.composeactors.ui.screens.favorites.tabs.FavoritePersonsTabContent import com.developersbreach.composeactors.ui.screens.favorites.tabs.FavoriteMoviesTabContent import com.developersbreach.composeactors.ui.theme.ComposeActorsTheme @@ -34,9 +34,9 @@ fun FavoritesScreenUI( favoriteMovies: List, navigateToSelectedMovie: (Int) -> Unit, removeFavoriteMovie: (Movie) -> Unit, - navigateToSelectedActor: (Int) -> Unit, - favoriteActors: List, - removeFavoriteActor: (FavoriteActor) -> Unit, + navigateToSelectedPerson: (Int) -> Unit, + favoritePeople: List, + removeFavoritePerson: (FavoritePerson) -> Unit, ) { val favoriteTabs = listOf( TabItem("Actors"), @@ -68,10 +68,10 @@ fun FavoritesScreenUI( .fillMaxWidth() ) { index -> when (index) { - 0 -> FavoriteActorsTabContent( - navigateToSelectedActor = navigateToSelectedActor, - favoriteActors = favoriteActors, - removeFavoriteActor = removeFavoriteActor + 0 -> FavoritePersonsTabContent( + navigateToSelectedPerson = navigateToSelectedPerson, + favoritePeople = favoritePeople, + removeFavoritePerson = removeFavoritePerson ) 1 -> FavoriteMoviesTabContent( @@ -112,9 +112,9 @@ private fun FavoriteScreenUILightPreview() { favoriteMovies = emptyList(), navigateToSelectedMovie = {}, removeFavoriteMovie = {}, - navigateToSelectedActor = {}, - favoriteActors = emptyList(), - removeFavoriteActor = {}, + navigateToSelectedPerson = {}, + favoritePeople = emptyList(), + removeFavoritePerson = {}, navigateUp = {} ) } @@ -128,9 +128,9 @@ private fun FavoriteScreenUIDarkPreview() { favoriteMovies = emptyList(), navigateToSelectedMovie = {}, removeFavoriteMovie = {}, - navigateToSelectedActor = {}, - favoriteActors = emptyList(), - removeFavoriteActor = {}, + navigateToSelectedPerson = {}, + favoritePeople = emptyList(), + removeFavoritePerson = {}, navigateUp = {} ) } diff --git a/app/src/main/java/com/developersbreach/composeactors/ui/screens/favorites/tabs/FavoriteActorsTabContent.kt b/app/src/main/java/com/developersbreach/composeactors/ui/screens/favorites/tabs/FavoriteActorsTabContent.kt index 4446429..4cac506 100644 --- a/app/src/main/java/com/developersbreach/composeactors/ui/screens/favorites/tabs/FavoriteActorsTabContent.kt +++ b/app/src/main/java/com/developersbreach/composeactors/ui/screens/favorites/tabs/FavoriteActorsTabContent.kt @@ -27,8 +27,8 @@ import androidx.compose.ui.res.painterResource import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import com.developersbreach.composeactors.R -import com.developersbreach.composeactors.data.datasource.fake.fakeFavoriteActorsList -import com.developersbreach.composeactors.data.model.FavoriteActor +import com.developersbreach.composeactors.data.datasource.fake.fakeFavoritePersonsList +import com.developersbreach.composeactors.data.model.FavoritePerson import com.developersbreach.composeactors.ui.components.ImageBackgroundThemeGenerator import com.developersbreach.composeactors.ui.components.LoadNetworkImage import com.developersbreach.composeactors.ui.components.verticalGradientScrim @@ -38,17 +38,17 @@ import com.developersbreach.composeactors.utils.getPlaceOfBirth @OptIn(ExperimentalFoundationApi::class) @Composable -fun FavoriteActorsTabContent( - navigateToSelectedActor: (Int) -> Unit, - favoriteActors: List, - removeFavoriteActor: (FavoriteActor) -> Unit, +fun FavoritePersonsTabContent( + navigateToSelectedPerson: (Int) -> Unit, + favoritePeople: List, + removeFavoritePerson: (FavoritePerson) -> Unit, ) { - if (favoriteActors.isEmpty()) { + if (favoritePeople.isEmpty()) { NoFavoritesFoundUI() } val listState = rememberPagerState( - pageCount = { favoriteActors.size } + pageCount = { favoritePeople.size } ) VerticalPager( @@ -58,19 +58,19 @@ fun FavoriteActorsTabContent( pageSize = PageSize.Fixed(512.dp), contentPadding = PaddingValues(top = 24.dp, start = 24.dp, end = 24.dp, bottom = 48.dp), ) { currentPage -> - ItemFavoriteActor( - actorItem = favoriteActors[currentPage], - onClickActor = navigateToSelectedActor, - removeFavoriteActor = removeFavoriteActor + ItemFavoritePerson( + item = favoritePeople[currentPage], + onClickPerson = navigateToSelectedPerson, + removeFavoritePerson = removeFavoritePerson ) } } @Composable -private fun ItemFavoriteActor( - actorItem: FavoriteActor, - onClickActor: (Int) -> Unit, - removeFavoriteActor: (FavoriteActor) -> Unit +private fun ItemFavoritePerson( + item: FavoritePerson, + onClickPerson: (Int) -> Unit, + removeFavoritePerson: (FavoritePerson) -> Unit ) { Box( modifier = Modifier @@ -78,7 +78,7 @@ private fun ItemFavoriteActor( .clip(MaterialTheme.shapes.large) ) { LoadNetworkImage( - imageUrl = actorItem.profileUrl, + imageUrl = item.profileUrl, contentDescription = "Actor Image", shape = RectangleShape, showAnimProgress = false, @@ -86,12 +86,12 @@ private fun ItemFavoriteActor( .fillMaxWidth() .height(512.dp) .clickable { - onClickActor(actorItem.actorId) + onClickPerson(item.personId) } ) ImageBackgroundThemeGenerator( - imageUrl = actorItem.profileUrl, + imageUrl = item.profileUrl, backgroundColor = MaterialTheme.colors.primary ) { Box( @@ -108,7 +108,7 @@ private fun ItemFavoriteActor( } ImageBackgroundThemeGenerator( - imageUrl = actorItem.profileUrl, + imageUrl = item.profileUrl, backgroundColor = MaterialTheme.colors.onSurface ) { Row( @@ -122,21 +122,21 @@ private fun ItemFavoriteActor( horizontalAlignment = Alignment.Start ) { Text( - text = actorItem.actorName, + text = item.personName, style = MaterialTheme.typography.h5, color = MaterialTheme.colors.onPrimary, modifier = Modifier.padding(vertical = 8.dp) ) Text( - text = "${getPlaceOfBirth(actorItem.placeOfBirth)}", + text = "${getPlaceOfBirth(item.placeOfBirth)}", style = MaterialTheme.typography.subtitle1, color = MaterialTheme.colors.onPrimary, ) } IconButton( - onClick = { removeFavoriteActor(actorItem) }, + onClick = { removeFavoritePerson(item) }, modifier = Modifier ) { Icon( @@ -152,36 +152,36 @@ private fun ItemFavoriteActor( @Preview(showBackground = true) @Composable -private fun FavoriteActorsTabContentPreviewLightPreview() { +private fun FavoritePersonsTabContentPreviewLightPreview() { ComposeActorsTheme(darkTheme = false) { - FavoriteActorsTabContent( - navigateToSelectedActor = {}, - favoriteActors = fakeFavoriteActorsList(), - removeFavoriteActor = {} + FavoritePersonsTabContent( + navigateToSelectedPerson = {}, + favoritePeople = fakeFavoritePersonsList(), + removeFavoritePerson = {} ) } } @Preview(showBackground = true, backgroundColor = 0xFF211a18) @Composable -private fun FavoriteActorsTabContentPreviewDarkPreview() { +private fun FavoritePersonsTabContentPreviewDarkPreview() { ComposeActorsTheme(darkTheme = true) { - FavoriteActorsTabContent( - navigateToSelectedActor = {}, - favoriteActors = fakeFavoriteActorsList(), - removeFavoriteActor = {} + FavoritePersonsTabContent( + navigateToSelectedPerson = {}, + favoritePeople = fakeFavoritePersonsList(), + removeFavoritePerson = {} ) } } @Preview(showBackground = true) @Composable -private fun FavoriteActorsTabContentNoFavoritesPreviewLightPreview() { +private fun FavoritePersonsTabContentNoFavoritesPreviewLightPreview() { ComposeActorsTheme(darkTheme = false) { - FavoriteActorsTabContent( - navigateToSelectedActor = {}, - favoriteActors = emptyList(), - removeFavoriteActor = {} + FavoritePersonsTabContent( + navigateToSelectedPerson = {}, + favoritePeople = emptyList(), + removeFavoritePerson = {} ) } } @@ -190,10 +190,10 @@ private fun FavoriteActorsTabContentNoFavoritesPreviewLightPreview() { @Composable private fun FavoriteActorsTabContentNoFavoritesPreviewDarkPreview() { ComposeActorsTheme(darkTheme = true) { - FavoriteActorsTabContent( - navigateToSelectedActor = {}, - favoriteActors = emptyList(), - removeFavoriteActor = {} + FavoritePersonsTabContent( + navigateToSelectedPerson = {}, + favoritePeople = emptyList(), + removeFavoritePerson = {} ) } } \ No newline at end of file diff --git a/app/src/main/java/com/developersbreach/composeactors/ui/screens/home/HomeScreen.kt b/app/src/main/java/com/developersbreach/composeactors/ui/screens/home/HomeScreen.kt index 46e3761..afa3ab8 100644 --- a/app/src/main/java/com/developersbreach/composeactors/ui/screens/home/HomeScreen.kt +++ b/app/src/main/java/com/developersbreach/composeactors/ui/screens/home/HomeScreen.kt @@ -1,6 +1,5 @@ package com.developersbreach.composeactors.ui.screens.home -import androidx.compose.material.* import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.livedata.observeAsState @@ -8,26 +7,16 @@ import androidx.compose.ui.Modifier import androidx.hilt.navigation.compose.hiltViewModel import com.developersbreach.composeactors.ui.screens.search.SearchType -/** - * @param navigateToSelectedActor navigates to user clicked actor from row. - * @param navigateToSearch navigates user to search screen. - * @param viewModel to manage ui state of [HomeScreen] - * - * Default destination. - * Shows category list of actors in row. - * Shows [HomeTopAppBar] search box looking ui in [TopAppBar] - * If user is offline shows snackbar message. - */ @Composable fun HomeScreen( viewModel: HomeViewModel = hiltViewModel(), - navigateToSelectedActor: (Int) -> Unit, + navigateToSelectedPerson: (Int) -> Unit, navigateToSearch: (SearchType) -> Unit, navigateToAbout: () -> Unit, navigateToSelectedMovie: (Int) -> Unit, navigateToFavorite: () -> Unit, ) { - val navigateToSearchBySearchType by viewModel.updateHomeSearchType.observeAsState(SearchType.Actors) + val navigateToSearchBySearchType by viewModel.updateHomeSearchType.observeAsState(SearchType.Persons) HomeScreenUI( modifier = Modifier, @@ -35,7 +24,7 @@ fun HomeScreen( navigateToSearch = navigateToSearch, navigateToAbout = navigateToAbout, navigateToSearchBySearchType = navigateToSearchBySearchType, - navigateToSelectedActor = navigateToSelectedActor, + navigateToSelectedPerson = navigateToSelectedPerson, navigateToSelectedMovie = navigateToSelectedMovie, uiState = viewModel.uiState, sheetUiState = viewModel.sheetUiState, diff --git a/app/src/main/java/com/developersbreach/composeactors/ui/screens/home/HomeScreenUI.kt b/app/src/main/java/com/developersbreach/composeactors/ui/screens/home/HomeScreenUI.kt index ecf2c37..73cad2d 100644 --- a/app/src/main/java/com/developersbreach/composeactors/ui/screens/home/HomeScreenUI.kt +++ b/app/src/main/java/com/developersbreach/composeactors/ui/screens/home/HomeScreenUI.kt @@ -25,7 +25,7 @@ import androidx.compose.ui.graphics.Color import androidx.compose.ui.platform.testTag import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp -import com.developersbreach.composeactors.data.datasource.fake.fakeActorsList +import com.developersbreach.composeactors.data.datasource.fake.fakePersonsList import com.developersbreach.composeactors.data.datasource.fake.fakeMovieDetail import com.developersbreach.composeactors.data.datasource.fake.fakeMovieList import com.developersbreach.composeactors.ui.components.ApiKeyMissingShowSnackbar @@ -33,7 +33,7 @@ import com.developersbreach.composeactors.ui.components.AppDivider import com.developersbreach.composeactors.ui.components.IfOfflineShowSnackbar import com.developersbreach.composeactors.ui.components.TabItem import com.developersbreach.composeactors.ui.components.TabsContainer -import com.developersbreach.composeactors.ui.screens.home.tabs.ActorsTabContent +import com.developersbreach.composeactors.ui.screens.home.tabs.PersonsTabContent import com.developersbreach.composeactors.ui.screens.home.tabs.MoviesTabContent import com.developersbreach.composeactors.ui.screens.home.tabs.TvShowsTabContent import com.developersbreach.composeactors.ui.screens.modalSheets.OptionsModalSheetContent @@ -49,7 +49,7 @@ fun HomeScreenUI( navigateToSearch: (SearchType) -> Unit, navigateToAbout: () -> Unit, navigateToSearchBySearchType: SearchType, - navigateToSelectedActor: (Int) -> Unit, + navigateToSelectedPerson: (Int) -> Unit, navigateToSelectedMovie: (Int) -> Unit, uiState: HomeUIState, sheetUiState: HomeSheetUIState, @@ -107,7 +107,7 @@ fun HomeScreenUI( ) { // Main content for this screen HomeScreenUI( - navigateToSelectedActor = navigateToSelectedActor, + navigateToSelectedPerson = navigateToSelectedPerson, homeUIState = uiState, homeSheetUIState = sheetUiState, navigateToSelectedMovie = navigateToSelectedMovie, @@ -128,14 +128,14 @@ fun HomeScreenUI( @OptIn(ExperimentalFoundationApi::class) @Composable private fun HomeScreenUI( - navigateToSelectedActor: (Int) -> Unit, + navigateToSelectedPerson: (Int) -> Unit, navigateToSelectedMovie: (Int) -> Unit, homeUIState: HomeUIState, homeSheetUIState: HomeSheetUIState, updateSearchType: (navigateToSearchByType: SearchType) -> Unit ) { - val popularActorsListState = rememberLazyListState() - val trendingActorsListState = rememberLazyListState() + val popularPersonsListState = rememberLazyListState() + val trendingPersonsListState = rememberLazyListState() val homeTabs = listOf( TabItem("Actors"), TabItem("Movies"), @@ -156,12 +156,12 @@ private fun HomeScreenUI( ) { when (it) { 0 -> { - updateSearchType(SearchType.Actors) - ActorsTabContent( + updateSearchType(SearchType.Persons) + PersonsTabContent( homeUIState = homeUIState, - navigateToSelectedActor = navigateToSelectedActor, - popularActorsListState = popularActorsListState, - trendingActorsListState = trendingActorsListState + navigateToSelectedPerson = navigateToSelectedPerson, + popularPersonsListState = popularPersonsListState, + trendingPersonsListState = trendingPersonsListState ) } @@ -189,14 +189,14 @@ private fun HomeScreenUI( private fun HomeScreenUILightPreview() { ComposeActorsTheme(darkTheme = false) { HomeScreenUI( - navigateToSelectedActor = {}, + navigateToSelectedPerson = {}, navigateToSelectedMovie = {}, homeSheetUIState = HomeSheetUIState(fakeMovieDetail), updateSearchType = {}, homeUIState = HomeUIState( - popularActorList = fakeActorsList(), - trendingActorList = fakeActorsList(), - isFetchingActors = false, + popularPersonList = fakePersonsList(), + trendingPersonList = fakePersonsList(), + isFetchingPersons = false, upcomingMoviesList = fakeMovieList(), nowPlayingMoviesList = flow { fakeMovieList() } ), @@ -209,14 +209,14 @@ private fun HomeScreenUILightPreview() { private fun HomeScreenUIDarkPreview() { ComposeActorsTheme(darkTheme = true) { HomeScreenUI( - navigateToSelectedActor = {}, + navigateToSelectedPerson = {}, navigateToSelectedMovie = {}, homeSheetUIState = HomeSheetUIState(fakeMovieDetail), updateSearchType = {}, homeUIState = HomeUIState( - popularActorList = fakeActorsList(), - trendingActorList = fakeActorsList(), - isFetchingActors = false, + popularPersonList = fakePersonsList(), + trendingPersonList = fakePersonsList(), + isFetchingPersons = false, upcomingMoviesList = fakeMovieList(), nowPlayingMoviesList = flow { fakeMovieList() } ), diff --git a/app/src/main/java/com/developersbreach/composeactors/ui/screens/home/HomeTopAppBar.kt b/app/src/main/java/com/developersbreach/composeactors/ui/screens/home/HomeTopAppBar.kt index 0e6afee..586d47f 100644 --- a/app/src/main/java/com/developersbreach/composeactors/ui/screens/home/HomeTopAppBar.kt +++ b/app/src/main/java/com/developersbreach/composeactors/ui/screens/home/HomeTopAppBar.kt @@ -85,7 +85,7 @@ private fun SearchBarPreview() { ComposeActorsTheme(darkTheme = true) { HomeTopAppBarContent( navigateToSearch = { }, - searchType = SearchType.Actors + searchType = SearchType.Persons ) } } diff --git a/app/src/main/java/com/developersbreach/composeactors/ui/screens/home/HomeUIState.kt b/app/src/main/java/com/developersbreach/composeactors/ui/screens/home/HomeUIState.kt index 1c920a8..c7818b1 100644 --- a/app/src/main/java/com/developersbreach/composeactors/ui/screens/home/HomeUIState.kt +++ b/app/src/main/java/com/developersbreach/composeactors/ui/screens/home/HomeUIState.kt @@ -1,7 +1,7 @@ package com.developersbreach.composeactors.ui.screens.home import androidx.paging.PagingData -import com.developersbreach.composeactors.data.model.Actor +import com.developersbreach.composeactors.data.model.Person import com.developersbreach.composeactors.data.model.Movie import com.developersbreach.composeactors.data.model.MovieDetail import com.developersbreach.composeactors.ui.screens.modalSheets.SheetContentMovieDetails @@ -14,9 +14,9 @@ import kotlinx.coroutines.flow.emptyFlow * Models the UI state for the [HomeScreen] screen. */ data class HomeUIState( - var popularActorList: List = emptyList(), - var trendingActorList: List = emptyList(), - val isFetchingActors: Boolean = false, + var popularPersonList: List = emptyList(), + var trendingPersonList: List = emptyList(), + val isFetchingPersons: Boolean = false, var upcomingMoviesList: List = emptyList(), var nowPlayingMoviesList: Flow> = emptyFlow(), ) diff --git a/app/src/main/java/com/developersbreach/composeactors/ui/screens/home/HomeViewModel.kt b/app/src/main/java/com/developersbreach/composeactors/ui/screens/home/HomeViewModel.kt index ca8ce49..815b887 100644 --- a/app/src/main/java/com/developersbreach/composeactors/ui/screens/home/HomeViewModel.kt +++ b/app/src/main/java/com/developersbreach/composeactors/ui/screens/home/HomeViewModel.kt @@ -48,11 +48,11 @@ class HomeViewModel @Inject constructor( } private suspend fun startFetchingActors() { - uiState = HomeUIState(isFetchingActors = true) + uiState = HomeUIState(isFetchingPersons = true) uiState = HomeUIState( - popularActorList = personRepository.getPopularPersons(), - trendingActorList = personRepository.getTrendingPersons(), - isFetchingActors = false, + popularPersonList = personRepository.getPopularPersons(), + trendingPersonList = personRepository.getTrendingPersons(), + isFetchingPersons = false, upcomingMoviesList = movieRepository.getUpcomingMovies(), nowPlayingMoviesList = getPagedMovies().cachedIn(viewModelScope) ) @@ -60,7 +60,7 @@ class HomeViewModel @Inject constructor( fun updateHomeSearchType(searchType: SearchType) { when (searchType) { - SearchType.Actors -> _updateHomeSearchType.value = SearchType.Actors + SearchType.Persons -> _updateHomeSearchType.value = SearchType.Persons SearchType.Movies -> _updateHomeSearchType.value = SearchType.Movies } } diff --git a/app/src/main/java/com/developersbreach/composeactors/ui/screens/home/tabs/ActorsTabContent.kt b/app/src/main/java/com/developersbreach/composeactors/ui/screens/home/tabs/ActorsTabContent.kt index 7703644..f6d4eb7 100644 --- a/app/src/main/java/com/developersbreach/composeactors/ui/screens/home/tabs/ActorsTabContent.kt +++ b/app/src/main/java/com/developersbreach/composeactors/ui/screens/home/tabs/ActorsTabContent.kt @@ -28,7 +28,7 @@ import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp import com.developersbreach.composeactors.R -import com.developersbreach.composeactors.data.model.Actor +import com.developersbreach.composeactors.data.model.Person import com.developersbreach.composeactors.ui.components.AppDivider import com.developersbreach.composeactors.ui.components.CategoryTitle import com.developersbreach.composeactors.ui.components.LoadNetworkImage @@ -38,82 +38,77 @@ import com.developersbreach.composeactors.ui.screens.home.HomeUIState @Composable -fun ActorsTabContent( +fun PersonsTabContent( homeUIState: HomeUIState, - navigateToSelectedActor: (Int) -> Unit, - popularActorsListState: LazyListState, - trendingActorsListState: LazyListState + navigateToSelectedPerson: (Int) -> Unit, + popularPersonsListState: LazyListState, + trendingPersonsListState: LazyListState ) { - // Show progress while data is loading - ShowProgressIndicator(isLoadingData = homeUIState.isFetchingActors) + ShowProgressIndicator(isLoadingData = homeUIState.isFetchingPersons) LazyColumn( contentPadding = PaddingValues(vertical = 16.dp), modifier = Modifier.fillMaxSize() ) { - // Show text for home category list popular. item { CategoryTitle(stringResource(R.string.category_actors_popular)) Spacer(modifier = Modifier.padding(vertical = 8.dp)) - // List row of all popular actors. - ItemActorList( - actorsList = homeUIState.popularActorList, - navigateToSelectedActor = navigateToSelectedActor, - actorsListState = popularActorsListState + PersonsList( + personsList = homeUIState.popularPersonList, + navigateToSelectedPerson = navigateToSelectedPerson, + personsListState = popularPersonsListState ) AppDivider(verticalPadding = 32.dp) - // Show text for actors category list trending. CategoryTitle(stringResource(R.string.category_actors_trending)) Spacer(modifier = Modifier.padding(vertical = 8.dp)) - // List row of all trending actors. - ItemActorList( - actorsList = homeUIState.trendingActorList, - navigateToSelectedActor = navigateToSelectedActor, - actorsListState = trendingActorsListState + PersonsList( + personsList = homeUIState.trendingPersonList, + navigateToSelectedPerson = navigateToSelectedPerson, + personsListState = trendingPersonsListState ) } } } /** - * @param actorsList row list elements of [Actor] + * @param personsList row list elements of [Person] */ @Composable -private fun ItemActorList( - actorsList: List, - navigateToSelectedActor: (Int) -> Unit, - actorsListState: LazyListState +private fun PersonsList( + personsList: List, + navigateToSelectedPerson: (Int) -> Unit, + personsListState: LazyListState ) { LazyRow( - state = actorsListState, + state = personsListState, horizontalArrangement = Arrangement.spacedBy(12.dp), contentPadding = PaddingValues(horizontal = 16.dp) ) { items( - items = actorsList, - key = { it.actorId } - ) { actor -> - ItemActor( - actor = actor, - onClickActor = navigateToSelectedActor + items = personsList, + key = { it.personId } + ) { person -> + ItemPerson( + person = person, + onClickPerson = navigateToSelectedPerson ) } } } /** - * @param onClickActor navigate to actor [ActorDetailsScreen] from user selected actor. + * @param onClickPerson navigate to person [ActorDetailsScreen] from user selected person. */ @Composable -private fun ItemActor( - actor: Actor, - onClickActor: (Int) -> Unit +private fun ItemPerson( + person: Person, + onClickPerson: (Int) -> Unit ) { Card( modifier = Modifier .width(150.dp) .clip(shape = MaterialTheme.shapes.large) - .clickable(onClick = { onClickActor(actor.actorId) }) + .clickable(onClick = { onClickPerson(person.personId) }) ) { Column( horizontalAlignment = Alignment.CenterHorizontally @@ -121,7 +116,7 @@ private fun ItemActor( Spacer(modifier = Modifier.padding(vertical = 12.dp)) LoadNetworkImage( - imageUrl = actor.profileUrl, + imageUrl = person.profileUrl, contentDescription = stringResource(R.string.cd_actor_image), shape = CircleShape, modifier = Modifier @@ -136,7 +131,7 @@ private fun ItemActor( Spacer(modifier = Modifier.padding(vertical = 8.dp)) Text( - text = actor.actorName, + text = person.personName, style = MaterialTheme.typography.subtitle1, textAlign = TextAlign.Center, maxLines = 1, diff --git a/app/src/main/java/com/developersbreach/composeactors/ui/screens/home/tabs/MoviesTabContent.kt b/app/src/main/java/com/developersbreach/composeactors/ui/screens/home/tabs/MoviesTabContent.kt index b68c649..8da8725 100644 --- a/app/src/main/java/com/developersbreach/composeactors/ui/screens/home/tabs/MoviesTabContent.kt +++ b/app/src/main/java/com/developersbreach/composeactors/ui/screens/home/tabs/MoviesTabContent.kt @@ -144,9 +144,9 @@ private fun MoviesTabContentPreview() { ComposeActorsTheme { MoviesTabContent( homeUIState = HomeUIState( - popularActorList = listOf(), - trendingActorList = listOf(), - isFetchingActors = false, + popularPersonList = listOf(), + trendingPersonList = listOf(), + isFetchingPersons = false, upcomingMoviesList = listOf(), nowPlayingMoviesList = emptyFlow() ), diff --git a/app/src/main/java/com/developersbreach/composeactors/ui/screens/modalSheets/SheetContentActorDetails.kt b/app/src/main/java/com/developersbreach/composeactors/ui/screens/modalSheets/SheetContentActorDetails.kt index 0f98c07..b6ebfd3 100644 --- a/app/src/main/java/com/developersbreach/composeactors/ui/screens/modalSheets/SheetContentActorDetails.kt +++ b/app/src/main/java/com/developersbreach/composeactors/ui/screens/modalSheets/SheetContentActorDetails.kt @@ -18,8 +18,8 @@ import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import com.developersbreach.composeactors.R -import com.developersbreach.composeactors.data.datasource.fake.fakeActorDetail -import com.developersbreach.composeactors.data.model.ActorDetail +import com.developersbreach.composeactors.data.datasource.fake.fakePersonDetail +import com.developersbreach.composeactors.data.model.PersonDetail import com.developersbreach.composeactors.ui.components.LoadNetworkImage import com.developersbreach.composeactors.ui.components.SheetHorizontalSeparator import com.developersbreach.composeactors.ui.screens.actorDetails.composables.ActorInfoHeader @@ -32,7 +32,7 @@ import com.developersbreach.composeactors.ui.theme.ComposeActorsTheme @OptIn(ExperimentalFoundationApi::class) @Composable fun SheetContentActorDetails( - actor: ActorDetail?, + actor: PersonDetail?, ) { LazyColumn( horizontalAlignment = Alignment.CenterHorizontally, @@ -54,7 +54,7 @@ fun SheetContentActorDetails( Spacer(modifier = Modifier.height(24.dp)) ActorProfileImage(actor?.profileUrl) Spacer(modifier = Modifier.height(16.dp)) - ActorNameText(actor?.actorName.toString()) + ActorNameText(actor?.personName.toString()) Spacer(modifier = Modifier.height(16.dp)) ActorInfoHeader(actorData = actor) Spacer(modifier = Modifier.height(8.dp)) @@ -121,7 +121,7 @@ private fun ActorBiographyText( private fun SheetContentActorDetailsLightPreview() { ComposeActorsTheme(darkTheme = false) { SheetContentActorDetails( - actor = fakeActorDetail + actor = fakePersonDetail ) } } @@ -131,7 +131,7 @@ private fun SheetContentActorDetailsLightPreview() { private fun SheetContentActorDetailsDarkPreview() { ComposeActorsTheme(darkTheme = true) { SheetContentActorDetails( - actor = fakeActorDetail + actor = fakePersonDetail ) } } diff --git a/app/src/main/java/com/developersbreach/composeactors/ui/screens/movieDetail/MovieDetailViewModel.kt b/app/src/main/java/com/developersbreach/composeactors/ui/screens/movieDetail/MovieDetailViewModel.kt index 5421761..21fcca1 100644 --- a/app/src/main/java/com/developersbreach/composeactors/ui/screens/movieDetail/MovieDetailViewModel.kt +++ b/app/src/main/java/com/developersbreach/composeactors/ui/screens/movieDetail/MovieDetailViewModel.kt @@ -30,7 +30,7 @@ class MovieDetailViewModel @Inject constructor( var uiState by mutableStateOf(MovieDetailsUIState(movieData = null)) private set - var sheetUiState by mutableStateOf(ActorsSheetUIState(selectedActorDetails = null)) + var sheetUiState by mutableStateOf(ActorsSheetUIState(selectedPersonDetails = null)) private set var movieSheetUiState by mutableStateOf(MovieSheetUIState(selectedMovieDetails = null)) @@ -94,18 +94,18 @@ class MovieDetailViewModel @Inject constructor( } /** - * @param actorId for querying selected actor details. + * @param personId for querying selected actor details. * This function will be triggered only when user clicks any actor items. * Updates the data values to show in modal sheet. */ - fun getSelectedActorDetails( - actorId: Int? + fun getSelectedPersonDetails( + personId: Int? ) { viewModelScope.launch { try { - if (actorId != null) { - val actorsData = personRepository.getPersonDetails(actorId) - sheetUiState = ActorsSheetUIState(selectedActorDetails = actorsData) + if (personId != null) { + val actorsData = personRepository.getPersonDetails(personId) + sheetUiState = ActorsSheetUIState(selectedPersonDetails = actorsData) } } catch (e: IOException) { Timber.e("$e") diff --git a/app/src/main/java/com/developersbreach/composeactors/ui/screens/movieDetail/MovieDetailsScreen.kt b/app/src/main/java/com/developersbreach/composeactors/ui/screens/movieDetail/MovieDetailsScreen.kt index 487a34a..e402c25 100644 --- a/app/src/main/java/com/developersbreach/composeactors/ui/screens/movieDetail/MovieDetailsScreen.kt +++ b/app/src/main/java/com/developersbreach/composeactors/ui/screens/movieDetail/MovieDetailsScreen.kt @@ -54,10 +54,10 @@ private fun setBottomSheetCallBack( ) = { bottomSheetType: BottomSheetType -> when (bottomSheetType) { BottomSheetType.MovieDetailBottomSheet -> { - viewModel.getSelectedMovieDetails(bottomSheetType.movieOrActorId) + viewModel.getSelectedMovieDetails(bottomSheetType.movieOrPersonId) } BottomSheetType.ActorDetailBottomSheet -> { - viewModel.getSelectedActorDetails(bottomSheetType.movieOrActorId) + viewModel.getSelectedPersonDetails(bottomSheetType.movieOrPersonId) } } selectedBottomSheet.value = bottomSheetType diff --git a/app/src/main/java/com/developersbreach/composeactors/ui/screens/movieDetail/MovieDetailsUI.kt b/app/src/main/java/com/developersbreach/composeactors/ui/screens/movieDetail/MovieDetailsUI.kt index 1c6abe4..1fe89b2 100644 --- a/app/src/main/java/com/developersbreach/composeactors/ui/screens/movieDetail/MovieDetailsUI.kt +++ b/app/src/main/java/com/developersbreach/composeactors/ui/screens/movieDetail/MovieDetailsUI.kt @@ -200,7 +200,7 @@ private fun GetBottomSheetContent( } BottomSheetType.ActorDetailBottomSheet -> { SheetContentActorDetails( - actor = sheetUiState.selectedActorDetails + actor = sheetUiState.selectedPersonDetails ) } } diff --git a/app/src/main/java/com/developersbreach/composeactors/ui/screens/movieDetail/MovieDetailsUIState.kt b/app/src/main/java/com/developersbreach/composeactors/ui/screens/movieDetail/MovieDetailsUIState.kt index a54c740..79e0572 100644 --- a/app/src/main/java/com/developersbreach/composeactors/ui/screens/movieDetail/MovieDetailsUIState.kt +++ b/app/src/main/java/com/developersbreach/composeactors/ui/screens/movieDetail/MovieDetailsUIState.kt @@ -1,6 +1,6 @@ package com.developersbreach.composeactors.ui.screens.movieDetail -import com.developersbreach.composeactors.data.model.ActorDetail +import com.developersbreach.composeactors.data.model.PersonDetail import com.developersbreach.composeactors.data.model.Cast import com.developersbreach.composeactors.data.model.Flatrate import com.developersbreach.composeactors.data.model.Movie @@ -24,7 +24,7 @@ data class MovieDetailsUIState( * Models the UI state for the SheetContentActorDetails modal sheet. */ data class ActorsSheetUIState( - val selectedActorDetails: ActorDetail? = null + val selectedPersonDetails: PersonDetail? = null ) data class MovieSheetUIState( diff --git a/app/src/main/java/com/developersbreach/composeactors/ui/screens/movieDetail/composables/GetMovieCast.kt b/app/src/main/java/com/developersbreach/composeactors/ui/screens/movieDetail/composables/GetMovieCast.kt index ea6fa0f..7eb320f 100644 --- a/app/src/main/java/com/developersbreach/composeactors/ui/screens/movieDetail/composables/GetMovieCast.kt +++ b/app/src/main/java/com/developersbreach/composeactors/ui/screens/movieDetail/composables/GetMovieCast.kt @@ -46,7 +46,7 @@ fun GetMovieCast( ) { items( items = uiState.movieCast, - key = { it.actorId } + key = { it.personId } ) { cast -> ItemCast( cast = cast, @@ -72,7 +72,7 @@ private fun ItemCast( .clickable { openMovieDetailsBottomSheet() selectBottomSheetCallback(BottomSheetType.ActorDetailBottomSheet.apply { - movieOrActorId = cast.actorId + movieOrPersonId = cast.personId }) } ) { diff --git a/app/src/main/java/com/developersbreach/composeactors/ui/screens/movieDetail/composables/GetSimilarOrRecommendedMovies.kt b/app/src/main/java/com/developersbreach/composeactors/ui/screens/movieDetail/composables/GetSimilarOrRecommendedMovies.kt index c4ae162..4e73945 100644 --- a/app/src/main/java/com/developersbreach/composeactors/ui/screens/movieDetail/composables/GetSimilarOrRecommendedMovies.kt +++ b/app/src/main/java/com/developersbreach/composeactors/ui/screens/movieDetail/composables/GetSimilarOrRecommendedMovies.kt @@ -39,7 +39,7 @@ fun GetRelatedMovies( .size(100.dp, 150.dp) .clickable { selectBottomSheetCallback(BottomSheetType.MovieDetailBottomSheet.apply { - movieOrActorId = movie.movieId + movieOrPersonId = movie.movieId }) openMovieDetailsBottomSheet() } diff --git a/app/src/main/java/com/developersbreach/composeactors/ui/screens/search/ActorSearchUI.kt b/app/src/main/java/com/developersbreach/composeactors/ui/screens/search/ActorSearchUI.kt index 2df8c42..d684e48 100644 --- a/app/src/main/java/com/developersbreach/composeactors/ui/screens/search/ActorSearchUI.kt +++ b/app/src/main/java/com/developersbreach/composeactors/ui/screens/search/ActorSearchUI.kt @@ -13,52 +13,45 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp -import com.developersbreach.composeactors.data.datasource.fake.fakeActorsList -import com.developersbreach.composeactors.data.model.Actor -import com.developersbreach.composeactors.ui.screens.actorDetails.ActorDetailsScreen +import com.developersbreach.composeactors.data.datasource.fake.fakePersonsList +import com.developersbreach.composeactors.data.model.Person import com.developersbreach.composeactors.ui.theme.ComposeActorsTheme -/** - * @param actorsList searchable results row list elements of [Actor] - */ @Composable -fun ActorSearchUI( - actorsList: List, - navigateToSelectedActor: (Int) -> Unit, +fun PersonSearchUI( + persons: List, + navigateToSelectedPerson: (Int) -> Unit, closeKeyboard: () -> Unit? ) { LazyColumn( // This padding helps avoid content going behind the navigation bars. modifier = Modifier.padding(bottom = 48.dp) ) { - items(actorsList) { actor -> - ItemSearchActor( - actor = actor, - onClickActor = navigateToSelectedActor, + items(persons) { + ItemSearchPerson( + person = it, + onClickPerson = navigateToSelectedPerson, closeKeyboard = closeKeyboard ) } } } -/** - * @param onClickActor navigate to actor [ActorDetailsScreen] from user selected actor. - */ @Composable -private fun ItemSearchActor( - actor: Actor, - onClickActor: (Int) -> Unit, +private fun ItemSearchPerson( + person: Person, + onClickPerson: (Int) -> Unit, closeKeyboard: () -> Unit? ) { Text( - text = actor.actorName, + text = person.personName, style = MaterialTheme.typography.h6, color = MaterialTheme.colors.onBackground, modifier = Modifier .fillMaxWidth() .clickable { closeKeyboard() - onClickActor(actor.actorId) + onClickPerson(person.personId) } .padding(horizontal = 20.dp, vertical = 12.dp) .wrapContentWidth(Alignment.Start) @@ -67,11 +60,11 @@ private fun ItemSearchActor( @Preview(showBackground = true, backgroundColor = 0xFF211a18) @Composable -private fun ActorSearchUIDarkPreview() { +private fun PersonSearchUIDarkPreview() { ComposeActorsTheme(darkTheme = true) { - ActorSearchUI( - actorsList = fakeActorsList(), - navigateToSelectedActor = {}, + PersonSearchUI( + persons = fakePersonsList(), + navigateToSelectedPerson = {}, closeKeyboard = {} ) } @@ -79,11 +72,11 @@ private fun ActorSearchUIDarkPreview() { @Preview(showBackground = true) @Composable -private fun ActorSearchUILightPreview() { +private fun PersonSearchUILightPreview() { ComposeActorsTheme(darkTheme = false) { - ActorSearchUI( - actorsList = fakeActorsList(), - navigateToSelectedActor = {}, + PersonSearchUI( + persons = fakePersonsList(), + navigateToSelectedPerson = {}, closeKeyboard = {} ) } diff --git a/app/src/main/java/com/developersbreach/composeactors/ui/screens/search/SearchScreen.kt b/app/src/main/java/com/developersbreach/composeactors/ui/screens/search/SearchScreen.kt index 1000f2b..8391136 100644 --- a/app/src/main/java/com/developersbreach/composeactors/ui/screens/search/SearchScreen.kt +++ b/app/src/main/java/com/developersbreach/composeactors/ui/screens/search/SearchScreen.kt @@ -1,36 +1,26 @@ package com.developersbreach.composeactors.ui.screens.search -import androidx.compose.material.TopAppBar import androidx.compose.runtime.Composable import androidx.compose.ui.res.stringResource import androidx.hilt.navigation.compose.hiltViewModel import com.developersbreach.composeactors.R -import com.developersbreach.composeactors.ui.screens.home.HomeScreen -/** - * @param viewModel to manage ui state of [SearchScreen] - * @param navigateUp navigates user to previous screen. - * - * This destination can be accessed only from [HomeScreen]. - * Shows searchable category list of actors in row. - * Shows [SearchAppBar] search box looking ui in [TopAppBar] - */ @Composable fun SearchScreen( viewModel: SearchViewModel = hiltViewModel(), navigateUp: () -> Unit, - navigateToSelectedActor: (Int) -> Unit, + navigateToSelectedPerson: (Int) -> Unit, navigateToSelectedMovie: (Int) -> Unit ) { val uiState = viewModel.uiState val navigateToSearchBySearchType = when (viewModel.searchType) { - SearchType.Actors -> navigateToSelectedActor + SearchType.Persons -> navigateToSelectedPerson SearchType.Movies -> navigateToSelectedMovie } val searchHint = when (viewModel.searchType) { - SearchType.Actors -> stringResource(R.string.hint_search_query_actors) + SearchType.Persons -> stringResource(R.string.hint_search_query_actors) SearchType.Movies -> stringResource(R.string.hint_search_query_movies) } diff --git a/app/src/main/java/com/developersbreach/composeactors/ui/screens/search/SearchScreenUI.kt b/app/src/main/java/com/developersbreach/composeactors/ui/screens/search/SearchScreenUI.kt index ffd7904..0c5d16f 100644 --- a/app/src/main/java/com/developersbreach/composeactors/ui/screens/search/SearchScreenUI.kt +++ b/app/src/main/java/com/developersbreach/composeactors/ui/screens/search/SearchScreenUI.kt @@ -14,7 +14,7 @@ import androidx.compose.ui.semantics.semantics import androidx.compose.ui.semantics.testTag import androidx.compose.ui.tooling.preview.Preview import com.developersbreach.composeactors.R -import com.developersbreach.composeactors.data.datasource.fake.fakeActorsList +import com.developersbreach.composeactors.data.datasource.fake.fakePersonsList import com.developersbreach.composeactors.ui.components.ShowSearchProgress import com.developersbreach.composeactors.ui.theme.ComposeActorsTheme @@ -52,12 +52,12 @@ fun SearchScreenUI( when (uiState) { is SearchUIState.ActorSearch -> { // Show progress while search is happening - val isLoadingData = !uiState.isSearchingResults && uiState.actorList.isEmpty() + val isLoadingData = !uiState.isSearchingResults && uiState.personList.isEmpty() ShowSearchProgress(isLoadingData) // Main content for this screen - ActorSearchUI( - actorsList = uiState.actorList, - navigateToSelectedActor = navigateToSearchBySearchType, + PersonSearchUI( + persons = uiState.personList, + navigateToSelectedPerson = navigateToSearchBySearchType, closeKeyboard = closeKeyboard ) } @@ -88,7 +88,7 @@ private fun SearchScreenUIDarkPreview() { searchHint = stringResource(R.string.hint_search_query_actors), onSearchQueryChange = {}, uiState = SearchUIState.ActorSearch( - actorList = fakeActorsList(), + personList = fakePersonsList(), isSearchingResults = false ) ) @@ -105,7 +105,7 @@ private fun SearchScreenUILightPreview() { searchHint = stringResource(R.string.hint_search_query_actors), onSearchQueryChange = {}, uiState = SearchUIState.ActorSearch( - actorList = fakeActorsList(), + personList = fakePersonsList(), isSearchingResults = false ) ) diff --git a/app/src/main/java/com/developersbreach/composeactors/ui/screens/search/SearchType.kt b/app/src/main/java/com/developersbreach/composeactors/ui/screens/search/SearchType.kt index 9f49917..33e4a16 100644 --- a/app/src/main/java/com/developersbreach/composeactors/ui/screens/search/SearchType.kt +++ b/app/src/main/java/com/developersbreach/composeactors/ui/screens/search/SearchType.kt @@ -1,6 +1,6 @@ package com.developersbreach.composeactors.ui.screens.search enum class SearchType { - Actors, + Persons, Movies } \ No newline at end of file diff --git a/app/src/main/java/com/developersbreach/composeactors/ui/screens/search/SearchUIState.kt b/app/src/main/java/com/developersbreach/composeactors/ui/screens/search/SearchUIState.kt index 72ac8cb..23911c9 100644 --- a/app/src/main/java/com/developersbreach/composeactors/ui/screens/search/SearchUIState.kt +++ b/app/src/main/java/com/developersbreach/composeactors/ui/screens/search/SearchUIState.kt @@ -1,6 +1,6 @@ package com.developersbreach.composeactors.ui.screens.search -import com.developersbreach.composeactors.data.model.Actor +import com.developersbreach.composeactors.data.model.Person import com.developersbreach.composeactors.data.model.Movie /** @@ -14,7 +14,7 @@ sealed class SearchUIState { ): SearchUIState() data class ActorSearch( - val actorList: List = listOf(), + val personList: List = listOf(), val isSearchingResults: Boolean = false, ): SearchUIState() } \ No newline at end of file diff --git a/app/src/main/java/com/developersbreach/composeactors/ui/screens/search/SearchViewModel.kt b/app/src/main/java/com/developersbreach/composeactors/ui/screens/search/SearchViewModel.kt index 69957d9..2ac4419 100644 --- a/app/src/main/java/com/developersbreach/composeactors/ui/screens/search/SearchViewModel.kt +++ b/app/src/main/java/com/developersbreach/composeactors/ui/screens/search/SearchViewModel.kt @@ -33,11 +33,11 @@ class SearchViewModel @Inject constructor( fun performQuery(searchQuery: String) { viewModelScope.launch { when (searchType) { - SearchType.Actors -> { + SearchType.Persons -> { uiState = SearchUIState.ActorSearch(isSearchingResults = true) val searchData = searchRepository.getSearchableActorsData(searchQuery) uiState = (uiState as SearchUIState.ActorSearch).copy( - actorList = searchData, + personList = searchData, isSearchingResults = false ) } From 9ff7e7a52a29c4187fde196cc3cf1e978016f7f5 Mon Sep 17 00:00:00 2001 From: Raj Date: Sun, 22 Dec 2024 23:08:08 +0530 Subject: [PATCH 4/4] Moved each model to its related feature packages --- .../data/datasource/database/DatabaseDataSource.kt | 12 ++++++------ .../composeactors/data/datasource/fake/MovieData.kt | 8 ++++---- .../composeactors/data/datasource/fake/PersonData.kt | 8 ++++---- .../composeactors/data/{ => movie}/model/Cast.kt | 2 +- .../composeactors/data/{ => movie}/model/Genre.kt | 2 +- .../composeactors/data/{ => movie}/model/Movie.kt | 2 +- .../data/{ => movie}/model/MovieDetail.kt | 2 +- .../data/{ => movie}/model/MovieProvider.kt | 2 +- .../data/movie/paging/MoviesPagingSource.kt | 2 +- .../composeactors/data/movie/remote/MovieApi.kt | 8 ++++---- .../composeactors/data/movie/remote/MovieApiImpl.kt | 8 ++++---- .../data/movie/repository/MovieRepository.kt | 8 ++++---- .../data/movie/repository/MovieRepositoryImpl.kt | 10 +++++----- .../data/{ => person}/model/FavoritePerson.kt | 2 +- .../composeactors/data/{ => person}/model/Person.kt | 2 +- .../data/{ => person}/model/PersonDetail.kt | 2 +- .../composeactors/data/person/remote/PersonApi.kt | 6 +++--- .../data/person/remote/PersonApiImpl.kt | 6 +++--- .../data/person/repository/PersonRepository.kt | 8 ++++---- .../data/person/repository/PersonRepositoryImpl.kt | 8 ++++---- .../composeactors/data/search/remote/SearchApi.kt | 4 ++-- .../data/search/remote/SearchApiImpl.kt | 4 ++-- .../data/search/repository/SearchRepository.kt | 4 ++-- .../data/search/repository/SearchRepositoryImpl.kt | 4 ++-- .../data/trending/remote/TrendingApi.kt | 2 +- .../data/trending/remote/TrendingApiImpl.kt | 2 +- .../data/trending/repository/TrendingRepository.kt | 2 +- .../trending/repository/TrendingRepositoryImpl.kt | 2 +- .../composeactors/domain/movie/GetPagedMovies.kt | 2 +- .../ui/screens/actorDetails/ActorDetailsUIState.kt | 6 +++--- .../ui/screens/actorDetails/ActorDetailsViewModel.kt | 4 ++-- .../actorDetails/composables/ActorCastedMovies.kt | 2 +- .../actorDetails/composables/ActorInfoHeader.kt | 2 +- .../ui/screens/favorites/FavoriteViewModel.kt | 4 ++-- .../ui/screens/favorites/FavoritesScreen.kt | 4 ++-- .../ui/screens/favorites/FavoritesScreenUI.kt | 4 ++-- .../favorites/tabs/FavoriteActorsTabContent.kt | 2 +- .../favorites/tabs/FavoriteMoviesTabContent.kt | 2 +- .../model => ui/screens/home}/HomeOptionItems.kt | 2 +- .../composeactors/ui/screens/home/HomeUIState.kt | 6 +++--- .../ui/screens/home/tabs/ActorsTabContent.kt | 2 +- .../ui/screens/home/tabs/MoviesTabContent.kt | 2 +- .../screens/modalSheets/OptionsModalSheetContent.kt | 4 ++-- .../screens/modalSheets/SheetContentActorDetails.kt | 2 +- .../screens/modalSheets/SheetContentMovieDetails.kt | 2 +- .../modalSheets/SheetContentMovieProviders.kt | 2 +- .../screens/movieDetail}/BottomSheetType.kt | 2 +- .../ui/screens/movieDetail/MovieDetailViewModel.kt | 4 ++-- .../ui/screens/movieDetail/MovieDetailsContent.kt | 1 - .../ui/screens/movieDetail/MovieDetailsScreen.kt | 1 - .../ui/screens/movieDetail/MovieDetailsUI.kt | 3 +-- .../ui/screens/movieDetail/MovieDetailsUIState.kt | 10 +++++----- .../screens/movieDetail/composables/GetMovieCast.kt | 6 +++--- .../composables/GetSimilarOrRecommendedMovies.kt | 4 ++-- .../ui/screens/movieDetail/composables/MovieGenre.kt | 2 +- .../composeactors/ui/screens/search/ActorSearchUI.kt | 2 +- .../composeactors/ui/screens/search/MovieSearchUI.kt | 2 +- .../composeactors/ui/screens/search/SearchUIState.kt | 4 ++-- 58 files changed, 112 insertions(+), 115 deletions(-) rename app/src/main/java/com/developersbreach/composeactors/data/{ => movie}/model/Cast.kt (90%) rename app/src/main/java/com/developersbreach/composeactors/data/{ => movie}/model/Genre.kt (83%) rename app/src/main/java/com/developersbreach/composeactors/data/{ => movie}/model/Movie.kt (95%) rename app/src/main/java/com/developersbreach/composeactors/data/{ => movie}/model/MovieDetail.kt (96%) rename app/src/main/java/com/developersbreach/composeactors/data/{ => movie}/model/MovieProvider.kt (91%) rename app/src/main/java/com/developersbreach/composeactors/data/{ => person}/model/FavoritePerson.kt (75%) rename app/src/main/java/com/developersbreach/composeactors/data/{ => person}/model/Person.kt (89%) rename app/src/main/java/com/developersbreach/composeactors/data/{ => person}/model/PersonDetail.kt (96%) rename app/src/main/java/com/developersbreach/composeactors/{data/model => ui/screens/home}/HomeOptionItems.kt (93%) rename app/src/main/java/com/developersbreach/composeactors/{data/model => ui/screens/movieDetail}/BottomSheetType.kt (71%) diff --git a/app/src/main/java/com/developersbreach/composeactors/data/datasource/database/DatabaseDataSource.kt b/app/src/main/java/com/developersbreach/composeactors/data/datasource/database/DatabaseDataSource.kt index bb5f22e..fdfcb6c 100644 --- a/app/src/main/java/com/developersbreach/composeactors/data/datasource/database/DatabaseDataSource.kt +++ b/app/src/main/java/com/developersbreach/composeactors/data/datasource/database/DatabaseDataSource.kt @@ -3,12 +3,12 @@ package com.developersbreach.composeactors.data.datasource.database import androidx.lifecycle.LiveData import androidx.lifecycle.map import com.developersbreach.composeactors.core.database.AppDatabase -import com.developersbreach.composeactors.data.model.FavoritePerson -import com.developersbreach.composeactors.data.model.Movie -import com.developersbreach.composeactors.data.model.personAsDatabaseModel -import com.developersbreach.composeactors.data.model.personAsDomainModel -import com.developersbreach.composeactors.data.model.movieAsDatabaseModel -import com.developersbreach.composeactors.data.model.movieAsDomainModel +import com.developersbreach.composeactors.data.person.model.FavoritePerson +import com.developersbreach.composeactors.data.movie.model.Movie +import com.developersbreach.composeactors.data.person.model.personAsDatabaseModel +import com.developersbreach.composeactors.data.person.model.personAsDomainModel +import com.developersbreach.composeactors.data.movie.model.movieAsDatabaseModel +import com.developersbreach.composeactors.data.movie.model.movieAsDomainModel import javax.inject.Inject import javax.inject.Singleton import kotlinx.coroutines.Dispatchers diff --git a/app/src/main/java/com/developersbreach/composeactors/data/datasource/fake/MovieData.kt b/app/src/main/java/com/developersbreach/composeactors/data/datasource/fake/MovieData.kt index edd7a5b..67a791a 100644 --- a/app/src/main/java/com/developersbreach/composeactors/data/datasource/fake/MovieData.kt +++ b/app/src/main/java/com/developersbreach/composeactors/data/datasource/fake/MovieData.kt @@ -1,9 +1,9 @@ package com.developersbreach.composeactors.data.datasource.fake -import com.developersbreach.composeactors.data.model.Genre -import com.developersbreach.composeactors.data.model.Movie -import com.developersbreach.composeactors.data.model.MovieDetail -import com.developersbreach.composeactors.data.model.ProductionCompanies +import com.developersbreach.composeactors.data.movie.model.Genre +import com.developersbreach.composeactors.data.movie.model.Movie +import com.developersbreach.composeactors.data.movie.model.MovieDetail +import com.developersbreach.composeactors.data.movie.model.ProductionCompanies fun fakeMovieList(): MutableList { val movies = mutableListOf() diff --git a/app/src/main/java/com/developersbreach/composeactors/data/datasource/fake/PersonData.kt b/app/src/main/java/com/developersbreach/composeactors/data/datasource/fake/PersonData.kt index 491373d..2845ef2 100644 --- a/app/src/main/java/com/developersbreach/composeactors/data/datasource/fake/PersonData.kt +++ b/app/src/main/java/com/developersbreach/composeactors/data/datasource/fake/PersonData.kt @@ -1,9 +1,9 @@ package com.developersbreach.composeactors.data.datasource.fake -import com.developersbreach.composeactors.data.model.Person -import com.developersbreach.composeactors.data.model.PersonDetail -import com.developersbreach.composeactors.data.model.Cast -import com.developersbreach.composeactors.data.model.FavoritePerson +import com.developersbreach.composeactors.data.person.model.Person +import com.developersbreach.composeactors.data.person.model.PersonDetail +import com.developersbreach.composeactors.data.movie.model.Cast +import com.developersbreach.composeactors.data.person.model.FavoritePerson private val personsData = listOf( "John travolta", diff --git a/app/src/main/java/com/developersbreach/composeactors/data/model/Cast.kt b/app/src/main/java/com/developersbreach/composeactors/data/movie/model/Cast.kt similarity index 90% rename from app/src/main/java/com/developersbreach/composeactors/data/model/Cast.kt rename to app/src/main/java/com/developersbreach/composeactors/data/movie/model/Cast.kt index 570b25a..e0b2302 100644 --- a/app/src/main/java/com/developersbreach/composeactors/data/model/Cast.kt +++ b/app/src/main/java/com/developersbreach/composeactors/data/movie/model/Cast.kt @@ -1,4 +1,4 @@ -package com.developersbreach.composeactors.data.model +package com.developersbreach.composeactors.data.movie.model import androidx.compose.runtime.Immutable import androidx.compose.runtime.Stable diff --git a/app/src/main/java/com/developersbreach/composeactors/data/model/Genre.kt b/app/src/main/java/com/developersbreach/composeactors/data/movie/model/Genre.kt similarity index 83% rename from app/src/main/java/com/developersbreach/composeactors/data/model/Genre.kt rename to app/src/main/java/com/developersbreach/composeactors/data/movie/model/Genre.kt index ad73316..653a01a 100644 --- a/app/src/main/java/com/developersbreach/composeactors/data/model/Genre.kt +++ b/app/src/main/java/com/developersbreach/composeactors/data/movie/model/Genre.kt @@ -1,4 +1,4 @@ -package com.developersbreach.composeactors.data.model +package com.developersbreach.composeactors.data.movie.model import androidx.compose.runtime.Immutable import androidx.compose.runtime.Stable diff --git a/app/src/main/java/com/developersbreach/composeactors/data/model/Movie.kt b/app/src/main/java/com/developersbreach/composeactors/data/movie/model/Movie.kt similarity index 95% rename from app/src/main/java/com/developersbreach/composeactors/data/model/Movie.kt rename to app/src/main/java/com/developersbreach/composeactors/data/movie/model/Movie.kt index 517111b..839f5cd 100644 --- a/app/src/main/java/com/developersbreach/composeactors/data/model/Movie.kt +++ b/app/src/main/java/com/developersbreach/composeactors/data/movie/model/Movie.kt @@ -1,4 +1,4 @@ -package com.developersbreach.composeactors.data.model +package com.developersbreach.composeactors.data.movie.model import androidx.compose.runtime.Immutable import androidx.compose.runtime.Stable diff --git a/app/src/main/java/com/developersbreach/composeactors/data/model/MovieDetail.kt b/app/src/main/java/com/developersbreach/composeactors/data/movie/model/MovieDetail.kt similarity index 96% rename from app/src/main/java/com/developersbreach/composeactors/data/model/MovieDetail.kt rename to app/src/main/java/com/developersbreach/composeactors/data/movie/model/MovieDetail.kt index df02511..8f3431f 100644 --- a/app/src/main/java/com/developersbreach/composeactors/data/model/MovieDetail.kt +++ b/app/src/main/java/com/developersbreach/composeactors/data/movie/model/MovieDetail.kt @@ -1,4 +1,4 @@ -package com.developersbreach.composeactors.data.model +package com.developersbreach.composeactors.data.movie.model import androidx.compose.runtime.Immutable import androidx.compose.runtime.Stable diff --git a/app/src/main/java/com/developersbreach/composeactors/data/model/MovieProvider.kt b/app/src/main/java/com/developersbreach/composeactors/data/movie/model/MovieProvider.kt similarity index 91% rename from app/src/main/java/com/developersbreach/composeactors/data/model/MovieProvider.kt rename to app/src/main/java/com/developersbreach/composeactors/data/movie/model/MovieProvider.kt index a7a6f39..d74266f 100644 --- a/app/src/main/java/com/developersbreach/composeactors/data/model/MovieProvider.kt +++ b/app/src/main/java/com/developersbreach/composeactors/data/movie/model/MovieProvider.kt @@ -1,4 +1,4 @@ -package com.developersbreach.composeactors.data.model +package com.developersbreach.composeactors.data.movie.model import com.developersbreach.composeactors.core.network.HIGH_RES_IMAGE import kotlinx.serialization.SerialName diff --git a/app/src/main/java/com/developersbreach/composeactors/data/movie/paging/MoviesPagingSource.kt b/app/src/main/java/com/developersbreach/composeactors/data/movie/paging/MoviesPagingSource.kt index d97d98b..cc9c389 100644 --- a/app/src/main/java/com/developersbreach/composeactors/data/movie/paging/MoviesPagingSource.kt +++ b/app/src/main/java/com/developersbreach/composeactors/data/movie/paging/MoviesPagingSource.kt @@ -3,7 +3,7 @@ package com.developersbreach.composeactors.data.movie.paging import androidx.paging.PagingSource import androidx.paging.PagingState import com.developersbreach.composeactors.core.network.PagedResponse -import com.developersbreach.composeactors.data.model.Movie +import com.developersbreach.composeactors.data.movie.model.Movie import com.developersbreach.composeactors.data.movie.repository.MovieRepository class MoviesPagingSource( diff --git a/app/src/main/java/com/developersbreach/composeactors/data/movie/remote/MovieApi.kt b/app/src/main/java/com/developersbreach/composeactors/data/movie/remote/MovieApi.kt index e027062..6f13066 100644 --- a/app/src/main/java/com/developersbreach/composeactors/data/movie/remote/MovieApi.kt +++ b/app/src/main/java/com/developersbreach/composeactors/data/movie/remote/MovieApi.kt @@ -1,10 +1,10 @@ package com.developersbreach.composeactors.data.movie.remote import com.developersbreach.composeactors.core.network.PagedResponse -import com.developersbreach.composeactors.data.model.CastResponse -import com.developersbreach.composeactors.data.model.Movie -import com.developersbreach.composeactors.data.model.MovieDetail -import com.developersbreach.composeactors.data.model.MovieProvidersResponse +import com.developersbreach.composeactors.data.movie.model.CastResponse +import com.developersbreach.composeactors.data.movie.model.Movie +import com.developersbreach.composeactors.data.movie.model.MovieDetail +import com.developersbreach.composeactors.data.movie.model.MovieProvidersResponse interface MovieApi { suspend fun getNowPlayingMovies(page: Int): PagedResponse diff --git a/app/src/main/java/com/developersbreach/composeactors/data/movie/remote/MovieApiImpl.kt b/app/src/main/java/com/developersbreach/composeactors/data/movie/remote/MovieApiImpl.kt index 1de1fc4..e4653c7 100644 --- a/app/src/main/java/com/developersbreach/composeactors/data/movie/remote/MovieApiImpl.kt +++ b/app/src/main/java/com/developersbreach/composeactors/data/movie/remote/MovieApiImpl.kt @@ -3,10 +3,10 @@ package com.developersbreach.composeactors.data.movie.remote import com.developersbreach.composeactors.core.network.BaseUrlProvider import com.developersbreach.composeactors.core.network.HttpRequestHandler import com.developersbreach.composeactors.core.network.PagedResponse -import com.developersbreach.composeactors.data.model.CastResponse -import com.developersbreach.composeactors.data.model.Movie -import com.developersbreach.composeactors.data.model.MovieDetail -import com.developersbreach.composeactors.data.model.MovieProvidersResponse +import com.developersbreach.composeactors.data.movie.model.CastResponse +import com.developersbreach.composeactors.data.movie.model.Movie +import com.developersbreach.composeactors.data.movie.model.MovieDetail +import com.developersbreach.composeactors.data.movie.model.MovieProvidersResponse import java.net.URL import javax.inject.Inject import javax.inject.Singleton diff --git a/app/src/main/java/com/developersbreach/composeactors/data/movie/repository/MovieRepository.kt b/app/src/main/java/com/developersbreach/composeactors/data/movie/repository/MovieRepository.kt index e36bceb..ce38fca 100644 --- a/app/src/main/java/com/developersbreach/composeactors/data/movie/repository/MovieRepository.kt +++ b/app/src/main/java/com/developersbreach/composeactors/data/movie/repository/MovieRepository.kt @@ -2,10 +2,10 @@ package com.developersbreach.composeactors.data.movie.repository import androidx.lifecycle.LiveData import com.developersbreach.composeactors.core.network.PagedResponse -import com.developersbreach.composeactors.data.model.Cast -import com.developersbreach.composeactors.data.model.Flatrate -import com.developersbreach.composeactors.data.model.Movie -import com.developersbreach.composeactors.data.model.MovieDetail +import com.developersbreach.composeactors.data.movie.model.Cast +import com.developersbreach.composeactors.data.movie.model.Flatrate +import com.developersbreach.composeactors.data.movie.model.Movie +import com.developersbreach.composeactors.data.movie.model.MovieDetail interface MovieRepository { suspend fun getNowPlayingMovies(page: Int): PagedResponse diff --git a/app/src/main/java/com/developersbreach/composeactors/data/movie/repository/MovieRepositoryImpl.kt b/app/src/main/java/com/developersbreach/composeactors/data/movie/repository/MovieRepositoryImpl.kt index 07543c4..670676d 100644 --- a/app/src/main/java/com/developersbreach/composeactors/data/movie/repository/MovieRepositoryImpl.kt +++ b/app/src/main/java/com/developersbreach/composeactors/data/movie/repository/MovieRepositoryImpl.kt @@ -3,11 +3,11 @@ package com.developersbreach.composeactors.data.movie.repository import androidx.lifecycle.LiveData import com.developersbreach.composeactors.core.network.PagedResponse import com.developersbreach.composeactors.data.datasource.database.DatabaseDataSource -import com.developersbreach.composeactors.data.model.Cast -import com.developersbreach.composeactors.data.model.Flatrate -import com.developersbreach.composeactors.data.model.Movie -import com.developersbreach.composeactors.data.model.MovieDetail -import com.developersbreach.composeactors.data.model.MovieProvidersResponse +import com.developersbreach.composeactors.data.movie.model.Cast +import com.developersbreach.composeactors.data.movie.model.Flatrate +import com.developersbreach.composeactors.data.movie.model.Movie +import com.developersbreach.composeactors.data.movie.model.MovieDetail +import com.developersbreach.composeactors.data.movie.model.MovieProvidersResponse import com.developersbreach.composeactors.data.movie.remote.MovieApi import java.util.* import javax.inject.Inject diff --git a/app/src/main/java/com/developersbreach/composeactors/data/model/FavoritePerson.kt b/app/src/main/java/com/developersbreach/composeactors/data/person/model/FavoritePerson.kt similarity index 75% rename from app/src/main/java/com/developersbreach/composeactors/data/model/FavoritePerson.kt rename to app/src/main/java/com/developersbreach/composeactors/data/person/model/FavoritePerson.kt index e18ab65..c5e1407 100644 --- a/app/src/main/java/com/developersbreach/composeactors/data/model/FavoritePerson.kt +++ b/app/src/main/java/com/developersbreach/composeactors/data/person/model/FavoritePerson.kt @@ -1,4 +1,4 @@ -package com.developersbreach.composeactors.data.model +package com.developersbreach.composeactors.data.person.model import androidx.compose.runtime.Stable diff --git a/app/src/main/java/com/developersbreach/composeactors/data/model/Person.kt b/app/src/main/java/com/developersbreach/composeactors/data/person/model/Person.kt similarity index 89% rename from app/src/main/java/com/developersbreach/composeactors/data/model/Person.kt rename to app/src/main/java/com/developersbreach/composeactors/data/person/model/Person.kt index 8c5c1d1..eae4a30 100644 --- a/app/src/main/java/com/developersbreach/composeactors/data/model/Person.kt +++ b/app/src/main/java/com/developersbreach/composeactors/data/person/model/Person.kt @@ -1,4 +1,4 @@ -package com.developersbreach.composeactors.data.model +package com.developersbreach.composeactors.data.person.model import androidx.compose.runtime.Immutable import androidx.compose.runtime.Stable diff --git a/app/src/main/java/com/developersbreach/composeactors/data/model/PersonDetail.kt b/app/src/main/java/com/developersbreach/composeactors/data/person/model/PersonDetail.kt similarity index 96% rename from app/src/main/java/com/developersbreach/composeactors/data/model/PersonDetail.kt rename to app/src/main/java/com/developersbreach/composeactors/data/person/model/PersonDetail.kt index 9c63926..81b62a4 100644 --- a/app/src/main/java/com/developersbreach/composeactors/data/model/PersonDetail.kt +++ b/app/src/main/java/com/developersbreach/composeactors/data/person/model/PersonDetail.kt @@ -1,4 +1,4 @@ -package com.developersbreach.composeactors.data.model +package com.developersbreach.composeactors.data.person.model import androidx.compose.runtime.Immutable import androidx.compose.runtime.Stable diff --git a/app/src/main/java/com/developersbreach/composeactors/data/person/remote/PersonApi.kt b/app/src/main/java/com/developersbreach/composeactors/data/person/remote/PersonApi.kt index 901349f..6ad1aa2 100644 --- a/app/src/main/java/com/developersbreach/composeactors/data/person/remote/PersonApi.kt +++ b/app/src/main/java/com/developersbreach/composeactors/data/person/remote/PersonApi.kt @@ -1,9 +1,9 @@ package com.developersbreach.composeactors.data.person.remote import com.developersbreach.composeactors.core.network.PagedResponse -import com.developersbreach.composeactors.data.model.Person -import com.developersbreach.composeactors.data.model.PersonDetail -import com.developersbreach.composeactors.data.model.MoviesResponse +import com.developersbreach.composeactors.data.person.model.Person +import com.developersbreach.composeactors.data.person.model.PersonDetail +import com.developersbreach.composeactors.data.movie.model.MoviesResponse interface PersonApi { suspend fun getPopularPersons(): PagedResponse diff --git a/app/src/main/java/com/developersbreach/composeactors/data/person/remote/PersonApiImpl.kt b/app/src/main/java/com/developersbreach/composeactors/data/person/remote/PersonApiImpl.kt index a2b2b01..93ad6b4 100644 --- a/app/src/main/java/com/developersbreach/composeactors/data/person/remote/PersonApiImpl.kt +++ b/app/src/main/java/com/developersbreach/composeactors/data/person/remote/PersonApiImpl.kt @@ -3,9 +3,9 @@ package com.developersbreach.composeactors.data.person.remote import com.developersbreach.composeactors.core.network.BaseUrlProvider import com.developersbreach.composeactors.core.network.HttpRequestHandler import com.developersbreach.composeactors.core.network.PagedResponse -import com.developersbreach.composeactors.data.model.Person -import com.developersbreach.composeactors.data.model.PersonDetail -import com.developersbreach.composeactors.data.model.MoviesResponse +import com.developersbreach.composeactors.data.person.model.Person +import com.developersbreach.composeactors.data.person.model.PersonDetail +import com.developersbreach.composeactors.data.movie.model.MoviesResponse import java.net.URL import javax.inject.Inject import javax.inject.Singleton diff --git a/app/src/main/java/com/developersbreach/composeactors/data/person/repository/PersonRepository.kt b/app/src/main/java/com/developersbreach/composeactors/data/person/repository/PersonRepository.kt index d0956b8..6e2ff4d 100644 --- a/app/src/main/java/com/developersbreach/composeactors/data/person/repository/PersonRepository.kt +++ b/app/src/main/java/com/developersbreach/composeactors/data/person/repository/PersonRepository.kt @@ -1,10 +1,10 @@ package com.developersbreach.composeactors.data.person.repository import androidx.lifecycle.LiveData -import com.developersbreach.composeactors.data.model.Person -import com.developersbreach.composeactors.data.model.PersonDetail -import com.developersbreach.composeactors.data.model.FavoritePerson -import com.developersbreach.composeactors.data.model.Movie +import com.developersbreach.composeactors.data.person.model.Person +import com.developersbreach.composeactors.data.person.model.PersonDetail +import com.developersbreach.composeactors.data.person.model.FavoritePerson +import com.developersbreach.composeactors.data.movie.model.Movie interface PersonRepository { suspend fun getPopularPersons(): List diff --git a/app/src/main/java/com/developersbreach/composeactors/data/person/repository/PersonRepositoryImpl.kt b/app/src/main/java/com/developersbreach/composeactors/data/person/repository/PersonRepositoryImpl.kt index 8d3c7c5..1247680 100644 --- a/app/src/main/java/com/developersbreach/composeactors/data/person/repository/PersonRepositoryImpl.kt +++ b/app/src/main/java/com/developersbreach/composeactors/data/person/repository/PersonRepositoryImpl.kt @@ -2,10 +2,10 @@ package com.developersbreach.composeactors.data.person.repository import androidx.lifecycle.LiveData import com.developersbreach.composeactors.data.datasource.database.DatabaseDataSource -import com.developersbreach.composeactors.data.model.Person -import com.developersbreach.composeactors.data.model.PersonDetail -import com.developersbreach.composeactors.data.model.FavoritePerson -import com.developersbreach.composeactors.data.model.Movie +import com.developersbreach.composeactors.data.person.model.Person +import com.developersbreach.composeactors.data.person.model.PersonDetail +import com.developersbreach.composeactors.data.person.model.FavoritePerson +import com.developersbreach.composeactors.data.movie.model.Movie import com.developersbreach.composeactors.data.person.remote.PersonApi import javax.inject.Inject import javax.inject.Singleton diff --git a/app/src/main/java/com/developersbreach/composeactors/data/search/remote/SearchApi.kt b/app/src/main/java/com/developersbreach/composeactors/data/search/remote/SearchApi.kt index bac033f..a73abc0 100644 --- a/app/src/main/java/com/developersbreach/composeactors/data/search/remote/SearchApi.kt +++ b/app/src/main/java/com/developersbreach/composeactors/data/search/remote/SearchApi.kt @@ -1,8 +1,8 @@ package com.developersbreach.composeactors.data.search.remote import com.developersbreach.composeactors.core.network.PagedResponse -import com.developersbreach.composeactors.data.model.Person -import com.developersbreach.composeactors.data.model.Movie +import com.developersbreach.composeactors.data.person.model.Person +import com.developersbreach.composeactors.data.movie.model.Movie interface SearchApi { suspend fun getSearchableActorsData(query: String): PagedResponse diff --git a/app/src/main/java/com/developersbreach/composeactors/data/search/remote/SearchApiImpl.kt b/app/src/main/java/com/developersbreach/composeactors/data/search/remote/SearchApiImpl.kt index aeb89b4..c949ac6 100644 --- a/app/src/main/java/com/developersbreach/composeactors/data/search/remote/SearchApiImpl.kt +++ b/app/src/main/java/com/developersbreach/composeactors/data/search/remote/SearchApiImpl.kt @@ -3,8 +3,8 @@ package com.developersbreach.composeactors.data.search.remote import com.developersbreach.composeactors.core.network.BaseUrlProvider import com.developersbreach.composeactors.core.network.HttpRequestHandler import com.developersbreach.composeactors.core.network.PagedResponse -import com.developersbreach.composeactors.data.model.Person -import com.developersbreach.composeactors.data.model.Movie +import com.developersbreach.composeactors.data.person.model.Person +import com.developersbreach.composeactors.data.movie.model.Movie import java.net.URL import javax.inject.Inject import javax.inject.Singleton diff --git a/app/src/main/java/com/developersbreach/composeactors/data/search/repository/SearchRepository.kt b/app/src/main/java/com/developersbreach/composeactors/data/search/repository/SearchRepository.kt index 3ea1059..c645492 100644 --- a/app/src/main/java/com/developersbreach/composeactors/data/search/repository/SearchRepository.kt +++ b/app/src/main/java/com/developersbreach/composeactors/data/search/repository/SearchRepository.kt @@ -1,7 +1,7 @@ package com.developersbreach.composeactors.data.search.repository -import com.developersbreach.composeactors.data.model.Person -import com.developersbreach.composeactors.data.model.Movie +import com.developersbreach.composeactors.data.person.model.Person +import com.developersbreach.composeactors.data.movie.model.Movie interface SearchRepository { suspend fun getSearchableActorsData(query: String): List diff --git a/app/src/main/java/com/developersbreach/composeactors/data/search/repository/SearchRepositoryImpl.kt b/app/src/main/java/com/developersbreach/composeactors/data/search/repository/SearchRepositoryImpl.kt index 1a58233..cc6bef6 100644 --- a/app/src/main/java/com/developersbreach/composeactors/data/search/repository/SearchRepositoryImpl.kt +++ b/app/src/main/java/com/developersbreach/composeactors/data/search/repository/SearchRepositoryImpl.kt @@ -1,7 +1,7 @@ package com.developersbreach.composeactors.data.search.repository -import com.developersbreach.composeactors.data.model.Person -import com.developersbreach.composeactors.data.model.Movie +import com.developersbreach.composeactors.data.person.model.Person +import com.developersbreach.composeactors.data.movie.model.Movie import com.developersbreach.composeactors.data.search.remote.SearchApi import javax.inject.Inject import javax.inject.Singleton diff --git a/app/src/main/java/com/developersbreach/composeactors/data/trending/remote/TrendingApi.kt b/app/src/main/java/com/developersbreach/composeactors/data/trending/remote/TrendingApi.kt index df7f408..331903c 100644 --- a/app/src/main/java/com/developersbreach/composeactors/data/trending/remote/TrendingApi.kt +++ b/app/src/main/java/com/developersbreach/composeactors/data/trending/remote/TrendingApi.kt @@ -1,7 +1,7 @@ package com.developersbreach.composeactors.data.trending.remote import com.developersbreach.composeactors.core.network.PagedResponse -import com.developersbreach.composeactors.data.model.Person +import com.developersbreach.composeactors.data.person.model.Person interface TrendingApi { suspend fun getTrendingActors(): PagedResponse diff --git a/app/src/main/java/com/developersbreach/composeactors/data/trending/remote/TrendingApiImpl.kt b/app/src/main/java/com/developersbreach/composeactors/data/trending/remote/TrendingApiImpl.kt index 4f5b945..9301382 100644 --- a/app/src/main/java/com/developersbreach/composeactors/data/trending/remote/TrendingApiImpl.kt +++ b/app/src/main/java/com/developersbreach/composeactors/data/trending/remote/TrendingApiImpl.kt @@ -3,7 +3,7 @@ package com.developersbreach.composeactors.data.trending.remote import com.developersbreach.composeactors.core.network.BaseUrlProvider import com.developersbreach.composeactors.core.network.HttpRequestHandler import com.developersbreach.composeactors.core.network.PagedResponse -import com.developersbreach.composeactors.data.model.Person +import com.developersbreach.composeactors.data.person.model.Person import java.net.URL import javax.inject.Inject import javax.inject.Singleton diff --git a/app/src/main/java/com/developersbreach/composeactors/data/trending/repository/TrendingRepository.kt b/app/src/main/java/com/developersbreach/composeactors/data/trending/repository/TrendingRepository.kt index 8c51fbd..c5ed106 100644 --- a/app/src/main/java/com/developersbreach/composeactors/data/trending/repository/TrendingRepository.kt +++ b/app/src/main/java/com/developersbreach/composeactors/data/trending/repository/TrendingRepository.kt @@ -1,6 +1,6 @@ package com.developersbreach.composeactors.data.trending.repository -import com.developersbreach.composeactors.data.model.Person +import com.developersbreach.composeactors.data.person.model.Person interface TrendingRepository { suspend fun getTrendingActors(): List diff --git a/app/src/main/java/com/developersbreach/composeactors/data/trending/repository/TrendingRepositoryImpl.kt b/app/src/main/java/com/developersbreach/composeactors/data/trending/repository/TrendingRepositoryImpl.kt index 97f6030..695563c 100644 --- a/app/src/main/java/com/developersbreach/composeactors/data/trending/repository/TrendingRepositoryImpl.kt +++ b/app/src/main/java/com/developersbreach/composeactors/data/trending/repository/TrendingRepositoryImpl.kt @@ -1,6 +1,6 @@ package com.developersbreach.composeactors.data.trending.repository -import com.developersbreach.composeactors.data.model.Person +import com.developersbreach.composeactors.data.person.model.Person import com.developersbreach.composeactors.data.trending.remote.TrendingApi import javax.inject.Inject import javax.inject.Singleton diff --git a/app/src/main/java/com/developersbreach/composeactors/domain/movie/GetPagedMovies.kt b/app/src/main/java/com/developersbreach/composeactors/domain/movie/GetPagedMovies.kt index e8d5574..a774ca3 100644 --- a/app/src/main/java/com/developersbreach/composeactors/domain/movie/GetPagedMovies.kt +++ b/app/src/main/java/com/developersbreach/composeactors/domain/movie/GetPagedMovies.kt @@ -3,7 +3,7 @@ package com.developersbreach.composeactors.domain.movie import androidx.paging.Pager import androidx.paging.PagingConfig import androidx.paging.PagingData -import com.developersbreach.composeactors.data.model.Movie +import com.developersbreach.composeactors.data.movie.model.Movie import com.developersbreach.composeactors.data.movie.paging.MoviesPagingSource import com.developersbreach.composeactors.data.movie.repository.MovieRepository import javax.inject.Inject diff --git a/app/src/main/java/com/developersbreach/composeactors/ui/screens/actorDetails/ActorDetailsUIState.kt b/app/src/main/java/com/developersbreach/composeactors/ui/screens/actorDetails/ActorDetailsUIState.kt index 75feca4..5bad61b 100644 --- a/app/src/main/java/com/developersbreach/composeactors/ui/screens/actorDetails/ActorDetailsUIState.kt +++ b/app/src/main/java/com/developersbreach/composeactors/ui/screens/actorDetails/ActorDetailsUIState.kt @@ -1,8 +1,8 @@ package com.developersbreach.composeactors.ui.screens.actorDetails -import com.developersbreach.composeactors.data.model.PersonDetail -import com.developersbreach.composeactors.data.model.Movie -import com.developersbreach.composeactors.data.model.MovieDetail +import com.developersbreach.composeactors.data.person.model.PersonDetail +import com.developersbreach.composeactors.data.movie.model.Movie +import com.developersbreach.composeactors.data.movie.model.MovieDetail // TODO - create a sealed class to contains the different states diff --git a/app/src/main/java/com/developersbreach/composeactors/ui/screens/actorDetails/ActorDetailsViewModel.kt b/app/src/main/java/com/developersbreach/composeactors/ui/screens/actorDetails/ActorDetailsViewModel.kt index 307c661..030e97e 100644 --- a/app/src/main/java/com/developersbreach/composeactors/ui/screens/actorDetails/ActorDetailsViewModel.kt +++ b/app/src/main/java/com/developersbreach/composeactors/ui/screens/actorDetails/ActorDetailsViewModel.kt @@ -7,8 +7,8 @@ import androidx.lifecycle.LiveData import androidx.lifecycle.SavedStateHandle import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope -import com.developersbreach.composeactors.data.model.PersonDetail -import com.developersbreach.composeactors.data.model.toFavoritePerson +import com.developersbreach.composeactors.data.person.model.PersonDetail +import com.developersbreach.composeactors.data.person.model.toFavoritePerson import com.developersbreach.composeactors.data.movie.repository.MovieRepository import com.developersbreach.composeactors.data.person.repository.PersonRepository import com.developersbreach.composeactors.ui.navigation.AppDestinations.ACTOR_DETAIL_ID_KEY diff --git a/app/src/main/java/com/developersbreach/composeactors/ui/screens/actorDetails/composables/ActorCastedMovies.kt b/app/src/main/java/com/developersbreach/composeactors/ui/screens/actorDetails/composables/ActorCastedMovies.kt index 8d37b04..eb5409e 100644 --- a/app/src/main/java/com/developersbreach/composeactors/ui/screens/actorDetails/composables/ActorCastedMovies.kt +++ b/app/src/main/java/com/developersbreach/composeactors/ui/screens/actorDetails/composables/ActorCastedMovies.kt @@ -14,7 +14,7 @@ import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp import com.developersbreach.composeactors.R -import com.developersbreach.composeactors.data.model.Movie +import com.developersbreach.composeactors.data.movie.model.Movie import com.developersbreach.composeactors.ui.components.CategoryTitle import com.developersbreach.composeactors.ui.components.LoadNetworkImage import com.developersbreach.composeactors.ui.screens.actorDetails.ActorDetailsUIState diff --git a/app/src/main/java/com/developersbreach/composeactors/ui/screens/actorDetails/composables/ActorInfoHeader.kt b/app/src/main/java/com/developersbreach/composeactors/ui/screens/actorDetails/composables/ActorInfoHeader.kt index 59f4f14..07e7159 100644 --- a/app/src/main/java/com/developersbreach/composeactors/ui/screens/actorDetails/composables/ActorInfoHeader.kt +++ b/app/src/main/java/com/developersbreach/composeactors/ui/screens/actorDetails/composables/ActorInfoHeader.kt @@ -19,7 +19,7 @@ import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import com.developersbreach.composeactors.R -import com.developersbreach.composeactors.data.model.PersonDetail +import com.developersbreach.composeactors.data.person.model.PersonDetail import com.developersbreach.composeactors.ui.animations.borderRevealAnimation import com.developersbreach.composeactors.ui.theme.ComposeActorsTheme import com.developersbreach.composeactors.utils.calculateAge diff --git a/app/src/main/java/com/developersbreach/composeactors/ui/screens/favorites/FavoriteViewModel.kt b/app/src/main/java/com/developersbreach/composeactors/ui/screens/favorites/FavoriteViewModel.kt index 7a5e706..eab6ba6 100644 --- a/app/src/main/java/com/developersbreach/composeactors/ui/screens/favorites/FavoriteViewModel.kt +++ b/app/src/main/java/com/developersbreach/composeactors/ui/screens/favorites/FavoriteViewModel.kt @@ -3,8 +3,8 @@ package com.developersbreach.composeactors.ui.screens.favorites import androidx.lifecycle.LiveData import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope -import com.developersbreach.composeactors.data.model.FavoritePerson -import com.developersbreach.composeactors.data.model.Movie +import com.developersbreach.composeactors.data.person.model.FavoritePerson +import com.developersbreach.composeactors.data.movie.model.Movie import com.developersbreach.composeactors.data.movie.repository.MovieRepository import com.developersbreach.composeactors.data.person.repository.PersonRepository import dagger.hilt.android.lifecycle.HiltViewModel diff --git a/app/src/main/java/com/developersbreach/composeactors/ui/screens/favorites/FavoritesScreen.kt b/app/src/main/java/com/developersbreach/composeactors/ui/screens/favorites/FavoritesScreen.kt index d90cf55..6451b3a 100644 --- a/app/src/main/java/com/developersbreach/composeactors/ui/screens/favorites/FavoritesScreen.kt +++ b/app/src/main/java/com/developersbreach/composeactors/ui/screens/favorites/FavoritesScreen.kt @@ -4,8 +4,8 @@ import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.livedata.observeAsState import androidx.hilt.navigation.compose.hiltViewModel -import com.developersbreach.composeactors.data.model.FavoritePerson -import com.developersbreach.composeactors.data.model.Movie +import com.developersbreach.composeactors.data.person.model.FavoritePerson +import com.developersbreach.composeactors.data.movie.model.Movie @Composable fun FavoritesScreen( diff --git a/app/src/main/java/com/developersbreach/composeactors/ui/screens/favorites/FavoritesScreenUI.kt b/app/src/main/java/com/developersbreach/composeactors/ui/screens/favorites/FavoritesScreenUI.kt index 1508a0b..4bcc382 100644 --- a/app/src/main/java/com/developersbreach/composeactors/ui/screens/favorites/FavoritesScreenUI.kt +++ b/app/src/main/java/com/developersbreach/composeactors/ui/screens/favorites/FavoritesScreenUI.kt @@ -18,8 +18,8 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp -import com.developersbreach.composeactors.data.model.FavoritePerson -import com.developersbreach.composeactors.data.model.Movie +import com.developersbreach.composeactors.data.person.model.FavoritePerson +import com.developersbreach.composeactors.data.movie.model.Movie import com.developersbreach.composeactors.ui.components.AppDivider import com.developersbreach.composeactors.ui.components.TabItem import com.developersbreach.composeactors.ui.components.TabsContainer diff --git a/app/src/main/java/com/developersbreach/composeactors/ui/screens/favorites/tabs/FavoriteActorsTabContent.kt b/app/src/main/java/com/developersbreach/composeactors/ui/screens/favorites/tabs/FavoriteActorsTabContent.kt index 4cac506..d12fa44 100644 --- a/app/src/main/java/com/developersbreach/composeactors/ui/screens/favorites/tabs/FavoriteActorsTabContent.kt +++ b/app/src/main/java/com/developersbreach/composeactors/ui/screens/favorites/tabs/FavoriteActorsTabContent.kt @@ -28,7 +28,7 @@ import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import com.developersbreach.composeactors.R import com.developersbreach.composeactors.data.datasource.fake.fakeFavoritePersonsList -import com.developersbreach.composeactors.data.model.FavoritePerson +import com.developersbreach.composeactors.data.person.model.FavoritePerson import com.developersbreach.composeactors.ui.components.ImageBackgroundThemeGenerator import com.developersbreach.composeactors.ui.components.LoadNetworkImage import com.developersbreach.composeactors.ui.components.verticalGradientScrim diff --git a/app/src/main/java/com/developersbreach/composeactors/ui/screens/favorites/tabs/FavoriteMoviesTabContent.kt b/app/src/main/java/com/developersbreach/composeactors/ui/screens/favorites/tabs/FavoriteMoviesTabContent.kt index 0b324e1..a143285 100644 --- a/app/src/main/java/com/developersbreach/composeactors/ui/screens/favorites/tabs/FavoriteMoviesTabContent.kt +++ b/app/src/main/java/com/developersbreach/composeactors/ui/screens/favorites/tabs/FavoriteMoviesTabContent.kt @@ -28,7 +28,7 @@ import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import com.developersbreach.composeactors.R import com.developersbreach.composeactors.data.datasource.fake.fakeMovieList -import com.developersbreach.composeactors.data.model.Movie +import com.developersbreach.composeactors.data.movie.model.Movie import com.developersbreach.composeactors.ui.components.LoadNetworkImage import com.developersbreach.composeactors.ui.screens.favorites.NoFavoritesFoundUI import com.developersbreach.composeactors.ui.theme.ComposeActorsTheme diff --git a/app/src/main/java/com/developersbreach/composeactors/data/model/HomeOptionItems.kt b/app/src/main/java/com/developersbreach/composeactors/ui/screens/home/HomeOptionItems.kt similarity index 93% rename from app/src/main/java/com/developersbreach/composeactors/data/model/HomeOptionItems.kt rename to app/src/main/java/com/developersbreach/composeactors/ui/screens/home/HomeOptionItems.kt index 4348c72..0cc03ac 100644 --- a/app/src/main/java/com/developersbreach/composeactors/data/model/HomeOptionItems.kt +++ b/app/src/main/java/com/developersbreach/composeactors/ui/screens/home/HomeOptionItems.kt @@ -1,4 +1,4 @@ -package com.developersbreach.composeactors.data.model +package com.developersbreach.composeactors.ui.screens.home import com.developersbreach.composeactors.R diff --git a/app/src/main/java/com/developersbreach/composeactors/ui/screens/home/HomeUIState.kt b/app/src/main/java/com/developersbreach/composeactors/ui/screens/home/HomeUIState.kt index c7818b1..4a33cad 100644 --- a/app/src/main/java/com/developersbreach/composeactors/ui/screens/home/HomeUIState.kt +++ b/app/src/main/java/com/developersbreach/composeactors/ui/screens/home/HomeUIState.kt @@ -1,9 +1,9 @@ package com.developersbreach.composeactors.ui.screens.home import androidx.paging.PagingData -import com.developersbreach.composeactors.data.model.Person -import com.developersbreach.composeactors.data.model.Movie -import com.developersbreach.composeactors.data.model.MovieDetail +import com.developersbreach.composeactors.data.person.model.Person +import com.developersbreach.composeactors.data.movie.model.Movie +import com.developersbreach.composeactors.data.movie.model.MovieDetail import com.developersbreach.composeactors.ui.screens.modalSheets.SheetContentMovieDetails import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.emptyFlow diff --git a/app/src/main/java/com/developersbreach/composeactors/ui/screens/home/tabs/ActorsTabContent.kt b/app/src/main/java/com/developersbreach/composeactors/ui/screens/home/tabs/ActorsTabContent.kt index f6d4eb7..cccc4f0 100644 --- a/app/src/main/java/com/developersbreach/composeactors/ui/screens/home/tabs/ActorsTabContent.kt +++ b/app/src/main/java/com/developersbreach/composeactors/ui/screens/home/tabs/ActorsTabContent.kt @@ -28,7 +28,7 @@ import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp import com.developersbreach.composeactors.R -import com.developersbreach.composeactors.data.model.Person +import com.developersbreach.composeactors.data.person.model.Person import com.developersbreach.composeactors.ui.components.AppDivider import com.developersbreach.composeactors.ui.components.CategoryTitle import com.developersbreach.composeactors.ui.components.LoadNetworkImage diff --git a/app/src/main/java/com/developersbreach/composeactors/ui/screens/home/tabs/MoviesTabContent.kt b/app/src/main/java/com/developersbreach/composeactors/ui/screens/home/tabs/MoviesTabContent.kt index 8da8725..797ef29 100644 --- a/app/src/main/java/com/developersbreach/composeactors/ui/screens/home/tabs/MoviesTabContent.kt +++ b/app/src/main/java/com/developersbreach/composeactors/ui/screens/home/tabs/MoviesTabContent.kt @@ -23,7 +23,7 @@ import androidx.compose.ui.unit.dp import androidx.paging.compose.LazyPagingItems import androidx.paging.compose.collectAsLazyPagingItems import com.developersbreach.composeactors.R -import com.developersbreach.composeactors.data.model.Movie +import com.developersbreach.composeactors.data.movie.model.Movie import com.developersbreach.composeactors.ui.components.CategoryTitle import com.developersbreach.composeactors.ui.components.LoadNetworkImage import com.developersbreach.composeactors.ui.components.itemsPaging diff --git a/app/src/main/java/com/developersbreach/composeactors/ui/screens/modalSheets/OptionsModalSheetContent.kt b/app/src/main/java/com/developersbreach/composeactors/ui/screens/modalSheets/OptionsModalSheetContent.kt index 085bad2..21c29a2 100644 --- a/app/src/main/java/com/developersbreach/composeactors/ui/screens/modalSheets/OptionsModalSheetContent.kt +++ b/app/src/main/java/com/developersbreach/composeactors/ui/screens/modalSheets/OptionsModalSheetContent.kt @@ -34,7 +34,7 @@ import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import com.developersbreach.composeactors.R -import com.developersbreach.composeactors.data.model.HomeOptionItems +import com.developersbreach.composeactors.ui.screens.home.HomeOptionItems import com.developersbreach.composeactors.ui.theme.ComposeActorsTheme import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.launch @@ -94,7 +94,7 @@ fun OptionsModalSheetContent( verticalArrangement = Arrangement.spacedBy(2.dp), contentPadding = PaddingValues(horizontal = 4.dp) ) { - items(HomeOptionItems.homeOptions) {option -> + items(HomeOptionItems.homeOptions) { option -> ItemOptionRow( option = option, navigateToFavorite = navigateToFavorite, diff --git a/app/src/main/java/com/developersbreach/composeactors/ui/screens/modalSheets/SheetContentActorDetails.kt b/app/src/main/java/com/developersbreach/composeactors/ui/screens/modalSheets/SheetContentActorDetails.kt index b6ebfd3..c014d28 100644 --- a/app/src/main/java/com/developersbreach/composeactors/ui/screens/modalSheets/SheetContentActorDetails.kt +++ b/app/src/main/java/com/developersbreach/composeactors/ui/screens/modalSheets/SheetContentActorDetails.kt @@ -19,7 +19,7 @@ import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import com.developersbreach.composeactors.R import com.developersbreach.composeactors.data.datasource.fake.fakePersonDetail -import com.developersbreach.composeactors.data.model.PersonDetail +import com.developersbreach.composeactors.data.person.model.PersonDetail import com.developersbreach.composeactors.ui.components.LoadNetworkImage import com.developersbreach.composeactors.ui.components.SheetHorizontalSeparator import com.developersbreach.composeactors.ui.screens.actorDetails.composables.ActorInfoHeader diff --git a/app/src/main/java/com/developersbreach/composeactors/ui/screens/modalSheets/SheetContentMovieDetails.kt b/app/src/main/java/com/developersbreach/composeactors/ui/screens/modalSheets/SheetContentMovieDetails.kt index 59d716a..bde4db2 100644 --- a/app/src/main/java/com/developersbreach/composeactors/ui/screens/modalSheets/SheetContentMovieDetails.kt +++ b/app/src/main/java/com/developersbreach/composeactors/ui/screens/modalSheets/SheetContentMovieDetails.kt @@ -27,7 +27,7 @@ import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import com.developersbreach.composeactors.R import com.developersbreach.composeactors.data.datasource.fake.fakeMovieDetail -import com.developersbreach.composeactors.data.model.MovieDetail +import com.developersbreach.composeactors.data.movie.model.MovieDetail import com.developersbreach.composeactors.ui.components.CircularSeparator import com.developersbreach.composeactors.ui.components.LoadNetworkImage import com.developersbreach.composeactors.ui.screens.movieDetail.composables.MovieGenre diff --git a/app/src/main/java/com/developersbreach/composeactors/ui/screens/modalSheets/SheetContentMovieProviders.kt b/app/src/main/java/com/developersbreach/composeactors/ui/screens/modalSheets/SheetContentMovieProviders.kt index 0ea9b08..3049a92 100644 --- a/app/src/main/java/com/developersbreach/composeactors/ui/screens/modalSheets/SheetContentMovieProviders.kt +++ b/app/src/main/java/com/developersbreach/composeactors/ui/screens/modalSheets/SheetContentMovieProviders.kt @@ -21,7 +21,7 @@ import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp import androidx.constraintlayout.compose.ConstraintLayout import com.developersbreach.composeactors.R -import com.developersbreach.composeactors.data.model.Flatrate +import com.developersbreach.composeactors.data.movie.model.Flatrate import com.developersbreach.composeactors.ui.components.LoadNetworkImage import com.developersbreach.composeactors.ui.components.SheetHorizontalSeparator import com.developersbreach.composeactors.ui.screens.movieDetail.composables.FloatingAddToFavoritesButton diff --git a/app/src/main/java/com/developersbreach/composeactors/data/model/BottomSheetType.kt b/app/src/main/java/com/developersbreach/composeactors/ui/screens/movieDetail/BottomSheetType.kt similarity index 71% rename from app/src/main/java/com/developersbreach/composeactors/data/model/BottomSheetType.kt rename to app/src/main/java/com/developersbreach/composeactors/ui/screens/movieDetail/BottomSheetType.kt index d31ff40..67546b4 100644 --- a/app/src/main/java/com/developersbreach/composeactors/data/model/BottomSheetType.kt +++ b/app/src/main/java/com/developersbreach/composeactors/ui/screens/movieDetail/BottomSheetType.kt @@ -1,4 +1,4 @@ -package com.developersbreach.composeactors.data.model +package com.developersbreach.composeactors.ui.screens.movieDetail enum class BottomSheetType(var movieOrPersonId: Int? = null) { MovieDetailBottomSheet(movieOrPersonId = null), diff --git a/app/src/main/java/com/developersbreach/composeactors/ui/screens/movieDetail/MovieDetailViewModel.kt b/app/src/main/java/com/developersbreach/composeactors/ui/screens/movieDetail/MovieDetailViewModel.kt index 21fcca1..2cbdeff 100644 --- a/app/src/main/java/com/developersbreach/composeactors/ui/screens/movieDetail/MovieDetailViewModel.kt +++ b/app/src/main/java/com/developersbreach/composeactors/ui/screens/movieDetail/MovieDetailViewModel.kt @@ -7,8 +7,8 @@ import androidx.lifecycle.LiveData import androidx.lifecycle.SavedStateHandle import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope -import com.developersbreach.composeactors.data.model.Movie -import com.developersbreach.composeactors.data.model.MovieDetail +import com.developersbreach.composeactors.data.movie.model.Movie +import com.developersbreach.composeactors.data.movie.model.MovieDetail import com.developersbreach.composeactors.data.movie.repository.MovieRepository import com.developersbreach.composeactors.data.person.repository.PersonRepository import com.developersbreach.composeactors.ui.navigation.AppDestinations.MOVIE_DETAILS_ID_KEY diff --git a/app/src/main/java/com/developersbreach/composeactors/ui/screens/movieDetail/MovieDetailsContent.kt b/app/src/main/java/com/developersbreach/composeactors/ui/screens/movieDetail/MovieDetailsContent.kt index 90494ee..9b36b80 100644 --- a/app/src/main/java/com/developersbreach/composeactors/ui/screens/movieDetail/MovieDetailsContent.kt +++ b/app/src/main/java/com/developersbreach/composeactors/ui/screens/movieDetail/MovieDetailsContent.kt @@ -15,7 +15,6 @@ import androidx.compose.runtime.remember import androidx.compose.ui.Modifier import androidx.compose.ui.platform.testTag import androidx.compose.ui.unit.dp -import com.developersbreach.composeactors.data.model.BottomSheetType import com.developersbreach.composeactors.ui.components.CategoryTitle import com.developersbreach.composeactors.ui.screens.movieDetail.composables.GetMovieCast import com.developersbreach.composeactors.ui.screens.movieDetail.composables.GetRelatedMovies diff --git a/app/src/main/java/com/developersbreach/composeactors/ui/screens/movieDetail/MovieDetailsScreen.kt b/app/src/main/java/com/developersbreach/composeactors/ui/screens/movieDetail/MovieDetailsScreen.kt index e402c25..66b4ad2 100644 --- a/app/src/main/java/com/developersbreach/composeactors/ui/screens/movieDetail/MovieDetailsScreen.kt +++ b/app/src/main/java/com/developersbreach/composeactors/ui/screens/movieDetail/MovieDetailsScreen.kt @@ -7,7 +7,6 @@ import androidx.compose.runtime.livedata.observeAsState import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.hilt.navigation.compose.hiltViewModel -import com.developersbreach.composeactors.data.model.BottomSheetType import com.developersbreach.composeactors.ui.screens.actorDetails.ActorDetailsScreen import com.developersbreach.composeactors.ui.screens.home.HomeScreen diff --git a/app/src/main/java/com/developersbreach/composeactors/ui/screens/movieDetail/MovieDetailsUI.kt b/app/src/main/java/com/developersbreach/composeactors/ui/screens/movieDetail/MovieDetailsUI.kt index 1fe89b2..87c307d 100644 --- a/app/src/main/java/com/developersbreach/composeactors/ui/screens/movieDetail/MovieDetailsUI.kt +++ b/app/src/main/java/com/developersbreach/composeactors/ui/screens/movieDetail/MovieDetailsUI.kt @@ -32,8 +32,7 @@ import androidx.compose.ui.unit.dp import com.developersbreach.composeactors.data.datasource.fake.fakeMovieCastList import com.developersbreach.composeactors.data.datasource.fake.fakeMovieDetail import com.developersbreach.composeactors.data.datasource.fake.fakeMovieList -import com.developersbreach.composeactors.data.model.BottomSheetType -import com.developersbreach.composeactors.data.model.Flatrate +import com.developersbreach.composeactors.data.movie.model.Flatrate import com.developersbreach.composeactors.ui.animations.LayerRevealImage import com.developersbreach.composeactors.ui.screens.modalSheets.SheetContentActorDetails import com.developersbreach.composeactors.ui.screens.modalSheets.SheetContentMovieDetails diff --git a/app/src/main/java/com/developersbreach/composeactors/ui/screens/movieDetail/MovieDetailsUIState.kt b/app/src/main/java/com/developersbreach/composeactors/ui/screens/movieDetail/MovieDetailsUIState.kt index 79e0572..e084a6c 100644 --- a/app/src/main/java/com/developersbreach/composeactors/ui/screens/movieDetail/MovieDetailsUIState.kt +++ b/app/src/main/java/com/developersbreach/composeactors/ui/screens/movieDetail/MovieDetailsUIState.kt @@ -1,10 +1,10 @@ package com.developersbreach.composeactors.ui.screens.movieDetail -import com.developersbreach.composeactors.data.model.PersonDetail -import com.developersbreach.composeactors.data.model.Cast -import com.developersbreach.composeactors.data.model.Flatrate -import com.developersbreach.composeactors.data.model.Movie -import com.developersbreach.composeactors.data.model.MovieDetail +import com.developersbreach.composeactors.data.person.model.PersonDetail +import com.developersbreach.composeactors.data.movie.model.Cast +import com.developersbreach.composeactors.data.movie.model.Flatrate +import com.developersbreach.composeactors.data.movie.model.Movie +import com.developersbreach.composeactors.data.movie.model.MovieDetail // TODO - create a sealed class to contains the different states diff --git a/app/src/main/java/com/developersbreach/composeactors/ui/screens/movieDetail/composables/GetMovieCast.kt b/app/src/main/java/com/developersbreach/composeactors/ui/screens/movieDetail/composables/GetMovieCast.kt index 7eb320f..49219e0 100644 --- a/app/src/main/java/com/developersbreach/composeactors/ui/screens/movieDetail/composables/GetMovieCast.kt +++ b/app/src/main/java/com/developersbreach/composeactors/ui/screens/movieDetail/composables/GetMovieCast.kt @@ -26,9 +26,9 @@ import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import com.developersbreach.composeactors.R import com.developersbreach.composeactors.data.datasource.fake.fakeMovieDetail -import com.developersbreach.composeactors.data.model.BottomSheetType -import com.developersbreach.composeactors.data.model.Cast -import com.developersbreach.composeactors.data.model.Flatrate +import com.developersbreach.composeactors.ui.screens.movieDetail.BottomSheetType +import com.developersbreach.composeactors.data.movie.model.Cast +import com.developersbreach.composeactors.data.movie.model.Flatrate import com.developersbreach.composeactors.ui.components.LoadNetworkImage import com.developersbreach.composeactors.ui.screens.movieDetail.MovieDetailsUIState import com.developersbreach.composeactors.ui.theme.ComposeActorsTheme diff --git a/app/src/main/java/com/developersbreach/composeactors/ui/screens/movieDetail/composables/GetSimilarOrRecommendedMovies.kt b/app/src/main/java/com/developersbreach/composeactors/ui/screens/movieDetail/composables/GetSimilarOrRecommendedMovies.kt index 4e73945..d5106ec 100644 --- a/app/src/main/java/com/developersbreach/composeactors/ui/screens/movieDetail/composables/GetSimilarOrRecommendedMovies.kt +++ b/app/src/main/java/com/developersbreach/composeactors/ui/screens/movieDetail/composables/GetSimilarOrRecommendedMovies.kt @@ -12,8 +12,8 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp import com.developersbreach.composeactors.R -import com.developersbreach.composeactors.data.model.BottomSheetType -import com.developersbreach.composeactors.data.model.Movie +import com.developersbreach.composeactors.ui.screens.movieDetail.BottomSheetType +import com.developersbreach.composeactors.data.movie.model.Movie import com.developersbreach.composeactors.ui.components.LoadNetworkImage import kotlinx.coroutines.Job diff --git a/app/src/main/java/com/developersbreach/composeactors/ui/screens/movieDetail/composables/MovieGenre.kt b/app/src/main/java/com/developersbreach/composeactors/ui/screens/movieDetail/composables/MovieGenre.kt index 7e52f65..ab6e02a 100644 --- a/app/src/main/java/com/developersbreach/composeactors/ui/screens/movieDetail/composables/MovieGenre.kt +++ b/app/src/main/java/com/developersbreach/composeactors/ui/screens/movieDetail/composables/MovieGenre.kt @@ -13,7 +13,7 @@ import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.unit.dp -import com.developersbreach.composeactors.data.model.Genre +import com.developersbreach.composeactors.data.movie.model.Genre @Composable fun MovieGenre( diff --git a/app/src/main/java/com/developersbreach/composeactors/ui/screens/search/ActorSearchUI.kt b/app/src/main/java/com/developersbreach/composeactors/ui/screens/search/ActorSearchUI.kt index d684e48..faf515b 100644 --- a/app/src/main/java/com/developersbreach/composeactors/ui/screens/search/ActorSearchUI.kt +++ b/app/src/main/java/com/developersbreach/composeactors/ui/screens/search/ActorSearchUI.kt @@ -14,7 +14,7 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import com.developersbreach.composeactors.data.datasource.fake.fakePersonsList -import com.developersbreach.composeactors.data.model.Person +import com.developersbreach.composeactors.data.person.model.Person import com.developersbreach.composeactors.ui.theme.ComposeActorsTheme @Composable diff --git a/app/src/main/java/com/developersbreach/composeactors/ui/screens/search/MovieSearchUI.kt b/app/src/main/java/com/developersbreach/composeactors/ui/screens/search/MovieSearchUI.kt index 7bdfc8f..d064234 100644 --- a/app/src/main/java/com/developersbreach/composeactors/ui/screens/search/MovieSearchUI.kt +++ b/app/src/main/java/com/developersbreach/composeactors/ui/screens/search/MovieSearchUI.kt @@ -14,7 +14,7 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import com.developersbreach.composeactors.data.datasource.fake.fakeMovieList -import com.developersbreach.composeactors.data.model.Movie +import com.developersbreach.composeactors.data.movie.model.Movie import com.developersbreach.composeactors.ui.screens.actorDetails.ActorDetailsScreen import com.developersbreach.composeactors.ui.theme.ComposeActorsTheme diff --git a/app/src/main/java/com/developersbreach/composeactors/ui/screens/search/SearchUIState.kt b/app/src/main/java/com/developersbreach/composeactors/ui/screens/search/SearchUIState.kt index 23911c9..8ce6d28 100644 --- a/app/src/main/java/com/developersbreach/composeactors/ui/screens/search/SearchUIState.kt +++ b/app/src/main/java/com/developersbreach/composeactors/ui/screens/search/SearchUIState.kt @@ -1,7 +1,7 @@ package com.developersbreach.composeactors.ui.screens.search -import com.developersbreach.composeactors.data.model.Person -import com.developersbreach.composeactors.data.model.Movie +import com.developersbreach.composeactors.data.person.model.Person +import com.developersbreach.composeactors.data.movie.model.Movie /** * UI state for the [SearchScreen] screen.