Fixes and optimize data changes

dev
Laurent 7 years ago
parent dc4635f9e8
commit 75bcc515bd
  1. 1
      app/src/main/java/net/pokeranalytics/android/ui/adapter/FeedSessionRowRepresentableAdapter.kt
  2. 2
      app/src/main/java/net/pokeranalytics/android/ui/fragment/CalendarFragment.kt
  3. 30
      app/src/main/java/net/pokeranalytics/android/ui/fragment/FeedFragment.kt
  4. 6
      app/src/main/java/net/pokeranalytics/android/ui/fragment/StatisticsFragment.kt
  5. 4
      app/src/main/java/net/pokeranalytics/android/ui/fragment/components/RealmFragment.kt

@ -76,7 +76,6 @@ class FeedSessionRowRepresentableAdapter(
}
override fun getItemViewType(position: Int): Int {
if (sortedHeaders.containsKey(position)) {
return RowViewType.HEADER_TITLE.ordinal

@ -117,7 +117,7 @@ class CalendarFragment : RealmFragment(), CoroutineScope, StaticRowRepresentable
override val observedEntities: List<Class<out RealmModel>> = listOf(ComputableResult::class.java)
override fun entitiesChanged() {
override fun entitiesChanged(clazz: Class<out RealmModel>) {
launchStatComputation()
}

@ -11,6 +11,7 @@ import androidx.core.app.ActivityOptionsCompat
import androidx.core.view.isVisible
import androidx.interpolator.view.animation.FastOutSlowInInterpolator
import com.google.android.material.tabs.TabLayout
import io.realm.RealmModel
import io.realm.RealmResults
import io.realm.Sort
import io.realm.kotlin.where
@ -61,6 +62,24 @@ class FeedFragment : FilterableFragment(), RowRepresentableDelegate {
private var selectedTransaction: Transaction? = null
private var selectedTransactionPosition: Int = -1
override val observedEntities: List<Class<out RealmModel>> = listOf(Session::class.java, Transaction::class.java)
override fun entitiesChanged(clazz: Class<out RealmModel>) {
super.entitiesChanged(clazz)
when (clazz.kotlin) {
Session::class -> {
this.feedSessionAdapter.refreshData()
this.feedSessionAdapter.notifyDataSetChanged()
}
Transaction::class -> {
this.feedTransactionAdapter.refreshData()
this.feedTransactionAdapter.notifyDataSetChanged()
}
}
}
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
super.onCreateView(inflater, container, savedInstanceState)
return inflater.inflate(R.layout.fragment_feed, container, false)
@ -200,12 +219,9 @@ class FeedFragment : FilterableFragment(), RowRepresentableDelegate {
}
// Sessions
this.realmSessions = sessionFilter?.results() ?: run { getRealm().where<Session>().isNotNull("startDate").findAll() }
this.realmSessions =
sessionFilter?.results() ?: run { getRealm().where<Session>().isNotNull("startDate").findAll() }
this.realmSessions = this.realmSessions.sort("startDate", Sort.DESCENDING)
this.realmSessions.addChangeListener { _, _ ->
this.feedSessionAdapter.refreshData()
this.feedSessionAdapter.notifyDataSetChanged()
}
val pendingSessions = sessionFilter?.let {
getRealm().where<Session>().alwaysFalse().findAll()
@ -232,10 +248,6 @@ class FeedFragment : FilterableFragment(), RowRepresentableDelegate {
// Transactions
this.realmTransactions = transactionFilter?.results() ?: run { getRealm().where<Transaction>().findAll() }
this.realmTransactions = this.realmTransactions.sort("date", Sort.DESCENDING)
this.realmTransactions.addChangeListener { _, _ ->
this.feedTransactionAdapter.refreshData()
this.feedTransactionAdapter.notifyDataSetChanged()
}
var distinctDateTransactions = transactionFilter?.results("year", "month") ?: run {
getRealm().where<Transaction>().distinct("year", "month").findAll()

@ -73,7 +73,7 @@ class StatisticsFragment : FilterableFragment() {
override val observedEntities: List<Class<out RealmModel>> = listOf(ComputableResult::class.java)
override fun entitiesChanged() {
override fun entitiesChanged(clazz: Class<out RealmModel>) {
this.launchStatComputation()
}
@ -103,12 +103,12 @@ class StatisticsFragment : FilterableFragment() {
override fun applyFilter() {
super.applyFilter()
this.entitiesChanged()
this.launchStatComputation()
}
override fun removeFilter() {
super.removeFilter()
this.entitiesChanged()
this.launchStatComputation()
}
override var currentFilterable: FilterableType = FilterableType.SESSION

@ -27,7 +27,7 @@ open class RealmFragment : PokerAnalyticsFragment() {
val realmResults = realm.where(it).findAll()
realmResults.addChangeListener { _,_ ->
this.entitiesChanged()
this.entitiesChanged(it)
}
this.observedRealmResults.add(realmResults)
@ -61,6 +61,6 @@ open class RealmFragment : PokerAnalyticsFragment() {
/**
* The method called when a change happened in any RealmResults
*/
open fun entitiesChanged() {}
open fun entitiesChanged(clazz: Class<out RealmModel>) {}
}
Loading…
Cancel
Save