airbnb / DeepLinkDispatch

A simple, annotation-based library for making deep link handling better on Android
http://nerds.airbnb.com/deeplinkdispatch/
4.39k stars 406 forks source link

Allow Serializable/Parcelable through intents #334

Closed JasonCromer closed 3 years ago

JasonCromer commented 3 years ago

Currently, serializable/parcelable data added as extras are then passed through DLD as strings. Are there any plans to support custom objects for passing through intents in DLD?

rossbacher commented 3 years ago

How are you passing it through?

JasonCromer commented 3 years ago

@rossbacher just via intent.putExtra(). It seems like DLD might converting non-primitive types to json strings, since the serializable types I'm passing through are only deserializable as strings.

JasonCromer commented 3 years ago

@rossbacher I just wanted to check in and see if you've been able to take a look into this, or if this is something your team can add support for in the future. I know we, here at Instacart, would love to see this added in.

JasonCromer commented 3 years ago

Update: It looks like adding intent.putExtra on the intent before it's dispatched, and not passing those objects in as parameters through DLD allows for the extras to be properly passed as serializable/parcelable objects. Closing this!

rossbacher commented 3 years ago

Sorry @JasonCromer I did not yet get to looking into this, but looks like you figured it out, but just for me to understand, what did not work and what is working now? Before you were adding it as extras in the function/method that is annotated that create the Intent and now?

JasonCromer commented 3 years ago

No worries. What didn't work before was primarily an implementation blocker on our end. The data we were passing in was being overridden and converted into strings. Before, we were adding it as extras and passing it along an internal construct to pass the data through the intent, which was causing the above issue. On our end, avoiding passing through our internal construct, and only adding the extras via apply to the intent before it is passed through DLD fixes this issue. I initially thought it was the DLD library jsonifying objects underneath the hood, but after looking through the project and not seeing that, I dug back deeper into our own implementation and discovered the issue.

rossbacher commented 3 years ago

Good, thank you for the explanation. I wanted to reply that we don't do anything with the extras to my knowledge and they should just pass through but I wanted to make a full pass to make sure I was right. All good then! Ping me if you have any other issues.

JasonCromer commented 3 years ago

Awesome, thanks Andreas 👍