ParcelableExt.kt (905B) - raw
1 package me.rhunk.snapenhance.common.util 2 3 import android.os.Parcelable 4 import kotlinx.parcelize.parcelableCreator 5 import kotlin.io.encoding.Base64 6 import kotlin.io.encoding.ExperimentalEncodingApi 7 8 @OptIn(ExperimentalEncodingApi::class) 9 fun Parcelable.toSerialized(): String? { 10 val parcel = android.os.Parcel.obtain() 11 return try { 12 writeToParcel(parcel, 0) 13 parcel.marshall()?.let { 14 Base64.encode(it) 15 } 16 } finally { 17 parcel.recycle() 18 } 19 } 20 21 @OptIn(ExperimentalEncodingApi::class) 22 inline fun <reified T : Parcelable> toParcelable(serialized: String): T? { 23 val parcel = android.os.Parcel.obtain() 24 return try { 25 Base64.decode(serialized).let { 26 parcel.unmarshall(it, 0, it.size) 27 } 28 parcel.setDataPosition(0) 29 parcelableCreator<T>().createFromParcel(parcel) 30 } finally { 31 parcel.recycle() 32 } 33 }