Test adding remaining subscription time in menu

This commit is contained in:
Phillip Thelen 2019-10-29 12:50:20 +01:00
parent f2701dfcd0
commit f1c83abef3
5 changed files with 57 additions and 2 deletions

View file

@ -238,12 +238,22 @@
<string name="equipped">Equipped</string>
<string name="quest_cancel_message">Are you sure you want to cancel this quest? All invitation acceptances will be lost. The quest owner will retain possession of the quest scroll.</string>
<string name="quest_begin_message">Are you sure? Only %1$d of your %2$d party members have joined this quest! Quests start automatically when all players have joined or rejected the invitation.</string>
<string name="ago_1month">1 month ago</string>
<string name="ago_months">%d month ago</string>
<string name="ago_1day">1d ago</string>
<string name="ago_days">%dd ago</string>
<string name="ago_1Minute">1m ago</string>
<string name="ago_minutes">%dm ago</string>
<string name="ago_hours">%dh ago</string>
<string name="ago_1hour">1h ago</string>
<string name="remaining_1month">1 month remaining</string>
<string name="remaining_months">%d months remaining</string>
<string name="remaining_1day">1d remaining</string>
<string name="remaining_days">%dd remaining</string>
<string name="remaining_1Minute">1m remaining</string>
<string name="remaining_minutes">%dm remaining</string>
<string name="remaining_hours">%dh remaining</string>
<string name="remaining_1hour">1h remaining</string>
<string name="today">Today</string>
<string name="sidebar_items">Items</string>
<string name="eggs">Eggs</string>

View file

@ -27,8 +27,12 @@ fun Long.getAgoString(res: Resources): String {
val diffMinutes = diff / (60 * 1000) % 60
val diffHours = diff / (60 * 60 * 1000) % 24
val diffDays = diff / (24 * 60 * 60 * 1000)
val diffMonths = diffDays / 30
return when {
diffMonths != 0L -> if (diffMonths == 1L) {
res.getString(R.string.ago_1month)
} else res.getString(R.string.ago_months, diffMonths)
diffDays != 0L -> if (diffDays == 1L) {
res.getString(R.string.ago_1day)
} else res.getString(R.string.ago_days, diffDays)
@ -38,4 +42,31 @@ fun Long.getAgoString(res: Resources): String {
diffMinutes == 1L -> res.getString(R.string.ago_1Minute)
else -> res.getString(R.string.ago_minutes, diffMinutes)
}
}
fun Date.getRemainingString(res: Resources): String {
return this.time.getRemainingString(res)
}
fun Long.getRemainingString(res: Resources): String {
val diff = this - Date().time
val diffMinutes = diff / (60 * 1000) % 60
val diffHours = diff / (60 * 60 * 1000) % 24
val diffDays = diff / (24 * 60 * 60 * 1000)
val diffMonths = diffDays / 30
return when {
diffMonths != 0L -> if (diffMonths == 1L) {
res.getString(R.string.remaining_1month)
} else res.getString(R.string.remaining_months, diffMonths)
diffDays != 0L -> if (diffDays == 1L) {
res.getString(R.string.remaining_1day)
} else res.getString(R.string.remaining_days, diffDays)
diffHours != 0L -> if (diffHours == 1L) {
res.getString(R.string.remaining_1hour)
} else res.getString(R.string.remaining_hours, diffHours)
diffMinutes == 1L -> res.getString(R.string.remaining_1Minute)
else -> res.getString(R.string.remaining_minutes, diffMinutes)
}
}

View file

@ -158,7 +158,7 @@ class NavigationDrawerAdapter(tintColor: Int, backgroundTintColor: Int): Recycle
if (additionalInfoView != null) {
additionalInfoView.text = drawerItem.additionalInfo
additionalInfoView.visibility = View.VISIBLE
additionalInfoView.setTextColor(tintColor)
additionalInfoView.setTextColor(drawerItem.additionalInfoTextColor ?: tintColor)
}
}
}

View file

@ -16,6 +16,7 @@ import com.habitrpg.android.habitica.R
import com.habitrpg.android.habitica.data.InventoryRepository
import com.habitrpg.android.habitica.data.SocialRepository
import com.habitrpg.android.habitica.data.UserRepository
import com.habitrpg.android.habitica.extensions.getRemainingString
import com.habitrpg.android.habitica.extensions.getThemeColor
import com.habitrpg.android.habitica.extensions.subscribeWithErrorHandler
import com.habitrpg.android.habitica.helpers.AppConfigManager
@ -232,6 +233,16 @@ class NavigationDrawerFragment : DialogFragment() {
updateItem(statsItem)
}
val subscriptionItem = getItemWithIdentifier(SIDEBAR_SUBSCRIPTION)
if (user.isSubscribed && user.purchased?.plan?.dateTerminated != null) {
context?.let {
subscriptionItem?.additionalInfo = user.purchased?.plan?.dateTerminated?.getRemainingString(it.resources)
subscriptionItem?.additionalInfoTextColor = it.getThemeColor(R.attr.textColorSecondary)
}
} else {
subscriptionItem?.additionalInfo = null
}
val promoItem = getItemWithIdentifier(SIDEBAR_SUBSCRIPTION_PROMO)
if (promoItem != null) {
promoItem.isVisible = !user.isSubscribed
@ -268,8 +279,8 @@ class NavigationDrawerFragment : DialogFragment() {
items.add(HabiticaDrawerItem(R.id.equipmentOverviewFragment, SIDEBAR_EQUIPMENT, context.getString(R.string.sidebar_equipment)))
items.add(HabiticaDrawerItem(R.id.itemsFragment, SIDEBAR_ITEMS, context.getString(R.string.sidebar_items)))
items.add(HabiticaDrawerItem(R.id.stableFragment, SIDEBAR_STABLE, context.getString(R.string.sidebar_stable)))
items.add(HabiticaDrawerItem(R.id.subscriptionPurchaseActivity, SIDEBAR_SUBSCRIPTION, context.getString(R.string.sidebar_subscription)))
items.add(HabiticaDrawerItem(R.id.gemPurchaseActivity, SIDEBAR_GEMS, context.getString(R.string.sidebar_gems)))
items.add(HabiticaDrawerItem(R.id.subscriptionPurchaseActivity, SIDEBAR_SUBSCRIPTION, context.getString(R.string.sidebar_subscription), isHeader = false, additionalInfoAsPill = false))
items.add(HabiticaDrawerItem(0, SIDEBAR_ABOUT_HEADER, context.getString(R.string.sidebar_about), true))
items.add(HabiticaDrawerItem(R.id.newsFragment, SIDEBAR_NEWS, context.getString(R.string.sidebar_news)))
items.add(HabiticaDrawerItem(R.id.FAQOverviewFragment, SIDEBAR_HELP, context.getString(R.string.sidebar_help)))

View file

@ -1,10 +1,13 @@
package com.habitrpg.android.habitica.ui.menu
import android.graphics.Color
data class HabiticaDrawerItem(val transitionId: Int, val identifier: String, val text: String, val isHeader: Boolean = false, var additionalInfoAsPill: Boolean = true) {
constructor(transitionId: Int, identifier: String) : this(transitionId, identifier, "")
var isPromo: Boolean = false
var additionalInfo: String? = null
var additionalInfoTextColor: Int? = null
var showBubble: Boolean = false
var isVisible: Boolean = true
var isEnabled: Boolean = true