diff --git a/composeApp/src/commonMain/kotlin/com/nuvio/app/core/auth/AuthRepository.kt b/composeApp/src/commonMain/kotlin/com/nuvio/app/core/auth/AuthRepository.kt index c0c1abba..b4b74a95 100644 --- a/composeApp/src/commonMain/kotlin/com/nuvio/app/core/auth/AuthRepository.kt +++ b/composeApp/src/commonMain/kotlin/com/nuvio/app/core/auth/AuthRepository.kt @@ -4,6 +4,7 @@ import co.touchlab.kermit.Logger import com.nuvio.app.core.network.SupabaseProvider import com.nuvio.app.core.storage.LocalAccountDataCleaner import io.github.jan.supabase.auth.auth +import io.github.jan.supabase.auth.exception.AuthRestException import io.github.jan.supabase.auth.providers.builtin.Email import io.github.jan.supabase.auth.status.SessionStatus import io.github.jan.supabase.exceptions.RestException @@ -117,7 +118,8 @@ object AuthRepository { Unit }.onFailure { e -> log.e(e) { "Email sign-up failed" } - _error.value = e.message ?: getString(Res.string.auth_sign_up_failed) + _error.value = e.safeAuthErrorDescription() + ?: getString(Res.string.auth_sign_up_failed) } suspend fun signInWithEmail(email: String, password: String): Result = runCatching { @@ -128,7 +130,8 @@ object AuthRepository { } }.onFailure { e -> log.e(e) { "Email sign-in failed" } - _error.value = e.message ?: getString(Res.string.auth_sign_in_failed) + _error.value = e.safeAuthErrorDescription() + ?: getString(Res.string.auth_sign_in_failed) } suspend fun signOut(): Result { @@ -248,4 +251,14 @@ object AuthRepository { } return null } + + private fun Throwable.safeAuthErrorDescription(): String? = + findCause() + ?.errorDescription + ?.trim() + ?.takeIf { it.isNotEmpty() } + ?: findCause() + ?.description + ?.trim() + ?.takeIf { it.isNotEmpty() } }