aboutsummaryrefslogtreecommitdiff
path: root/app/src/main/java/moe/yuuta/workmode/MainActivity.kt
diff options
context:
space:
mode:
authorYuutaW <17158086+Trumeet@users.noreply.github.com>2019-03-01 08:17:07 -0800
committerYuutaW <17158086+Trumeet@users.noreply.github.com>2019-03-01 08:17:07 -0800
commitb2d08c9227953a0fd61b44672be187214a481339 (patch)
treeba1aa79610d30a7ab68659f07461aa14a2cc5306 /app/src/main/java/moe/yuuta/workmode/MainActivity.kt
parente004e1e12ecdca2296fefde5b305c8f3bd361833 (diff)
downloadWorkMode-b2d08c9227953a0fd61b44672be187214a481339.tar
WorkMode-b2d08c9227953a0fd61b44672be187214a481339.tar.gz
WorkMode-b2d08c9227953a0fd61b44672be187214a481339.tar.bz2
WorkMode-b2d08c9227953a0fd61b44672be187214a481339.zip
refactor(app): move some logic into Lifecycle Observers
Signed-off-by: YuutaW <17158086+Trumeet@users.noreply.github.com>
Diffstat (limited to 'app/src/main/java/moe/yuuta/workmode/MainActivity.kt')
-rw-r--r--app/src/main/java/moe/yuuta/workmode/MainActivity.kt76
1 files changed, 29 insertions, 47 deletions
diff --git a/app/src/main/java/moe/yuuta/workmode/MainActivity.kt b/app/src/main/java/moe/yuuta/workmode/MainActivity.kt
index 792e948..ed93f38 100644
--- a/app/src/main/java/moe/yuuta/workmode/MainActivity.kt
+++ b/app/src/main/java/moe/yuuta/workmode/MainActivity.kt
@@ -1,7 +1,10 @@
package moe.yuuta.workmode
import android.app.Activity
-import android.content.*
+import android.content.ActivityNotFoundException
+import android.content.ComponentName
+import android.content.Context
+import android.content.Intent
import android.content.pm.PackageManager
import android.graphics.drawable.Drawable
import android.net.Uri
@@ -35,12 +38,11 @@ import moe.yuuta.workmode.suspend.SuspendTile
import moe.yuuta.workmode.suspend.data.ListMode
import moe.yuuta.workmode.suspend.data.Status
import moe.yuuta.workmode.suspend.data.SuspendedStorage
-import moe.yuuta.workmode.update.Update
-import moe.yuuta.workmode.update.UpdateChecker
+import moe.yuuta.workmode.update.LifecycleUpdateChecker
import moe.yuuta.workmode.utils.Utils
import java.util.stream.Collectors
-class MainActivity : AppCompatActivity(), SwitchBar.OnSwitchChangeListener, View.OnClickListener, LicenseCheckerCallback {
+class MainActivity : AppCompatActivity(), SwitchBar.OnSwitchChangeListener, View.OnClickListener, LicenseCheckerCallback, moe.yuuta.workmode.update.Callback, LifecycleUIUpdateReceiver.Callback {
private val logger: Logger = XLog.tag("MainActivity").build()
companion object {
@@ -74,10 +76,8 @@ class MainActivity : AppCompatActivity(), SwitchBar.OnSwitchChangeListener, View
mAdapter = Adapter()
recyclerView.adapter = mAdapter
displayUI()
- val filter = IntentFilter(AccessorStarter.ACTION_UPDATE_UI_STATE)
- filter.addAction(AccessorStarter.ACTION_UPDATE_UI_PROGRESS)
- registerReceiver(mUIUpdateReceiver, filter)
- scheduleUpdateChecking()
+ lifecycle.addObserver(LifecycleUIUpdateReceiver(this, this))
+ lifecycle.addObserver(LifecycleUpdateChecker(this, this))
lifecycle.addObserver(GPL(this, lifecycle, this))
setProgressUI(false)
}
@@ -133,7 +133,6 @@ class MainActivity : AppCompatActivity(), SwitchBar.OnSwitchChangeListener, View
mStoppableGroup.stop()
mAdapter.destroy()
if (mSortDisplayStoppable != null) (mSortDisplayStoppable as Stoppable).stop()
- unregisterReceiver(mUIUpdateReceiver)
super.onDestroy()
}
@@ -203,46 +202,16 @@ class MainActivity : AppCompatActivity(), SwitchBar.OnSwitchChangeListener, View
})
}
- private val mUIUpdateReceiver = object : BroadcastReceiver() {
- override fun onReceive(context: Context?, intent: Intent?) {
- if (intent == null) return
- when (intent.action) {
- AccessorStarter.ACTION_UPDATE_UI_STATE -> {
- displayUI()
- }
- AccessorStarter.ACTION_UPDATE_UI_PROGRESS -> {
- logger.d("Updating progress from receiver")
- setProgressUI(intent.getBooleanExtra(AccessorStarter.EXTRA_SHOW_PROGRESS, false))
- }
+ override fun updateUI(intent: Intent) {
+ when (intent.action) {
+ AccessorStarter.ACTION_UPDATE_UI_STATE -> {
+ displayUI()
}
- }
- }
-
- private fun scheduleUpdateChecking() {
- mStoppableGroup.add(Async.beginTask(UpdateChecker(), object : Callback<Update> {
- override fun onStop(success: Boolean, result: Update?, e: Throwable?) {
- if (result == null) return
- if (result.version <= BuildConfig.VERSION_CODE) return
- if (!shouldOpenGooglePlay() && !result.altUrlEnabled && !result.altUrlForce) return
- Snackbar.make(findViewById(android.R.id.content),
- getString(R.string.update_available,
- result.name),
- Snackbar.LENGTH_LONG)
- .setAction(R.string.view) {
- val url = if (shouldOpenGooglePlay() && !result.altUrlForce)
- "https://play.google.com/store/apps/details?id=${BuildConfig.APPLICATION_ID}"
- else result.altUrl
- try {
- startActivity(Intent(Intent.ACTION_VIEW, Uri.parse(url)))
- } catch (ignored: ActivityNotFoundException) {}
- }
- .show()
+ AccessorStarter.ACTION_UPDATE_UI_PROGRESS -> {
+ logger.d("Updating progress from receiver")
+ setProgressUI(intent.getBooleanExtra(AccessorStarter.EXTRA_SHOW_PROGRESS, false))
}
-
- private fun shouldOpenGooglePlay(): Boolean =
- "com.android.vending" == this@MainActivity.packageManager.getInstallerPackageName(BuildConfig.APPLICATION_ID)
-
- }))
+ }
}
private val mSwitchListModeListener = object : TabLayout.OnTabSelectedListener {
@@ -365,6 +334,19 @@ class MainActivity : AppCompatActivity(), SwitchBar.OnSwitchChangeListener, View
Policy.RETRY -> SuspendedStorage(this).reportCrack("g_p_l", "rt")
}
}
+
+ override fun showToast(name: String, url: String) {
+ Snackbar.make(findViewById(android.R.id.content),
+ getString(R.string.update_available,
+ name),
+ Snackbar.LENGTH_LONG)
+ .setAction(R.string.view) {
+ try {
+ startActivity(Intent(Intent.ACTION_VIEW, Uri.parse(url)))
+ } catch (ignored: ActivityNotFoundException) {}
+ }
+ .show()
+ }
}
private class Adapter : RecyclerView.Adapter<Adapter.VH>() {