icerockdev / moko-parcelize

@Parcelize support for mobile (android & ios) Kotlin Multiplatform development
https://moko.icerock.dev
Apache License 2.0
59 stars 2 forks source link

Support TypeParceler #38

Closed cvb941 closed 1 year ago

cvb941 commented 1 year ago

In order to provide custom parceler as described in here.

I'd like to create a Parcelable from a data class which has properties that are not Parcelable by default (Kotlin DateTime's Instant).

@Parcelize
@TypeParceler<Instant?, InstantParceler>()
data class Event(
    val title: String,
    val createdAt: Instant?
) : Parcelable

object InstantParceler : Parceler<Instant?> {
    override fun create(parcel: Parcel) = parcel.readLong().takeIf { it >= 0 }?.let { Instant.fromEpochMilliseconds(it) }

    override fun Instant?.write(parcel: Parcel, flags: Int) {
        parcel.writeLong(this?.toEpochMilliseconds() ?: -1)
    }
}
Pschsch commented 1 year ago

Have sent pr with TypeParceler support

Alex009 commented 1 year ago

will be released in 0.9.0