From 9ed229f20f2e917d8e9eea2487171c78e5bb95f9 Mon Sep 17 00:00:00 2001 From: Kirill Kamakin Date: Sun, 30 Oct 2022 11:53:48 +0100 Subject: [PATCH] Fix parsing update recipe response --- .../mealient/data/network/MealieDataSourceWrapper.kt | 3 ++- .../gq/kirmanak/mealient/extensions/RemoteToLocalMappings.kt | 5 ++--- .../gq/kirmanak/mealient/datasource/v1/MealieDataSourceV1.kt | 2 +- .../mealient/datasource/v1/MealieDataSourceV1Impl.kt | 2 +- .../gq/kirmanak/mealient/datasource/v1/MealieServiceV1.kt | 4 ++-- .../mealient/datasource/v1/models/UpdateRecipeRequestV1.kt | 3 +-- 6 files changed, 9 insertions(+), 10 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 a9cf2b6..1fbd9d3 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 @@ -31,7 +31,8 @@ class MealieDataSourceWrapper @Inject constructor( ServerVersion.V0 -> v0Source.addRecipe(url, token, recipe.toV0Request()) ServerVersion.V1 -> { val slug = v1Source.createRecipe(url, token, recipe.toV1CreateRequest()) - v1Source.updateRecipe(url, token, slug, recipe.toV1UpdateRequest(slug)) + v1Source.updateRecipe(url, token, slug, recipe.toV1UpdateRequest()) + slug } } } diff --git a/app/src/main/java/gq/kirmanak/mealient/extensions/RemoteToLocalMappings.kt b/app/src/main/java/gq/kirmanak/mealient/extensions/RemoteToLocalMappings.kt index e0b15ca..84dea9b 100644 --- a/app/src/main/java/gq/kirmanak/mealient/extensions/RemoteToLocalMappings.kt +++ b/app/src/main/java/gq/kirmanak/mealient/extensions/RemoteToLocalMappings.kt @@ -211,14 +211,12 @@ fun AddRecipeInfo.toV1CreateRequest() = CreateRecipeRequestV1( name = name, ) -fun AddRecipeInfo.toV1UpdateRequest(slug: String) = UpdateRecipeRequestV1( - name = name, +fun AddRecipeInfo.toV1UpdateRequest() = UpdateRecipeRequestV1( description = description, image = image, recipeYield = recipeYield, recipeIngredient = recipeIngredient.map { it.toV1Ingredient() }, recipeInstructions = recipeInstructions.map { it.toV1Instruction() }, - slug = slug, filePath = filePath, tags = tags, categories = categories, @@ -254,4 +252,5 @@ private fun AddRecipeIngredientInfo.toV1Ingredient() = AddRecipeIngredientV1( private fun AddRecipeInstructionInfo.toV1Instruction() = AddRecipeInstructionV1( title = title, text = text, + ingredientReferences = emptyList(), ) \ No newline at end of file diff --git a/datasource/src/main/kotlin/gq/kirmanak/mealient/datasource/v1/MealieDataSourceV1.kt b/datasource/src/main/kotlin/gq/kirmanak/mealient/datasource/v1/MealieDataSourceV1.kt index c485584..6ba2d6b 100644 --- a/datasource/src/main/kotlin/gq/kirmanak/mealient/datasource/v1/MealieDataSourceV1.kt +++ b/datasource/src/main/kotlin/gq/kirmanak/mealient/datasource/v1/MealieDataSourceV1.kt @@ -15,7 +15,7 @@ interface MealieDataSourceV1 { token: String?, slug: String, recipe: UpdateRecipeRequestV1, - ): String + ): GetRecipeResponseV1 /** * Tries to acquire authentication token using the provided credentials diff --git a/datasource/src/main/kotlin/gq/kirmanak/mealient/datasource/v1/MealieDataSourceV1Impl.kt b/datasource/src/main/kotlin/gq/kirmanak/mealient/datasource/v1/MealieDataSourceV1Impl.kt index d96641a..e00c0d0 100644 --- a/datasource/src/main/kotlin/gq/kirmanak/mealient/datasource/v1/MealieDataSourceV1Impl.kt +++ b/datasource/src/main/kotlin/gq/kirmanak/mealient/datasource/v1/MealieDataSourceV1Impl.kt @@ -34,7 +34,7 @@ class MealieDataSourceV1Impl @Inject constructor( token: String?, slug: String, recipe: UpdateRecipeRequestV1 - ): String = networkRequestWrapper.makeCallAndHandleUnauthorized( + ): GetRecipeResponseV1 = networkRequestWrapper.makeCallAndHandleUnauthorized( block = { service.updateRecipe("$baseUrl/api/recipes/$slug", token, recipe) }, logMethod = { "updateRecipe" }, logParameters = { "baseUrl = $baseUrl, token = $token, slug = $slug, recipe = $recipe" } diff --git a/datasource/src/main/kotlin/gq/kirmanak/mealient/datasource/v1/MealieServiceV1.kt b/datasource/src/main/kotlin/gq/kirmanak/mealient/datasource/v1/MealieServiceV1.kt index b119258..c6644fc 100644 --- a/datasource/src/main/kotlin/gq/kirmanak/mealient/datasource/v1/MealieServiceV1.kt +++ b/datasource/src/main/kotlin/gq/kirmanak/mealient/datasource/v1/MealieServiceV1.kt @@ -21,12 +21,12 @@ interface MealieServiceV1 { @Body addRecipeRequest: CreateRecipeRequestV1, ): String - @PUT + @PATCH suspend fun updateRecipe( @Url url: String, @Header(AUTHORIZATION_HEADER_NAME) token: String?, @Body addRecipeRequest: UpdateRecipeRequestV1, - ): String + ): GetRecipeResponseV1 @GET suspend fun getVersion( diff --git a/datasource/src/main/kotlin/gq/kirmanak/mealient/datasource/v1/models/UpdateRecipeRequestV1.kt b/datasource/src/main/kotlin/gq/kirmanak/mealient/datasource/v1/models/UpdateRecipeRequestV1.kt index a9a2eca..b4a8632 100644 --- a/datasource/src/main/kotlin/gq/kirmanak/mealient/datasource/v1/models/UpdateRecipeRequestV1.kt +++ b/datasource/src/main/kotlin/gq/kirmanak/mealient/datasource/v1/models/UpdateRecipeRequestV1.kt @@ -5,13 +5,11 @@ import kotlinx.serialization.Serializable @Serializable data class UpdateRecipeRequestV1( - @SerialName("name") val name: String = "", @SerialName("description") val description: String = "", @SerialName("image") val image: String = "", @SerialName("recipeYield") val recipeYield: String = "", @SerialName("recipeIngredient") val recipeIngredient: List = emptyList(), @SerialName("recipeInstructions") val recipeInstructions: List = emptyList(), - @SerialName("slug") val slug: String = "", @SerialName("filePath") val filePath: String = "", @SerialName("tags") val tags: List = emptyList(), @SerialName("categories") val categories: List = emptyList(), @@ -35,6 +33,7 @@ data class AddRecipeIngredientV1( data class AddRecipeInstructionV1( @SerialName("title") val title: String = "", @SerialName("text") val text: String = "", + @SerialName("ingredientReferences") val ingredientReferences: List = emptyList(), ) @Serializable