diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 7b1990b6..e45c455f 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -111,4 +111,10 @@ dependencies { // Lottie Animation implementation("com.airbnb.android:lottie:6.0.0") + + // Room components + val room_version = "2.5.1" + implementation ("androidx.room:room-runtime:$room_version") + annotationProcessor ("androidx.room:room-compiler:$room_version") + kapt ("androidx.room:room-compiler:$room_version") } \ No newline at end of file diff --git a/app/src/main/java/com/red_velvet/marvel/data/local/MarvelDatabase.kt b/app/src/main/java/com/red_velvet/marvel/data/local/MarvelDatabase.kt new file mode 100644 index 00000000..7029a6e2 --- /dev/null +++ b/app/src/main/java/com/red_velvet/marvel/data/local/MarvelDatabase.kt @@ -0,0 +1,36 @@ +package com.red_velvet.marvel.data.local + +import android.content.Context +import androidx.room.Database +import androidx.room.Room +import androidx.room.RoomDatabase +import com.red_velvet.marvel.data.local.daos.MarvelDao +import com.red_velvet.marvel.data.local.entity.CharacterEntity +import com.red_velvet.marvel.data.local.entity.ComicEntity +import com.red_velvet.marvel.data.local.entity.EventEntity + +@Database(entities = [CharacterEntity::class,ComicEntity::class,EventEntity::class], version = 1) +abstract class MarvelDatabase : RoomDatabase() { + + abstract fun marvelDao():MarvelDao + + companion object{ + + private const val DATABASE_NAME="MarvelDatabase" + + @Volatile + private var instance:MarvelDatabase?=null + + fun getInstance(context: Context):MarvelDatabase{ + return instance?: synchronized(this){ buildDatabase(context).also { instance =it } } + } + + fun getInstanceWithoutContext():MarvelDatabase{ + return instance!! + } + + private fun buildDatabase(context: Context):MarvelDatabase{ + return Room.databaseBuilder(context,MarvelDatabase::class.java, DATABASE_NAME).build() + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/red_velvet/marvel/data/local/daos/MarvelDao.kt b/app/src/main/java/com/red_velvet/marvel/data/local/daos/MarvelDao.kt new file mode 100644 index 00000000..afdaebc4 --- /dev/null +++ b/app/src/main/java/com/red_velvet/marvel/data/local/daos/MarvelDao.kt @@ -0,0 +1,34 @@ +package com.red_velvet.marvel.data.local.daos + +import android.provider.CalendarContract.EventsEntity +import androidx.room.Dao +import androidx.room.Insert +import androidx.room.OnConflictStrategy +import androidx.room.Query +import com.red_velvet.marvel.data.local.entity.CharacterEntity +import com.red_velvet.marvel.data.local.entity.ComicEntity +import com.red_velvet.marvel.data.local.entity.EventEntity +import io.reactivex.rxjava3.core.Completable +import io.reactivex.rxjava3.core.Observable + +@Dao +interface MarvelDao { + + @Insert(onConflict = OnConflictStrategy.REPLACE) + fun insertCharacters(characters:List):Completable + + @Query("SELECT * FROM CharacterEntity") + fun getAllCharacters():Observable> + + @Insert(onConflict = OnConflictStrategy.REPLACE) + fun insertComics(characters:List):Completable + + @Query("SELECT * FROM ComicEntity") + fun getAllComics():Observable> + + @Insert(onConflict = OnConflictStrategy.REPLACE) + fun insertEvents(characters:List):Completable + + @Query("SELECT * FROM EventEntity") + fun getAllEvents():Observable> +} \ No newline at end of file diff --git a/app/src/main/java/com/red_velvet/marvel/data/local/entity/CharacterEntity.kt b/app/src/main/java/com/red_velvet/marvel/data/local/entity/CharacterEntity.kt new file mode 100644 index 00000000..ab3ed775 --- /dev/null +++ b/app/src/main/java/com/red_velvet/marvel/data/local/entity/CharacterEntity.kt @@ -0,0 +1,14 @@ +package com.red_velvet.marvel.data.local.entity + +import androidx.room.Entity +import androidx.room.PrimaryKey + +@Entity +data class CharacterEntity( + @PrimaryKey + val id : Long?, + val name : String?, + val description: String?, + val modified : String?, + val imageUrl : String? +) \ No newline at end of file diff --git a/app/src/main/java/com/red_velvet/marvel/data/local/entity/ComicEntity.kt b/app/src/main/java/com/red_velvet/marvel/data/local/entity/ComicEntity.kt new file mode 100644 index 00000000..6e853c68 --- /dev/null +++ b/app/src/main/java/com/red_velvet/marvel/data/local/entity/ComicEntity.kt @@ -0,0 +1,14 @@ +package com.red_velvet.marvel.data.local.entity + +import androidx.room.Entity +import androidx.room.PrimaryKey + +@Entity +data class ComicEntity( + @PrimaryKey + val id : Long?, + val name : String?, + val description: String?, + val modified : String?, + val imageUrl : String? +) diff --git a/app/src/main/java/com/red_velvet/marvel/data/local/entity/EventEntity.kt b/app/src/main/java/com/red_velvet/marvel/data/local/entity/EventEntity.kt new file mode 100644 index 00000000..8b82e2f0 --- /dev/null +++ b/app/src/main/java/com/red_velvet/marvel/data/local/entity/EventEntity.kt @@ -0,0 +1,14 @@ +package com.red_velvet.marvel.data.local.entity + +import androidx.room.Entity +import androidx.room.PrimaryKey + +@Entity +data class EventEntity( + @PrimaryKey + val id : Long?, + val name : String?, + val description: String?, + val modified : String?, + val imageUrl : String? +) diff --git a/app/src/main/java/com/red_velvet/marvel/data/remote/MarvelService.kt b/app/src/main/java/com/red_velvet/marvel/data/remote/MarvelService.kt index b2d45876..ca8340ae 100644 --- a/app/src/main/java/com/red_velvet/marvel/data/remote/MarvelService.kt +++ b/app/src/main/java/com/red_velvet/marvel/data/remote/MarvelService.kt @@ -1,12 +1,12 @@ package com.red_velvet.marvel.data.remote -import com.red_velvet.marvel.data.model.BaseResponse -import com.red_velvet.marvel.data.model.Character -import com.red_velvet.marvel.data.model.Comic -import com.red_velvet.marvel.data.model.Creator -import com.red_velvet.marvel.data.model.Event -import com.red_velvet.marvel.data.model.Series -import com.red_velvet.marvel.data.model.Story +import com.red_velvet.marvel.data.remote.dtos.BaseResponse +import com.red_velvet.marvel.data.remote.dtos.CharacterDto +import com.red_velvet.marvel.data.remote.dtos.ComicDto +import com.red_velvet.marvel.data.remote.dtos.Creator +import com.red_velvet.marvel.data.remote.dtos.EventDto +import com.red_velvet.marvel.data.remote.dtos.Series +import com.red_velvet.marvel.data.remote.dtos.Story import io.reactivex.rxjava3.core.Single import retrofit2.Response import retrofit2.http.GET @@ -19,19 +19,19 @@ interface MarvelService { fun getAllComics( @Query("titleStartsWith") titleStartsWith: String? = null, @Query("dateDescriptor") dateDescriptor: String? = null, - ): Single>>> + ): Single>>> @GET("comics/{comicId}") fun getComicDetailById( @Path("comicId") comicId: Int - ): Single>>> + ): Single>>> @GET("characters/{characterId}/comics") fun getComicsByCharacterId( @Path("characterId") characterId: Int, @Query("titleStartsWith") titleStartsWith: String? = null, @Query("dateDescriptor") dateDescriptor: String? = null - ): Single>>> + ): Single>>> @GET("comics/{comicId}/creators") fun getCreatorByComicId( @@ -52,17 +52,17 @@ interface MarvelService { @GET("events") fun getAllEvents( @Query("nameStartsWith") nameStartsWith: String? = null - ): Single>>> + ): Single>>> @GET("comics/{comicId}/characters") fun getCharactersByComicId( @Path("comicId") comicId: Int? = null, - ): Single>>> + ): Single>>> @GET("events/{eventId}/characters") fun getCharactersByEventId( @Path("eventId") eventId: Int, - ): Single>>> + ): Single>>> @GET("events/{eventId}/creators") fun getCreatorsByEventId( @@ -85,17 +85,17 @@ interface MarvelService { @GET("stories/{storyId}/comics") fun getComicsByStoryId( @Path("storyId") storyId: Int - ): Single>>> + ): Single>>> @GET("characters") fun getAllCharacters( @Query("nameStartsWith") nameStartsWith: String? = null - ): Single>>> + ): Single>>> @GET("characters/{characterId}") fun getCharacterById( @Path("characterId") characterId: Int - ): Single>>> + ): Single>>> @GET("characters/{characterId}/series") fun getSeriesByCharacterId( @@ -110,5 +110,5 @@ interface MarvelService { @GET("events/{eventId}") fun getEventById( @Path("eventId") eventId: Int - ): Single>>> + ): Single>>> } \ No newline at end of file diff --git a/app/src/main/java/com/red_velvet/marvel/data/model/BaseResponse.kt b/app/src/main/java/com/red_velvet/marvel/data/remote/dtos/BaseResponse.kt similarity index 91% rename from app/src/main/java/com/red_velvet/marvel/data/model/BaseResponse.kt rename to app/src/main/java/com/red_velvet/marvel/data/remote/dtos/BaseResponse.kt index d6a13bd4..8ee0809b 100644 --- a/app/src/main/java/com/red_velvet/marvel/data/model/BaseResponse.kt +++ b/app/src/main/java/com/red_velvet/marvel/data/remote/dtos/BaseResponse.kt @@ -1,4 +1,4 @@ -package com.red_velvet.marvel.data.model +package com.red_velvet.marvel.data.remote.dtos import com.google.gson.annotations.SerializedName diff --git a/app/src/main/java/com/red_velvet/marvel/data/model/Character.kt b/app/src/main/java/com/red_velvet/marvel/data/remote/dtos/CharacterDto.kt similarity index 87% rename from app/src/main/java/com/red_velvet/marvel/data/model/Character.kt rename to app/src/main/java/com/red_velvet/marvel/data/remote/dtos/CharacterDto.kt index 5f521352..d1acd33a 100644 --- a/app/src/main/java/com/red_velvet/marvel/data/model/Character.kt +++ b/app/src/main/java/com/red_velvet/marvel/data/remote/dtos/CharacterDto.kt @@ -1,9 +1,9 @@ -package com.red_velvet.marvel.data.model +package com.red_velvet.marvel.data.remote.dtos import com.google.gson.annotations.SerializedName -import com.red_velvet.marvel.data.model.* +import com.red_velvet.marvel.data.remote.dtos.* -data class Character( +data class CharacterDto( @SerializedName("comics") val comics: ResourceCollection? = ResourceCollection(), @SerializedName("description") diff --git a/app/src/main/java/com/red_velvet/marvel/data/model/Comic.kt b/app/src/main/java/com/red_velvet/marvel/data/remote/dtos/ComicDto.kt similarity index 96% rename from app/src/main/java/com/red_velvet/marvel/data/model/Comic.kt rename to app/src/main/java/com/red_velvet/marvel/data/remote/dtos/ComicDto.kt index 64f78ac3..e27e484a 100644 --- a/app/src/main/java/com/red_velvet/marvel/data/model/Comic.kt +++ b/app/src/main/java/com/red_velvet/marvel/data/remote/dtos/ComicDto.kt @@ -1,9 +1,9 @@ -package com.red_velvet.marvel.data.model +package com.red_velvet.marvel.data.remote.dtos import com.google.gson.annotations.SerializedName -data class Comic( +data class ComicDto( @SerializedName("characters") val characters: ResourceCollection? = ResourceCollection(), @SerializedName("collectedIssues") diff --git a/app/src/main/java/com/red_velvet/marvel/data/model/Creator.kt b/app/src/main/java/com/red_velvet/marvel/data/remote/dtos/Creator.kt similarity index 95% rename from app/src/main/java/com/red_velvet/marvel/data/model/Creator.kt rename to app/src/main/java/com/red_velvet/marvel/data/remote/dtos/Creator.kt index 4a5c8e90..85c95258 100644 --- a/app/src/main/java/com/red_velvet/marvel/data/model/Creator.kt +++ b/app/src/main/java/com/red_velvet/marvel/data/remote/dtos/Creator.kt @@ -1,4 +1,4 @@ -package com.red_velvet.marvel.data.model +package com.red_velvet.marvel.data.remote.dtos import com.google.gson.annotations.SerializedName diff --git a/app/src/main/java/com/red_velvet/marvel/data/model/DataContainer.kt b/app/src/main/java/com/red_velvet/marvel/data/remote/dtos/DataContainer.kt similarity index 88% rename from app/src/main/java/com/red_velvet/marvel/data/model/DataContainer.kt rename to app/src/main/java/com/red_velvet/marvel/data/remote/dtos/DataContainer.kt index 892c8181..b3567935 100644 --- a/app/src/main/java/com/red_velvet/marvel/data/model/DataContainer.kt +++ b/app/src/main/java/com/red_velvet/marvel/data/remote/dtos/DataContainer.kt @@ -1,4 +1,4 @@ -package com.red_velvet.marvel.data.model +package com.red_velvet.marvel.data.remote.dtos import com.google.gson.annotations.SerializedName diff --git a/app/src/main/java/com/red_velvet/marvel/data/model/Date.kt b/app/src/main/java/com/red_velvet/marvel/data/remote/dtos/Date.kt similarity index 79% rename from app/src/main/java/com/red_velvet/marvel/data/model/Date.kt rename to app/src/main/java/com/red_velvet/marvel/data/remote/dtos/Date.kt index 4bc86fc9..7cc969e3 100644 --- a/app/src/main/java/com/red_velvet/marvel/data/model/Date.kt +++ b/app/src/main/java/com/red_velvet/marvel/data/remote/dtos/Date.kt @@ -1,4 +1,4 @@ -package com.red_velvet.marvel.data.model +package com.red_velvet.marvel.data.remote.dtos import com.google.gson.annotations.SerializedName diff --git a/app/src/main/java/com/red_velvet/marvel/data/model/Event.kt b/app/src/main/java/com/red_velvet/marvel/data/remote/dtos/EventDto.kt similarity index 94% rename from app/src/main/java/com/red_velvet/marvel/data/model/Event.kt rename to app/src/main/java/com/red_velvet/marvel/data/remote/dtos/EventDto.kt index fb4b08a9..8b0823cc 100644 --- a/app/src/main/java/com/red_velvet/marvel/data/model/Event.kt +++ b/app/src/main/java/com/red_velvet/marvel/data/remote/dtos/EventDto.kt @@ -1,9 +1,9 @@ -package com.red_velvet.marvel.data.model +package com.red_velvet.marvel.data.remote.dtos import com.google.gson.annotations.SerializedName -data class Event( +data class EventDto( @SerializedName("id") val id: Int? = 0, @SerializedName("title") diff --git a/app/src/main/java/com/red_velvet/marvel/data/model/Price.kt b/app/src/main/java/com/red_velvet/marvel/data/remote/dtos/Price.kt similarity index 80% rename from app/src/main/java/com/red_velvet/marvel/data/model/Price.kt rename to app/src/main/java/com/red_velvet/marvel/data/remote/dtos/Price.kt index 5739bc3b..20025469 100644 --- a/app/src/main/java/com/red_velvet/marvel/data/model/Price.kt +++ b/app/src/main/java/com/red_velvet/marvel/data/remote/dtos/Price.kt @@ -1,4 +1,4 @@ -package com.red_velvet.marvel.data.model +package com.red_velvet.marvel.data.remote.dtos import com.google.gson.annotations.SerializedName diff --git a/app/src/main/java/com/red_velvet/marvel/data/model/Resource.kt b/app/src/main/java/com/red_velvet/marvel/data/remote/dtos/Resource.kt similarity index 87% rename from app/src/main/java/com/red_velvet/marvel/data/model/Resource.kt rename to app/src/main/java/com/red_velvet/marvel/data/remote/dtos/Resource.kt index 495aafdb..f98c0f35 100644 --- a/app/src/main/java/com/red_velvet/marvel/data/model/Resource.kt +++ b/app/src/main/java/com/red_velvet/marvel/data/remote/dtos/Resource.kt @@ -1,4 +1,4 @@ -package com.red_velvet.marvel.data.model +package com.red_velvet.marvel.data.remote.dtos import com.google.gson.annotations.SerializedName diff --git a/app/src/main/java/com/red_velvet/marvel/data/model/ResourceCollection.kt b/app/src/main/java/com/red_velvet/marvel/data/remote/dtos/ResourceCollection.kt similarity index 91% rename from app/src/main/java/com/red_velvet/marvel/data/model/ResourceCollection.kt rename to app/src/main/java/com/red_velvet/marvel/data/remote/dtos/ResourceCollection.kt index 93b8a596..e27e9f7a 100644 --- a/app/src/main/java/com/red_velvet/marvel/data/model/ResourceCollection.kt +++ b/app/src/main/java/com/red_velvet/marvel/data/remote/dtos/ResourceCollection.kt @@ -1,4 +1,4 @@ -package com.red_velvet.marvel.data.model +package com.red_velvet.marvel.data.remote.dtos import com.google.gson.annotations.SerializedName diff --git a/app/src/main/java/com/red_velvet/marvel/data/model/Series.kt b/app/src/main/java/com/red_velvet/marvel/data/remote/dtos/Series.kt similarity index 96% rename from app/src/main/java/com/red_velvet/marvel/data/model/Series.kt rename to app/src/main/java/com/red_velvet/marvel/data/remote/dtos/Series.kt index 64006d2d..607db860 100644 --- a/app/src/main/java/com/red_velvet/marvel/data/model/Series.kt +++ b/app/src/main/java/com/red_velvet/marvel/data/remote/dtos/Series.kt @@ -1,4 +1,4 @@ -package com.red_velvet.marvel.data.model +package com.red_velvet.marvel.data.remote.dtos import com.google.gson.annotations.SerializedName diff --git a/app/src/main/java/com/red_velvet/marvel/data/model/Story.kt b/app/src/main/java/com/red_velvet/marvel/data/remote/dtos/Story.kt similarity index 95% rename from app/src/main/java/com/red_velvet/marvel/data/model/Story.kt rename to app/src/main/java/com/red_velvet/marvel/data/remote/dtos/Story.kt index 96ea2ceb..8be36a87 100644 --- a/app/src/main/java/com/red_velvet/marvel/data/model/Story.kt +++ b/app/src/main/java/com/red_velvet/marvel/data/remote/dtos/Story.kt @@ -1,4 +1,4 @@ -package com.red_velvet.marvel.data.model +package com.red_velvet.marvel.data.remote.dtos import com.google.gson.annotations.SerializedName diff --git a/app/src/main/java/com/red_velvet/marvel/data/model/TextBlurb.kt b/app/src/main/java/com/red_velvet/marvel/data/remote/dtos/TextBlurb.kt similarity index 84% rename from app/src/main/java/com/red_velvet/marvel/data/model/TextBlurb.kt rename to app/src/main/java/com/red_velvet/marvel/data/remote/dtos/TextBlurb.kt index 557ad7bb..03bd8283 100644 --- a/app/src/main/java/com/red_velvet/marvel/data/model/TextBlurb.kt +++ b/app/src/main/java/com/red_velvet/marvel/data/remote/dtos/TextBlurb.kt @@ -1,4 +1,4 @@ -package com.red_velvet.marvel.data.model +package com.red_velvet.marvel.data.remote.dtos import com.google.gson.annotations.SerializedName diff --git a/app/src/main/java/com/red_velvet/marvel/data/model/Thumbnail.kt b/app/src/main/java/com/red_velvet/marvel/data/remote/dtos/Thumbnail.kt similarity index 81% rename from app/src/main/java/com/red_velvet/marvel/data/model/Thumbnail.kt rename to app/src/main/java/com/red_velvet/marvel/data/remote/dtos/Thumbnail.kt index 266d222b..40896e5c 100644 --- a/app/src/main/java/com/red_velvet/marvel/data/model/Thumbnail.kt +++ b/app/src/main/java/com/red_velvet/marvel/data/remote/dtos/Thumbnail.kt @@ -1,4 +1,4 @@ -package com.red_velvet.marvel.data.model +package com.red_velvet.marvel.data.remote.dtos import com.google.gson.annotations.SerializedName diff --git a/app/src/main/java/com/red_velvet/marvel/data/model/Url.kt b/app/src/main/java/com/red_velvet/marvel/data/remote/dtos/Url.kt similarity index 79% rename from app/src/main/java/com/red_velvet/marvel/data/model/Url.kt rename to app/src/main/java/com/red_velvet/marvel/data/remote/dtos/Url.kt index 6f3cd27e..2788a68c 100644 --- a/app/src/main/java/com/red_velvet/marvel/data/model/Url.kt +++ b/app/src/main/java/com/red_velvet/marvel/data/remote/dtos/Url.kt @@ -1,4 +1,4 @@ -package com.red_velvet.marvel.data.model +package com.red_velvet.marvel.data.remote.dtos import com.google.gson.annotations.SerializedName diff --git a/app/src/main/java/com/red_velvet/marvel/data/repository/MarvelRepositoryImpl.kt b/app/src/main/java/com/red_velvet/marvel/data/repository/MarvelRepositoryImpl.kt deleted file mode 100644 index 2ee67b24..00000000 --- a/app/src/main/java/com/red_velvet/marvel/data/repository/MarvelRepositoryImpl.kt +++ /dev/null @@ -1,119 +0,0 @@ -package com.red_velvet.marvel.data.repository - - -import com.red_velvet.marvel.data.model.BaseResponse -import com.red_velvet.marvel.data.model.Character -import com.red_velvet.marvel.data.model.Comic -import com.red_velvet.marvel.data.model.Creator -import com.red_velvet.marvel.data.model.Event -import com.red_velvet.marvel.data.model.Series -import com.red_velvet.marvel.data.model.Story -import com.red_velvet.marvel.data.remote.MarvelService -import com.red_velvet.marvel.ui.utils.State -import io.reactivex.rxjava3.core.Observable -import io.reactivex.rxjava3.core.Single -import retrofit2.Response - -class MarvelRepositoryImpl( - private val marvelServiceImpl: MarvelService -) : MarvelRepository { - - override fun getAllComics( - titleStartsWith: String?, - dateDescriptor: String? - ): Observable>> { - return wrapWithState { marvelServiceImpl.getAllComics(titleStartsWith, dateDescriptor) } - } - - override fun getComicById(comicId: Int): Observable>> { - return wrapWithState { marvelServiceImpl.getComicDetailById(comicId) } - } - - override fun getComicsByCharacterId(characterId: Int): Observable>> { - return wrapWithState { marvelServiceImpl.getComicsByCharacterId(characterId) } - } - - override fun getAllSeries( - titleStartsWith: String?, - contains: String? - ): Observable>> { - return wrapWithState { marvelServiceImpl.getAllSeries(titleStartsWith, contains) } - } - - override fun getCharactersByComicId(comicId: Int): Observable>> { - return wrapWithState { marvelServiceImpl.getCharactersByComicId(comicId) } - } - - override fun getSeriesById(seriesId: Int): Observable>> { - return wrapWithState { marvelServiceImpl.getSeriesById(seriesId) } - } - - override fun getAllEvents(query: String?): Observable>> { - return wrapWithState { marvelServiceImpl.getAllEvents(query) } - } - - override fun getCreatorByComicId(comicId: Int): Observable>> { - return wrapWithState { marvelServiceImpl.getCreatorByComicId(comicId) } - } - - override fun getCharactersByEventId(eventId: Int): Observable>> { - return wrapWithState { marvelServiceImpl.getCharactersByEventId(eventId) } - } - - override fun getAllCharacters(nameStartsWith: String?): Observable>> { - return wrapWithState { marvelServiceImpl.getAllCharacters(nameStartsWith) } - } - - override fun getCharacterById(characterId: Int): Observable>> { - return wrapWithState { marvelServiceImpl.getCharacterById(characterId) } - } - - override fun getCreatorsByEventId(eventId: Int): Observable>> { - return wrapWithState { marvelServiceImpl.getCreatorsByEventId(eventId) } - } - - override fun getAllStories(): Observable>> { - return wrapWithState { marvelServiceImpl.getAllStories() } - } - - override fun getStoryById(storyId: Int): Observable>> { - return wrapWithState { marvelServiceImpl.getStoryById(storyId) } - } - - override fun getCreatorsByStoryId(storyId: Int): Observable>> { - return wrapWithState { marvelServiceImpl.getCreatorsByStoryId(storyId) } - } - - override fun getComicsByStoryId(storyId: Int): Observable>> { - return wrapWithState { marvelServiceImpl.getComicsByStoryId(storyId) } - } - - override fun getSeriesByCharacterId( - characterId: Int - ): Observable>> { - return wrapWithState { marvelServiceImpl.getSeriesByCharacterId(characterId) } - } - - override fun getEventById( - eventId: Int - ): Observable>> { - return wrapWithState { marvelServiceImpl.getEventById(eventId) } - } - - override fun getCreatorsBySeriesId(seriesId: Int): Observable>> { - return wrapWithState { marvelServiceImpl.getCreatorsBySeriesId(seriesId) } - } - - private fun wrapWithState(function: () -> Single>>): Observable> { - return function() - .map> { response -> - if (response.isSuccessful) { - State.Success(response.body()?.body?.results!!) - } else { - State.Failed(response.message()) - } - } - .onErrorReturn { State.Failed(it.message ?: "Unknown error") } - .startWith(Observable.just(State.Loading)) - } -} \ No newline at end of file diff --git a/app/src/main/java/com/red_velvet/marvel/domain/mapper/CharacterEntityMapper.kt b/app/src/main/java/com/red_velvet/marvel/domain/mapper/CharacterEntityMapper.kt new file mode 100644 index 00000000..59540dae --- /dev/null +++ b/app/src/main/java/com/red_velvet/marvel/domain/mapper/CharacterEntityMapper.kt @@ -0,0 +1,16 @@ +package com.red_velvet.marvel.domain.mapper + +import com.red_velvet.marvel.data.local.entity.CharacterEntity +import com.red_velvet.marvel.data.remote.dtos.CharacterDto + +class CharacterEntityMapper : Mapper { + override fun map(input: CharacterDto): CharacterEntity { + return CharacterEntity( + id = input.id?.toLong() ?: 0L , + name = input.name ?: "" , + description = input.description ?: "" , + modified = input.modified ?: "" , + imageUrl = "${input.thumbnail?.path}.${input.thumbnail?.extension}" + ) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/red_velvet/marvel/domain/mapper/CharacterMapper.kt b/app/src/main/java/com/red_velvet/marvel/domain/mapper/CharacterMapper.kt new file mode 100644 index 00000000..7b71210b --- /dev/null +++ b/app/src/main/java/com/red_velvet/marvel/domain/mapper/CharacterMapper.kt @@ -0,0 +1,14 @@ +package com.red_velvet.marvel.domain.mapper + +import com.red_velvet.marvel.data.local.entity.CharacterEntity +import com.red_velvet.marvel.domain.model.Character + +class CharacterMapper : Mapper { + override fun map(input: CharacterEntity): Character { + return Character( + id = input.id ?: 0L , + name = input.name ?: "" , + imageUrl = input.imageUrl ?: "" + ) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/red_velvet/marvel/domain/mapper/ComicEntityMapper.kt b/app/src/main/java/com/red_velvet/marvel/domain/mapper/ComicEntityMapper.kt new file mode 100644 index 00000000..640866b4 --- /dev/null +++ b/app/src/main/java/com/red_velvet/marvel/domain/mapper/ComicEntityMapper.kt @@ -0,0 +1,16 @@ +package com.red_velvet.marvel.domain.mapper + +import com.red_velvet.marvel.data.local.entity.ComicEntity +import com.red_velvet.marvel.data.remote.dtos.ComicDto + +class ComicEntityMapper : Mapper { + override fun map(input: ComicDto): ComicEntity { + return ComicEntity( + id = input.id?.toLong() ?: 0L , + name = input.title ?: "" , + description = input.description ?: "" , + modified = input.modified ?: "" , + imageUrl = "${input.thumbnail?.path}.${input.thumbnail?.extension}" + ) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/red_velvet/marvel/domain/mapper/ComicMapper.kt b/app/src/main/java/com/red_velvet/marvel/domain/mapper/ComicMapper.kt new file mode 100644 index 00000000..8b18df5c --- /dev/null +++ b/app/src/main/java/com/red_velvet/marvel/domain/mapper/ComicMapper.kt @@ -0,0 +1,15 @@ +package com.red_velvet.marvel.domain.mapper + +import com.red_velvet.marvel.data.local.entity.ComicEntity +import com.red_velvet.marvel.domain.model.Comic + +class ComicMapper : Mapper { + override fun map(input: ComicEntity): Comic { + return Comic( + id = input.id ?: 0L , + name = input.name ?: "" , + imageUrl = input.imageUrl ?: "" + ) + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/red_velvet/marvel/domain/mapper/EventEntityMapper.kt b/app/src/main/java/com/red_velvet/marvel/domain/mapper/EventEntityMapper.kt new file mode 100644 index 00000000..a12c9c46 --- /dev/null +++ b/app/src/main/java/com/red_velvet/marvel/domain/mapper/EventEntityMapper.kt @@ -0,0 +1,17 @@ +package com.red_velvet.marvel.domain.mapper + +import com.red_velvet.marvel.data.local.entity.EventEntity +import com.red_velvet.marvel.data.remote.dtos.EventDto +import com.red_velvet.marvel.domain.model.Event + +class EventEntityMapper : Mapper { + override fun map(input: EventDto): EventEntity { + return EventEntity( + id = input.id?.toLong() ?: 0L , + name = input.title ?: "" , + description = input.description ?: "" , + modified = input.modified ?: "" , + imageUrl = "${input.thumbnail?.path}.${input.thumbnail?.extension}" + ) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/red_velvet/marvel/domain/mapper/EventMapper.kt b/app/src/main/java/com/red_velvet/marvel/domain/mapper/EventMapper.kt new file mode 100644 index 00000000..f792efe7 --- /dev/null +++ b/app/src/main/java/com/red_velvet/marvel/domain/mapper/EventMapper.kt @@ -0,0 +1,14 @@ +package com.red_velvet.marvel.domain.mapper + +import com.red_velvet.marvel.data.local.entity.EventEntity +import com.red_velvet.marvel.domain.model.Event + +class EventMapper : Mapper { + override fun map(input: EventEntity): Event { + return Event( + id = input.id ?: 0L , + name = input.name ?: "" , + imageUrl = input.imageUrl ?: "" + ) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/red_velvet/marvel/domain/mapper/Mapper.kt b/app/src/main/java/com/red_velvet/marvel/domain/mapper/Mapper.kt new file mode 100644 index 00000000..c65400b3 --- /dev/null +++ b/app/src/main/java/com/red_velvet/marvel/domain/mapper/Mapper.kt @@ -0,0 +1,5 @@ +package com.red_velvet.marvel.domain.mapper + +interface Mapper { + fun map(input : I): O +} \ No newline at end of file diff --git a/app/src/main/java/com/red_velvet/marvel/domain/model/Character.kt b/app/src/main/java/com/red_velvet/marvel/domain/model/Character.kt new file mode 100644 index 00000000..4d024077 --- /dev/null +++ b/app/src/main/java/com/red_velvet/marvel/domain/model/Character.kt @@ -0,0 +1,7 @@ +package com.red_velvet.marvel.domain.model + +data class Character( + val id:Long, + val name:String, + val imageUrl:String +) diff --git a/app/src/main/java/com/red_velvet/marvel/domain/model/Comic.kt b/app/src/main/java/com/red_velvet/marvel/domain/model/Comic.kt new file mode 100644 index 00000000..ef48954b --- /dev/null +++ b/app/src/main/java/com/red_velvet/marvel/domain/model/Comic.kt @@ -0,0 +1,7 @@ +package com.red_velvet.marvel.domain.model + +data class Comic( + val id:Long, + val name:String, + val imageUrl:String +) diff --git a/app/src/main/java/com/red_velvet/marvel/domain/model/Event.kt b/app/src/main/java/com/red_velvet/marvel/domain/model/Event.kt new file mode 100644 index 00000000..c2eb618e --- /dev/null +++ b/app/src/main/java/com/red_velvet/marvel/domain/model/Event.kt @@ -0,0 +1,7 @@ +package com.red_velvet.marvel.domain.model + +data class Event( + val id:Long, + val name:String, + val imageUrl:String +) diff --git a/app/src/main/java/com/red_velvet/marvel/data/repository/MarvelRepository.kt b/app/src/main/java/com/red_velvet/marvel/domain/repository/MarvelRepository.kt similarity index 56% rename from app/src/main/java/com/red_velvet/marvel/data/repository/MarvelRepository.kt rename to app/src/main/java/com/red_velvet/marvel/domain/repository/MarvelRepository.kt index 247f0d0b..c775bb1b 100644 --- a/app/src/main/java/com/red_velvet/marvel/data/repository/MarvelRepository.kt +++ b/app/src/main/java/com/red_velvet/marvel/domain/repository/MarvelRepository.kt @@ -1,25 +1,31 @@ -package com.red_velvet.marvel.data.repository - - -import com.red_velvet.marvel.data.model.Character -import com.red_velvet.marvel.data.model.Comic -import com.red_velvet.marvel.data.model.Creator -import com.red_velvet.marvel.data.model.Event -import com.red_velvet.marvel.data.model.Series -import com.red_velvet.marvel.data.model.Story +package com.red_velvet.marvel.domain.repository + + +import com.red_velvet.marvel.data.remote.dtos.CharacterDto +import com.red_velvet.marvel.data.remote.dtos.ComicDto +import com.red_velvet.marvel.data.remote.dtos.Creator +import com.red_velvet.marvel.data.remote.dtos.EventDto +import com.red_velvet.marvel.data.remote.dtos.Series +import com.red_velvet.marvel.data.remote.dtos.Story +import com.red_velvet.marvel.domain.model.Character +import com.red_velvet.marvel.domain.model.Comic +import com.red_velvet.marvel.domain.model.Event import com.red_velvet.marvel.ui.utils.State import io.reactivex.rxjava3.core.Observable +import io.reactivex.rxjava3.core.Single interface MarvelRepository { fun getAllComics( titleStartsWith: String? = null, dateDescriptor: String? = null, - ): Observable>> + ): Observable> + + fun refreshComics(): Single - fun getComicById(comicId: Int): Observable>> + fun getComicById(comicId: Int): Observable>> - fun getComicsByCharacterId(characterId: Int): Observable>> + fun getComicsByCharacterId(characterId: Int): Observable>> fun getAllSeries( titleStartsWith: String? = null, @@ -30,9 +36,11 @@ interface MarvelRepository { fun getSeriesById(seriesId: Int): Observable>> - fun getAllEvents(query: String? = null): Observable>> + fun getAllEvents(query: String? = null): Observable> - fun getCharactersByEventId(eventId: Int): Observable>> + fun refreshEvents(): Single + + fun getCharactersByEventId(eventId: Int): Observable>> fun getCreatorsByEventId(eventId: Int): Observable>> @@ -42,18 +50,21 @@ interface MarvelRepository { fun getCreatorsByStoryId(storyId: Int): Observable>> - fun getComicsByStoryId(storyId: Int): Observable>> + fun getComicsByStoryId(storyId: Int): Observable>> + + fun getCharactersByComicId(comicId: Int): Observable>> - fun getCharactersByComicId(comicId: Int): Observable>> + fun getEventById(eventId: Int): Observable>> - fun getEventById(eventId: Int): Observable>> + fun getAllCharacters(nameStartsWith: String? = null): Observable> - fun getAllCharacters(nameStartsWith: String? = null): Observable>> + fun refreshCharacters(): Single - fun getCharacterById(characterId: Int): Observable>> + fun getCharacterById(characterId: Int): Observable>> fun getCreatorsBySeriesId(seriesId: Int): Observable>> fun getSeriesByCharacterId(characterId: Int): Observable>> + } diff --git a/app/src/main/java/com/red_velvet/marvel/domain/repository/MarvelRepositoryImpl.kt b/app/src/main/java/com/red_velvet/marvel/domain/repository/MarvelRepositoryImpl.kt new file mode 100644 index 00000000..4c8e722e --- /dev/null +++ b/app/src/main/java/com/red_velvet/marvel/domain/repository/MarvelRepositoryImpl.kt @@ -0,0 +1,188 @@ +package com.red_velvet.marvel.domain.repository + + +import com.red_velvet.marvel.data.local.MarvelDatabase +import com.red_velvet.marvel.data.local.daos.MarvelDao +import com.red_velvet.marvel.data.remote.dtos.BaseResponse +import com.red_velvet.marvel.data.remote.dtos.CharacterDto +import com.red_velvet.marvel.data.remote.dtos.ComicDto +import com.red_velvet.marvel.data.remote.dtos.Creator +import com.red_velvet.marvel.data.remote.dtos.EventDto +import com.red_velvet.marvel.data.remote.dtos.Series +import com.red_velvet.marvel.data.remote.dtos.Story +import com.red_velvet.marvel.data.remote.MarvelService +import com.red_velvet.marvel.domain.mapper.CharacterEntityMapper +import com.red_velvet.marvel.domain.mapper.CharacterMapper +import com.red_velvet.marvel.domain.mapper.ComicEntityMapper +import com.red_velvet.marvel.domain.mapper.ComicMapper +import com.red_velvet.marvel.domain.mapper.EventEntityMapper +import com.red_velvet.marvel.domain.mapper.EventMapper +import com.red_velvet.marvel.domain.model.Character +import com.red_velvet.marvel.domain.model.Comic +import com.red_velvet.marvel.domain.model.Event +import com.red_velvet.marvel.ui.utils.State +import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers +import io.reactivex.rxjava3.core.Observable +import io.reactivex.rxjava3.core.Single +import io.reactivex.rxjava3.schedulers.Schedulers +import retrofit2.Response + +class MarvelRepositoryImpl( + private val marvelServiceImpl: MarvelService, + private val marvelDao: MarvelDao, + private val comicMapper: ComicMapper, + private val comicEntityMapper: ComicEntityMapper, + private val characterMapper: CharacterMapper, + private val characterEntityMapper: CharacterEntityMapper, + private val eventMapper: EventMapper, + private val eventEntityMapper: EventEntityMapper +) : MarvelRepository { + override fun getAllComics( + titleStartsWith: String?, + dateDescriptor: String? + ): Observable> { + return marvelDao.getAllComics().map { + it.map { comicEntity -> + comicMapper.map(comicEntity ) + } + } + } + + override fun getComicById(comicId: Int): Observable>> { + return wrapWithState { marvelServiceImpl.getComicDetailById(comicId) } + } + + override fun getComicsByCharacterId(characterId: Int): Observable>> { + return wrapWithState { marvelServiceImpl.getComicsByCharacterId(characterId) } + } + + override fun getAllSeries( + titleStartsWith: String?, + contains: String? + ): Observable>> { + return wrapWithState { marvelServiceImpl.getAllSeries(titleStartsWith, contains) } + } + + override fun getCharactersByComicId(comicId: Int): Observable>> { + return wrapWithState { marvelServiceImpl.getCharactersByComicId(comicId) } + } + + override fun getSeriesById(seriesId: Int): Observable>> { + return wrapWithState { marvelServiceImpl.getSeriesById(seriesId) } + } + + override fun getAllEvents(query: String?): Observable> { + return marvelDao + .getAllEvents() + .map { + it.map { + eventMapper.map(it) + } + } + } + + override fun getCreatorByComicId(comicId: Int): Observable>> { + return wrapWithState { marvelServiceImpl.getCreatorByComicId(comicId) } + } + + override fun getCharactersByEventId(eventId: Int): Observable>> { + return wrapWithState { marvelServiceImpl.getCharactersByEventId(eventId) } + } + + override fun getAllCharacters(nameStartsWith: String?): Observable> { + return marvelDao.getAllCharacters().map { + it.map { characterEntity -> + characterMapper.map(characterEntity) + } + } + } + + override fun getCharacterById(characterId: Int): Observable>> { + return wrapWithState { marvelServiceImpl.getCharacterById(characterId) } + } + + override fun getCreatorsByEventId(eventId: Int): Observable>> { + return wrapWithState { marvelServiceImpl.getCreatorsByEventId(eventId) } + } + + override fun getAllStories(): Observable>> { + return wrapWithState { marvelServiceImpl.getAllStories() } + } + + override fun getStoryById(storyId: Int): Observable>> { + return wrapWithState { marvelServiceImpl.getStoryById(storyId) } + } + + override fun getCreatorsByStoryId(storyId: Int): Observable>> { + return wrapWithState { marvelServiceImpl.getCreatorsByStoryId(storyId) } + } + + override fun getComicsByStoryId(storyId: Int): Observable>> { + return wrapWithState { marvelServiceImpl.getComicsByStoryId(storyId) } + } + + override fun getSeriesByCharacterId( + characterId: Int + ): Observable>> { + return wrapWithState { marvelServiceImpl.getSeriesByCharacterId(characterId) } + } + + override fun refreshComics() = + marvelServiceImpl.getAllComics() + .observeOn(Schedulers.io()) + .map { responseWrapper -> + if (responseWrapper.isSuccessful) { + val comicEntities = responseWrapper.body()?.body?.results?.map { + comicEntityMapper.map(it) + } + marvelDao.insertComics(comicEntities!!) + } + }.subscribeOn(AndroidSchedulers.mainThread()) + + override fun refreshEvents() = + marvelServiceImpl.getAllEvents() + .observeOn(Schedulers.io()) + .map { responseWrapper -> + if (responseWrapper.isSuccessful) { + val eventEntities = responseWrapper.body()?.body?.results?.map { + eventEntityMapper.map(it) + } + marvelDao.insertEvents(eventEntities!!) + } + }.subscribeOn(AndroidSchedulers.mainThread()) + + override fun refreshCharacters() = + marvelServiceImpl.getAllCharacters() + .observeOn(Schedulers.io()) + .map { responseWrapper -> + if (responseWrapper.isSuccessful) { + val characterEntities = responseWrapper.body()?.body?.results?.map { + characterEntityMapper.map(it) + } + marvelDao.insertCharacters(characterEntities!!) + } + }.subscribeOn(AndroidSchedulers.mainThread()) + + override fun getEventById( + eventId: Int + ): Observable>> { + return wrapWithState { marvelServiceImpl.getEventById(eventId) } + } + + override fun getCreatorsBySeriesId(seriesId: Int): Observable>> { + return wrapWithState { marvelServiceImpl.getCreatorsBySeriesId(seriesId) } + } + + private fun wrapWithState(function: () -> Single>>): Observable> { + return function() + .map> { response -> + if (response.isSuccessful) { + State.Success(response.body()?.body?.results!!) + } else { + State.Failed(response.message()) + } + } + .onErrorReturn { State.Failed(it.message ?: "Unknown error") } + .startWith(Observable.just(State.Loading)) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/red_velvet/marvel/ui/characterDetails/CharacterComicsAdapter.kt b/app/src/main/java/com/red_velvet/marvel/ui/characterDetails/CharacterComicsAdapter.kt index 4f371cbc..ce2ff960 100644 --- a/app/src/main/java/com/red_velvet/marvel/ui/characterDetails/CharacterComicsAdapter.kt +++ b/app/src/main/java/com/red_velvet/marvel/ui/characterDetails/CharacterComicsAdapter.kt @@ -1,12 +1,12 @@ package com.red_velvet.marvel.ui.characterDetails import com.red_velvet.marvel.R -import com.red_velvet.marvel.data.model.Comic +import com.red_velvet.marvel.data.remote.dtos.ComicDto import com.red_velvet.marvel.ui.base.BaseAdapter import com.red_velvet.marvel.ui.base.BaseInteractionListener -class ComicsByCharacterAdapter(items: List, listener: SeriesInteractionListener) : - BaseAdapter(items, listener) { +class ComicsByCharacterAdapter(items: List, listener: SeriesInteractionListener) : + BaseAdapter(items, listener) { override val layoutId: Int = R.layout.item_character_comics } diff --git a/app/src/main/java/com/red_velvet/marvel/ui/characterDetails/CharacterDetailsViewModel.kt b/app/src/main/java/com/red_velvet/marvel/ui/characterDetails/CharacterDetailsViewModel.kt index ec81fa9b..3aa0d3a4 100644 --- a/app/src/main/java/com/red_velvet/marvel/ui/characterDetails/CharacterDetailsViewModel.kt +++ b/app/src/main/java/com/red_velvet/marvel/ui/characterDetails/CharacterDetailsViewModel.kt @@ -2,12 +2,12 @@ package com.red_velvet.marvel.ui.characterDetails import androidx.lifecycle.LiveData import androidx.lifecycle.MutableLiveData -import com.red_velvet.marvel.data.model.Character -import com.red_velvet.marvel.data.model.Comic -import com.red_velvet.marvel.data.model.Series +import com.red_velvet.marvel.data.remote.dtos.CharacterDto +import com.red_velvet.marvel.data.remote.dtos.ComicDto +import com.red_velvet.marvel.data.remote.dtos.Series import com.red_velvet.marvel.data.remote.RetrofitClient -import com.red_velvet.marvel.data.repository.MarvelRepository -import com.red_velvet.marvel.data.repository.MarvelRepositoryImpl +import com.red_velvet.marvel.domain.repository.MarvelRepository +import com.red_velvet.marvel.domain.repository.MarvelRepositoryImpl import com.red_velvet.marvel.ui.base.BaseViewModel import com.red_velvet.marvel.ui.utils.SingleEvent import com.red_velvet.marvel.ui.utils.State @@ -19,11 +19,11 @@ class CharacterDetailsViewModel : BaseViewModel(), SeriesInteractionListener, MarvelRepositoryImpl(RetrofitClient.apiService) } - private val _characterDetails: MutableLiveData>> = MutableLiveData() - val characterDetails: LiveData>> = _characterDetails + private val _characterDetails: MutableLiveData>> = MutableLiveData() + val characterDetails: LiveData>> = _characterDetails - private val _comics: MutableLiveData>> = MutableLiveData() - val comics: LiveData>> = _comics + private val _comics: MutableLiveData>> = MutableLiveData() + val comics: LiveData>> = _comics private val _series: MutableLiveData>> = MutableLiveData() val series: LiveData>> = _series @@ -48,7 +48,7 @@ class CharacterDetailsViewModel : BaseViewModel(), SeriesInteractionListener, ) } - private fun onGetCharacterState(state: State>) { + private fun onGetCharacterState(state: State>) { _characterDetails.postValue(state) } @@ -64,7 +64,7 @@ class CharacterDetailsViewModel : BaseViewModel(), SeriesInteractionListener, ) } - private fun onGetComicsByCharacterIdState(state: State>) { + private fun onGetComicsByCharacterIdState(state: State>) { _comics.postValue(state) } diff --git a/app/src/main/java/com/red_velvet/marvel/ui/characterDetails/CharacterSeriesAdapter.kt b/app/src/main/java/com/red_velvet/marvel/ui/characterDetails/CharacterSeriesAdapter.kt index 270fcf51..f505f41c 100644 --- a/app/src/main/java/com/red_velvet/marvel/ui/characterDetails/CharacterSeriesAdapter.kt +++ b/app/src/main/java/com/red_velvet/marvel/ui/characterDetails/CharacterSeriesAdapter.kt @@ -1,7 +1,7 @@ package com.red_velvet.marvel.ui.characterDetails import com.red_velvet.marvel.R -import com.red_velvet.marvel.data.model.Series +import com.red_velvet.marvel.data.remote.dtos.Series import com.red_velvet.marvel.ui.base.BaseAdapter import com.red_velvet.marvel.ui.base.BaseInteractionListener diff --git a/app/src/main/java/com/red_velvet/marvel/ui/characters/CharactersAdapter.kt b/app/src/main/java/com/red_velvet/marvel/ui/characters/CharactersAdapter.kt index d073e739..d42393fd 100644 --- a/app/src/main/java/com/red_velvet/marvel/ui/characters/CharactersAdapter.kt +++ b/app/src/main/java/com/red_velvet/marvel/ui/characters/CharactersAdapter.kt @@ -1,14 +1,14 @@ package com.red_velvet.marvel.ui.characters import com.red_velvet.marvel.R -import com.red_velvet.marvel.data.model.Character +import com.red_velvet.marvel.data.remote.dtos.CharacterDto import com.red_velvet.marvel.ui.base.BaseAdapter import com.red_velvet.marvel.ui.base.BaseInteractionListener class CharactersAdapter( - items: List, + items: List, listener: CharacterDetailsInteractionListener -) : BaseAdapter(items, listener) { +) : BaseAdapter(items, listener) { override val layoutId: Int = R.layout.characters_item } diff --git a/app/src/main/java/com/red_velvet/marvel/ui/characters/CharactersViewModel.kt b/app/src/main/java/com/red_velvet/marvel/ui/characters/CharactersViewModel.kt index 57c7bc46..ca5ff0e3 100644 --- a/app/src/main/java/com/red_velvet/marvel/ui/characters/CharactersViewModel.kt +++ b/app/src/main/java/com/red_velvet/marvel/ui/characters/CharactersViewModel.kt @@ -2,10 +2,10 @@ package com.red_velvet.marvel.ui.characters import androidx.lifecycle.LiveData import androidx.lifecycle.MutableLiveData -import com.red_velvet.marvel.data.model.Character +import com.red_velvet.marvel.data.remote.dtos.CharacterDto import com.red_velvet.marvel.data.remote.RetrofitClient -import com.red_velvet.marvel.data.repository.MarvelRepository -import com.red_velvet.marvel.data.repository.MarvelRepositoryImpl +import com.red_velvet.marvel.domain.repository.MarvelRepository +import com.red_velvet.marvel.domain.repository.MarvelRepositoryImpl import com.red_velvet.marvel.ui.base.BaseViewModel import com.red_velvet.marvel.ui.utils.SingleEvent import com.red_velvet.marvel.ui.utils.State @@ -14,8 +14,8 @@ import io.reactivex.rxjava3.kotlin.addTo import java.util.concurrent.TimeUnit class CharactersViewModel : BaseViewModel(), CharacterDetailsInteractionListener { - private val _characters: MutableLiveData>> = MutableLiveData() - val characters: LiveData>> = _characters + private val _characters: MutableLiveData>> = MutableLiveData() + val characters: LiveData>> = _characters val searchQuery = MutableLiveData() @@ -55,7 +55,7 @@ class CharactersViewModel : BaseViewModel(), CharacterDetailsInteractionListener ) } - private fun onGetCharactersState(state: State>) { + private fun onGetCharactersState(state: State>) { _characters.postValue(state) } diff --git a/app/src/main/java/com/red_velvet/marvel/ui/comicDetails/ComicDetailsCharactersAdapter.kt b/app/src/main/java/com/red_velvet/marvel/ui/comicDetails/ComicDetailsCharactersAdapter.kt index 6e1c45f2..8d8d58b5 100644 --- a/app/src/main/java/com/red_velvet/marvel/ui/comicDetails/ComicDetailsCharactersAdapter.kt +++ b/app/src/main/java/com/red_velvet/marvel/ui/comicDetails/ComicDetailsCharactersAdapter.kt @@ -1,14 +1,14 @@ package com.red_velvet.marvel.ui.comicDetails import com.red_velvet.marvel.R -import com.red_velvet.marvel.data.model.Character +import com.red_velvet.marvel.data.remote.dtos.CharacterDto import com.red_velvet.marvel.ui.base.BaseAdapter import com.red_velvet.marvel.ui.base.BaseInteractionListener class ComicDetailsCharactersAdapter( - items: List, + items: List, listener: ComicDetailsCharacterListenerInteraction, -) : BaseAdapter(items, listener) { +) : BaseAdapter(items, listener) { override val layoutId: Int = R.layout.item_comic_character } diff --git a/app/src/main/java/com/red_velvet/marvel/ui/comicDetails/ComicDetailsCreatorsAdapter.kt b/app/src/main/java/com/red_velvet/marvel/ui/comicDetails/ComicDetailsCreatorsAdapter.kt index f28c43d6..c2db2934 100644 --- a/app/src/main/java/com/red_velvet/marvel/ui/comicDetails/ComicDetailsCreatorsAdapter.kt +++ b/app/src/main/java/com/red_velvet/marvel/ui/comicDetails/ComicDetailsCreatorsAdapter.kt @@ -1,7 +1,7 @@ package com.red_velvet.marvel.ui.comicDetails import com.red_velvet.marvel.R -import com.red_velvet.marvel.data.model.Creator +import com.red_velvet.marvel.data.remote.dtos.Creator import com.red_velvet.marvel.ui.base.BaseAdapter import com.red_velvet.marvel.ui.base.BaseInteractionListener diff --git a/app/src/main/java/com/red_velvet/marvel/ui/comicDetails/ComicDetailsViewModel.kt b/app/src/main/java/com/red_velvet/marvel/ui/comicDetails/ComicDetailsViewModel.kt index 70e2e82e..4d9a0730 100644 --- a/app/src/main/java/com/red_velvet/marvel/ui/comicDetails/ComicDetailsViewModel.kt +++ b/app/src/main/java/com/red_velvet/marvel/ui/comicDetails/ComicDetailsViewModel.kt @@ -2,12 +2,12 @@ package com.red_velvet.marvel.ui.comicDetails import androidx.lifecycle.LiveData import androidx.lifecycle.MutableLiveData -import com.red_velvet.marvel.data.model.Character -import com.red_velvet.marvel.data.model.Comic -import com.red_velvet.marvel.data.model.Creator +import com.red_velvet.marvel.data.remote.dtos.CharacterDto +import com.red_velvet.marvel.data.remote.dtos.ComicDto +import com.red_velvet.marvel.data.remote.dtos.Creator import com.red_velvet.marvel.data.remote.RetrofitClient -import com.red_velvet.marvel.data.repository.MarvelRepository -import com.red_velvet.marvel.data.repository.MarvelRepositoryImpl +import com.red_velvet.marvel.domain.repository.MarvelRepository +import com.red_velvet.marvel.domain.repository.MarvelRepositoryImpl import com.red_velvet.marvel.ui.base.BaseViewModel import com.red_velvet.marvel.ui.utils.SingleEvent import com.red_velvet.marvel.ui.utils.State @@ -15,14 +15,14 @@ import com.red_velvet.marvel.ui.utils.State class ComicDetailsViewModel : BaseViewModel(), ComicDetailsCreatorListenerInteraction, ComicDetailsCharacterListenerInteraction { - private val _comicsDetails: MutableLiveData>> = MutableLiveData() - val comicsDetails: LiveData>> = _comicsDetails + private val _comicsDetails: MutableLiveData>> = MutableLiveData() + val comicsDetails: LiveData>> = _comicsDetails private val _creators: MutableLiveData>> = MutableLiveData() val creators: LiveData>> = _creators - private val _characters: MutableLiveData>> = MutableLiveData() - val characters: LiveData>> = _characters + private val _characters: MutableLiveData>> = MutableLiveData() + val characters: LiveData>> = _characters private val repository: MarvelRepository by lazy { MarvelRepositoryImpl(RetrofitClient.apiService) @@ -62,7 +62,7 @@ class ComicDetailsViewModel : BaseViewModel(), ComicDetailsCreatorListenerIntera ) } - private fun onGetComicState(state: State>) { + private fun onGetComicState(state: State>) { _comicsDetails.postValue(state) } @@ -78,7 +78,7 @@ class ComicDetailsViewModel : BaseViewModel(), ComicDetailsCreatorListenerIntera _creators.postValue(State.Failed(e.message.toString())) } - private fun onGetCharactersByComicIdState(state: State>) { + private fun onGetCharactersByComicIdState(state: State>) { _characters.postValue(state) } diff --git a/app/src/main/java/com/red_velvet/marvel/ui/eventDetails/CharactersAdapter.kt b/app/src/main/java/com/red_velvet/marvel/ui/eventDetails/CharactersAdapter.kt index 99c6bab4..80cf7e67 100644 --- a/app/src/main/java/com/red_velvet/marvel/ui/eventDetails/CharactersAdapter.kt +++ b/app/src/main/java/com/red_velvet/marvel/ui/eventDetails/CharactersAdapter.kt @@ -1,12 +1,12 @@ package com.red_velvet.marvel.ui.eventDetails import com.red_velvet.marvel.R -import com.red_velvet.marvel.data.model.Character +import com.red_velvet.marvel.data.remote.dtos.CharacterDto import com.red_velvet.marvel.ui.base.BaseAdapter import com.red_velvet.marvel.ui.base.BaseInteractionListener -class CharactersAdapter(items: List, listener: CharactersInteractionListener) : - BaseAdapter(items, listener) { +class CharactersAdapter(items: List, listener: CharactersInteractionListener) : + BaseAdapter(items, listener) { override val layoutId: Int = R.layout.item_charactors } diff --git a/app/src/main/java/com/red_velvet/marvel/ui/eventDetails/CreatorsAdapter.kt b/app/src/main/java/com/red_velvet/marvel/ui/eventDetails/CreatorsAdapter.kt index 462beb35..35fe07ce 100644 --- a/app/src/main/java/com/red_velvet/marvel/ui/eventDetails/CreatorsAdapter.kt +++ b/app/src/main/java/com/red_velvet/marvel/ui/eventDetails/CreatorsAdapter.kt @@ -1,7 +1,7 @@ package com.red_velvet.marvel.ui.eventDetails import com.red_velvet.marvel.R -import com.red_velvet.marvel.data.model.Creator +import com.red_velvet.marvel.data.remote.dtos.Creator import com.red_velvet.marvel.ui.base.BaseAdapter import com.red_velvet.marvel.ui.base.BaseInteractionListener diff --git a/app/src/main/java/com/red_velvet/marvel/ui/eventDetails/EventDetailViewModel.kt b/app/src/main/java/com/red_velvet/marvel/ui/eventDetails/EventDetailViewModel.kt index 4682f95f..99f8686d 100644 --- a/app/src/main/java/com/red_velvet/marvel/ui/eventDetails/EventDetailViewModel.kt +++ b/app/src/main/java/com/red_velvet/marvel/ui/eventDetails/EventDetailViewModel.kt @@ -2,11 +2,11 @@ package com.red_velvet.marvel.ui.eventDetails import androidx.lifecycle.LiveData import androidx.lifecycle.MutableLiveData -import com.red_velvet.marvel.data.model.Character -import com.red_velvet.marvel.data.model.Creator -import com.red_velvet.marvel.data.model.Event +import com.red_velvet.marvel.data.remote.dtos.CharacterDto +import com.red_velvet.marvel.data.remote.dtos.Creator +import com.red_velvet.marvel.data.remote.dtos.EventDto import com.red_velvet.marvel.data.remote.RetrofitClient -import com.red_velvet.marvel.data.repository.MarvelRepositoryImpl +import com.red_velvet.marvel.domain.repository.MarvelRepositoryImpl import com.red_velvet.marvel.ui.base.BaseViewModel import com.red_velvet.marvel.ui.utils.SingleEvent import com.red_velvet.marvel.ui.utils.State @@ -16,11 +16,11 @@ class EventDetailViewModel : BaseViewModel(), CharactersInteractionListener, private val repository by lazy { MarvelRepositoryImpl(RetrofitClient.apiService) } - private var _event: MutableLiveData>> = MutableLiveData() - val event: MutableLiveData>> = _event + private var _event: MutableLiveData>> = MutableLiveData() + val event: MutableLiveData>> = _event - private var _characters: MutableLiveData>> = MutableLiveData() - val characters: MutableLiveData>> = _characters + private var _characters: MutableLiveData>> = MutableLiveData() + val characters: MutableLiveData>> = _characters private var _creators: MutableLiveData>> = MutableLiveData() val creators: MutableLiveData>> = _creators @@ -58,7 +58,7 @@ class EventDetailViewModel : BaseViewModel(), CharactersInteractionListener, ) } - private fun onGetEventState(state: State>) { + private fun onGetEventState(state: State>) { _event.postValue(state) } @@ -74,7 +74,7 @@ class EventDetailViewModel : BaseViewModel(), CharactersInteractionListener, _creators.postValue(State.Failed(e.message.toString())) } - private fun onGetEventCharactersState(state: State>) { + private fun onGetEventCharactersState(state: State>) { _characters.postValue(state) } diff --git a/app/src/main/java/com/red_velvet/marvel/ui/events/EventsAdapter.kt b/app/src/main/java/com/red_velvet/marvel/ui/events/EventsAdapter.kt index 5c8a9b45..01c50c1c 100644 --- a/app/src/main/java/com/red_velvet/marvel/ui/events/EventsAdapter.kt +++ b/app/src/main/java/com/red_velvet/marvel/ui/events/EventsAdapter.kt @@ -1,12 +1,12 @@ package com.red_velvet.marvel.ui.events import com.red_velvet.marvel.R -import com.red_velvet.marvel.data.model.Event +import com.red_velvet.marvel.data.remote.dtos.EventDto import com.red_velvet.marvel.ui.base.BaseAdapter import com.red_velvet.marvel.ui.base.BaseInteractionListener -class EventsAdapter(items: List, listener: EventsInteractionListener) : - BaseAdapter(items, listener) { +class EventsAdapter(items: List, listener: EventsInteractionListener) : + BaseAdapter(items, listener) { override val layoutId: Int = R.layout.item_event } diff --git a/app/src/main/java/com/red_velvet/marvel/ui/events/EventsViewModel.kt b/app/src/main/java/com/red_velvet/marvel/ui/events/EventsViewModel.kt index 11d3ce47..234b2d20 100644 --- a/app/src/main/java/com/red_velvet/marvel/ui/events/EventsViewModel.kt +++ b/app/src/main/java/com/red_velvet/marvel/ui/events/EventsViewModel.kt @@ -2,9 +2,9 @@ package com.red_velvet.marvel.ui.events import androidx.lifecycle.LiveData import androidx.lifecycle.MutableLiveData -import com.red_velvet.marvel.data.model.Event +import com.red_velvet.marvel.data.remote.dtos.EventDto import com.red_velvet.marvel.data.remote.RetrofitClient -import com.red_velvet.marvel.data.repository.MarvelRepositoryImpl +import com.red_velvet.marvel.domain.repository.MarvelRepositoryImpl import com.red_velvet.marvel.ui.base.BaseViewModel import com.red_velvet.marvel.ui.utils.SingleEvent import com.red_velvet.marvel.ui.utils.State @@ -16,8 +16,8 @@ class EventsViewModel : BaseViewModel(), EventsInteractionListener { private val repository by lazy { MarvelRepositoryImpl(RetrofitClient.apiService) } - private val _events = MutableLiveData>>() - val events: LiveData>> = _events + private val _events = MutableLiveData>>() + val events: LiveData>> = _events private val _navigationToEventDetails = MutableLiveData>() val navigationToEventDetails: LiveData> = _navigationToEventDetails @@ -37,7 +37,7 @@ class EventsViewModel : BaseViewModel(), EventsInteractionListener { ) } - private fun onGetAllEventsState(state: State>) { + private fun onGetAllEventsState(state: State>) { _events.postValue(state) } diff --git a/app/src/main/java/com/red_velvet/marvel/ui/home/HomeViewModel.kt b/app/src/main/java/com/red_velvet/marvel/ui/home/HomeViewModel.kt index a009af1b..9d57452f 100644 --- a/app/src/main/java/com/red_velvet/marvel/ui/home/HomeViewModel.kt +++ b/app/src/main/java/com/red_velvet/marvel/ui/home/HomeViewModel.kt @@ -2,12 +2,12 @@ package com.red_velvet.marvel.ui.home import androidx.lifecycle.LiveData import androidx.lifecycle.MutableLiveData -import com.red_velvet.marvel.data.model.Character -import com.red_velvet.marvel.data.model.Comic -import com.red_velvet.marvel.data.model.Event +import com.red_velvet.marvel.data.remote.dtos.CharacterDto +import com.red_velvet.marvel.data.remote.dtos.ComicDto +import com.red_velvet.marvel.data.remote.dtos.EventDto import com.red_velvet.marvel.data.remote.RetrofitClient -import com.red_velvet.marvel.data.repository.MarvelRepository -import com.red_velvet.marvel.data.repository.MarvelRepositoryImpl +import com.red_velvet.marvel.domain.repository.MarvelRepository +import com.red_velvet.marvel.domain.repository.MarvelRepositoryImpl import com.red_velvet.marvel.ui.base.BaseViewModel import com.red_velvet.marvel.ui.utils.SingleEvent import com.red_velvet.marvel.ui.utils.State @@ -27,14 +27,14 @@ class HomeViewModel : BaseViewModel(), HomeInteractionListener { private val _navigationToCharacterDetails: MutableLiveData> = MutableLiveData() val navigationToCharacterDetails: LiveData> = _navigationToCharacterDetails - private val _comics = MutableLiveData>>(State.Loading) - val comicsLiveData: LiveData>> = _comics + private val _comics = MutableLiveData>>(State.Loading) + val comicsLiveData: LiveData>> = _comics - private val _events = MutableLiveData>>(State.Loading) - val eventLiveData: LiveData>> = _events + private val _events = MutableLiveData>>(State.Loading) + val eventLiveData: LiveData>> = _events - private val _characters = MutableLiveData>>(State.Loading) - val characterLiveData: LiveData>> = _characters + private val _characters = MutableLiveData>>(State.Loading) + val characterLiveData: LiveData>> = _characters init { @@ -55,7 +55,7 @@ class HomeViewModel : BaseViewModel(), HomeInteractionListener { _comics.postValue(State.Failed(throwable.message ?: UNKNOWN_ERROR)) } - private fun onGetComicsState(state: State>) { + private fun onGetComicsState(state: State>) { _comics.postValue(state) } @@ -71,7 +71,7 @@ class HomeViewModel : BaseViewModel(), HomeInteractionListener { _events.postValue(State.Failed(throwable.message ?: UNKNOWN_ERROR)) } - private fun onGetEventsState(state: State>) { + private fun onGetEventsState(state: State>) { _events.postValue(state) } @@ -87,7 +87,7 @@ class HomeViewModel : BaseViewModel(), HomeInteractionListener { _characters.postValue(State.Failed(throwable.message ?: UNKNOWN_ERROR)) } - private fun onGetCharactersState(state: State>) { + private fun onGetCharactersState(state: State>) { _characters.postValue(state) } diff --git a/app/src/main/java/com/red_velvet/marvel/ui/home/adapter/CharactersAdapter.kt b/app/src/main/java/com/red_velvet/marvel/ui/home/adapter/CharactersAdapter.kt index 87d722b2..f8ae25e6 100644 --- a/app/src/main/java/com/red_velvet/marvel/ui/home/adapter/CharactersAdapter.kt +++ b/app/src/main/java/com/red_velvet/marvel/ui/home/adapter/CharactersAdapter.kt @@ -1,13 +1,13 @@ package com.red_velvet.marvel.ui.home.adapter import com.red_velvet.marvel.R -import com.red_velvet.marvel.data.model.Character +import com.red_velvet.marvel.data.remote.dtos.CharacterDto import com.red_velvet.marvel.ui.base.BaseAdapter import com.red_velvet.marvel.ui.home.HomeInteractionListener class CharactersAdapter( - items: List, + items: List, listener: HomeInteractionListener -) : BaseAdapter(items, listener) { +) : BaseAdapter(items, listener) { override val layoutId = R.layout.item_home_character } \ No newline at end of file diff --git a/app/src/main/java/com/red_velvet/marvel/ui/home/adapter/ComicsAdapter.kt b/app/src/main/java/com/red_velvet/marvel/ui/home/adapter/ComicsAdapter.kt index e420717d..523ed0e8 100644 --- a/app/src/main/java/com/red_velvet/marvel/ui/home/adapter/ComicsAdapter.kt +++ b/app/src/main/java/com/red_velvet/marvel/ui/home/adapter/ComicsAdapter.kt @@ -1,13 +1,13 @@ package com.red_velvet.marvel.ui.home.adapter import com.red_velvet.marvel.R -import com.red_velvet.marvel.data.model.Comic +import com.red_velvet.marvel.data.remote.dtos.ComicDto import com.red_velvet.marvel.ui.base.BaseAdapter import com.red_velvet.marvel.ui.home.HomeInteractionListener class ComicsAdapter( - items: List, + items: List, listener: HomeInteractionListener -) : BaseAdapter(items, listener) { +) : BaseAdapter(items, listener) { override val layoutId = R.layout.item_home_comic } \ No newline at end of file diff --git a/app/src/main/java/com/red_velvet/marvel/ui/home/adapter/EventsAdapter.kt b/app/src/main/java/com/red_velvet/marvel/ui/home/adapter/EventsAdapter.kt index c19f884d..5b223618 100644 --- a/app/src/main/java/com/red_velvet/marvel/ui/home/adapter/EventsAdapter.kt +++ b/app/src/main/java/com/red_velvet/marvel/ui/home/adapter/EventsAdapter.kt @@ -1,13 +1,13 @@ package com.red_velvet.marvel.ui.home.adapter import com.red_velvet.marvel.R -import com.red_velvet.marvel.data.model.Event +import com.red_velvet.marvel.data.remote.dtos.EventDto import com.red_velvet.marvel.ui.base.BaseAdapter import com.red_velvet.marvel.ui.home.HomeInteractionListener class EventsAdapter( - items: List, + items: List, listener: HomeInteractionListener -) : BaseAdapter(items, listener) { +) : BaseAdapter(items, listener) { override val layoutId = R.layout.item_home_event } \ No newline at end of file diff --git a/app/src/main/java/com/red_velvet/marvel/ui/series/SeriesAdapter.kt b/app/src/main/java/com/red_velvet/marvel/ui/series/SeriesAdapter.kt index a588b0e9..e6392ea5 100644 --- a/app/src/main/java/com/red_velvet/marvel/ui/series/SeriesAdapter.kt +++ b/app/src/main/java/com/red_velvet/marvel/ui/series/SeriesAdapter.kt @@ -1,7 +1,7 @@ package com.red_velvet.marvel.ui.series import com.red_velvet.marvel.R -import com.red_velvet.marvel.data.model.Series +import com.red_velvet.marvel.data.remote.dtos.Series import com.red_velvet.marvel.ui.base.BaseAdapter import com.red_velvet.marvel.ui.base.BaseInteractionListener diff --git a/app/src/main/java/com/red_velvet/marvel/ui/series/SeriesViewModel.kt b/app/src/main/java/com/red_velvet/marvel/ui/series/SeriesViewModel.kt index ef46cfdc..49034637 100644 --- a/app/src/main/java/com/red_velvet/marvel/ui/series/SeriesViewModel.kt +++ b/app/src/main/java/com/red_velvet/marvel/ui/series/SeriesViewModel.kt @@ -3,10 +3,10 @@ package com.red_velvet.marvel.ui.series import android.util.Log import androidx.lifecycle.LiveData import androidx.lifecycle.MutableLiveData -import com.red_velvet.marvel.data.model.Series +import com.red_velvet.marvel.data.remote.dtos.Series import com.red_velvet.marvel.data.remote.RetrofitClient -import com.red_velvet.marvel.data.repository.MarvelRepository -import com.red_velvet.marvel.data.repository.MarvelRepositoryImpl +import com.red_velvet.marvel.domain.repository.MarvelRepository +import com.red_velvet.marvel.domain.repository.MarvelRepositoryImpl import com.red_velvet.marvel.ui.base.BaseViewModel import com.red_velvet.marvel.ui.utils.SingleEvent import com.red_velvet.marvel.ui.utils.State diff --git a/app/src/main/java/com/red_velvet/marvel/ui/seriesDetails/CreatorsAdapter.kt b/app/src/main/java/com/red_velvet/marvel/ui/seriesDetails/CreatorsAdapter.kt index 5712efae..94cb524c 100644 --- a/app/src/main/java/com/red_velvet/marvel/ui/seriesDetails/CreatorsAdapter.kt +++ b/app/src/main/java/com/red_velvet/marvel/ui/seriesDetails/CreatorsAdapter.kt @@ -1,7 +1,7 @@ package com.red_velvet.marvel.ui.seriesDetails import com.red_velvet.marvel.R -import com.red_velvet.marvel.data.model.Creator +import com.red_velvet.marvel.data.remote.dtos.Creator import com.red_velvet.marvel.ui.base.BaseAdapter import com.red_velvet.marvel.ui.base.BaseInteractionListener diff --git a/app/src/main/java/com/red_velvet/marvel/ui/seriesDetails/SeriesDetailsViewModel.kt b/app/src/main/java/com/red_velvet/marvel/ui/seriesDetails/SeriesDetailsViewModel.kt index 1205b392..dadc04bb 100644 --- a/app/src/main/java/com/red_velvet/marvel/ui/seriesDetails/SeriesDetailsViewModel.kt +++ b/app/src/main/java/com/red_velvet/marvel/ui/seriesDetails/SeriesDetailsViewModel.kt @@ -2,11 +2,11 @@ package com.red_velvet.marvel.ui.seriesDetails import androidx.lifecycle.LiveData import androidx.lifecycle.MutableLiveData -import com.red_velvet.marvel.data.model.Creator -import com.red_velvet.marvel.data.model.Series +import com.red_velvet.marvel.data.remote.dtos.Creator +import com.red_velvet.marvel.data.remote.dtos.Series import com.red_velvet.marvel.data.remote.RetrofitClient -import com.red_velvet.marvel.data.repository.MarvelRepository -import com.red_velvet.marvel.data.repository.MarvelRepositoryImpl +import com.red_velvet.marvel.domain.repository.MarvelRepository +import com.red_velvet.marvel.domain.repository.MarvelRepositoryImpl import com.red_velvet.marvel.ui.base.BaseViewModel import com.red_velvet.marvel.ui.utils.State diff --git a/app/src/main/java/com/red_velvet/marvel/ui/stories/StoriesAdapter.kt b/app/src/main/java/com/red_velvet/marvel/ui/stories/StoriesAdapter.kt index 5d5de2a4..b097aa86 100644 --- a/app/src/main/java/com/red_velvet/marvel/ui/stories/StoriesAdapter.kt +++ b/app/src/main/java/com/red_velvet/marvel/ui/stories/StoriesAdapter.kt @@ -2,7 +2,7 @@ package com.red_velvet.marvel.ui.stories import com.red_velvet.marvel.R -import com.red_velvet.marvel.data.model.Story +import com.red_velvet.marvel.data.remote.dtos.Story import com.red_velvet.marvel.ui.base.BaseAdapter import com.red_velvet.marvel.ui.base.BaseInteractionListener diff --git a/app/src/main/java/com/red_velvet/marvel/ui/stories/StoriesViewModel.kt b/app/src/main/java/com/red_velvet/marvel/ui/stories/StoriesViewModel.kt index 7655a8e9..ba7e19bb 100644 --- a/app/src/main/java/com/red_velvet/marvel/ui/stories/StoriesViewModel.kt +++ b/app/src/main/java/com/red_velvet/marvel/ui/stories/StoriesViewModel.kt @@ -2,9 +2,9 @@ package com.red_velvet.marvel.ui.stories import androidx.lifecycle.LiveData import androidx.lifecycle.MutableLiveData -import com.red_velvet.marvel.data.model.Story +import com.red_velvet.marvel.data.remote.dtos.Story import com.red_velvet.marvel.data.remote.RetrofitClient -import com.red_velvet.marvel.data.repository.MarvelRepositoryImpl +import com.red_velvet.marvel.domain.repository.MarvelRepositoryImpl import com.red_velvet.marvel.ui.base.BaseViewModel import com.red_velvet.marvel.ui.utils.SingleEvent import com.red_velvet.marvel.ui.utils.State diff --git a/app/src/main/java/com/red_velvet/marvel/ui/storyDetails/StoryCreatorAdapter.kt b/app/src/main/java/com/red_velvet/marvel/ui/storyDetails/StoryCreatorAdapter.kt index f3e1d4e9..a5609f9e 100644 --- a/app/src/main/java/com/red_velvet/marvel/ui/storyDetails/StoryCreatorAdapter.kt +++ b/app/src/main/java/com/red_velvet/marvel/ui/storyDetails/StoryCreatorAdapter.kt @@ -1,7 +1,7 @@ package com.red_velvet.marvel.ui.storyDetails import com.red_velvet.marvel.R -import com.red_velvet.marvel.data.model.Creator +import com.red_velvet.marvel.data.remote.dtos.Creator import com.red_velvet.marvel.ui.base.BaseAdapter import com.red_velvet.marvel.ui.base.BaseInteractionListener diff --git a/app/src/main/java/com/red_velvet/marvel/ui/storyDetails/StoryDetailsViewModel.kt b/app/src/main/java/com/red_velvet/marvel/ui/storyDetails/StoryDetailsViewModel.kt index 6040a61e..ea4d1dc3 100644 --- a/app/src/main/java/com/red_velvet/marvel/ui/storyDetails/StoryDetailsViewModel.kt +++ b/app/src/main/java/com/red_velvet/marvel/ui/storyDetails/StoryDetailsViewModel.kt @@ -2,12 +2,12 @@ package com.red_velvet.marvel.ui.storyDetails import androidx.lifecycle.LiveData import androidx.lifecycle.MutableLiveData -import com.red_velvet.marvel.data.model.Comic -import com.red_velvet.marvel.data.model.Creator -import com.red_velvet.marvel.data.model.Story +import com.red_velvet.marvel.data.remote.dtos.ComicDto +import com.red_velvet.marvel.data.remote.dtos.Creator +import com.red_velvet.marvel.data.remote.dtos.Story import com.red_velvet.marvel.data.remote.RetrofitClient -import com.red_velvet.marvel.data.repository.MarvelRepository -import com.red_velvet.marvel.data.repository.MarvelRepositoryImpl +import com.red_velvet.marvel.domain.repository.MarvelRepository +import com.red_velvet.marvel.domain.repository.MarvelRepositoryImpl import com.red_velvet.marvel.ui.base.BaseViewModel import com.red_velvet.marvel.ui.utils.State @@ -16,8 +16,8 @@ class StoryDetailsViewModel : BaseViewModel(), StoryCreatorInteractionListener { private val _story: MutableLiveData>> = MutableLiveData() val story: LiveData>> = _story - private val _comics: MutableLiveData>> = MutableLiveData() - val comics: LiveData>> = _comics + private val _comics: MutableLiveData>> = MutableLiveData() + val comics: LiveData>> = _comics private val _creators: MutableLiveData>> = MutableLiveData() val creators: LiveData>> = _creators @@ -68,7 +68,7 @@ class StoryDetailsViewModel : BaseViewModel(), StoryCreatorInteractionListener { _comics.postValue(State.Failed(error.message.toString())) } - private fun onGetComicsState(state: State>) { + private fun onGetComicsState(state: State>) { _comics.postValue(state) } diff --git a/app/src/main/java/com/red_velvet/marvel/ui/utils/BindingAdapters.kt b/app/src/main/java/com/red_velvet/marvel/ui/utils/BindingAdapters.kt index 38711f15..b08473bd 100644 --- a/app/src/main/java/com/red_velvet/marvel/ui/utils/BindingAdapters.kt +++ b/app/src/main/java/com/red_velvet/marvel/ui/utils/BindingAdapters.kt @@ -6,7 +6,7 @@ import androidx.databinding.BindingAdapter import androidx.recyclerview.widget.RecyclerView import com.bumptech.glide.Glide import com.red_velvet.marvel.R -import com.red_velvet.marvel.data.model.Thumbnail +import com.red_velvet.marvel.data.remote.dtos.Thumbnail import com.red_velvet.marvel.ui.base.BaseAdapter @BindingAdapter(value = ["app:showWhenLoading"]) diff --git a/app/src/main/java/com/red_velvet/marvel/ui/utils/extensions.kt b/app/src/main/java/com/red_velvet/marvel/ui/utils/extensions.kt index dfbff96d..724d304a 100644 --- a/app/src/main/java/com/red_velvet/marvel/ui/utils/extensions.kt +++ b/app/src/main/java/com/red_velvet/marvel/ui/utils/extensions.kt @@ -1,7 +1,7 @@ package com.red_velvet.marvel.ui.utils import android.view.View -import com.red_velvet.marvel.data.model.Thumbnail +import com.red_velvet.marvel.data.remote.dtos.Thumbnail fun Thumbnail.toUrl() = this.path + "." + this.extension diff --git a/app/src/main/res/layout/characters_item.xml b/app/src/main/res/layout/characters_item.xml index 1f71195a..c8b1ff65 100644 --- a/app/src/main/res/layout/characters_item.xml +++ b/app/src/main/res/layout/characters_item.xml @@ -6,7 +6,7 @@ + type="com.red_velvet.marvel.data.remote.dtos.CharacterDto" /> diff --git a/app/src/main/res/layout/item_character_comics.xml b/app/src/main/res/layout/item_character_comics.xml index da01aee2..98da8137 100644 --- a/app/src/main/res/layout/item_character_comics.xml +++ b/app/src/main/res/layout/item_character_comics.xml @@ -7,7 +7,7 @@ + type="com.red_velvet.marvel.data.remote.dtos.ComicDto" /> + type="com.red_velvet.marvel.data.remote.dtos.Series" /> + type="com.red_velvet.marvel.data.remote.dtos.CharacterDto" /> + type="com.red_velvet.marvel.data.remote.dtos.CharacterDto" /> diff --git a/app/src/main/res/layout/item_comic_creator.xml b/app/src/main/res/layout/item_comic_creator.xml index 9a7a4c7c..7ed96c72 100644 --- a/app/src/main/res/layout/item_comic_creator.xml +++ b/app/src/main/res/layout/item_comic_creator.xml @@ -7,7 +7,7 @@ + type="com.red_velvet.marvel.data.remote.dtos.Creator" /> + type="com.red_velvet.marvel.data.remote.dtos.Creator" /> + type="com.red_velvet.marvel.data.remote.dtos.Creator" /> diff --git a/app/src/main/res/layout/item_event.xml b/app/src/main/res/layout/item_event.xml index 4a4a25f9..8596f4a0 100644 --- a/app/src/main/res/layout/item_event.xml +++ b/app/src/main/res/layout/item_event.xml @@ -6,7 +6,7 @@ + type="com.red_velvet.marvel.data.remote.dtos.EventDto" /> diff --git a/app/src/main/res/layout/item_home_character.xml b/app/src/main/res/layout/item_home_character.xml index 7e6ae166..a771cb33 100644 --- a/app/src/main/res/layout/item_home_character.xml +++ b/app/src/main/res/layout/item_home_character.xml @@ -7,7 +7,7 @@ + type="com.red_velvet.marvel.data.remote.dtos.CharacterDto" /> + type="com.red_velvet.marvel.data.remote.dtos.ComicDto" /> + type="com.red_velvet.marvel.data.remote.dtos.EventDto" /> + type="com.red_velvet.marvel.data.remote.dtos.Series" /> + type="com.red_velvet.marvel.data.remote.dtos.Story" /> + type="com.red_velvet.marvel.data.remote.dtos.Creator" />