package moe.yuuta.workmode.suspend.data import android.os.Process import java.util.regex.Pattern /** * The data of Suspended app which can be stored in {@link SuspendedStorage} only */ data class PersistableSuspendedApp( val userId: Int, val packageName: String ) { constructor(serializedString: String) : this(parseUserIDFromSerializedString(serializedString), parsePackageNameFromSerializedString(serializedString)) override fun toString(): String = String.format("%d|%s", userId, packageName) /** * Create a TransferableSuspendedApp with the simplest data. */ fun copyToSimpleTransferableInfo(): TransferableSuspendedApp = TransferableSuspendedApp(userId, packageName, null, -1, null) companion object { private fun parseFromSerializedString(serializedString: String): PersistableSuspendedApp { val arr = serializedString.split(Pattern.compile("\\|")) // Legacy if (arr.size != 2) { return PersistableSuspendedApp(Process.myUserHandle().hashCode(), serializedString) } return PersistableSuspendedApp(arr[0].toInt(), arr[1]) } private fun parseUserIDFromSerializedString(serializedString: String): Int = parseFromSerializedString(serializedString).userId private fun parsePackageNameFromSerializedString(serializedString: String): String = parseFromSerializedString(serializedString).packageName } }