Antonis Radz
09/12/2024, 10:23 AM@Throws(LoginException::class, CancellationException::class, RegistrationException::class)
suspend fun login(email: String, password: String): TSToken {
throw RegistrationException("Registration exception", "Reg token")
}
and swift code:
SharedDependencies.shared.sessionManager.login(
email: email,
password: password,
completionHandler: { session, error in
if (error is SessionRegistrationException){
alertErrorText = "Registration exception"
showingAlert = true
} else if (error is KotlinException){
alertErrorText = "Kotlin exception"
showingAlert = true
} else{
alertErrorText = "Unknown exception"
showingAlert = true
}
}
)
And in debug point I see:François
09/12/2024, 10:40 AMFrançois
09/12/2024, 10:40 AMAntonis Radz
09/12/2024, 10:40 AMAntonis Radz
09/12/2024, 10:40 AMAntonis Radz
09/12/2024, 10:40 AMAntonis Radz
09/12/2024, 10:41 AMFrançois
09/12/2024, 10:42 AMFrançois
09/12/2024, 10:44 AMAntonis Radz
09/12/2024, 10:46 AM*if* (error *is* SessionRegistrationException)
And session is module of kmm projectFrançois
09/12/2024, 10:48 AMif (let myError = error as? SessionRegistrationException)
Antonis Radz
09/12/2024, 10:48 AMFrançois
09/12/2024, 10:48 AMAntonis Radz
09/12/2024, 10:49 AMFrançois
09/12/2024, 10:50 AMAntonis Radz
09/12/2024, 10:51 AMFrançois
09/12/2024, 10:52 AMAntonis Radz
09/12/2024, 10:52 AMDarron Schall
09/12/2024, 7:42 PMlet exception = error.userInfo["KotlinException"]
if exception is RegistrationException {
// ...
}
Antonis Radz
09/13/2024, 6:49 AMFrançois
09/13/2024, 7:44 AMAntonis Radz
09/13/2024, 7:46 AMAntonis Radz
09/13/2024, 7:47 AM@OptIn(ExperimentalObjCName::class)
@ObjCName("LoginResult", exact = true)
sealed class LoginResult {
data class Success(val token: TSToken) : LoginResult()
data class Registration(val message: String, val token: String) : LoginResult()
data class Error(val message: String, val statusCode: Int) : LoginResult()
val tokenSuccess: TSToken? get() = (this as? Success)?.token
fun unwrap(
onLoggedIn: (Success) -> Unit,
onRegistration: (Registration) -> Unit,
onError: (Error) -> Unit
) {
return when (this) {
is Success -> onLoggedIn(this)
is Registration -> onRegistration(this)
is Error -> onError(this)
}
}
}
and
extension LoginResult {
func handle(promise: Resolver<BaseError>) {
self.unwrap(
onLoggedIn: { result in
},
onRegistration: { result in
},
onError: { result in
}
)
}
}
François
09/13/2024, 7:48 AMAntonis Radz
09/13/2024, 7:48 AMFrançois
09/13/2024, 7:48 AMFrançois
09/13/2024, 7:49 AMAntonis Radz
09/13/2024, 7:49 AMFrançois
09/13/2024, 7:50 AMFrançois
09/13/2024, 7:50 AMFrançois
09/13/2024, 7:51 AMAntonis Radz
09/13/2024, 7:52 AMFrançois
09/13/2024, 7:53 AMFrançois
09/13/2024, 7:53 AMFrançois
09/13/2024, 7:54 AMAntonis Radz
09/13/2024, 7:55 AM