aboutsummaryrefslogtreecommitdiff
path: root/app/src/main/kotlin/com/pitchedapps/frost/activities/BaseMainActivity.kt
diff options
context:
space:
mode:
authorAllan Wang <me@allanwang.ca>2018-01-18 23:23:56 -0500
committerAllan Wang <me@allanwang.ca>2018-01-20 16:42:37 -0500
commitd766100c297bc094491de150f24c04719ffa8f4e (patch)
treeb69863dace2fcb45d5fd25c276ca450e07305c44 /app/src/main/kotlin/com/pitchedapps/frost/activities/BaseMainActivity.kt
parent78b3cc41e4c9f8d141ad46ee75e476fa2d177f19 (diff)
downloadfrost-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.kt68
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()
}