1.0.7
馃帀 Released a new version 1.0.7! 馃帀
What's New?
- Changed non-inline functions to inline classes.
- Removed generating
BuildConfigclass. - Added
ApiSuccessModelMapperfor mapping data of theApiResponse.Successto the custom model.
We can map theApiResponse.Successmodel 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
mapOnSuccessandmapOnErrorextensions for mapping success/error model to the custom model in their scope. - Added
mergeextension forApiResponsefor merging multipleApiResponsesas 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.