From e534aa5617a6aae467f7753b54c71cbcd96b9f76 Mon Sep 17 00:00:00 2001 From: Laurent Date: Tue, 25 Jun 2019 16:24:13 +0200 Subject: [PATCH 1/6] Fixes top10 sorting --- .../android/ui/fragment/Top10Fragment.kt | 139 +++++++++++------- 1 file changed, 83 insertions(+), 56 deletions(-) diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/Top10Fragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/Top10Fragment.kt index de66ee2b..9b8f088b 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/Top10Fragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/Top10Fragment.kt @@ -6,7 +6,6 @@ import android.view.View import android.view.ViewGroup import com.google.android.material.tabs.TabLayout import io.realm.RealmResults -import io.realm.Sort import io.realm.kotlin.where import kotlinx.android.synthetic.main.fragment_top_10.* import net.pokeranalytics.android.R @@ -36,9 +35,11 @@ class Top10Fragment : RealmFragment(), RowRepresentableDataSource, RowRepresenta } } + private lateinit var positiveSessions: RealmResults private lateinit var dataListAdapter: RowRepresentableAdapter - private lateinit var realmCashGames: RealmResults - private lateinit var realmTournaments: RealmResults + + private var realmCashGames: List = mutableListOf() + private var realmTournaments: List = mutableListOf() private var currentTab: Tab = Tab.CASH_GAMES @@ -54,63 +55,12 @@ class Top10Fragment : RealmFragment(), RowRepresentableDataSource, RowRepresenta } /** - * Init data + * Init UI */ - private fun initData() { - - this.realmCashGames = getRealm().where() - .equalTo("type", Session.Type.CASH_GAME.ordinal) - .greaterThanOrEqualTo("result.net", 0.0) - .sort("result.net", Sort.DESCENDING) - .limit(10) - .findAll() - this.realmCashGames.addChangeListener { _, _ -> - this.dataListAdapter.notifyDataSetChanged() - } - - this.realmTournaments = getRealm().where() - .equalTo("type", Session.Type.TOURNAMENT.ordinal) - .greaterThanOrEqualTo("result.net", 0.0) - .sort("result.net", Sort.DESCENDING) - .limit(10) - .findAll() - this.realmTournaments.addChangeListener { _, _ -> - this.dataListAdapter.notifyDataSetChanged() - } + private fun initUI() { dataListAdapter = RowRepresentableAdapter(this, this) recyclerView.adapter = dataListAdapter - } - - override fun adapterRows(): List? { - return when (currentTab) { - Tab.CASH_GAMES -> realmCashGames - Tab.TOURNAMENTS -> realmTournaments - } - } - - override fun rowRepresentableForPosition(position: Int): RowRepresentable? { - return when (currentTab) { - Tab.CASH_GAMES -> realmCashGames[position] - Tab.TOURNAMENTS -> realmTournaments[position] - } - } - - override fun numberOfRows(): Int { - return when (currentTab) { - Tab.CASH_GAMES -> realmCashGames.size - Tab.TOURNAMENTS -> realmTournaments.size - } - } - - override fun viewTypeForPosition(position: Int): Int { - return RowViewType.ROW_TOP_10.ordinal - } - - /** - * Init UI - */ - private fun initUI() { setDisplayHomeAsUpEnabled(true) @@ -144,4 +94,81 @@ class Top10Fragment : RealmFragment(), RowRepresentableDataSource, RowRepresenta } + /** + * Init data + */ + private fun initData() { + + this.positiveSessions = getRealm().where() + .greaterThanOrEqualTo("result.net", 0.0) + .findAll() + + updateTop10() + + } + + private fun updateTop10() { + + val cashGames = mutableListOf() + val tournaments = mutableListOf() + + // filter by type: cash game or tournament + this.positiveSessions.forEach { + when (it.type) { + Session.Type.CASH_GAME.ordinal -> { + cashGames.add(it) + } + else -> { + tournaments.add(it) + } + } + } + + // Sort by rated net + val sortedCashGames = cashGames.sortedByDescending { + it.computableResult?.ratedNet + }.toMutableList() + val sortedTournaments = tournaments.sortedByDescending { + it.computableResult?.ratedNet + }.toMutableList() + + // Keep 10 items + if (sortedCashGames.size > 10) { + sortedCashGames.subList(10, sortedCashGames.size).clear() + } + if (sortedTournaments.size > 10) { + sortedTournaments.subList(10, sortedTournaments.size).clear() + } + + this.realmCashGames = sortedCashGames + this.realmTournaments = sortedTournaments + + dataListAdapter.notifyDataSetChanged() + } + + override fun adapterRows(): List? { + return when (currentTab) { + Tab.CASH_GAMES -> realmCashGames + Tab.TOURNAMENTS -> realmTournaments + } + } + + override fun rowRepresentableForPosition(position: Int): RowRepresentable? { + return when (currentTab) { + Tab.CASH_GAMES -> realmCashGames[position] + Tab.TOURNAMENTS -> realmTournaments[position] + } + } + + override fun numberOfRows(): Int { + return when (currentTab) { + Tab.CASH_GAMES -> realmCashGames.size + Tab.TOURNAMENTS -> realmTournaments.size + } + } + + override fun viewTypeForPosition(position: Int): Int { + return RowViewType.ROW_TOP_10.ordinal + } + } \ No newline at end of file From c0b00c0286039172ac37e73c015dc41528b469f6 Mon Sep 17 00:00:00 2001 From: Laurent Date: Tue, 25 Jun 2019 16:51:20 +0200 Subject: [PATCH 2/6] Adds Transaction Types sorting by count --- .../android/PokerAnalyticsApplication.kt | 2 +- .../model/interfaces/CountableUsage.kt | 4 +++ .../migrations/PokerAnalyticsMigration.kt | 7 +++++ .../android/model/realm/Filter.kt | 3 ++ .../android/model/realm/Game.kt | 4 +++ .../android/model/realm/TournamentFeature.kt | 4 +++ .../android/model/realm/TransactionType.kt | 29 ++++++------------- .../FeedSessionRowRepresentableAdapter.kt | 10 ++++++- .../android/ui/fragment/FeedFragment.kt | 15 +++++----- .../util/extensions/RealmExtensions.kt | 13 +++++---- 10 files changed, 57 insertions(+), 34 deletions(-) diff --git a/app/src/main/java/net/pokeranalytics/android/PokerAnalyticsApplication.kt b/app/src/main/java/net/pokeranalytics/android/PokerAnalyticsApplication.kt index 1b81d955..ba3e26ba 100644 --- a/app/src/main/java/net/pokeranalytics/android/PokerAnalyticsApplication.kt +++ b/app/src/main/java/net/pokeranalytics/android/PokerAnalyticsApplication.kt @@ -33,7 +33,7 @@ class PokerAnalyticsApplication : Application() { Realm.init(this) val realmConfiguration = RealmConfiguration.Builder() .name(Realm.DEFAULT_REALM_NAME) - .schemaVersion(6) + .schemaVersion(7) .migration(PokerAnalyticsMigration()) .initialData(Seed(this)) .build() diff --git a/app/src/main/java/net/pokeranalytics/android/model/interfaces/CountableUsage.kt b/app/src/main/java/net/pokeranalytics/android/model/interfaces/CountableUsage.kt index 3d03abdb..10a5137b 100644 --- a/app/src/main/java/net/pokeranalytics/android/model/interfaces/CountableUsage.kt +++ b/app/src/main/java/net/pokeranalytics/android/model/interfaces/CountableUsage.kt @@ -1,5 +1,7 @@ package net.pokeranalytics.android.model.interfaces +import io.realm.RealmModel + /** * An interface to be able to track the usage of an object */ @@ -7,4 +9,6 @@ interface CountableUsage : Identifiable { var useCount: Int get() { return 0 } set(_) {} + + val ownerClass: Class } \ No newline at end of file diff --git a/app/src/main/java/net/pokeranalytics/android/model/migrations/PokerAnalyticsMigration.kt b/app/src/main/java/net/pokeranalytics/android/model/migrations/PokerAnalyticsMigration.kt index 996f6da0..687fff28 100644 --- a/app/src/main/java/net/pokeranalytics/android/model/migrations/PokerAnalyticsMigration.kt +++ b/app/src/main/java/net/pokeranalytics/android/model/migrations/PokerAnalyticsMigration.kt @@ -144,6 +144,13 @@ class PokerAnalyticsMigration : RealmMigration { schema.get("Filter")?.removeField("usageCount") currentVersion++ } + + // Migrate to version 7 + if (currentVersion == 6) { + Timber.d("*** Running migration ${currentVersion + 1}") + schema.get("TransactionType")?.addField("useCount", Int::class.java) + currentVersion++ + } } override fun equals(other: Any?): Boolean { diff --git a/app/src/main/java/net/pokeranalytics/android/model/realm/Filter.kt b/app/src/main/java/net/pokeranalytics/android/model/realm/Filter.kt index cf729205..00f9ff51 100644 --- a/app/src/main/java/net/pokeranalytics/android/model/realm/Filter.kt +++ b/app/src/main/java/net/pokeranalytics/android/model/realm/Filter.kt @@ -75,6 +75,9 @@ open class Filter : RealmObject(), RowRepresentable, Editable, Deletable, Counta override var useCount: Int = 0 + @Ignore + override val ownerClass: Class = Session::class.java + var filterConditions: RealmList = RealmList() private set diff --git a/app/src/main/java/net/pokeranalytics/android/model/realm/Game.kt b/app/src/main/java/net/pokeranalytics/android/model/realm/Game.kt index 9ee4dcc6..da713f05 100644 --- a/app/src/main/java/net/pokeranalytics/android/model/realm/Game.kt +++ b/app/src/main/java/net/pokeranalytics/android/model/realm/Game.kt @@ -2,6 +2,7 @@ package net.pokeranalytics.android.model.realm import android.content.Context import io.realm.Realm +import io.realm.RealmModel import io.realm.RealmObject import io.realm.annotations.Ignore import io.realm.annotations.PrimaryKey @@ -46,6 +47,9 @@ open class Game : RealmObject(), NameManageable, StaticRowRepresentableDataSourc // CountableUsage override var useCount: Int = 0 + @Ignore + override val ownerClass: Class = Session::class.java + fun getNotNullShortName() : String { this.shortName?.let { return it diff --git a/app/src/main/java/net/pokeranalytics/android/model/realm/TournamentFeature.kt b/app/src/main/java/net/pokeranalytics/android/model/realm/TournamentFeature.kt index 5a51c448..d0f937e2 100644 --- a/app/src/main/java/net/pokeranalytics/android/model/realm/TournamentFeature.kt +++ b/app/src/main/java/net/pokeranalytics/android/model/realm/TournamentFeature.kt @@ -2,6 +2,7 @@ package net.pokeranalytics.android.model.realm import android.content.Context import io.realm.Realm +import io.realm.RealmModel import io.realm.RealmObject import io.realm.annotations.Ignore import io.realm.annotations.PrimaryKey @@ -44,6 +45,9 @@ open class TournamentFeature : RealmObject(), NameManageable, StaticRowRepresent // CountableUsage override var useCount: Int = 0 + @Ignore + override val ownerClass: Class = Session::class.java + override fun getDisplayName(context: Context): String { return this.name } diff --git a/app/src/main/java/net/pokeranalytics/android/model/realm/TransactionType.kt b/app/src/main/java/net/pokeranalytics/android/model/realm/TransactionType.kt index 6886b576..53437792 100644 --- a/app/src/main/java/net/pokeranalytics/android/model/realm/TransactionType.kt +++ b/app/src/main/java/net/pokeranalytics/android/model/realm/TransactionType.kt @@ -2,15 +2,13 @@ package net.pokeranalytics.android.model.realm import android.content.Context import io.realm.Realm +import io.realm.RealmModel import io.realm.RealmObject import io.realm.annotations.Ignore import io.realm.annotations.PrimaryKey import net.pokeranalytics.android.R import net.pokeranalytics.android.exceptions.PAIllegalStateException -import net.pokeranalytics.android.model.interfaces.DeleteValidityStatus -import net.pokeranalytics.android.model.interfaces.Identifiable -import net.pokeranalytics.android.model.interfaces.NameManageable -import net.pokeranalytics.android.model.interfaces.SaveValidityStatus +import net.pokeranalytics.android.model.interfaces.* import net.pokeranalytics.android.ui.adapter.StaticRowRepresentableDataSource import net.pokeranalytics.android.ui.view.Localizable import net.pokeranalytics.android.ui.view.RowRepresentable @@ -23,7 +21,8 @@ import java.util.* import kotlin.collections.ArrayList -open class TransactionType : RealmObject(), NameManageable, StaticRowRepresentableDataSource, RowRepresentable { +open class TransactionType : RealmObject(), NameManageable, StaticRowRepresentableDataSource, RowRepresentable, + CountableUsage { enum class Value(override var uniqueIdentifier: Int, val additive: Boolean) : IntIdentifiable, Localizable { @@ -69,21 +68,6 @@ open class TransactionType : RealmObject(), NameManageable, StaticRowRepresentab throw PAIllegalStateException("Transaction type ${value.name} should exist in database!") } - fun getOrCreateByValue(realm: Realm, context: Context, value: Value): TransactionType { - val type = realm.where(TransactionType::class.java).equalTo("kind", value.uniqueIdentifier).findFirst() - type?.let { - return it - } - - val tt = TransactionType() - tt.name = value.localizedTitle(context) - tt.additive = value.additive - tt.kind = value.uniqueIdentifier - tt.lock = true - - return tt - } - } @Ignore @@ -109,6 +93,11 @@ open class TransactionType : RealmObject(), NameManageable, StaticRowRepresentab // The predefined kind, if necessary, like: Withdrawal, deposit, or tips var kind: Int? = null + override var useCount: Int = 0 + + @Ignore + override val ownerClass: Class = Transaction::class.java + override fun getDisplayName(context: Context): String { return this.name } 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 7f145e79..1838ec85 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 @@ -61,9 +61,11 @@ class FeedSessionRowRepresentableAdapter( // listeners this.startedSessions.addChangeListener { _, _ -> + Timber.d("---> started session change") refreshData() } this.pendingSessions.addChangeListener { _, _ -> + Timber.d("---> pending session change") refreshData() } @@ -187,11 +189,12 @@ class FeedSessionRowRepresentableAdapter( /** * Refresh headers positions */ - fun refreshData() { + private fun refreshData() { allSessions.clear() allSessions.addAll(this.pendingSessions) allSessions.addAll(this.startedSessions) + Timber.d("All sessions count = ${allSessions.size}") val headersPositions = HashMap() @@ -232,4 +235,9 @@ class FeedSessionRowRepresentableAdapter( return currentCalendar.get(Calendar.YEAR) == previousYear && currentCalendar.get(Calendar.MONTH) < previousMonth || (currentCalendar.get(Calendar.YEAR) < previousYear) } + fun destroy() { + this.startedSessions.removeAllChangeListeners() + this.pendingSessions.removeAllChangeListeners() + } + } \ No newline at end of file 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 3131ba49..3e009bc3 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 @@ -145,6 +145,7 @@ class FeedFragment : FilterableFragment(), RowRepresentableDelegate { override fun onDestroyView() { super.onDestroyView() + feedSessionAdapter.destroy() realmTransactions.removeAllChangeListeners() } @@ -191,6 +192,7 @@ class FeedFragment : FilterableFragment(), RowRepresentableDelegate { messageBox.isVisible = false } + // Add button addButton.setOnClickListener { activity?.let { val options = ActivityOptionsCompat.makeSceneTransitionAnimation(it) @@ -199,6 +201,7 @@ class FeedFragment : FilterableFragment(), RowRepresentableDelegate { } } + // Tabs tabs.addOnTabSelectedListener(object : TabLayout.OnTabSelectedListener { override fun onTabSelected(tab: TabLayout.Tab) { when (tab.position) { @@ -279,13 +282,11 @@ class FeedFragment : FilterableFragment(), RowRepresentableDelegate { */ private fun createNewSession(isTournament: Boolean, sessionId: String? = null, duplicate: Boolean = false) { -// if (!BuildConfig.DEBUG) { - val sessionCount = getRealm().count(Session::class.java) - if (!AppGuard.isProUser && sessionCount >= AppGuard.MAX_SESSIONS_BEFORE_REQUESTING_SUBSCRIPTION) { // && !BuildConfig.DEBUG - BillingActivity.newInstanceForResult(this, true) - return - } -// } + val sessionCount = getRealm().count(Session::class.java) + if (!AppGuard.isProUser && sessionCount >= AppGuard.MAX_SESSIONS_BEFORE_REQUESTING_SUBSCRIPTION) { // && !BuildConfig.DEBUG + BillingActivity.newInstanceForResult(this, true) + return + } // Keep commented code for special versions // if (Date().after(betaLimitDate)) { diff --git a/app/src/main/java/net/pokeranalytics/android/util/extensions/RealmExtensions.kt b/app/src/main/java/net/pokeranalytics/android/util/extensions/RealmExtensions.kt index 817a9a43..7a2b5687 100644 --- a/app/src/main/java/net/pokeranalytics/android/util/extensions/RealmExtensions.kt +++ b/app/src/main/java/net/pokeranalytics/android/util/extensions/RealmExtensions.kt @@ -4,14 +4,16 @@ import io.realm.Realm import io.realm.RealmModel import io.realm.RealmResults import io.realm.Sort -import io.realm.kotlin.where import net.pokeranalytics.android.model.interfaces.CountableUsage import net.pokeranalytics.android.model.interfaces.Identifiable import net.pokeranalytics.android.model.interfaces.NameManageable -import net.pokeranalytics.android.model.realm.* +import net.pokeranalytics.android.model.realm.Filter +import net.pokeranalytics.android.model.realm.TournamentFeature +import net.pokeranalytics.android.model.realm.Transaction +import net.pokeranalytics.android.model.realm.TransactionType -fun Realm.count(clazz: Class) : Int { - return this.where(clazz).findAll().size +fun Realm.count(clazz: Class) : Long { + return this.where(clazz).count() } fun Realm.findById(clazz: Class, id: String) : T? { @@ -96,10 +98,11 @@ fun Realm.updateUsageCount(clazz: Class) { val countable = (countableUsage as CountableUsage) val fieldName = when (clazz.kotlin) { + TransactionType::class -> "type.id" TournamentFeature::class -> "tournamentFeatures.id" else -> "${clazz.simpleName.decapitalize()}.id" } - val count = it.where().contains(fieldName, countable.id).count().toInt() + val count = it.where(countable.ownerClass).contains(fieldName, countable.id).count().toInt() countable.useCount = count } } From f65304a71fc0237a9d07986a3313170446dede3e Mon Sep 17 00:00:00 2001 From: Laurent Date: Tue, 25 Jun 2019 16:53:48 +0200 Subject: [PATCH 3/6] Refactored findAll().size in count() --- .../net/pokeranalytics/android/PokerAnalyticsApplication.kt | 2 +- .../android/ui/fragment/data/TransactionTypeDataFragment.kt | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/net/pokeranalytics/android/PokerAnalyticsApplication.kt b/app/src/main/java/net/pokeranalytics/android/PokerAnalyticsApplication.kt index ba3e26ba..99dc6d37 100644 --- a/app/src/main/java/net/pokeranalytics/android/PokerAnalyticsApplication.kt +++ b/app/src/main/java/net/pokeranalytics/android/PokerAnalyticsApplication.kt @@ -72,7 +72,7 @@ class PokerAnalyticsApplication : Application() { private fun createFakeSessions() { val realm = Realm.getDefaultInstance() - val sessionsCount = realm.where().findAll().size + val sessionsCount = realm.where().count() realm.close() if (sessionsCount < 10) { diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/data/TransactionTypeDataFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/data/TransactionTypeDataFragment.kt index a5000654..0340bdc3 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/data/TransactionTypeDataFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/data/TransactionTypeDataFragment.kt @@ -65,8 +65,8 @@ class TransactionTypeDataFragment : EditableDataFragment(), RowRepresentableData TransactionTypeRow.TRANSACTION_ADDITIVE -> { val realm = getRealm() val useCount = realm.where(Transaction::class.java) - .equalTo("type.id", this.transactionType.id).findAll().size - return useCount == 0 + .equalTo("type.id", this.transactionType.id).count() + return useCount == 0L } else -> super.isSelectable(row) } From 4b16a3e1b146bc09781efdab79a356471fd3f7cc Mon Sep 17 00:00:00 2001 From: Laurent Date: Tue, 25 Jun 2019 18:16:49 +0200 Subject: [PATCH 4/6] cleanup states --- .../android/PokerAnalyticsApplication.kt | 2 +- .../FeedSessionRowRepresentableAdapter.kt | 4 +-- .../android/ui/fragment/FeedFragment.kt | 30 ++++++++++++------- 3 files changed, 22 insertions(+), 14 deletions(-) diff --git a/app/src/main/java/net/pokeranalytics/android/PokerAnalyticsApplication.kt b/app/src/main/java/net/pokeranalytics/android/PokerAnalyticsApplication.kt index 99dc6d37..321c458b 100644 --- a/app/src/main/java/net/pokeranalytics/android/PokerAnalyticsApplication.kt +++ b/app/src/main/java/net/pokeranalytics/android/PokerAnalyticsApplication.kt @@ -60,7 +60,7 @@ class PokerAnalyticsApplication : Application() { if (BuildConfig.DEBUG) { Timber.d("UserPreferences.defaultCurrency: ${UserDefaults.currency.symbol}") - this.createFakeSessions() +// this.createFakeSessions() } Patcher.patchAll(this.applicationContext) 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 1838ec85..acb13ad3 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 @@ -61,11 +61,11 @@ class FeedSessionRowRepresentableAdapter( // listeners this.startedSessions.addChangeListener { _, _ -> - Timber.d("---> started session change") +// Timber.d("---> started session change") refreshData() } this.pendingSessions.addChangeListener { _, _ -> - Timber.d("---> pending session change") +// Timber.d("---> pending session change") refreshData() } 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 3e009bc3..8634aca6 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 @@ -56,6 +56,8 @@ class FeedFragment : FilterableFragment(), RowRepresentableDelegate { } + private var currentTab = Tab.SESSIONS + private lateinit var feedSessionAdapter: FeedSessionRowRepresentableAdapter private lateinit var feedTransactionAdapter: FeedTransactionRowRepresentableAdapter @@ -207,13 +209,12 @@ class FeedFragment : FilterableFragment(), RowRepresentableDelegate { when (tab.position) { Tab.SESSIONS.ordinal -> { currentFilterable = FilterableType.SESSION - menuRecyclerView.adapter = feedSessionAdapter } Tab.TRANSACTIONS.ordinal -> { currentFilterable = FilterableType.TRANSACTION - menuRecyclerView.adapter = feedTransactionAdapter } } + tabChanged(tab.position) } override fun onTabUnselected(tab: TabLayout.Tab) { @@ -351,11 +352,9 @@ class FeedFragment : FilterableFragment(), RowRepresentableDelegate { filter?.let { when (it.filterableType) { FilterableType.SESSION -> { - menuRecyclerView.adapter = feedSessionAdapter this.selectTab(Tab.SESSIONS) } FilterableType.TRANSACTION -> { - menuRecyclerView.adapter = feedTransactionAdapter this.selectTab(Tab.TRANSACTIONS) } else -> { @@ -366,24 +365,33 @@ class FeedFragment : FilterableFragment(), RowRepresentableDelegate { if (!adapterHasBeenSet) { adapterHasBeenSet = true - menuRecyclerView.adapter = feedSessionAdapter + this.setAdapter() } } override fun removeFilter() { super.removeFilter() - this.loadSessions() this.loadTransactions() - if (currentFilterable == FilterableType.SESSION) { - menuRecyclerView.adapter = feedSessionAdapter - } else { - menuRecyclerView.adapter = feedTransactionAdapter - } + this.setAdapter() } private fun selectTab(tab: Tab) { + this.currentTab = tab this.tabs.getTabAt(tab.ordinal)?.select() + setAdapter() + } + + private fun tabChanged(index: Int) { + this.currentTab = Tab.values()[index] + setAdapter() + } + + private fun setAdapter() { + when (this.currentTab) { + Tab.SESSIONS -> menuRecyclerView.adapter = feedSessionAdapter + Tab.TRANSACTIONS -> menuRecyclerView.adapter = feedTransactionAdapter + } } } \ No newline at end of file From ced0cb7e2810a9f989f7ffdf222cd94bcf543658 Mon Sep 17 00:00:00 2001 From: Laurent Date: Tue, 25 Jun 2019 18:30:48 +0200 Subject: [PATCH 5/6] Fixes top10 filter --- .../net/pokeranalytics/android/ui/fragment/Top10Fragment.kt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/Top10Fragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/Top10Fragment.kt index 9b8f088b..cd722bf1 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/Top10Fragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/Top10Fragment.kt @@ -100,7 +100,8 @@ class Top10Fragment : RealmFragment(), RowRepresentableDataSource, RowRepresenta private fun initData() { this.positiveSessions = getRealm().where() - .greaterThanOrEqualTo("result.net", 0.0) + .isNotNull("endDate") + .greaterThan("result.net", 0.0) .findAll() updateTop10() From 37c33bd15a80335a070ebf12aaad03f4576c721e Mon Sep 17 00:00:00 2001 From: Razmig Sarkissian Date: Wed, 26 Jun 2019 08:02:44 +0200 Subject: [PATCH 6/6] fix issue with current week filter --- .../android/model/filter/QueryCondition.kt | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/net/pokeranalytics/android/model/filter/QueryCondition.kt b/app/src/main/java/net/pokeranalytics/android/model/filter/QueryCondition.kt index c3ec3331..84d9fcd9 100644 --- a/app/src/main/java/net/pokeranalytics/android/model/filter/QueryCondition.kt +++ b/app/src/main/java/net/pokeranalytics/android/model/filter/QueryCondition.kt @@ -765,12 +765,14 @@ sealed class QueryCondition : FilterElementRow { return realmQuery } is DuringThisWeek -> { - val startDate = Date() val calendar = Calendar.getInstance() - calendar.time = startDate - calendar.set(Calendar.DAY_OF_WEEK_IN_MONTH, Calendar.SUNDAY) + calendar.set(Calendar.HOUR_OF_DAY, 0) + calendar.clear(Calendar.MINUTE) + calendar.clear(Calendar.SECOND) + calendar.clear(Calendar.MILLISECOND) + calendar.set(Calendar.DAY_OF_WEEK, calendar.firstDayOfWeek) return realmQuery.greaterThanOrEqualTo(fieldName, calendar.time.startOfDay()).and() - .lessThanOrEqualTo(fieldName, startDate.endOfDay()) + .lessThanOrEqualTo(fieldName, Date().endOfDay()) } is DuringThisMonth -> { val startDate = Date()