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 4fd11dd..22996f2 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,7 @@ interface RecipeRepo { suspend fun refreshRecipes() - suspend fun updateIsRecipeFavorite(recipeSlug: String, isFavorite: Boolean): Result + suspend fun updateIsRecipeFavorite(recipeSlug: String, isFavorite: Boolean): Result suspend fun deleteRecipe(entity: RecipeSummaryEntity): Result } \ 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 dadbc78..5322775 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 @@ -75,12 +75,13 @@ class RecipeRepoImpl @Inject constructor( override suspend fun updateIsRecipeFavorite( recipeSlug: String, isFavorite: Boolean, - ): Result = runCatchingExceptCancel { + ): Result = runCatchingExceptCancel { logger.v { "updateIsRecipeFavorite() called with: recipeSlug = $recipeSlug, isFavorite = $isFavorite" } dataSource.updateIsRecipeFavorite(recipeSlug, isFavorite) val favorites = dataSource.getFavoriteRecipes() storage.updateFavoriteRecipes(favorites) pagingSourceFactory.invalidate() + favorites.contains(recipeSlug) }.onFailure { logger.e(it) { "Can't update recipe's is favorite status" } } diff --git a/app/src/main/java/gq/kirmanak/mealient/ui/recipes/RecipesListFragment.kt b/app/src/main/java/gq/kirmanak/mealient/ui/recipes/RecipesListFragment.kt index 6188633..1003b26 100644 --- a/app/src/main/java/gq/kirmanak/mealient/ui/recipes/RecipesListFragment.kt +++ b/app/src/main/java/gq/kirmanak/mealient/ui/recipes/RecipesListFragment.kt @@ -177,6 +177,15 @@ class RecipesListFragment : Fragment(R.layout.fragment_recipes_list) { logger.d { "onFavoriteClick: result is $it" } if (it.isFailure) { showLongToast(R.string.fragment_recipes_favorite_update_failed) + } else { + val name = event.recipeSummaryEntity.name + val isFavorite = it.getOrThrow() + val message = if (isFavorite) { + getString(R.string.fragment_recipes_favorite_added, name) + } else { + getString(R.string.fragment_recipes_favorite_removed, name) + } + showLongToast(message) } } } diff --git a/app/src/main/res/drawable/ic_search.xml b/app/src/main/res/drawable/ic_search.xml new file mode 100644 index 0000000..8cdd776 --- /dev/null +++ b/app/src/main/res/drawable/ic_search.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/layout/fragment_recipes_list.xml b/app/src/main/res/layout/fragment_recipes_list.xml index 434db53..5738142 100644 --- a/app/src/main/res/layout/fragment_recipes_list.xml +++ b/app/src/main/res/layout/fragment_recipes_list.xml @@ -20,7 +20,7 @@ android:layout_width="match_parent" android:layout_height="match_parent" app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" - tools:itemCount="0" + tools:itemCount="10" tools:listitem="@layout/view_holder_recipe" /> diff --git a/app/src/main/res/layout/view_holder_recipe.xml b/app/src/main/res/layout/view_holder_recipe.xml index 4cff421..0b46443 100644 --- a/app/src/main/res/layout/view_holder_recipe.xml +++ b/app/src/main/res/layout/view_holder_recipe.xml @@ -5,7 +5,7 @@ style="?materialCardViewFilledStyle" android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_marginVertical="@dimen/margin_small" + android:layout_marginVertical="@dimen/margin_medium" android:layout_marginStart="@dimen/margin_medium" android:layout_marginEnd="@dimen/margin_medium"> diff --git a/app/src/main/res/layout/view_toolbar.xml b/app/src/main/res/layout/view_toolbar.xml index dbb6bc7..b0f0244 100644 --- a/app/src/main/res/layout/view_toolbar.xml +++ b/app/src/main/res/layout/view_toolbar.xml @@ -9,28 +9,32 @@ + app:layout_constraintTop_toTopOf="parent" + tools:text="Search request" /> \ No newline at end of file diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index a48b0df..2bba973 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -63,4 +63,6 @@ Удалить рецепт Подтвердить Отмена + %1$s добавлено в избранное + %1$s удалено из избранного \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index c3502d5..783372f 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -66,4 +66,6 @@ Item is favorite Item is not favorite Delete recipe + Added %1$s to favorites + Removed %1$s from favorites \ No newline at end of file