aboutsummaryrefslogtreecommitdiff
path: root/app/src/main/java/moe/yuuta/workmode/suspend/SuspendedApp.kt
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/main/java/moe/yuuta/workmode/suspend/SuspendedApp.kt')
-rw-r--r--app/src/main/java/moe/yuuta/workmode/suspend/SuspendedApp.kt38
1 files changed, 38 insertions, 0 deletions
diff --git a/app/src/main/java/moe/yuuta/workmode/suspend/SuspendedApp.kt b/app/src/main/java/moe/yuuta/workmode/suspend/SuspendedApp.kt
new file mode 100644
index 0000000..9c6ddf7
--- /dev/null
+++ b/app/src/main/java/moe/yuuta/workmode/suspend/SuspendedApp.kt
@@ -0,0 +1,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
+ }
+} \ No newline at end of file