Skip to content

Commit

Permalink
replace Either with kotlin-result
Browse files Browse the repository at this point in the history
  • Loading branch information
alicankorkmaz-sudo committed Feb 22, 2023
1 parent abbf6b4 commit 007a4b9
Show file tree
Hide file tree
Showing 14 changed files with 79 additions and 104 deletions.
6 changes: 3 additions & 3 deletions .github/workflows/prod-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ on:
jobs:
test:
name: Run unit tests & static analysis checks
runs-on: ubuntu-18.04
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v1
Expand All @@ -26,7 +26,7 @@ jobs:

buildAndDeployAPK:
name: Build signed APK and deploy to AppCenter
runs-on: ubuntu-18.04
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set up JDK 11
Expand All @@ -49,7 +49,7 @@ jobs:
run: |
bash ./gradlew assemblePrdRelease
mv $(ls app/build/outputs/apk/prd/release/*.apk) app-release.apk
# TODO update above when AppCenter-Github-Action supports ant style glob pattern
# TODO update above when AppCenter-Github-Action supports ant style glob pattern

- name: Upload APK to AppCenter
uses: wzieba/[email protected]
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/pull-request.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ on:
jobs:
test:
name: Run unit tests & static analysis checks
runs-on: ubuntu-18.04
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v1
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/test-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ on:
jobs:
test:
name: Run unit tests & static analysis checks
runs-on: ubuntu-18.04
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v1
Expand All @@ -26,7 +26,7 @@ jobs:

buildAndDeployAPK:
name: Build signed APK and deploy to AppCenter
runs-on: ubuntu-18.04
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set up JDK 11
Expand All @@ -49,7 +49,7 @@ jobs:
run: |
bash ./gradlew assembleDevRelease
mv $(ls app/build/outputs/apk/dev/release/*.apk) app-release.apk
# TODO update above when AppCenter-Github-Action supports ant style glob pattern
# TODO update above when AppCenter-Github-Action supports ant style glob pattern

- name: Upload APK to AppCenter
uses: wzieba/[email protected]
Expand Down
10 changes: 6 additions & 4 deletions app/src/main/kotlin/com/adesso/movee/internal/util/UseCase.kt
Original file line number Diff line number Diff line change
@@ -1,16 +1,18 @@
package com.adesso.movee.internal.util

import com.adesso.movee.internal.util.functional.Either
import com.github.michaelbull.result.Err
import com.github.michaelbull.result.Ok
import com.github.michaelbull.result.Result

abstract class UseCase<out Type, in Params> where Type : Any {

protected abstract suspend fun buildUseCase(params: Params): Type

suspend fun run(params: Params): Either<Failure, Type> {
suspend fun run(params: Params): Result<Type, Failure> {
return try {
Either.Right(buildUseCase(params))
Ok(buildUseCase(params))
} catch (failure: Failure) {
Either.Left(failure)
Err(failure)
}
}

Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,10 @@ import androidx.lifecycle.MutableLiveData
import com.adesso.movee.base.BaseAndroidViewModel
import com.adesso.movee.domain.LoginUseCase
import com.adesso.movee.internal.util.Event
import javax.inject.Inject
import com.github.michaelbull.result.onFailure
import com.github.michaelbull.result.onSuccess
import kotlinx.coroutines.launch
import javax.inject.Inject

class LoginViewModel @Inject constructor(
private val loginUseCase: LoginUseCase,
Expand Down Expand Up @@ -38,7 +40,9 @@ class LoginViewModel @Inject constructor(
loginUseCase.run(LoginUseCase.Params(username, password))
}

loginResult.either(::handleFailure, ::navigateHome)
loginResult
.onSuccess { navigateHome() }
.onFailure(::handleFailure)

_loginInProgress.value = false
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,10 @@ import com.adesso.movee.internal.util.UseCase
import com.adesso.movee.uimodel.MovieUiModel
import com.adesso.movee.uimodel.ShowHeaderUiModel
import com.adesso.movee.uimodel.ShowUiModel
import javax.inject.Inject
import com.github.michaelbull.result.onFailure
import com.github.michaelbull.result.onSuccess
import kotlinx.coroutines.launch
import javax.inject.Inject

class MovieViewModel @Inject constructor(
private val fetchPopularMoviesUseCase: FetchPopularMoviesUseCase,
Expand Down Expand Up @@ -53,7 +55,9 @@ class MovieViewModel @Inject constructor(
val nowPlayingMoviesResult = fetchNowPlayingMoviesUseCase.run(UseCase.None)

onUIThread {
nowPlayingMoviesResult.either(::handleFailure, ::postNowPlayingMovieList)
nowPlayingMoviesResult
.onSuccess(::postNowPlayingMovieList)
.onFailure(::handleFailure)
}
}
}
Expand All @@ -67,7 +71,9 @@ class MovieViewModel @Inject constructor(
val popularMoviesResult = fetchPopularMoviesUseCase.run(UseCase.None)

onUIThread {
popularMoviesResult.either(::handleFailure, ::postPopularMovieList)
popularMoviesResult
.onSuccess(::postPopularMovieList)
.onFailure(::handleFailure)
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,10 @@ import com.adesso.movee.domain.FetchMovieCreditsUseCase
import com.adesso.movee.domain.FetchMovieDetailUseCase
import com.adesso.movee.uimodel.MovieCreditUiModel
import com.adesso.movee.uimodel.MovieDetailUiModel
import javax.inject.Inject
import com.github.michaelbull.result.onFailure
import com.github.michaelbull.result.onSuccess
import kotlinx.coroutines.launch
import javax.inject.Inject

class MovieDetailViewModel @Inject constructor(
private val fetchMovieDetailUseCase: FetchMovieDetailUseCase,
Expand All @@ -29,7 +31,9 @@ class MovieDetailViewModel @Inject constructor(
fetchMovieDetailUseCase.run(FetchMovieDetailUseCase.Params(id))

onUIThread {
movieDetailResult.either(::handleFailure, ::postMovieDetail)
movieDetailResult
.onSuccess(::postMovieDetail)
.onFailure(::handleFailure)
}
}
}
Expand All @@ -46,7 +50,9 @@ class MovieDetailViewModel @Inject constructor(
fetchMovieCreditsUseCase.run(FetchMovieCreditsUseCase.Params(id))

onUIThread {
movieCreditsResult.either(::handleFailure, ::postMovieCredits)
movieCreditsResult
.onSuccess(::postMovieCredits)
.onFailure(::handleFailure)
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,10 @@ import com.adesso.movee.internal.util.AppBarStateChangeListener.State.COLLAPSED
import com.adesso.movee.internal.util.AppBarStateChangeListener.State.EXPANDED
import com.adesso.movee.internal.util.AppBarStateChangeListener.State.IDLE
import com.adesso.movee.uimodel.PersonDetailUiModel
import javax.inject.Inject
import com.github.michaelbull.result.onFailure
import com.github.michaelbull.result.onSuccess
import kotlinx.coroutines.launch
import javax.inject.Inject

class PersonDetailViewModel @Inject constructor(
private val fetchPersonDetailsUseCase: FetchPersonDetailsUseCase,
Expand All @@ -30,7 +32,9 @@ class PersonDetailViewModel @Inject constructor(
fetchPersonDetailsUseCase.run(FetchPersonDetailsUseCase.Params(personId))

onUIThread {
personDetailResult.either(::handleFailure, ::postPersonDetails)
personDetailResult
.onSuccess(::postPersonDetails)
.onFailure(::handleFailure)
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,10 @@ import com.adesso.movee.domain.GetLoginStateUseCase
import com.adesso.movee.internal.util.UseCase
import com.adesso.movee.uimodel.LoginState
import com.adesso.movee.uimodel.UserDetailUiModel
import javax.inject.Inject
import com.github.michaelbull.result.onFailure
import com.github.michaelbull.result.onSuccess
import kotlinx.coroutines.launch
import javax.inject.Inject

class ProfileViewModel @Inject constructor(
private val fetchUserDetailsUseCase: FetchUserDetailsUseCase,
Expand All @@ -36,7 +38,9 @@ class ProfileViewModel @Inject constructor(
val loginStateResult = getLoginStateUseCase.run(UseCase.None)

onUIThread {
loginStateResult.either(::handleFailure, ::handleLoginStateSuccess)
loginStateResult
.onSuccess(::handleLoginStateSuccess)
.onFailure(::handleFailure)
}
}
}
Expand All @@ -62,7 +66,9 @@ class ProfileViewModel @Inject constructor(
val userDetailsResult = fetchUserDetailsUseCase.run(UseCase.None)

onUIThread {
userDetailsResult.either(::handleFailure, ::postUserDetails)
userDetailsResult
.onSuccess(::postUserDetails)
.onFailure(::handleFailure)
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,12 @@ import com.adesso.movee.uimodel.MovieMultiSearchUiModel
import com.adesso.movee.uimodel.MultiSearchUiModel
import com.adesso.movee.uimodel.PersonMultiSearchUiModel
import com.adesso.movee.uimodel.TvShowMultiSearchUiModel
import javax.inject.Inject
import com.github.michaelbull.result.onFailure
import com.github.michaelbull.result.onSuccess
import kotlinx.coroutines.CancellationException
import kotlinx.coroutines.Job
import kotlinx.coroutines.launch
import javax.inject.Inject

class SearchViewModel @Inject constructor(
private val multiSearchUseCase: MultiSearchUseCase,
Expand All @@ -34,7 +36,9 @@ class SearchViewModel @Inject constructor(
multiSearchJob = bgScope.launch {
val searchResult = multiSearchUseCase.run(MultiSearchUseCase.Params(query))
onUIThread {
searchResult.either(::handleSearchFailure, ::postMultiSearchResult)
searchResult
.onSuccess(::postMultiSearchResult)
.onFailure(::handleFailure)
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,10 @@ import com.adesso.movee.internal.util.UseCase
import com.adesso.movee.uimodel.ShowHeaderUiModel
import com.adesso.movee.uimodel.ShowUiModel
import com.adesso.movee.uimodel.TvShowUiModel
import javax.inject.Inject
import com.github.michaelbull.result.onFailure
import com.github.michaelbull.result.onSuccess
import kotlinx.coroutines.launch
import javax.inject.Inject

class TvShowViewModel @Inject constructor(
private val fetchTopRatedTvShowsUseCase: FetchTopRatedTvShowsUseCase,
Expand Down Expand Up @@ -52,7 +54,9 @@ class TvShowViewModel @Inject constructor(
val topRatedTvShowsResult = fetchTopRatedTvShowsUseCase.run(UseCase.None)

onUIThread {
topRatedTvShowsResult.either(::handleFailure, ::postTopRatedTvShows)
topRatedTvShowsResult
.onSuccess(::postTopRatedTvShows)
.onFailure(::handleFailure)
}
}
}
Expand All @@ -66,7 +70,9 @@ class TvShowViewModel @Inject constructor(
val nowPlayingTvShowsResult = fetchNowPlayingTvShowsUseCase.run(UseCase.None)

onUIThread {
nowPlayingTvShowsResult.either(::handleFailure, ::postNowPlayingTvShows)
nowPlayingTvShowsResult
.onSuccess(::postNowPlayingTvShows)
.onFailure(::handleFailure)
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,10 @@ import com.adesso.movee.domain.FetchTvShowDetailUseCase
import com.adesso.movee.uimodel.TvShowCastUiModel
import com.adesso.movee.uimodel.TvShowCreditUiModel
import com.adesso.movee.uimodel.TvShowDetailUiModel
import javax.inject.Inject
import com.github.michaelbull.result.onFailure
import com.github.michaelbull.result.onSuccess
import kotlinx.coroutines.launch
import javax.inject.Inject

class TvShowDetailViewModel @Inject constructor(
private val fetchTvShowDetailUseCase: FetchTvShowDetailUseCase,
Expand All @@ -34,7 +36,9 @@ class TvShowDetailViewModel @Inject constructor(
fetchTvShowDetailUseCase.run(FetchTvShowDetailUseCase.Params(id))

onUIThread {
tvShowDetailResult.either(::handleFailure, ::postTvShowDetail)
tvShowDetailResult
.onSuccess(::postTvShowDetail)
.onFailure(::handleFailure)
}
}
}
Expand All @@ -51,7 +55,9 @@ class TvShowDetailViewModel @Inject constructor(
fetchTvShowCreditsUseCase.run(FetchTvShowCreditsUseCase.Params(id))

onUIThread {
tvShowCreditResult.either(::handleFailure, ::postTvShowCredits)
tvShowCreditResult
.onSuccess(::postTvShowCredits)
.onFailure(::handleFailure)
}
}
}
Expand Down
Loading

0 comments on commit 007a4b9

Please sign in to comment.