aboutsummaryrefslogtreecommitdiff
path: root/app/src/main/java/moe/yuuta/workmode/suspend/data/PersistableSuspendedApp.kt
diff options
context:
space:
mode:
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.kt41
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