From ea86c5249a195fe86691e865e5c795afb89c95ff Mon Sep 17 00:00:00 2001 From: Laurent Date: Fri, 8 Mar 2019 14:49:49 +0100 Subject: [PATCH 1/5] Define tournament buyin with entryfee when starting --- .../java/net/pokeranalytics/android/model/realm/Session.kt | 3 +++ 1 file changed, 3 insertions(+) diff --git a/app/src/main/java/net/pokeranalytics/android/model/realm/Session.kt b/app/src/main/java/net/pokeranalytics/android/model/realm/Session.kt index 643c767d..b8a6446a 100644 --- a/app/src/main/java/net/pokeranalytics/android/model/realm/Session.kt +++ b/app/src/main/java/net/pokeranalytics/android/model/realm/Session.kt @@ -255,6 +255,9 @@ open class Session : RealmObject(), SessionInterface, Savable, StaticRowRepresen when (getState()) { SessionState.PENDING, SessionState.PLANNED -> { this.startDate = Date() + if (this.tournamentEntryFee != null) { + this.result?.buyin = this.tournamentEntryFee + } // val sessionTimeFrame = this.timeFrame ?: realm.createObject(TimeFrame::class.java) // sessionTimeFrame.setStart(Date()) From 4c94570438a3e1369744cceb476a175c62930634 Mon Sep 17 00:00:00 2001 From: Laurent Date: Fri, 8 Mar 2019 14:59:34 +0100 Subject: [PATCH 2/5] cleanup code --- .../android/model/realm/Session.kt | 87 +++++++++---------- 1 file changed, 41 insertions(+), 46 deletions(-) diff --git a/app/src/main/java/net/pokeranalytics/android/model/realm/Session.kt b/app/src/main/java/net/pokeranalytics/android/model/realm/Session.kt index e663979e..639dd34e 100644 --- a/app/src/main/java/net/pokeranalytics/android/model/realm/Session.kt +++ b/app/src/main/java/net/pokeranalytics/android/model/realm/Session.kt @@ -65,16 +65,23 @@ open class Session : RealmObject(), SessionInterface, Savable, StaticRowRepresen // Timed interface + /** + * The start date of the session + */ override var startDate: Date = Date() set(value) { field = value this.computeNetDuration() + // nullifies endate when setting the start date after the end date if (this.endDate != null && this.startDate.after(this.endDate)) { this.endDate = null } this.dateChanged() } + /** + * the end date of the session + */ var endDate: Date? = null set(value) { field = value @@ -82,26 +89,23 @@ open class Session : RealmObject(), SessionInterface, Savable, StaticRowRepresen this.dateChanged() } - private fun dateChanged() { - if (this.endDate != null) { - SessionSetManager.updateTimeline(this) - } else if (this.sessionSet != null) { - SessionSetManager.removeFromTimeline(this) - } - } - - override fun endDate(): Date { - return this.endDate ?: Date() - } - + /** + * The break duration of the session + */ override var breakDuration: Long = 0L set(value) { field = value this.computeNetDuration() } + /** + * the net duration of the session, automatically calculated + */ override var netDuration: Long = 0L + /** + * The start date of the break + */ var pauseDate: Date? = null // The time frame of the Session, i.e. the start & end date @@ -169,6 +173,25 @@ open class Session : RealmObject(), SessionInterface, Savable, StaticRowRepresen // The features of the tournament, like Knockout, Shootout, Turbo... var tournamentFeatures: RealmList = RealmList() + /** + * Manages impacts on SessionSets + * Should be called when the start / end date are changed + */ + private fun dateChanged() { + if (this.endDate != null) { + SessionSetManager.updateTimeline(this) + } else if (this.sessionSet != null) { + SessionSetManager.removeFromTimeline(this) + } + } + + /** + * Returns a non-null date for the session + */ + override fun endDate(): Date { + return this.endDate ?: Date() + } + /** * Return if this session is a tournament */ @@ -183,7 +206,6 @@ open class Session : RealmObject(), SessionInterface, Savable, StaticRowRepresen return this.type == Type.CASH_GAME.ordinal } - // Stats @Ignore // SessionInterface value @@ -321,6 +343,9 @@ open class Session : RealmObject(), SessionInterface, Savable, StaticRowRepresen } } + /** + * Utility method to cleanly end a session + */ private fun end() { this.pauseDate = null if (this.endDate == null) { @@ -381,21 +406,13 @@ open class Session : RealmObject(), SessionInterface, Savable, StaticRowRepresen this.sessionSet?.let { set -> - // get all sessions part of the deleted session set - val sessionsFromSet = set.sessions - // cleanup unnecessary related objects set.deleteFromRealm() -// this.timeFrame?.deleteFromRealm() this.result?.deleteFromRealm() - // make sessions recreate/find their session set - sessionsFromSet?.let { sessions -> - sessions.forEach { session -> - // @todo -// session.timeFrame?.notifySessionDateChange(session) - } - } + // Updates the timeline + SessionSetManager.removeFromTimeline(this) + } } @@ -660,10 +677,7 @@ open class Session : RealmObject(), SessionInterface, Savable, StaticRowRepresen cgBigBlind = null } SessionRow.BREAK_TIME -> { -// val timeFrameToUpdate = -// if (timeFrame != null) timeFrame as TimeFrame else realm.createObject(TimeFrame::class.java) this.breakDuration = if (value != null) (value as String).toLong() * 60 * 1000 else 0 -// timeFrame = timeFrameToUpdate } SessionRow.BUY_IN -> { val localResult = if (result != null) result as Result else realm.createObject(Result::class.java) @@ -678,11 +692,6 @@ open class Session : RealmObject(), SessionInterface, Savable, StaticRowRepresen } else { localResult.cashout = (value as String).toDouble() this.end() - -// val timeFrameToUpdate = -// if (timeFrame != null) timeFrame as TimeFrame else realm.createObject(TimeFrame::class.java) -// timeFrameToUpdate.setEnd(Date()) -// timeFrame = timeFrameToUpdate } result = localResult @@ -692,11 +701,6 @@ open class Session : RealmObject(), SessionInterface, Savable, StaticRowRepresen SessionRow.END_DATE -> if (value is Date?) { this.endDate = value -// val timeFrameToUpdate = -// if (timeFrame != null) timeFrame as TimeFrame else realm.createObject(TimeFrame::class.java) -//// timeFrameToUpdate.setDate(null, value) -// timeFrameToUpdate.setEnd(value) -// timeFrame = timeFrameToUpdate } SessionRow.GAME -> { if (value is ArrayList<*>) { @@ -725,15 +729,6 @@ open class Session : RealmObject(), SessionInterface, Savable, StaticRowRepresen } SessionRow.START_DATE -> if (value is Date) { this.startDate = value -// if (value == null) { -// timeFrame = null -// } else { -// val timeFrameToUpdate = -// if (timeFrame != null) timeFrame as TimeFrame else realm.createObject(TimeFrame::class.java) -// timeFrameToUpdate.setStart(value) -//// timeFrameToUpdate.setDate(value, null) -// timeFrame = timeFrameToUpdate -// } } SessionRow.TABLE_SIZE -> tableSize = value as Int? SessionRow.TIPS -> { From 47a65c3de28428f4425a9a275617053918b7de8c Mon Sep 17 00:00:00 2001 From: Laurent Date: Fri, 8 Mar 2019 15:05:08 +0100 Subject: [PATCH 3/5] Fixes online session rows --- .../java/net/pokeranalytics/android/model/realm/Bankroll.kt | 2 -- .../net/pokeranalytics/android/ui/fragment/SessionFragment.kt | 2 +- .../android/ui/view/rowrepresentable/SessionRow.kt | 2 +- 3 files changed, 2 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/net/pokeranalytics/android/model/realm/Bankroll.kt b/app/src/main/java/net/pokeranalytics/android/model/realm/Bankroll.kt index 5504d3ad..420a58f2 100644 --- a/app/src/main/java/net/pokeranalytics/android/model/realm/Bankroll.kt +++ b/app/src/main/java/net/pokeranalytics/android/model/realm/Bankroll.kt @@ -37,8 +37,6 @@ open class Bankroll(name: String = "") : RealmObject(), Savable, // The currency of the bankroll var currency: Currency? = null - // @todo rate management - override fun getDisplayName(): String { return this.name } diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/SessionFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/SessionFragment.kt index 1049ea36..fade82f1 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/SessionFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/SessionFragment.kt @@ -112,7 +112,7 @@ class SessionFragment : PokerAnalyticsFragment(), RowRepresentableDelegate, Bott sessionAdapter.refreshRow(row) when (row) { SessionRow.CASHED_OUT, SessionRow.PRIZE, SessionRow.NET_RESULT, SessionRow.BUY_IN, SessionRow.TIPS, - SessionRow.START_DATE, SessionRow.END_DATE -> updateSessionUI() + SessionRow.START_DATE, SessionRow.END_DATE, SessionRow.BANKROLL -> updateSessionUI() } } diff --git a/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/SessionRow.kt b/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/SessionRow.kt index a8b6c56d..892f593c 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/SessionRow.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/SessionRow.kt @@ -73,7 +73,7 @@ enum class SessionRow : RowRepresentable { ) } else { arrayListOf( - NET_RESULT, BUY_IN, TIPS, + NET_RESULT, SeparatorRowRepresentable(), GAME, BLINDS, LOCATION, BANKROLL, TABLE_SIZE, START_DATE, END_DATE, BREAK_TIME, COMMENT ) From 4388d4825a97dddab0d127d21f9439d9200edb55 Mon Sep 17 00:00:00 2001 From: Laurent Date: Fri, 8 Mar 2019 15:09:52 +0100 Subject: [PATCH 4/5] Fix session parameter formatting --- .../net/pokeranalytics/android/model/realm/Session.kt | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/net/pokeranalytics/android/model/realm/Session.kt b/app/src/main/java/net/pokeranalytics/android/model/realm/Session.kt index 639dd34e..30450c25 100644 --- a/app/src/main/java/net/pokeranalytics/android/model/realm/Session.kt +++ b/app/src/main/java/net/pokeranalytics/android/model/realm/Session.kt @@ -500,10 +500,10 @@ open class Session : RealmObject(), SessionInterface, Savable, StaticRowRepresen return when (row) { SessionRow.BANKROLL -> bankroll?.name ?: NULL_TEXT SessionRow.BLINDS -> getBlinds() - SessionRow.BREAK_TIME -> this.breakDuration.toMinutes() - SessionRow.BUY_IN -> buyin.toCurrency() - SessionRow.CASHED_OUT, SessionRow.PRIZE, SessionRow.NET_RESULT -> result?.cashout?.toCurrency() ?: NULL_TEXT - SessionRow.COMMENT -> if (comment.isNotEmpty()) comment else NULL_TEXT + SessionRow.BREAK_TIME -> if (this.breakDuration > 0.0) this.breakDuration.toMinutes() else NULL_TEXT + SessionRow.BUY_IN -> this.result?.buyin?.toCurrency() ?: NULL_TEXT + SessionRow.CASHED_OUT, SessionRow.PRIZE, SessionRow.NET_RESULT -> this.result?.cashout?.toCurrency() ?: NULL_TEXT + SessionRow.COMMENT -> if (this.comment.isNotEmpty()) this.comment else NULL_TEXT SessionRow.END_DATE -> this.endDate?.shortDateTime() ?: NULL_TEXT SessionRow.GAME -> getGameTitle() SessionRow.INITIAL_BUY_IN -> tournamentEntryFee?.toCurrency() ?: NULL_TEXT From c3b3fb6cbc09a66e1db3924c74ad30dba60f7abc Mon Sep 17 00:00:00 2001 From: Laurent Date: Fri, 8 Mar 2019 15:18:57 +0100 Subject: [PATCH 5/5] Small fixes --- .../android/PokerAnalyticsApplication.kt | 6 ++-- .../android/calculus/Computable.kt | 2 +- .../android/model/realm/Session.kt | 2 +- .../android/model/realm/SessionSet.kt | 2 +- .../android/model/realm/TimeFrame.kt | 28 +++++++++---------- .../android/model/utils/SessionSetManager.kt | 4 +-- .../android/ui/fragment/HistoryFragment.kt | 4 +-- .../android/ui/fragment/StatsFragment.kt | 4 +-- .../components/SessionObserverFragment.kt | 6 ++-- app/src/main/res/layout/row_session_view.xml | 1 - 10 files changed, 29 insertions(+), 30 deletions(-) diff --git a/app/src/main/java/net/pokeranalytics/android/PokerAnalyticsApplication.kt b/app/src/main/java/net/pokeranalytics/android/PokerAnalyticsApplication.kt index 96e87c94..97d17d46 100644 --- a/app/src/main/java/net/pokeranalytics/android/PokerAnalyticsApplication.kt +++ b/app/src/main/java/net/pokeranalytics/android/PokerAnalyticsApplication.kt @@ -46,7 +46,7 @@ class PokerAnalyticsApplication : Application() { val realm: Realm = Realm.getDefaultInstance() // Add observer on session time frame changes this.sessions = realm.where(Session::class.java).findAll() // monitor session deletions -// this.sessions?.addChangeListener { _, changeSet -> +// this.endedSessions?.addChangeListener { _, changeSet -> /* val deletedSessions = realm.where(Session::class.java).`in`("id", changeSet.deletions.toTypedArray()).findAll() @@ -63,7 +63,7 @@ class PokerAnalyticsApplication : Application() { this.createDefaultData() if (BuildConfig.DEBUG) { -// this.createFakeSessions() // debug + this.createFakeSessions() // debug } } @@ -133,7 +133,7 @@ class PokerAnalyticsApplication : Application() { val realm = Realm.getDefaultInstance() - // Test sessions + // Test endedSessions val sessions = realm.where().findAll() if (sessions.size < 10) { for (index in 0..50) { diff --git a/app/src/main/java/net/pokeranalytics/android/calculus/Computable.kt b/app/src/main/java/net/pokeranalytics/android/calculus/Computable.kt index 291c17ff..c47a2b7f 100644 --- a/app/src/main/java/net/pokeranalytics/android/calculus/Computable.kt +++ b/app/src/main/java/net/pokeranalytics/android/calculus/Computable.kt @@ -33,7 +33,7 @@ class SessionGroup(name: String, sessions: List, stats: List = sessions diff --git a/app/src/main/java/net/pokeranalytics/android/model/realm/Session.kt b/app/src/main/java/net/pokeranalytics/android/model/realm/Session.kt index 30450c25..1c026762 100644 --- a/app/src/main/java/net/pokeranalytics/android/model/realm/Session.kt +++ b/app/src/main/java/net/pokeranalytics/android/model/realm/Session.kt @@ -115,7 +115,7 @@ open class Session : RealmObject(), SessionInterface, Savable, StaticRowRepresen // value?.let { it.notifySessionDateChange(this) } // } - // The time frame sessionGroup, which can contain multiple sessions + // The time frame sessionGroup, which can contain multiple endedSessions override var sessionSet: SessionSet? = null // the date of creation of the app diff --git a/app/src/main/java/net/pokeranalytics/android/model/realm/SessionSet.kt b/app/src/main/java/net/pokeranalytics/android/model/realm/SessionSet.kt index eba0414b..a9d26407 100644 --- a/app/src/main/java/net/pokeranalytics/android/model/realm/SessionSet.kt +++ b/app/src/main/java/net/pokeranalytics/android/model/realm/SessionSet.kt @@ -51,7 +51,7 @@ open class SessionSet : RealmObject(), Timed { // var timeFrame: TimeFrame? = null /** - * The list of sessions associated with this set + * The list of endedSessions associated with this set */ @LinkingObjects("sessionSet") val sessions: RealmResults? = null diff --git a/app/src/main/java/net/pokeranalytics/android/model/realm/TimeFrame.kt b/app/src/main/java/net/pokeranalytics/android/model/realm/TimeFrame.kt index 207bc79e..f6970a25 100644 --- a/app/src/main/java/net/pokeranalytics/android/model/realm/TimeFrame.kt +++ b/app/src/main/java/net/pokeranalytics/android/model/realm/TimeFrame.kt @@ -55,11 +55,11 @@ // // // Session // @LinkingObjects("timeFrame") -// private val sessions: RealmResults? = null // we should have only one session +// private val endedSessions: RealmResults? = null // we should have only one session // // @Ignore // var session: Session? = null -// get() = if (this.sessions != null && this.sessions.isEmpty()) null else this.sessions?.first() +// get() = if (this.endedSessions != null && this.endedSessions.isEmpty()) null else this.endedSessions?.first() // // // Group // @LinkingObjects("timeFrame") @@ -195,21 +195,21 @@ // var timeFrame: TimeFrame = sessionSet.timeFrame!! // tested in the query //// timeFrame.setDate(this.startDate, this.endDate) // -// val sisterSessions = sessionSet.sessions!! // shouldn't crash ever +// val sisterSessions = sessionSet.endedSessions!! // shouldn't crash ever // // // if we have only one session in the set and that it corresponds to the set -// if (sessionSet.sessions?.size == 1 && sessionSet.sessions?.first() == owner) { +// if (sessionSet.endedSessions?.size == 1 && sessionSet.endedSessions?.first() == owner) { // timeFrame.setDate(this.startDate, this.endDate) -// } else { // there are 2+ sessions to manage and possible splits +// } else { // there are 2+ endedSessions to manage and possible splits // // val endDate = this.endDate // -// // case where all sessions are over but the set is not, we might have a split, so we delete the set and save everything again +// // case where all endedSessions are over but the set is not, we might have a split, so we delete the set and save everything again // if (endDate != null && sisterSessions.all { it.timeFrame?.endDate != null } && timeFrame.endDate == null) { -// var sessions = mutableListOf(owner) -// sessionSet.sessions?.forEach { sessions.add(it) } +// var endedSessions = mutableListOf(owner) +// sessionSet.endedSessions?.forEach { endedSessions.add(it) } // sessionSet.deleteFromRealm() -// sessions.forEach { it.timeFrame?.notifySessionDateChange(it) } +// endedSessions.forEach { it.timeFrame?.notifySessionDateChange(it) } // } else { // // if (this.startDate.before(timeFrame.startDate)) { @@ -259,10 +259,10 @@ // // } // -// // get all sessions from sets -// var sessions = mutableSetOf() +// // get all endedSessions from sets +// var endedSessions = mutableSetOf() // sessionSets.forEach { set -> -// set.sessions?.asIterable()?.let { sessions.addAll(it) } +// set.endedSessions?.asIterable()?.let { endedSessions.addAll(it) } // } // // // delete all sets @@ -279,8 +279,8 @@ // // Add the session linked to this timeframe to the new sessionGroup // owner.sessionSet = set // -// // Add all orphan sessions -// sessions.forEach { it.sessionSet = set } +// // Add all orphan endedSessions +// endedSessions.forEach { it.sessionSet = set } // Timber.d("netDuration 3 = : ${set.timeFrame?.netDuration}") // // } diff --git a/app/src/main/java/net/pokeranalytics/android/model/utils/SessionSetManager.kt b/app/src/main/java/net/pokeranalytics/android/model/utils/SessionSetManager.kt index a8a2c624..720fdc01 100644 --- a/app/src/main/java/net/pokeranalytics/android/model/utils/SessionSetManager.kt +++ b/app/src/main/java/net/pokeranalytics/android/model/utils/SessionSetManager.kt @@ -91,7 +91,7 @@ class SessionSetManager { } } - // get all sessions from sets + // get all endedSessions from sets val sessions = mutableSetOf() sessionSets.forEach { set -> set.sessions?.asIterable()?.let { sessions.addAll(it) } @@ -108,7 +108,7 @@ class SessionSetManager { // Add the session linked to this timeframe to the new sessionGroup session.sessionSet = set - // Add all orphan sessions + // Add all orphan endedSessions sessions.forEach { it.sessionSet = set } // Timber.d("netDuration 3 = : ${set.timeFrame?.netDuration}") diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/HistoryFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/HistoryFragment.kt index a307e593..3397fcb3 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/HistoryFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/HistoryFragment.kt @@ -67,7 +67,7 @@ class HistoryFragment : PokerAnalyticsFragment(), LiveRowRepresentableDataSource super.onResume() //rows.clear() - //sessions.addAll(getRealm().copyFromRealm(realmSessions)) + //endedSessions.addAll(getRealm().copyFromRealm(realmSessions)) createSessionsHeaders() } @@ -105,7 +105,7 @@ class HistoryFragment : PokerAnalyticsFragment(), LiveRowRepresentableDataSource } /** - * Create the sessions headers + * Create the endedSessions headers */ private fun createSessionsHeaders() { diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/StatsFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/StatsFragment.kt index a5cfe15a..0624c113 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/StatsFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/StatsFragment.kt @@ -107,7 +107,7 @@ class StatsFragment : SessionObserverFragment(), StaticRowRepresentableDataSourc val cgSessions = mutableListOf() val tSessions = mutableListOf() - super.sessions.forEach { session -> + super.endedSessions.forEach { session -> if (session.isCashGame()) { cgSessions.add(session) } else { @@ -116,7 +116,7 @@ class StatsFragment : SessionObserverFragment(), StaticRowRepresentableDataSourc } val allStats: List = listOf(Stat.NETRESULT, Stat.HOURLY_RATE, Stat.AVERAGE, Stat.NUMBER_OF_SETS, Stat.AVERAGE_DURATION, Stat.DURATION) - val allSessionGroup = SessionGroup(getString(R.string.all), super.sessions, allStats) + val allSessionGroup = SessionGroup(getString(R.string.all), super.endedSessions, allStats) val cgStats: List = listOf(Stat.NETRESULT, Stat.HOURLY_RATE, Stat.NET_BB_PER_100_HANDS, Stat.HOURLY_RATE_BB, Stat.AVERAGE, Stat.STANDARD_DEVIATION_HOURLY, Stat.WIN_RATIO, Stat.NUMBER_OF_GAMES, Stat.AVERAGE_BUYIN) val cgSessionGroup = SessionGroup(getString(R.string.cash_game), cgSessions, cgStats) val tStats: List = listOf(Stat.NETRESULT, Stat.HOURLY_RATE, Stat.ROI, Stat.WIN_RATIO, Stat.NUMBER_OF_GAMES, Stat.AVERAGE_BUYIN) diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/SessionObserverFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/SessionObserverFragment.kt index 0aff17c0..f974d937 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/SessionObserverFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/SessionObserverFragment.kt @@ -6,12 +6,12 @@ import net.pokeranalytics.android.model.realm.Session open class SessionObserverFragment : PokerAnalyticsFragment() { - val sessions: RealmResults + val endedSessions: RealmResults init { val realm = Realm.getDefaultInstance() - this.sessions = realm.where(Session::class.java).isNotNull("endDate").findAll() - this.sessions.addChangeListener { _, _ -> + this.endedSessions = realm.where(Session::class.java).isNotNull("endDate").findAll() + this.endedSessions.addChangeListener { _, _ -> this.sessionsChanged() } } diff --git a/app/src/main/res/layout/row_session_view.xml b/app/src/main/res/layout/row_session_view.xml index 98316b32..d6c91fb4 100644 --- a/app/src/main/res/layout/row_session_view.xml +++ b/app/src/main/res/layout/row_session_view.xml @@ -86,7 +86,6 @@ android:textAllCaps="true" android:textColor="@color/kaki_lighter" android:textSize="12sp" - android:visibility="gone" tools:text="4:21" tools:visibility="visible" />