blob: 9c6ddf7e1110fe4d082a5300061b7432b3aa1bd2 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
package moe.yuuta.workmode.suspend
import android.os.Bundle
import android.os.PersistableBundle
import moe.yuuta.workmode.BuildConfig
/**
* The data class of a suspended app. This is ONLY used in this app, which
* can be understood as "a bridge between the extras stored in the system and
* information which is used in this app"
*/
data class SuspendedApp(
val isSuspendedByWorkMode: Boolean, // The flag which is used to determine whatever is suspended by WorkMode
val versionCodeSuspended: Int // The version code of this app when suspended the target
) {
companion object {
// These values are stored by the system, should not be usually changed for migrating
const val EXTRA_IS_SUSPENDED_BY_WORK_MODE = "moe.yuuta.workmode.EXTRA_IS_SUSPENDED_BY_WORK_MODE"
const val EXTRA_VERSION_CODE = "moe.yuuta.workmode.EXTRA_VERSION_CODE"
fun deserializeBundle(launcherExtras: Bundle?): SuspendedApp {
if (launcherExtras == null) return SuspendedApp(false, -1)
return SuspendedApp(
launcherExtras.getBoolean(EXTRA_IS_SUSPENDED_BY_WORK_MODE, false),
launcherExtras.getInt(EXTRA_VERSION_CODE, -1)
)
}
fun getDefault(): SuspendedApp = SuspendedApp(true, BuildConfig.VERSION_CODE)
}
fun serializeBundle(): PersistableBundle {
val bundle = PersistableBundle()
bundle.putBoolean(EXTRA_IS_SUSPENDED_BY_WORK_MODE, isSuspendedByWorkMode)
bundle.putInt(EXTRA_VERSION_CODE, versionCodeSuspended)
return bundle
}
}
|