Skip to content

Commit ed5b7ed

Browse files
committed
Refactor: Use appClassLoader instead of reified generics in ParcelExtensions
And add Parcel.readValue().
1 parent e58c9f2 commit ed5b7ed

File tree

1 file changed

+9
-7
lines changed

1 file changed

+9
-7
lines changed

app/src/main/java/me/zhanghai/android/files/util/ParcelExtensions.kt

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,24 +7,26 @@ package me.zhanghai.android.files.util
77

88
import android.os.Parcel
99
import android.os.Parcelable
10-
import me.zhanghai.android.files.compat.readParcelableListCompat
1110
import kotlin.contracts.ExperimentalContracts
1211
import kotlin.contracts.InvocationKind
1312
import kotlin.contracts.contract
13+
import me.zhanghai.android.files.app.appClassLoader
14+
import me.zhanghai.android.files.compat.readParcelableListCompat
1415

15-
inline fun <reified T : Parcelable> Parcel.readParcelable(): T? =
16-
readParcelable(T::class.java.classLoader)
16+
@Suppress("DEPRECATION")
17+
fun <T : Parcelable> Parcel.readParcelable(): T? = readParcelable(appClassLoader)
1718

1819
fun <T : Parcelable?> Parcel.readParcelableListCompat(classLoader: ClassLoader?): List<T> =
1920
readParcelableListCompat(mutableListOf(), classLoader)
2021

21-
inline fun <reified E : Parcelable?, L : MutableList<E>> Parcel.readParcelableListCompat(
22-
list: L
23-
): L = readParcelableListCompat(list, E::class.java.classLoader)
22+
fun <E : Parcelable?, L : MutableList<E>> Parcel.readParcelableListCompat(list: L): L =
23+
readParcelableListCompat(list, appClassLoader)
2424

25-
inline fun <reified T : Parcelable?> Parcel.readParcelableListCompat(): List<T> =
25+
fun <T : Parcelable?> Parcel.readParcelableListCompat(): List<T> =
2626
readParcelableListCompat(mutableListOf())
2727

28+
@Suppress("UNCHECKED_CAST") fun <T> Parcel.readValue(): T? = readValue(appClassLoader) as T?
29+
2830
@OptIn(ExperimentalContracts::class)
2931
inline fun <R> Parcel.use(block: (Parcel) -> R): R {
3032
contract {

0 commit comments

Comments
 (0)