Display current subscription in About

pull/1208/head
Alex Baker 4 years ago
parent a67d62f1ea
commit b5171056d8

@ -1,11 +1,14 @@
package org.tasks.preferences.fragments package org.tasks.preferences.fragments
import android.content.BroadcastReceiver
import android.content.Context
import android.content.Intent import android.content.Intent
import android.net.Uri import android.net.Uri
import android.os.Bundle import android.os.Bundle
import androidx.fragment.app.FragmentManager import androidx.fragment.app.FragmentManager
import dagger.hilt.android.AndroidEntryPoint import dagger.hilt.android.AndroidEntryPoint
import org.tasks.BuildConfig import org.tasks.BuildConfig
import org.tasks.LocalBroadcastManager
import org.tasks.R import org.tasks.R
import org.tasks.billing.BillingClient import org.tasks.billing.BillingClient
import org.tasks.billing.Inventory import org.tasks.billing.Inventory
@ -13,6 +16,7 @@ import org.tasks.billing.PurchaseDialog.Companion.FRAG_TAG_PURCHASE_DIALOG
import org.tasks.billing.PurchaseDialog.Companion.newPurchaseDialog import org.tasks.billing.PurchaseDialog.Companion.newPurchaseDialog
import org.tasks.dialogs.WhatsNewDialog import org.tasks.dialogs.WhatsNewDialog
import org.tasks.injection.InjectingPreferenceFragment import org.tasks.injection.InjectingPreferenceFragment
import org.tasks.ui.Toaster
import javax.inject.Inject import javax.inject.Inject
private const val FRAG_TAG_WHATS_NEW = "frag_tag_whats_new" private const val FRAG_TAG_WHATS_NEW = "frag_tag_whats_new"
@ -22,6 +26,15 @@ class HelpAndFeedback : InjectingPreferenceFragment() {
@Inject lateinit var billingClient: BillingClient @Inject lateinit var billingClient: BillingClient
@Inject lateinit var inventory: Inventory @Inject lateinit var inventory: Inventory
@Inject lateinit var localBroadcastManager: LocalBroadcastManager
@Inject lateinit var toaster: Toaster
private val purchaseReceiver = object : BroadcastReceiver() {
override fun onReceive(context: Context, intent: Intent) {
refreshSubscription()
toaster.longToast(R.string.purchases_updated)
}
}
override fun getPreferenceXml() = R.xml.help_and_feedback override fun getPreferenceXml() = R.xml.help_and_feedback
@ -92,14 +105,41 @@ class HelpAndFeedback : InjectingPreferenceFragment() {
override fun onResume() { override fun onResume() {
super.onResume() super.onResume()
if (BuildConfig.FLAVOR != "generic") { localBroadcastManager.registerPurchaseReceiver(purchaseReceiver)
findPreference(R.string.upgrade_to_pro).title = getString(if (inventory.hasPro) {
R.string.manage_subscription refreshSubscription()
}
override fun onPause() {
super.onPause()
localBroadcastManager.unregisterReceiver(purchaseReceiver)
}
private fun refreshSubscription() {
if (BuildConfig.FLAVOR == "generic") {
return
}
val subscription = inventory.subscription
findPreference(R.string.upgrade_to_pro).apply {
title = getString(
if (subscription == null) {
R.string.upgrade_to_pro
} else {
R.string.manage_subscription
})
summary = if (subscription == null) {
null
} else { } else {
R.string.upgrade_to_pro val price = getString(
}) if (subscription.isMonthly) R.string.price_per_month else R.string.price_per_year,
findPreference(R.string.button_unsubscribe).isEnabled = inventory.subscription != null subscription.subscriptionPrice!! - .01
)
getString(R.string.current_subscription, price)
}
} }
findPreference(R.string.button_unsubscribe).isEnabled = inventory.subscription != null
} }
override fun getMenu() = 0 override fun getMenu() = 0

@ -662,4 +662,6 @@ File %1$s contained %2$s.\n\n
<string name="price_per_year_abbreviated">$%s/yr</string> <string name="price_per_year_abbreviated">$%s/yr</string>
<string name="price_per_month">$%s/month</string> <string name="price_per_month">$%s/month</string>
<string name="price_per_month_abbreviated">$%s/mo</string> <string name="price_per_month_abbreviated">$%s/mo</string>
<string name="current_subscription">Current subscription: %s</string>
<string name="purchases_updated">Purchases updated</string>
</resources> </resources>

Loading…
Cancel
Save