diff --git a/app/src/main/java/gq/kirmanak/mealie/data/auth/AuthDataSource.kt b/app/src/main/java/gq/kirmanak/mealie/data/auth/AuthDataSource.kt index eff518b..c5187cc 100644 --- a/app/src/main/java/gq/kirmanak/mealie/data/auth/AuthDataSource.kt +++ b/app/src/main/java/gq/kirmanak/mealie/data/auth/AuthDataSource.kt @@ -4,5 +4,5 @@ interface AuthDataSource { /** * Tries to acquire authentication token using the provided credentials on specified server. */ - suspend fun authenticate(username: String, password: String, baseUrl: String): Result + suspend fun authenticate(username: String, password: String, baseUrl: String): String } \ No newline at end of file diff --git a/app/src/main/java/gq/kirmanak/mealie/data/auth/AuthRepo.kt b/app/src/main/java/gq/kirmanak/mealie/data/auth/AuthRepo.kt index ee271c6..253f5f7 100644 --- a/app/src/main/java/gq/kirmanak/mealie/data/auth/AuthRepo.kt +++ b/app/src/main/java/gq/kirmanak/mealie/data/auth/AuthRepo.kt @@ -3,7 +3,7 @@ package gq.kirmanak.mealie.data.auth interface AuthRepo { suspend fun isAuthenticated(): Boolean - suspend fun authenticate(username: String, password: String, baseUrl: String): Throwable? + suspend fun authenticate(username: String, password: String, baseUrl: String) suspend fun getBaseUrl(): String? diff --git a/app/src/main/java/gq/kirmanak/mealie/data/auth/impl/AuthDataSourceImpl.kt b/app/src/main/java/gq/kirmanak/mealie/data/auth/impl/AuthDataSourceImpl.kt index 57c1b91..63097ce 100644 --- a/app/src/main/java/gq/kirmanak/mealie/data/auth/impl/AuthDataSourceImpl.kt +++ b/app/src/main/java/gq/kirmanak/mealie/data/auth/impl/AuthDataSourceImpl.kt @@ -1,8 +1,8 @@ package gq.kirmanak.mealie.data.auth.impl -import gq.kirmanak.mealie.data.impl.RetrofitBuilder import gq.kirmanak.mealie.data.auth.AuthDataSource import gq.kirmanak.mealie.data.auth.AuthService +import gq.kirmanak.mealie.data.impl.RetrofitBuilder import kotlinx.serialization.ExperimentalSerializationApi import retrofit2.create import timber.log.Timber @@ -16,16 +16,11 @@ class AuthDataSourceImpl @Inject constructor( username: String, password: String, baseUrl: String - ): Result { + ): String { Timber.v("authenticate() called with: username = $username, password = $password, baseUrl = $baseUrl") val authService = retrofitBuilder.buildRetrofit(baseUrl).create() - val response = try { - authService.getToken(username, password) - } catch (e: Exception) { - Timber.e(e, "Authenticate() exception") - return Result.failure(e) - } + val response = authService.getToken(username, password) Timber.d("authenticate() response is $response") - return Result.success(response.accessToken) + return response.accessToken } } \ No newline at end of file diff --git a/app/src/main/java/gq/kirmanak/mealie/data/auth/impl/AuthRepoImpl.kt b/app/src/main/java/gq/kirmanak/mealie/data/auth/impl/AuthRepoImpl.kt index 987c952..40da834 100644 --- a/app/src/main/java/gq/kirmanak/mealie/data/auth/impl/AuthRepoImpl.kt +++ b/app/src/main/java/gq/kirmanak/mealie/data/auth/impl/AuthRepoImpl.kt @@ -21,15 +21,12 @@ class AuthRepoImpl @Inject constructor( username: String, password: String, baseUrl: String - ): Throwable? { + ) { Timber.v("authenticate() called with: username = $username, password = $password, baseUrl = $baseUrl") val url = if (baseUrl.startsWith("http")) baseUrl else "https://$baseUrl" - val authResult = dataSource.authenticate(username, password, url) - Timber.d("authenticate result is $authResult") - if (authResult.isFailure) return authResult.exceptionOrNull() - val token = checkNotNull(authResult.getOrNull()) - storage.storeAuthData(token, url) - return null + val accessToken = dataSource.authenticate(username, password, url) + Timber.d("authenticate result is $accessToken") + storage.storeAuthData(accessToken, url) } override suspend fun getBaseUrl(): String? { diff --git a/app/src/main/java/gq/kirmanak/mealie/ui/auth/AuthenticationFragment.kt b/app/src/main/java/gq/kirmanak/mealie/ui/auth/AuthenticationFragment.kt index 56b475f..338101e 100644 --- a/app/src/main/java/gq/kirmanak/mealie/ui/auth/AuthenticationFragment.kt +++ b/app/src/main/java/gq/kirmanak/mealie/ui/auth/AuthenticationFragment.kt @@ -71,8 +71,13 @@ class AuthenticationFragment : Fragment() { } ?: return } lifecycleScope.launchWhenResumed { - val exception = viewModel.authenticate(email, pass, url) - if (exception == null) navigateToRecipes() + runCatching { + viewModel.authenticate(email, pass, url) + }.onSuccess { + navigateToRecipes() + }.onFailure { + Timber.e(it, "Can't authenticate") + } } } diff --git a/app/src/main/java/gq/kirmanak/mealie/ui/auth/AuthenticationViewModel.kt b/app/src/main/java/gq/kirmanak/mealie/ui/auth/AuthenticationViewModel.kt index 13c63f9..2f8c1d3 100644 --- a/app/src/main/java/gq/kirmanak/mealie/ui/auth/AuthenticationViewModel.kt +++ b/app/src/main/java/gq/kirmanak/mealie/ui/auth/AuthenticationViewModel.kt @@ -21,11 +21,8 @@ class AuthenticationViewModel @Inject constructor( return result } - suspend fun authenticate(username: String, password: String, baseUrl: String): Throwable? { + suspend fun authenticate(username: String, password: String, baseUrl: String) { Timber.v("authenticate() called with: username = $username, password = $password, baseUrl = $baseUrl") - val result = authRepo.authenticate(username, password, baseUrl) - if (result == null) Timber.d("authenticate() returns null") - else Timber.e(result, "authenticate() returns error") - return result + authRepo.authenticate(username, password, baseUrl) } } \ No newline at end of file