diff options
Diffstat (limited to 'app/src/main/java/moe/yuuta/workmode/suspend/data/PersistableSuspendedApp.kt')
-rw-r--r-- | app/src/main/java/moe/yuuta/workmode/suspend/data/PersistableSuspendedApp.kt | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/app/src/main/java/moe/yuuta/workmode/suspend/data/PersistableSuspendedApp.kt b/app/src/main/java/moe/yuuta/workmode/suspend/data/PersistableSuspendedApp.kt new file mode 100644 index 0000000..ccfc008 --- /dev/null +++ b/app/src/main/java/moe/yuuta/workmode/suspend/data/PersistableSuspendedApp.kt @@ -0,0 +1,41 @@ +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 + } +}
\ No newline at end of file |