Skip to content
This repository has been archived by the owner on Nov 7, 2023. It is now read-only.

Crash when calling signUpWithEmail() #3

Open
HorusGoul opened this issue Nov 27, 2021 · 0 comments
Open

Crash when calling signUpWithEmail() #3

HorusGoul opened this issue Nov 27, 2021 · 0 comments

Comments

@HorusGoul
Copy link

Hi!

I'm using this library in an Android app, but when I try to sign up a new user, the app crashes due to the signUpWithEmail() function.

Here's the log:

2021-11-27 13:04:44.792 24469-24469/dev.horus.personalcrm E/AndroidRuntime: FATAL EXCEPTION: main
    Process: dev.horus.personalcrm, PID: 24469
    com.fasterxml.jackson.module.kotlin.MissingKotlinParameterException: Instantiation of [simple type, class io.supabase.gotrue.types.GoTrueUserResponse] value failed for JSON property id due to missing (therefore NULL) value for creator parameter id which is a non-nullable type
        at [Source: (String)"{"access_token":"[OMITED_TOKEN]","token_type":"bearer","expires_in":3600,"refresh_token":"[OMITED_TOKEN]","user":{"id":"4cb"[truncated 406 chars]; line: 1, column: 906] (through reference chain: io.supabase.gotrue.types.GoTrueUserResponse["id"])
        at com.fasterxml.jackson.module.kotlin.KotlinValueInstantiator.createFromObjectWith(KotlinValueInstantiator.kt:116)
        at com.fasterxml.jackson.databind.deser.impl.PropertyBasedCreator.build(PropertyBasedCreator.java:202)
        at com.fasterxml.jackson.databind.deser.BeanDeserializer._deserializeUsingPropertyBased(BeanDeserializer.java:520)
        at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.deserializeFromObjectUsingNonDefault(BeanDeserializerBase.java:1390)
        at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:362)
        at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:195)
        at com.fasterxml.jackson.databind.deser.DefaultDeserializationContext.readRootValue(DefaultDeserializationContext.java:322)
        at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:4593)
        at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3548)
        at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3516)
        at io.supabase.gotrue.json.GoTrueJsonConverterJackson.deserialize(GoTrueJsonConverterJackson.kt:30)
        at io.supabase.gotrue.GoTrueClient.signUpWithEmail(GoTrueClient.kt:195)
        at dev.horus.personalcrm.LoginActivity$signUp$2.invokeSuspend(LoginActivity.kt:104)
        at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
        at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
        at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:571)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:750)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:678)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:665)

What I think is the cause
I disabled the Enable email confirmations in Supabase, which led to the API returning something different.

signUpWithEmail() expects to return this:

data class GoTrueUserResponse(
        val id: String,
        val email: String,
        val confirmationSentAt: OffsetDateTime,
        val createdAt: OffsetDateTime,
        val updatedAt: OffsetDateTime
)

But as I disabled the email confirmations, the API returns a different payload, and it fails when deserializing it. I think we should also allow for that function to return this data class:

data class GoTrueTokenResponse(
        val accessToken: String,
        val tokenType: String,
        val expiresIn: Long,
        val refreshToken: String
)
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant