diff options
author | Allan Wang <me@allanwang.ca> | 2018-01-18 23:23:56 -0500 |
---|---|---|
committer | Allan Wang <me@allanwang.ca> | 2018-01-20 16:42:37 -0500 |
commit | d766100c297bc094491de150f24c04719ffa8f4e (patch) | |
tree | b69863dace2fcb45d5fd25c276ca450e07305c44 /app/src/main/kotlin/com/pitchedapps/frost/activities/BaseMainActivity.kt | |
parent | 78b3cc41e4c9f8d141ad46ee75e476fa2d177f19 (diff) | |
download | frost-d766100c297bc094491de150f24c04719ffa8f4e.tar.gz frost-d766100c297bc094491de150f24c04719ffa8f4e.tar.bz2 frost-d766100c297bc094491de150f24c04719ffa8f4e.zip |
Enhancement/speed up (#650)
* Revert back to m.facebook
* Add initial speedup
* Update theme
* Fix link press for event status
* Move web states to fb const
* Fix images and email
* Fix up flyweight for requests
* Ensure frost request is synchronous
* Prepare diff utils
* Improve speed and fix blank overlay
* Update comments
* Add debugger and fix searchview
* Theme discover pages. Resolves #654
* Fix duplicate reload
* Fix image loading
* Update changelog
* Update tests
* Rename test
Update dependencies
Update gitignore
Diffstat (limited to 'app/src/main/kotlin/com/pitchedapps/frost/activities/BaseMainActivity.kt')
-rw-r--r-- | app/src/main/kotlin/com/pitchedapps/frost/activities/BaseMainActivity.kt | 68 |
1 files changed, 39 insertions, 29 deletions
diff --git a/app/src/main/kotlin/com/pitchedapps/frost/activities/BaseMainActivity.kt b/app/src/main/kotlin/com/pitchedapps/frost/activities/BaseMainActivity.kt index 3a01e05b..743ac474 100644 --- a/app/src/main/kotlin/com/pitchedapps/frost/activities/BaseMainActivity.kt +++ b/app/src/main/kotlin/com/pitchedapps/frost/activities/BaseMainActivity.kt @@ -67,8 +67,6 @@ import com.pitchedapps.frost.utils.iab.IabMain import com.pitchedapps.frost.views.BadgedIcon import com.pitchedapps.frost.views.FrostVideoViewer import com.pitchedapps.frost.views.FrostViewPager -import org.jetbrains.anko.doAsync -import org.jetbrains.anko.uiThread /** * Created by Allan Wang on 20/12/17. @@ -94,10 +92,30 @@ abstract class BaseMainActivity : BaseActivity(), MainActivityContract, override var searchView: SearchView? = null private val searchViewCache = mutableMapOf<String, List<SearchItem>>() - private lateinit var controlWebview: WebView + private var controlWebview: WebView? = null - override fun onCreate(savedInstanceState: Bundle?) { + override final fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) + val start = System.currentTimeMillis() + setFrameContentView(Prefs.mainActivityLayout.layoutRes) + setFrostColors { + toolbar(toolbar) + themeWindow = false + header(appBar) + background(viewPager) + } + L.i { "Main AAA ${System.currentTimeMillis() - start} ms" } + setSupportActionBar(toolbar) + adapter = SectionsPagerAdapter(loadFbTabs()) + viewPager.adapter = adapter + viewPager.offscreenPageLimit = TAB_COUNT + L.i { "Main BBB ${System.currentTimeMillis() - start} ms" } + L.i { "Main CCC ${System.currentTimeMillis() - start} ms" } + tabs.setBackgroundColor(Prefs.mainActivityLayout.backgroundColor()) + onNestedCreate(savedInstanceState) + L.i { "Main finished loading UI in ${System.currentTimeMillis() - start} ms" } + controlWebview = WebView(this) + onCreateBilling() if (BuildConfig.VERSION_CODE > Prefs.versionCode) { Prefs.prevVersionCode = Prefs.versionCode Prefs.versionCode = BuildConfig.VERSION_CODE @@ -111,24 +129,15 @@ abstract class BaseMainActivity : BaseActivity(), MainActivityContract, "Frost id" to Prefs.frostId) } } - controlWebview = WebView(this) - setFrameContentView(Prefs.mainActivityLayout.layoutRes) - setSupportActionBar(toolbar) - adapter = SectionsPagerAdapter(loadFbTabs()) - viewPager.adapter = adapter - viewPager.offscreenPageLimit = TAB_COUNT setupDrawer(savedInstanceState) - - setFrostColors { - toolbar(toolbar) - themeWindow = false - header(appBar) - background(viewPager) - } - tabs.setBackgroundColor(Prefs.mainActivityLayout.backgroundColor()) - onCreateBilling() + L.i { "Main started in ${System.currentTimeMillis() - start} ms" } } + /** + * Injector to handle creation for sub classes + */ + protected abstract fun onNestedCreate(savedInstanceState: Bundle?) + fun tabsForEachView(action: (position: Int, view: BadgedIcon) -> Unit) { (0 until tabs.tabCount).asSequence().forEach { i -> @@ -263,19 +272,20 @@ abstract class BaseMainActivity : BaseActivity(), MainActivityContract, R.id.action_search to GoogleMaterial.Icon.gmd_search) searchViewBindIfNull { bindSearchView(menu, R.id.action_search, Prefs.iconColor) { - textCallback = { query, _ -> + textCallback = { query, searchView -> val results = searchViewCache[query] if (results != null) - runOnUiThread { searchView?.results = results } - else - doAsync { - val data = SearchParser.query(FbCookie.webCookie, query)?.data?.results ?: return@doAsync + searchView.results = results + else { + val data = SearchParser.query(FbCookie.webCookie, query)?.data?.results + if (data != null) { val items = data.map(FrostSearch::toSearchItem).toMutableList() if (items.isNotEmpty()) items.add(SearchItem("${FbItem._SEARCH.url}?q=$query", string(R.string.show_all_results), iicon = null)) searchViewCache.put(query, items) - uiThread { searchView?.results = items } + searchView.results = items } + } } textDebounceInterval = 300 searchCallback = { query, _ -> launchWebOverlay("${FbItem._SEARCH.url}/?q=$query"); true } @@ -351,12 +361,12 @@ abstract class BaseMainActivity : BaseActivity(), MainActivityContract, override fun onResume() { super.onResume() - FbCookie.switchBackUser { } - controlWebview.resumeTimers() + FbCookie.switchBackUser {} + controlWebview?.resumeTimers() } override fun onPause() { - controlWebview.pauseTimers() + controlWebview?.pauseTimers() L.v { "Pause main web timers" } super.onPause() } @@ -371,7 +381,7 @@ abstract class BaseMainActivity : BaseActivity(), MainActivityContract, override fun onDestroy() { onDestroyBilling() - controlWebview.destroy() + controlWebview?.destroy() super.onDestroy() } |