Remove makeCall helper fun

This commit is contained in:
Kirill Kamakin
2022-12-11 10:24:35 +01:00
parent 9c48f1b563
commit 79b857810a

View File

@@ -27,60 +27,43 @@ class MealieDataSourceWrapper @Inject constructor(
private val v1Source: MealieDataSourceV1, private val v1Source: MealieDataSourceV1,
) : AddRecipeDataSource, RecipeDataSource, ParseRecipeDataSource { ) : AddRecipeDataSource, RecipeDataSource, ParseRecipeDataSource {
override suspend fun addRecipe( private suspend fun getVersion(): ServerVersion = serverInfoRepo.getVersion()
recipe: AddRecipeInfo,
): String = makeCall { url, version -> private suspend fun getUrl(): String = serverInfoRepo.requireUrl()
when (version) {
ServerVersion.V0 -> v0Source.addRecipe(url, recipe.toV0Request()) override suspend fun addRecipe(recipe: AddRecipeInfo): String = when (getVersion()) {
ServerVersion.V0 -> v0Source.addRecipe(getUrl(), recipe.toV0Request())
ServerVersion.V1 -> { ServerVersion.V1 -> {
val slug = v1Source.createRecipe(url, recipe.toV1CreateRequest()) val slug = v1Source.createRecipe(getUrl(), recipe.toV1CreateRequest())
v1Source.updateRecipe(url, slug, recipe.toV1UpdateRequest()) v1Source.updateRecipe(getUrl(), slug, recipe.toV1UpdateRequest())
slug slug
} }
} }
}
override suspend fun requestRecipes( override suspend fun requestRecipes(
start: Int, start: Int,
limit: Int, limit: Int,
): List<RecipeSummaryInfo> = makeCall { url, version -> ): List<RecipeSummaryInfo> = when (getVersion()) {
when (version) {
ServerVersion.V0 -> { ServerVersion.V0 -> {
v0Source.requestRecipes(url, start, limit).map { it.toRecipeSummaryInfo() } v0Source.requestRecipes(getUrl(), start, limit).map { it.toRecipeSummaryInfo() }
} }
ServerVersion.V1 -> { ServerVersion.V1 -> {
// Imagine start is 30 and limit is 15. It means that we already have page 1 and 2, now we need page 3 // Imagine start is 30 and limit is 15. It means that we already have page 1 and 2, now we need page 3
val page = start / limit + 1 val page = start / limit + 1
v1Source.requestRecipes(url, page, limit).map { it.toRecipeSummaryInfo() } v1Source.requestRecipes(getUrl(), page, limit).map { it.toRecipeSummaryInfo() }
}
} }
} }
override suspend fun requestRecipeInfo( override suspend fun requestRecipeInfo(slug: String): FullRecipeInfo = when (getVersion()) {
slug: String, ServerVersion.V0 -> v0Source.requestRecipeInfo(getUrl(), slug).toFullRecipeInfo()
): FullRecipeInfo = makeCall { url, version -> ServerVersion.V1 -> v1Source.requestRecipeInfo(getUrl(), slug).toFullRecipeInfo()
when (version) {
ServerVersion.V0 -> v0Source.requestRecipeInfo(url, slug).toFullRecipeInfo()
ServerVersion.V1 -> v1Source.requestRecipeInfo(url, slug).toFullRecipeInfo()
}
} }
override suspend fun parseRecipeFromURL( override suspend fun parseRecipeFromURL(
parseRecipeURLInfo: ParseRecipeURLInfo, parseRecipeURLInfo: ParseRecipeURLInfo,
): String = makeCall { url, version -> ): String = when (getVersion()) {
when (version) { ServerVersion.V0 -> v0Source.parseRecipeFromURL(getUrl(), parseRecipeURLInfo.toV0Request())
ServerVersion.V0 -> { ServerVersion.V1 -> v1Source.parseRecipeFromURL(getUrl(), parseRecipeURLInfo.toV1Request())
v0Source.parseRecipeFromURL(url, parseRecipeURLInfo.toV0Request())
}
ServerVersion.V1 -> {
v1Source.parseRecipeFromURL(url, parseRecipeURLInfo.toV1Request())
}
}
} }
private suspend inline fun <T> makeCall(block: (String, ServerVersion) -> T): T {
val url = serverInfoRepo.requireUrl()
val version = serverInfoRepo.getVersion()
return block(url, version)
}
} }