Skip to content

1.0.7

Compare
Choose a tag to compare
@skydoves skydoves released this 21 Dec 11:09
32adf03

🎉 Released a new version 1.0.7! 🎉

What's New?

  • Changed non-inline functions to inline classes.
  • Removed generating BuildConfig class.
  • Added ApiSuccessModelMapper for mapping data of the ApiResponse.Success to the custom model.
    We can map the ApiResponse.Success model to our custom model using the mapper extension.
object SuccessPosterMapper : ApiSuccessModelMapper<List<Poster>, Poster?> {

  override fun map(apiErrorResponse: ApiResponse.Success<List<Poster>>): Poster? {
    return apiErrorResponse.data?.first()
  }
}

// Maps the success response data.
val poster: Poster? = map(SuccessPosterMapper)

or

// Maps the success response data using a lambda.
map(SuccessPosterMapper) { poster ->
  livedata.post(poster) // we can use the `this` keyword instead.
}
  • Added mapOnSuccess and mapOnError extensions for mapping success/error model to the custom model in their scope.
  • Added merge extension for ApiResponse for merging multiple ApiResponses as one ApiResponse depending on the policy.
    The below example is merging three ApiResponse as one if every three ApiResponses are successful.
disneyService.fetchDisneyPosterList(page = 0).merge(
   disneyService.fetchDisneyPosterList(page = 1),
   disneyService.fetchDisneyPosterList(page = 2),
   mergePolicy = ApiResponseMergePolicy.PREFERRED_FAILURE
).onSuccess { 
  // handle response data..
}.onError { 
  // handle error..
}

ApiResponseMergePolicy

ApiResponseMergePolicy is a policy for merging response data depend on the success or not.

  • IGNORE_FAILURE: Regardless of the merging order, ignores failure responses in the responses.
  • PREFERRED_FAILURE (default): Regardless of the merging order, prefers failure responses in the responses.