Рефакторинг кода с UseCase
Условие задачи
Есть код с UseCase от другого разработчика. Нужно понять, какую бизнес-задачу решает данный код, и отрефакторить его
kotlinclass MainUseCase @Inject constructor(
private val firstUseCase: FirstUseCase,
private val secondUseCase: SecondUseCase
) {
@CheckResult
fun execute(result: Result): Completable {
val orderedItems = result.items
return if (orderedItems.isEmpty()) {
Completable.complete()
} else {
firstUseCase.getCartItems()
.map { cartItems ->
orderedItems.mapNotNull { orderItem ->
cartItems.firstOrNull { it.id == orderItem.id }
}
}
.map { cartItem ->
CartItemId(
cartItemId = cartItem.id,
skuId = cartItem.skuId,
bundleId = cartItem.bundleId,
isPrimaryBundleItem = cartItem.isPrimaryBundleItem
)
}
.flatMapCompletable {
if (it.isEmpty()) {
Completable.complete()
} else {
secondUseCase.deleteItems(it)
}
}
}
}
}