mirror of
https://github.com/revanced/revanced-manager.git
synced 2025-05-01 22:34:25 +02:00
fix: parcel error for nullable types
This commit is contained in:
parent
ac561e7aca
commit
2bd84636d6
@ -25,6 +25,7 @@ import app.revanced.manager.ui.model.BundleInfo.Extensions.toPatchSelection
|
|||||||
import app.revanced.manager.ui.model.SelectedApp
|
import app.revanced.manager.ui.model.SelectedApp
|
||||||
import app.revanced.manager.util.Options
|
import app.revanced.manager.util.Options
|
||||||
import app.revanced.manager.util.PatchesSelection
|
import app.revanced.manager.util.PatchesSelection
|
||||||
|
import app.revanced.manager.util.saver.Nullable
|
||||||
import app.revanced.manager.util.saver.nullableSaver
|
import app.revanced.manager.util.saver.nullableSaver
|
||||||
import app.revanced.manager.util.saver.persistentMapSaver
|
import app.revanced.manager.util.saver.persistentMapSaver
|
||||||
import app.revanced.manager.util.saver.persistentSetSaver
|
import app.revanced.manager.util.saver.persistentSetSaver
|
||||||
@ -210,7 +211,7 @@ class PatchesSelectorViewModel(input: Params) : ViewModel(), KoinComponent {
|
|||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
private val patchesSaver: Saver<PersistentPatchesSelection?, Optional<PatchesSelection>> =
|
private val patchesSaver: Saver<PersistentPatchesSelection?, Nullable<PatchesSelection>> =
|
||||||
nullableSaver(persistentMapSaver(valueSaver = persistentSetSaver()))
|
nullableSaver(persistentMapSaver(valueSaver = persistentSetSaver()))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,22 +1,24 @@
|
|||||||
package app.revanced.manager.util.saver
|
package app.revanced.manager.util.saver
|
||||||
|
|
||||||
|
import android.os.Parcelable
|
||||||
import androidx.compose.runtime.saveable.Saver
|
import androidx.compose.runtime.saveable.Saver
|
||||||
import java.util.Optional
|
import kotlinx.parcelize.Parcelize
|
||||||
import kotlin.jvm.optionals.getOrNull
|
import kotlinx.parcelize.RawValue
|
||||||
|
|
||||||
|
@Parcelize
|
||||||
|
class Nullable<T>(val inner: @RawValue T?) : Parcelable
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates a saver that can save nullable versions of types that have custom savers.
|
* Creates a saver that can save nullable versions of types that have custom savers.
|
||||||
*/
|
*/
|
||||||
fun <Original : Any, Saveable : Any> nullableSaver(baseSaver: Saver<Original, Saveable>): Saver<Original?, Optional<Saveable>> =
|
fun <Original : Any, Saveable : Any> nullableSaver(baseSaver: Saver<Original, Saveable>): Saver<Original?, Nullable<Saveable>> =
|
||||||
Saver(
|
Saver(
|
||||||
save = { value ->
|
save = { value ->
|
||||||
with(baseSaver) {
|
with(baseSaver) {
|
||||||
save(value ?: return@Saver Optional.empty())
|
save(value ?: return@Saver Nullable(null))
|
||||||
}?.let {
|
}?.let(::Nullable)
|
||||||
Optional.of(it)
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
restore = {
|
restore = {
|
||||||
it.getOrNull()?.let(baseSaver::restore)
|
it.inner?.let(baseSaver::restore)
|
||||||
}
|
}
|
||||||
)
|
)
|
Loading…
x
Reference in New Issue
Block a user