diff options
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.kt | 38 |
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 |