From 4334fdaa6afe2118f6ff0303a91b32f19acc6c4e Mon Sep 17 00:00:00 2001 From: Kirill Kamakin Date: Tue, 13 Dec 2022 20:20:34 +0100 Subject: [PATCH] Replace add/remove with update --- .../data/network/MealieDataSourceWrapper.kt | 28 +++++++++---------- .../mealient/data/recipes/RecipeRepo.kt | 4 +-- .../data/recipes/impl/RecipeRepoImpl.kt | 17 +++-------- .../data/recipes/network/RecipeDataSource.kt | 4 +-- .../ui/recipes/RecipesListViewModel.kt | 9 +++--- 5 files changed, 24 insertions(+), 38 deletions(-) diff --git a/app/src/main/java/gq/kirmanak/mealient/data/network/MealieDataSourceWrapper.kt b/app/src/main/java/gq/kirmanak/mealient/data/network/MealieDataSourceWrapper.kt index 1e4d118..5147cf0 100644 --- a/app/src/main/java/gq/kirmanak/mealient/data/network/MealieDataSourceWrapper.kt +++ b/app/src/main/java/gq/kirmanak/mealient/data/network/MealieDataSourceWrapper.kt @@ -69,25 +69,25 @@ class MealieDataSourceWrapper @Inject constructor( ServerVersion.V1 -> v1Source.requestUserInfo().favoriteRecipes } - override suspend fun removeFavoriteRecipe(recipeSlug: String) = when (getVersion()) { + override suspend fun updateIsRecipeFavorite( + recipeSlug: String, + isFavorite: Boolean + ) = when (getVersion()) { ServerVersion.V0 -> { val userId = v0Source.requestUserInfo().id - v0Source.removeFavoriteRecipe(userId, recipeSlug) + if (isFavorite) { + v0Source.addFavoriteRecipe(userId, recipeSlug) + } else { + v0Source.removeFavoriteRecipe(userId, recipeSlug) + } } ServerVersion.V1 -> { val userId = v1Source.requestUserInfo().id - v1Source.removeFavoriteRecipe(userId, recipeSlug) - } - } - - override suspend fun addFavoriteRecipe(recipeSlug: String) = when (getVersion()) { - ServerVersion.V0 -> { - val userId = v0Source.requestUserInfo().id - v0Source.addFavoriteRecipe(userId, recipeSlug) - } - ServerVersion.V1 -> { - val userId = v1Source.requestUserInfo().id - v1Source.addFavoriteRecipe(userId, recipeSlug) + if (isFavorite) { + v1Source.addFavoriteRecipe(userId, recipeSlug) + } else { + v1Source.removeFavoriteRecipe(userId, recipeSlug) + } } } } \ No newline at end of file diff --git a/app/src/main/java/gq/kirmanak/mealient/data/recipes/RecipeRepo.kt b/app/src/main/java/gq/kirmanak/mealient/data/recipes/RecipeRepo.kt index c1e3074..c10b2bc 100644 --- a/app/src/main/java/gq/kirmanak/mealient/data/recipes/RecipeRepo.kt +++ b/app/src/main/java/gq/kirmanak/mealient/data/recipes/RecipeRepo.kt @@ -18,7 +18,5 @@ interface RecipeRepo { suspend fun refreshRecipes() - suspend fun removeFavoriteRecipe(recipeSlug: String) - - suspend fun addFavoriteRecipe(recipeSlug: String) + suspend fun updateIsRecipeFavorite(recipeSlug: String, isFavorite: Boolean) } \ No newline at end of file diff --git a/app/src/main/java/gq/kirmanak/mealient/data/recipes/impl/RecipeRepoImpl.kt b/app/src/main/java/gq/kirmanak/mealient/data/recipes/impl/RecipeRepoImpl.kt index 62184eb..7f57ef5 100644 --- a/app/src/main/java/gq/kirmanak/mealient/data/recipes/impl/RecipeRepoImpl.kt +++ b/app/src/main/java/gq/kirmanak/mealient/data/recipes/impl/RecipeRepoImpl.kt @@ -72,21 +72,12 @@ class RecipeRepoImpl @Inject constructor( } } - override suspend fun removeFavoriteRecipe(recipeSlug: String) { - logger.v { "removeFavoriteRecipe() called with: recipeSlug = $recipeSlug" } + override suspend fun updateIsRecipeFavorite(recipeSlug: String, isFavorite: Boolean) { + logger.v { "updateIsRecipeFavorite() called with: recipeSlug = $recipeSlug, isFavorite = $isFavorite" } runCatchingExceptCancel { - dataSource.removeFavoriteRecipe(recipeSlug) + dataSource.updateIsRecipeFavorite(recipeSlug, isFavorite) }.onFailure { - logger.e(it) { "Can't remove a favorite recipe" } - } - } - - override suspend fun addFavoriteRecipe(recipeSlug: String) { - logger.v { "addFavoriteRecipe() called with: recipeSlug = $recipeSlug" } - runCatchingExceptCancel { - dataSource.addFavoriteRecipe(recipeSlug) - }.onFailure { - logger.e(it) { "Can't add a favorite recipe" } + logger.e(it) { "Can't update recipe's is favorite status" } } } diff --git a/app/src/main/java/gq/kirmanak/mealient/data/recipes/network/RecipeDataSource.kt b/app/src/main/java/gq/kirmanak/mealient/data/recipes/network/RecipeDataSource.kt index 40578aa..edd9c9e 100644 --- a/app/src/main/java/gq/kirmanak/mealient/data/recipes/network/RecipeDataSource.kt +++ b/app/src/main/java/gq/kirmanak/mealient/data/recipes/network/RecipeDataSource.kt @@ -7,7 +7,5 @@ interface RecipeDataSource { suspend fun getFavoriteRecipes(): List - suspend fun removeFavoriteRecipe(recipeSlug: String) - - suspend fun addFavoriteRecipe(recipeSlug: String) + suspend fun updateIsRecipeFavorite(recipeSlug: String, isFavorite: Boolean) } \ No newline at end of file diff --git a/app/src/main/java/gq/kirmanak/mealient/ui/recipes/RecipesListViewModel.kt b/app/src/main/java/gq/kirmanak/mealient/ui/recipes/RecipesListViewModel.kt index 9e3ec9f..55565a7 100644 --- a/app/src/main/java/gq/kirmanak/mealient/ui/recipes/RecipesListViewModel.kt +++ b/app/src/main/java/gq/kirmanak/mealient/ui/recipes/RecipesListViewModel.kt @@ -44,11 +44,10 @@ class RecipesListViewModel @Inject constructor( fun onFavoriteIconClick(recipeSummaryEntity: RecipeSummaryEntity) { logger.v { "onFavoriteIconClick() called with: recipeSummaryEntity = $recipeSummaryEntity" } viewModelScope.launch { - if (recipeSummaryEntity.isFavorite) { - recipeRepo.removeFavoriteRecipe(recipeSummaryEntity.slug) - } else { - recipeRepo.addFavoriteRecipe(recipeSummaryEntity.slug) - } + recipeRepo.updateIsRecipeFavorite( + recipeSlug = recipeSummaryEntity.slug, + isFavorite = recipeSummaryEntity.isFavorite.not(), + ) } } } \ No newline at end of file