diff options
author | Kazuki Yamaguchi <k@rhe.jp> | 2017-10-15 23:50:54 +0900 |
---|---|---|
committer | Kazuki Yamaguchi <k@rhe.jp> | 2017-10-15 23:50:54 +0900 |
commit | a45a6b24126d023f1ea2e28216c612860afd051f (patch) | |
tree | 259733e4f2c22c780e3f812d741c46c2d0c2b99a | |
parent | 3d7252fd5337d9d1acbca2db92ed88b638986f1e (diff) | |
download | SmileEssence-a45a6b24126d023f1ea2e28216c612860afd051f.tar.gz |
refactor init code
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 { |