GetAccessTokenUseCase.kt
package com.gyleedev.githubsearch.domain.usecase
import com.gyleedev.githubsearch.domain.model.GetAccessTokenRepositoryResult
import com.gyleedev.githubsearch.domain.model.GetAccessTokenUseCaseResult
import com.gyleedev.githubsearch.domain.repository.GitHubRepository
import javax.inject.Inject
class GetAccessTokenUseCase @Inject constructor(
private val repository: GitHubRepository,
) {
suspend operator fun invoke(code: String): GetAccessTokenUseCaseResult = try {
val result = repository.getAccessToken(code = code)
if (result is GetAccessTokenRepositoryResult.Success) {
repository.saveAccessToken(token = result.token)
GetAccessTokenUseCaseResult.Success
} else {
GetAccessTokenUseCaseResult.Fail
}
} catch (e: Exception) {
GetAccessTokenUseCaseResult.Fail
}
}