diff options
author | YuutaW <17158086+trumeet@users.noreply.github.com> | 2019-03-30 16:19:07 -0700 |
---|---|---|
committer | YuutaW <17158086+Trumeet@users.noreply.github.com> | 2019-03-30 16:19:07 -0700 |
commit | 06fbdcac173aea88cb4d02c4806866c83e720307 (patch) | |
tree | dce2416bfd2d991c23cf79e7820c2cbadc1d59fb /app/src/main/java/moe/yuuta/workmode/suspend/data/PersistableSuspendedApp.kt | |
parent | b0d7fdf0cb31c54d47dcfbc5b39190ee39890bfa (diff) | |
download | WorkMode-06fbdcac173aea88cb4d02c4806866c83e720307.tar WorkMode-06fbdcac173aea88cb4d02c4806866c83e720307.tar.gz WorkMode-06fbdcac173aea88cb4d02c4806866c83e720307.tar.bz2 WorkMode-06fbdcac173aea88cb4d02c4806866c83e720307.zip |
feat(app/ci): implement multi user support
Signed-off-by: YuutaW <17158086+Trumeet@users.noreply.github.com>
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 |