Fixes feed refresh issues

csv
Laurent 6 years ago
parent ced0cb7e28
commit 79542a5f32
  1. 32
      app/src/main/java/net/pokeranalytics/android/ui/adapter/FeedSessionRowRepresentableAdapter.kt
  2. 9
      app/src/main/java/net/pokeranalytics/android/ui/fragment/FeedFragment.kt

@ -43,7 +43,7 @@ class FeedSessionRowRepresentableAdapter(
var filter: Filter? = null var filter: Filter? = null
set(value) { set(value) {
field = value field = value
filterChanged() defineSessions()
refreshData() refreshData()
} }
@ -58,17 +58,6 @@ class FeedSessionRowRepresentableAdapter(
.sort("startDate", Sort.DESCENDING) .sort("startDate", Sort.DESCENDING)
this.pendingSessions = requestNewQuery().isNull("startDate").findAll() this.pendingSessions = requestNewQuery().isNull("startDate").findAll()
.sort("creationDate", Sort.DESCENDING) .sort("creationDate", Sort.DESCENDING)
// listeners
this.startedSessions.addChangeListener { _, _ ->
// Timber.d("---> started session change")
refreshData()
}
this.pendingSessions.addChangeListener { _, _ ->
// Timber.d("---> pending session change")
refreshData()
}
} }
private fun requestNewQuery() : RealmQuery<Session> { private fun requestNewQuery() : RealmQuery<Session> {
@ -79,14 +68,6 @@ class FeedSessionRowRepresentableAdapter(
} }
} }
private fun filterChanged() {
this.startedSessions.removeAllChangeListeners()
this.pendingSessions.removeAllChangeListeners()
defineSessions()
}
/** /**
* Display a session view * Display a session view
*/ */
@ -189,12 +170,12 @@ class FeedSessionRowRepresentableAdapter(
/** /**
* Refresh headers positions * Refresh headers positions
*/ */
private fun refreshData() { fun refreshData() {
allSessions.clear() allSessions.clear()
allSessions.addAll(this.pendingSessions) allSessions.addAll(this.pendingSessions)
allSessions.addAll(this.startedSessions) allSessions.addAll(this.startedSessions)
Timber.d("All sessions count = ${allSessions.size}") Timber.d("Update session list, total count = ${allSessions.size}")
val headersPositions = HashMap<Int, Date?>() val headersPositions = HashMap<Int, Date?>()
@ -222,8 +203,6 @@ class FeedSessionRowRepresentableAdapter(
} }
sortedHeaders = headersPositions.toSortedMap() sortedHeaders = headersPositions.toSortedMap()
this.notifyDataSetChanged()
Timber.d("Create viewTypesPositions in: ${System.currentTimeMillis() - start}ms") Timber.d("Create viewTypesPositions in: ${System.currentTimeMillis() - start}ms")
} }
@ -235,9 +214,4 @@ class FeedSessionRowRepresentableAdapter(
return currentCalendar.get(Calendar.YEAR) == previousYear && currentCalendar.get(Calendar.MONTH) < previousMonth || (currentCalendar.get(Calendar.YEAR) < previousYear) return currentCalendar.get(Calendar.YEAR) == previousYear && currentCalendar.get(Calendar.MONTH) < previousMonth || (currentCalendar.get(Calendar.YEAR) < previousYear)
} }
fun destroy() {
this.startedSessions.removeAllChangeListeners()
this.pendingSessions.removeAllChangeListeners()
}
} }

@ -69,15 +69,17 @@ class FeedFragment : FilterableFragment(), RowRepresentableDelegate {
private var selectedTransaction: Transaction? = null private var selectedTransaction: Transaction? = null
private var selectedTransactionPosition: Int = -1 private var selectedTransactionPosition: Int = -1
override val observedEntities: List<Class<out RealmModel>> = listOf(Transaction::class.java) override val observedEntities: List<Class<out RealmModel>> = listOf(Session::class.java, Transaction::class.java)
override fun entitiesChanged(clazz: Class<out RealmModel>, results: RealmResults<out RealmModel>) { override fun entitiesChanged(clazz: Class<out RealmModel>, results: RealmResults<out RealmModel>) {
super.entitiesChanged(clazz, results) super.entitiesChanged(clazz, results)
when (clazz.kotlin) { when (clazz.kotlin) {
Transaction::class -> { Session::class -> {
this.feedTransactionAdapter.refreshData() this.feedSessionAdapter.refreshData()
this.feedSessionAdapter.notifyDataSetChanged()
} }
Transaction::class -> this.feedTransactionAdapter.refreshData()
} }
} }
@ -147,7 +149,6 @@ class FeedFragment : FilterableFragment(), RowRepresentableDelegate {
override fun onDestroyView() { override fun onDestroyView() {
super.onDestroyView() super.onDestroyView()
feedSessionAdapter.destroy()
realmTransactions.removeAllChangeListeners() realmTransactions.removeAllChangeListeners()
} }

Loading…
Cancel
Save