Skip to content

Instantly share code, notes, and snippets.

@realityexpander
Last active October 17, 2022 22:55
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save realityexpander/19435e7b2b70ba24266fb2b049d36ca9 to your computer and use it in GitHub Desktop.
Save realityexpander/19435e7b2b70ba24266fb2b049d36ca9 to your computer and use it in GitHub Desktop.
for KMM @TypeParceler article
// androidMain/…/Platform.kt
import android.os.Parcel
import android.os.Parcelable
import kotlinx.datetime.LocalDateTime
import kotlinx.datetime.toLocalDateTime
import kotlinx.parcelize.Parceler // NOTE: kotlinx.parcelize.*
import kotlinx.parcelize.Parcelize
import kotlinx.parcelize.TypeParceler
actual typealias CommonParcelize = Parcelize // defined on Android, skipped on iOS
actual typealias CommonParcelable = Parcelable // defined on Android, skipped on iOS
actual typealias CommonParceler<T> = Parceler<T> // defined on Android, skipped on iOS
actual typealias CommonTypeParceler<T,P> = TypeParceler<T, P> // defined on Android, skipped on iOS
// Performs the type conversion to/from a Parcelable supported type (primitives only)
actual object LocalDateTimeParceler : Parceler<LocalDateTime> { // defined on Android, skipped on iOS
override fun create(parcel: Parcel): LocalDateTime {
val date = parcel.readString()
return date?.toLocalDateTime()
?: LocalDateTime(0, 0, 0, 0, 0)
}
override fun LocalDateTime.write(parcel: Parcel, flags: Int) {
parcel.writeString(this.toString())
}
}
@realityexpander
Copy link
Author

See my sample project here: https://github.com/realityexpander/NoteAppKMM

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment