aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKazuki Yamaguchi <k@rhe.jp>2017-10-15 23:50:54 +0900
committerKazuki Yamaguchi <k@rhe.jp>2017-10-15 23:50:54 +0900
commita45a6b24126d023f1ea2e28216c612860afd051f (patch)
tree259733e4f2c22c780e3f812d741c46c2d0c2b99a
parent3d7252fd5337d9d1acbca2db92ed88b638986f1e (diff)
downloadSmileEssence-a45a6b24126d023f1ea2e28216c612860afd051f.tar.gz
refactor init code
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/Application.kt5
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/World.kt58
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/activity/MainActivity.kt30
3 files changed, 37 insertions, 56 deletions
diff --git a/app/src/main/java/net/lacolaco/smileessence/Application.kt b/app/src/main/java/net/lacolaco/smileessence/Application.kt
index cefc2aa5..075f134f 100644
--- a/app/src/main/java/net/lacolaco/smileessence/Application.kt
+++ b/app/src/main/java/net/lacolaco/smileessence/Application.kt
@@ -5,6 +5,7 @@ import android.widget.Toast
import com.squareup.leakcanary.LeakCanary
import net.lacolaco.smileessence.data.Account
import net.lacolaco.smileessence.data.DbHelper
+import net.lacolaco.smileessence.data.ExtractionWord
import java.lang.ref.WeakReference
import java.util.*
@@ -18,7 +19,9 @@ class Application : android.app.Application() {
instance = this
DbHelper.setup(this)
Account.load()
- }
+
+ // XXX
+ ExtractionWord.load()}
companion object {
lateinit var instance: Application
diff --git a/app/src/main/java/net/lacolaco/smileessence/World.kt b/app/src/main/java/net/lacolaco/smileessence/World.kt
index e74c9fa8..80b04d31 100644
--- a/app/src/main/java/net/lacolaco/smileessence/World.kt
+++ b/app/src/main/java/net/lacolaco/smileessence/World.kt
@@ -3,7 +3,6 @@ package net.lacolaco.smileessence
import android.content.Intent
import android.support.annotation.StringRes
import android.support.design.widget.Snackbar
-import kotlinx.android.synthetic.main.layout_main.*
import net.lacolaco.smileessence.activity.MainActivity
import net.lacolaco.smileessence.compat.Twitter4J
import net.lacolaco.smileessence.data.Account
@@ -14,12 +13,9 @@ import net.lacolaco.smileessence.entity.Tweet
import net.lacolaco.smileessence.logging.Logger
import net.lacolaco.smileessence.twitter.TwitterTaskException
import net.lacolaco.smileessence.twitter.UserStreamListener
-import net.lacolaco.smileessence.twitter.task.getBlocksIdsAsync
-import net.lacolaco.smileessence.twitter.task.getMutesIdsAsync
-import net.lacolaco.smileessence.twitter.task.getSavedSearchesAsync
-import net.lacolaco.smileessence.twitter.task.getUserListsAsync
-import net.lacolaco.smileessence.util.UIHandler
+import net.lacolaco.smileessence.twitter.task.*
import net.lacolaco.smileessence.util.launchBg
+import net.lacolaco.smileessence.util.launchUi
import twitter4j.TwitterStream
import java.lang.ref.WeakReference
import java.util.*
@@ -53,6 +49,25 @@ class World(val account: Account) {
private var mainActivity: WeakReference<MainActivity>? = null
private var isMainActivityActive: Boolean = false
+ // Startup
+
+ private var initialized = false
+ fun setup() {
+ if (initialized)
+ return
+ initialized = true
+
+ refreshListSubscriptions()
+ refreshUserMuteList()
+ refreshSavedSearches()
+
+ stream = account.twitterStream
+ userStreamListener = UserStreamListener(this)
+ Twitter4J.twitterStreamAddListener(stream!!, userStreamListener!!)
+ stream!!.addConnectionLifeCycleListener(userStreamListener)
+ stream!!.user()
+ }
+
// MainActivity holder
fun setMainActivity(activity: MainActivity) {
@@ -125,16 +140,6 @@ class World(val account: Account) {
// Streaming APIs
- fun setupStreaming() {
- if (stream == null) {
- stream = account.twitterStream
- userStreamListener = UserStreamListener(this)
- Twitter4J.twitterStreamAddListener(stream!!, userStreamListener!!)
- stream!!.addConnectionLifeCycleListener(userStreamListener)
- stream!!.user()
- }
- }
-
val isStreaming: Boolean
get() = stream != null && userStreamListener!!.isConnected
@@ -214,19 +219,14 @@ class World(val account: Account) {
}
private fun doNotify(type: NotificationType, text: String) {
- val activity = mainActivity?.get()
- if (activity == null || activity.isFinishing) {
- Logger.debug(String.format("notify(log): %s", text))
- } else {
- UIHandler().post {
- if (isMainActivityActive) {
- // TODO: Make errors distinguishable
- Logger.debug("notify(snackbar): $text")
- Snackbar.make(activity.viewPager, text, Snackbar.LENGTH_SHORT).show()
- } else {
- Logger.debug(String.format("notify(toast): %s", text))
- Application.toast(text)
- }
+ launchUi {
+ if (isMainActivityActive) {
+ // TODO: Make errors distinguishable
+ Logger.debug("notify(snackbar): $text")
+ Snackbar.make(mainActivity!!.get()!!.findViewById(android.R.id.content), text, Snackbar.LENGTH_SHORT).show()
+ } else {
+ Logger.debug(String.format("notify(toast): %s", text))
+ Application.toast(text)
}
}
}
diff --git a/app/src/main/java/net/lacolaco/smileessence/activity/MainActivity.kt b/app/src/main/java/net/lacolaco/smileessence/activity/MainActivity.kt
index d738d6b4..249121f5 100644
--- a/app/src/main/java/net/lacolaco/smileessence/activity/MainActivity.kt
+++ b/app/src/main/java/net/lacolaco/smileessence/activity/MainActivity.kt
@@ -14,12 +14,10 @@ import android.support.v7.graphics.Palette
import android.text.TextUtils
import android.view.Menu
import android.view.MenuItem
-import android.view.WindowManager
import kotlinx.android.synthetic.main.layout_main.*
import net.lacolaco.smileessence.Application
import net.lacolaco.smileessence.R
import net.lacolaco.smileessence.World
-import net.lacolaco.smileessence.data.ExtractionWord
import net.lacolaco.smileessence.entity.Tweet
import net.lacolaco.smileessence.entity.User
import net.lacolaco.smileessence.logging.Logger
@@ -257,14 +255,12 @@ class MainActivity : AppCompatActivity(), ViewPager.OnPageChangeListener {
world.setMainActivity(this)
- // XXX
- val account = world.account
- setTheme(if (account.useDarkTheme) R.style.theme_dark else R.style.theme_light)
+ setTheme(if (world.account.useDarkTheme) R.style.theme_dark else R.style.theme_light)
setContentView(R.layout.layout_main)
setSupportActionBar(toolbar)
val args = Bundle()
- args.putLong(PageFragment.KEY_WORLD_USER_ID, account.id)
+ args.putLong(PageFragment.KEY_WORLD_USER_ID, world.account.id)
pagerAdapter = MainFragmentPagerAdapter(fragmentManager, viewPager)
pagerAdapter.addPage(TAG_PAGE_POST, PostFragment::class.java, args)
pagerAdapter.addPage(TAG_PAGE_HOME, HomeFragment::class.java, args)
@@ -289,29 +285,11 @@ class MainActivity : AppCompatActivity(), ViewPager.OnPageChangeListener {
viewPager.adapter = pagerAdapter
viewPager.setCurrentItem(pagerAdapter.getPageIndex(TAG_PAGE_HOME), false)
- ExtractionWord.load()
-
- // update cache
- world.refreshListSubscriptions()
- world.refreshUserMuteList()
- world.refreshSavedSearches()
-
- launchUi {
- try {
- world.getUserAsync(world.account.id)
- } catch (e: TwitterTaskException) {
- return@launchUi
- }
- setTitle()
- }
-
// Set application title
setTitle()
- // start user stream
- world.setupStreaming()
-
- window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)
+ // Fetch necessary data & start streaming API if needed
+ world.setup()
}
override fun onCreateOptionsMenu(menu: Menu): Boolean {