Rewrite in-app-payment flows to prepare for backups support.

This commit is contained in:
Alex Hart
2024-04-19 17:04:15 -03:00
committed by Cody Henthorne
parent b36b00a11c
commit d719edf104
123 changed files with 5429 additions and 1586 deletions

View File

@@ -88,7 +88,7 @@ fun Cursor.readToSingleLong(defaultValue: Long = 0): Long {
}
}
fun <T> Cursor.readToSingleObject(serializer: Serializer<T, Cursor>): T? {
fun <T> Cursor.readToSingleObject(serializer: BaseSerializer<T, Cursor, *>): T? {
return use {
if (it.moveToFirst()) {
serializer.deserialize(it)

View File

@@ -1,12 +1,25 @@
package org.signal.core.util
import android.content.ContentValues
import android.database.Cursor
/**
* Generalized serializer for finer control
*/
interface BaseSerializer<Data, Input, Output> {
fun serialize(data: Data): Output
fun deserialize(input: Input): Data
}
/**
* Generic serialization interface for use with database and store operations.
*/
interface Serializer<T, R> {
fun serialize(data: T): R
fun deserialize(data: R): T
}
interface Serializer<T, R> : BaseSerializer<T, R, R>
/**
* Serializer specifically for working with SQLite
*/
interface DatabaseSerializer<Data> : BaseSerializer<Data, Cursor, ContentValues>
interface StringSerializer<T> : Serializer<T, String>