Remove makeCall helper fun
This commit is contained in:
@@ -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.V1 -> {
|
ServerVersion.V0 -> v0Source.addRecipe(getUrl(), recipe.toV0Request())
|
||||||
val slug = v1Source.createRecipe(url, recipe.toV1CreateRequest())
|
ServerVersion.V1 -> {
|
||||||
v1Source.updateRecipe(url, slug, recipe.toV1UpdateRequest())
|
val slug = v1Source.createRecipe(getUrl(), recipe.toV1CreateRequest())
|
||||||
slug
|
v1Source.updateRecipe(getUrl(), slug, recipe.toV1UpdateRequest())
|
||||||
}
|
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(getUrl(), start, limit).map { it.toRecipeSummaryInfo() }
|
||||||
v0Source.requestRecipes(url, 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(getUrl(), page, limit).map { it.toRecipeSummaryInfo() }
|
||||||
v1Source.requestRecipes(url, 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)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user