diff --git a/app/src/main/java/net/pokeranalytics/android/ui/adapter/FeedSessionRowRepresentableAdapter.kt b/app/src/main/java/net/pokeranalytics/android/ui/adapter/FeedSessionRowRepresentableAdapter.kt index c3ceb54a..405167e7 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/adapter/FeedSessionRowRepresentableAdapter.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/adapter/FeedSessionRowRepresentableAdapter.kt @@ -76,7 +76,6 @@ class FeedSessionRowRepresentableAdapter( } - override fun getItemViewType(position: Int): Int { if (sortedHeaders.containsKey(position)) { return RowViewType.HEADER_TITLE.ordinal diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/CalendarFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/CalendarFragment.kt index 238f7f5c..e74e97bb 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/CalendarFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/CalendarFragment.kt @@ -117,7 +117,7 @@ class CalendarFragment : RealmFragment(), CoroutineScope, StaticRowRepresentable override val observedEntities: List> = listOf(ComputableResult::class.java) - override fun entitiesChanged() { + override fun entitiesChanged(clazz: Class) { launchStatComputation() } diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/FeedFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/FeedFragment.kt index f109db23..52fed18e 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/FeedFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/FeedFragment.kt @@ -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> = listOf(Session::class.java, Transaction::class.java) + + override fun entitiesChanged(clazz: Class) { + 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().isNotNull("startDate").findAll() } + this.realmSessions = + sessionFilter?.results() ?: run { getRealm().where().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().alwaysFalse().findAll() @@ -232,10 +248,6 @@ class FeedFragment : FilterableFragment(), RowRepresentableDelegate { // Transactions this.realmTransactions = transactionFilter?.results() ?: run { getRealm().where().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().distinct("year", "month").findAll() diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/StatisticsFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/StatisticsFragment.kt index 124119fd..1003f057 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/StatisticsFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/StatisticsFragment.kt @@ -73,7 +73,7 @@ class StatisticsFragment : FilterableFragment() { override val observedEntities: List> = listOf(ComputableResult::class.java) - override fun entitiesChanged() { + override fun entitiesChanged(clazz: Class) { 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 diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/RealmFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/RealmFragment.kt index 77782aaa..8c583927 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/RealmFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/RealmFragment.kt @@ -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) {} } \ No newline at end of file