Update name your price dialog

pull/1255/head
Alex Baker 5 years ago
parent 15a36704d7
commit 48f2c7a650

@ -11,5 +11,7 @@ class Firebase @Inject constructor() {
fun noChurn() = true
fun averageSubscription() = 0
fun logEvent(event: Int, vararg params: Pair<Int, Any>) {}
}

@ -61,6 +61,8 @@ class Firebase @Inject constructor(
fun noChurn(): Boolean = remoteConfig?.getBoolean("no_churn") ?: false
fun averageSubscription(): Double = remoteConfig?.getDouble("avg_sub") ?: 3.57
init {
if (preferences.isTrackingEnabled) {
analytics = FirebaseAnalytics.getInstance(context).apply {

@ -5,4 +5,8 @@
<key>no_churn</key>
<value>false</value>
</entry>
<entry>
<key>avg_sub</key>
<value>3.57</value>
</entry>
</defaultsMap>

@ -10,6 +10,7 @@ import android.net.Uri
import android.os.Bundle
import android.text.method.LinkMovementMethod
import androidx.appcompat.app.AlertDialog
import androidx.core.content.ContextCompat
import androidx.core.view.isVisible
import androidx.fragment.app.DialogFragment
import androidx.fragment.app.Fragment
@ -22,10 +23,10 @@ import io.noties.markwon.ext.strikethrough.StrikethroughPlugin
import org.tasks.BuildConfig
import org.tasks.LocalBroadcastManager
import org.tasks.R
import org.tasks.analytics.Firebase
import org.tasks.databinding.ActivityPurchaseBinding
import org.tasks.dialogs.DialogBuilder
import org.tasks.locale.Locale
import org.tasks.themes.Theme
import timber.log.Timber
import javax.inject.Inject
@ -42,12 +43,12 @@ class PurchaseDialog : DialogFragment(), OnPurchasesUpdated {
}
}
@Inject lateinit var tasksTheme: Theme
@Inject lateinit var inventory: Inventory
@Inject lateinit var dialogBuilder: DialogBuilder
@Inject lateinit var billingClient: BillingClient
@Inject lateinit var localBroadcastManager: LocalBroadcastManager
@Inject lateinit var locale: Locale
@Inject lateinit var firebase: Firebase
private lateinit var binding: ActivityPurchaseBinding
private lateinit var markwon: Markwon
@ -67,9 +68,7 @@ class PurchaseDialog : DialogFragment(), OnPurchasesUpdated {
}
binding.slider.addOnChangeListener(this::onPriceChanged)
binding.slider.setLabelFormatter {
"$${it - .01}"
}
binding.slider.setLabelFormatter { "$${it - .01}" }
binding.text.movementMethod = LinkMovementMethod.getInstance()
markwon = Markwon.builder(requireContext())
@ -196,7 +195,7 @@ class PurchaseDialog : DialogFragment(), OnPurchasesUpdated {
private fun setWaitScreen(isWaitScreen: Boolean) {
Timber.d("setWaitScreen(%s)", isWaitScreen)
val generic = BuildConfig.FLAVOR == "generic"
binding.slider.isVisible = !isWaitScreen && nameYourPrice
binding.sliderContainer.isVisible = !isWaitScreen && nameYourPrice
binding.payOther.isVisible = !isWaitScreen
binding.payOther.setText(when {
nameYourPrice -> R.string.back
@ -238,6 +237,13 @@ class PurchaseDialog : DialogFragment(), OnPurchasesUpdated {
val annualPrice = if (nameYourPrice) sliderValue else 30
val monthlyPrice = if (nameYourPrice) sliderValue else 3
val constrained = resources.getBoolean(R.bool.width_constrained)
if (sliderValue < firebase.averageSubscription()) {
binding.avgAnnual.setText(R.string.below_average)
binding.avgAnnual.setTextColor(ContextCompat.getColor(requireContext(), R.color.red_a400))
} else {
binding.avgAnnual.setText(R.string.above_average)
binding.avgAnnual.setTextColor(ContextCompat.getColor(requireContext(), R.color.green_a400))
}
binding.payAnnually.let {
it.isEnabled = true
it.text = getString(
@ -259,6 +265,8 @@ class PurchaseDialog : DialogFragment(), OnPurchasesUpdated {
}
it.isVisible = !nameYourPrice || sliderValue < 3
}
binding.avgAnnual.isVisible = nameYourPrice && binding.payAnnually.isVisible
binding.avgMonthly.isVisible = nameYourPrice && binding.payMonthly.isVisible
currentSubscription?.let {
binding.payMonthly.isEnabled =
it.isCanceled || !it.isMonthly || monthlyPrice != it.subscriptionPrice

@ -45,24 +45,58 @@
android:indeterminate="true"
android:visibility="gone" />
<com.google.android.material.slider.Slider
android:id="@+id/slider"
<RelativeLayout
android:id="@+id/slider_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:valueFrom="1"
android:valueTo="25"
android:value="10"
android:stepSize="1"
app:trackColorActive="?attr/colorSecondary"
app:thumbColor="?attr/colorSecondary"
app:tickColorActive="?attr/colorOnSecondary"
app:tickColorInactive="?attr/colorSecondary"
app:tickColor="@android:color/transparent"
app:trackColorInactive="@color/text_tertiary"
android:visibility="gone"
tools:visibility="visible"
android:layout_marginStart="@dimen/keyline_first"
android:layout_marginEnd="@dimen/keyline_first"
tools:visibility="visible"/>
android:layout_marginEnd="@dimen/keyline_first">
<TextView
android:layout_alignParentTop="true"
android:id="@+id/name_your_price"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/name_your_price"
style="@style/TextAppearance"
android:textAlignment="center" />
<TextView
android:id="@+id/price_low"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_below="@id/slider"
style="@style/TextAppearance.MaterialComponents.Caption"
android:text="$0.99"/>
<TextView
android:id="@+id/price_high"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_below="@id/slider"
style="@style/TextAppearance.MaterialComponents.Caption"
android:text="$24.99"/>
<com.google.android.material.slider.Slider
android:id="@+id/slider"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:valueFrom="1"
android:valueTo="25"
android:value="10"
android:stepSize="1"
android:layout_below="@id/name_your_price"
app:trackColorActive="?attr/colorSecondary"
app:thumbColor="?attr/colorSecondary"
app:tickColorActive="?attr/colorOnSecondary"
app:tickColorInactive="?attr/colorSecondary"
app:tickColor="@android:color/transparent"
app:trackColorInactive="@color/text_tertiary"/>
</RelativeLayout>
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/tasks_org_button_panel"
@ -91,6 +125,34 @@
app:layout_constraintStart_toEndOf="@id/pay_annually"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/avg_annual"
style="@style/TextAppearance.MaterialComponents.Caption"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintTop_toBottomOf="@id/pay_annually"
app:layout_constraintEnd_toEndOf="@id/pay_annually"
app:layout_constraintStart_toStartOf="@id/pay_annually"
android:textAlignment="center"
android:visibility="gone"
tools:text="@string/below_average"
tools:textColor="@color/red_a400"
tools:visibility="visible"/>
<TextView
android:id="@+id/avg_monthly"
style="@style/TextAppearance.MaterialComponents.Caption"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintTop_toBottomOf="@id/pay_monthly"
app:layout_constraintEnd_toEndOf="@id/pay_monthly"
app:layout_constraintStart_toStartOf="@id/pay_monthly"
android:text="@string/above_average"
android:visibility="gone"
tools:visibility="visible"
android:textColor="@color/green_a400"
android:textAlignment="center"/>
<com.google.android.material.button.MaterialButton
android:id="@+id/pay_other"
style="@style/TextButton"
@ -100,7 +162,7 @@
android:textColor="@color/text_secondary"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/pay_annually"
app:layout_constraintTop_toBottomOf="@+id/avg_annual"
tools:text="@string/back"/>
</androidx.constraintlayout.widget.ConstraintLayout>

@ -492,6 +492,7 @@
<string name="version_string">Verze %s</string>
<string name="invalid_backup_file">Neplatný soubor zálohy</string>
<string name="google_tasks_add_to_top">Nové úkoly na vrchu</string>
<string name="name_your_price">Zaplať kolik chceš</string>
<string name="monthly">Měsíčně</string>
<string name="annually">Ročně</string>
<string name="caldav_account_repeating_tasks">Dovolit serveru plánovat opakující se úkoly</string>

@ -201,6 +201,7 @@
<string name="caldav_account_repeating_tasks">Lad serveren planlægge gentagne opgaver</string>
<string name="annually">Årligt</string>
<string name="monthly">Månedligt</string>
<string name="name_your_price">Betal, hvad du vil</string>
<string name="google_tasks_add_to_top">Nye opgaver øverst</string>
<string name="invalid_backup_file">Ugyldig sikkerhedskopi-fil</string>
<string name="version_string">Version %s</string>

@ -476,6 +476,7 @@
<string name="button_downgrade">Abonnement herabstufen</string>
<string name="button_upgrade">Abonnement hochstufen</string>
<string name="button_unsubscribe">Abonnement kündigen</string>
<string name="name_your_price">Nennen Sie Ihren Preis</string>
<string name="monthly">monatlich</string>
<string name="annually">jährlich</string>
<string name="SSD_sort_my_order">Manuelle Sortierung</string>

@ -476,6 +476,7 @@
<string name="button_downgrade">Suscripción de degradación</string>
<string name="button_upgrade">Suscripción de actualización</string>
<string name="button_unsubscribe">Cancelar la suscripción</string>
<string name="name_your_price">Escoger tu precio</string>
<string name="monthly">Mensualmente</string>
<string name="annually">Anualmente</string>
<string name="SSD_sort_my_order">Mi orden</string>

@ -475,6 +475,7 @@
<string name="button_downgrade">Txikiagotu harpidetza</string>
<string name="button_upgrade">Handiagotu harpidetza</string>
<string name="button_unsubscribe">Ezeztatu harpidetza</string>
<string name="name_your_price">Jarri zuk prezioa</string>
<string name="monthly">Hilero</string>
<string name="annually">Urtero</string>
<string name="error_adding_account">Errorea: %s</string>

@ -442,6 +442,7 @@
<string name="caldav_account_repeating_tasks">Anna palvelimen ajoittaa toistuvia tehtäviä</string>
<string name="annually">Vuosittain</string>
<string name="monthly">Kuukausittain</string>
<string name="name_your_price">Nimeä hintasi</string>
<string name="google_tasks_add_to_top">Uudet tehtävät huipulla</string>
<string name="invalid_backup_file">Epäsopiva varmuuskopiotiedosto</string>
<string name="version_string">Versio %s</string>

@ -470,6 +470,7 @@
<string name="button_downgrade">Diminuer l\'abonnement</string>
<string name="button_upgrade">Augmenter l\'abonnement</string>
<string name="button_unsubscribe">Annuler l\'abonnement</string>
<string name="name_your_price">Donnez votre prix</string>
<string name="monthly">Chaque mois</string>
<string name="annually">Chaque année</string>
<string name="error_adding_account">Erreur : %s</string>

@ -473,6 +473,7 @@
<string name="button_downgrade">Előfizetés downgrade-je</string>
<string name="button_upgrade">Előfizetés upgrade-je</string>
<string name="button_unsubscribe">Előfizetés lemondása</string>
<string name="name_your_price">Nevezd meg az árat</string>
<string name="monthly">Havi</string>
<string name="annually">Éves</string>
<string name="SSD_sort_my_order">Egyéni sorrend</string>

@ -519,6 +519,7 @@
<string name="enter_tag_name">Inserisci il nome dell\'etichetta</string>
<string name="enter_title_hint">Inserisci titolo</string>
<string name="collapse_subtasks">Comprimi attività secondarie</string>
<string name="name_your_price">Fai tu il prezzo</string>
<string name="third_party_licenses">Licenze di terze parti</string>
<string name="this_feature_requires_a_subscription">Questa funzione richiede un abbonamento</string>
<string name="button_unsubscribe">Annulla abbonamento</string>

@ -505,6 +505,7 @@
<string name="button_downgrade">שנמוך מינוי</string>
<string name="button_upgrade">שדרוג מינוי</string>
<string name="button_unsubscribe">ביטול מינוי</string>
<string name="name_your_price">מה המחיר שלך</string>
<string name="monthly">חודשי</string>
<string name="annually">שנתי</string>
<string name="places">מיקומים</string>

@ -470,6 +470,7 @@
<string name="button_downgrade">サブスクリプションのダウングレード</string>
<string name="button_upgrade">サブスクリプションのアップグレード</string>
<string name="button_unsubscribe">サブスクリプションのキャンセル</string>
<string name="name_your_price">価格の名前</string>
<string name="monthly">毎月</string>
<string name="annually">毎年</string>
</resources>

@ -472,6 +472,7 @@
<string name="button_downgrade">구독 다운그레이드</string>
<string name="button_upgrade">구독 업그레이드</string>
<string name="button_unsubscribe">구독 취소</string>
<string name="name_your_price">구독 금액 정하기</string>
<string name="monthly">매월</string>
<string name="annually">매년</string>
<string name="SSD_sort_my_order">순서 직접 정렬</string>

@ -475,6 +475,7 @@
<string name="button_downgrade">Nedgrader abonnement</string>
<string name="button_upgrade">Oppgrader abonnement</string>
<string name="button_unsubscribe">Avbryt abonnement</string>
<string name="name_your_price">Betal det du vil</string>
<string name="monthly">Månedlig</string>
<string name="annually">Årlig</string>
<string name="error_adding_account">Feil: %s</string>

@ -465,6 +465,7 @@
<string name="button_downgrade">Terugdraaien abonnement</string>
<string name="button_upgrade">Abonnement upgraden</string>
<string name="button_unsubscribe">Abonnement annuleren</string>
<string name="name_your_price">Bepaal je prijs</string>
<string name="monthly">Maandelijks</string>
<string name="annually">Jaarlijks</string>
<string name="restart_later">Later</string>

@ -486,6 +486,7 @@
<string name="button_downgrade">Obniżyć poziom subskrypcji</string>
<string name="button_upgrade">Podwyższyć poziom subskrypcji</string>
<string name="button_unsubscribe">Anuluj subskrypcję</string>
<string name="name_your_price">Nazwij swoją cenę</string>
<string name="monthly">Miesięczne</string>
<string name="annually">Rocznie</string>
<string name="SSD_sort_my_order">Ręczne</string>

@ -523,6 +523,7 @@
<string name="caldav_account_repeating_tasks">Permita que o servidor agende tarefas recorrentes</string>
<string name="annually">Anualmente</string>
<string name="monthly">Mensalmente</string>
<string name="name_your_price">Dê seu valor</string>
<string name="google_tasks_add_to_top">Novas tarefas ao topo</string>
<string name="invalid_backup_file">Arquivo de restauro inválido</string>
<string name="version_string">Versão %s</string>

@ -599,6 +599,7 @@
<string name="EPr_temp_show_completed_tasks">Temporareamente mostrar tarefas quando completas</string>
<string name="caldav_account_repeating_tasks">Permita que o servidor agende tarefas recorrentes</string>
<string name="SSD_sort_my_order">Minha ordem</string>
<string name="name_your_price">Dê o seu valor</string>
<string name="button_upgrade">Atualizar assinatura</string>
<string name="button_downgrade">Rebaixar assinatura</string>
<string name="network_error">Não foi possível conectar</string>

@ -482,6 +482,7 @@
<string name="button_current_subscription">Текущая подписка</string>
<string name="button_restore_subscription">Восстановить подписку</string>
<string name="button_unsubscribe">Отменить подписку</string>
<string name="name_your_price">Назовите свою цену</string>
<string name="url">URL</string>
<string name="error_adding_account">Ошибка: %s</string>
<string name="list_separator_with_space">", "</string>

@ -470,6 +470,7 @@
<string name="button_downgrade">Nedgradera prenumeration</string>
<string name="button_upgrade">Uppgradera prenumerationen</string>
<string name="button_unsubscribe">Avbryt prenumeration</string>
<string name="name_your_price">Namnge ditt pris</string>
<string name="monthly">Månadsvis</string>
<string name="annually">Årligen</string>
<string name="SSD_sort_my_order">Min ordning</string>

@ -274,6 +274,7 @@
<string name="caldav_account_repeating_tasks">தொடர்ச்சியான பணிகளை சேவையாக அட்டவணைப்படுத்தட்டும்</string>
<string name="annually">ஆண்டு</string>
<string name="monthly">மாதாந்திர</string>
<string name="name_your_price">உங்கள் விலைக்கு பெயரிடுங்கள்</string>
<string name="google_tasks_add_to_top">மேலே புதிய பணிகள்</string>
<string name="invalid_backup_file">தவறான காப்பு கோப்பு</string>
<string name="version_string">பதிப்பு %s</string>

@ -476,6 +476,7 @@
<string name="button_downgrade">Aboneliği alçalt</string>
<string name="button_upgrade">Aboneliği yükselt</string>
<string name="button_unsubscribe">Aboneliği iptal et</string>
<string name="name_your_price">Fiyat belirleyin</string>
<string name="monthly">Aylık</string>
<string name="annually">Yıllık</string>
<string name="SSD_sort_my_order">Düzenim</string>

@ -531,6 +531,7 @@
<string name="collapse_subtasks">Згорнути підзавдання</string>
<string name="expand_subtasks">Розгорнути підзавдання</string>
<string name="caldav_account_repeating_tasks">Дозволити серверу встановлювати регулярні завдання</string>
<string name="name_your_price">Назвіть свою ціну</string>
<string name="annually">Щорічно</string>
<string name="monthly">Щомісячно</string>
<string name="this_feature_requires_a_subscription">Ця функція потребує підписки</string>

@ -465,6 +465,7 @@
<string name="button_downgrade">降级订阅</string>
<string name="button_upgrade">升级订阅</string>
<string name="button_unsubscribe">取消订阅</string>
<string name="name_your_price">您愿意支付多少费用</string>
<string name="monthly">每月</string>
<string name="annually">每年</string>
<string name="list_separator_with_space">" "</string>

@ -539,6 +539,7 @@ File %1$s contained %2$s.\n\n
<string name="version_string">Version %s</string>
<string name="invalid_backup_file">Invalid backup file</string>
<string name="google_tasks_add_to_top">New tasks on top</string>
<string name="name_your_price">Name your price</string>
<string name="more_options">More options</string>
<string name="monthly">Monthly</string>
<string name="annually">Yearly</string>
@ -683,4 +684,6 @@ File %1$s contained %2$s.\n\n
<string name="migrating_tasks">Migrating tasks</string>
<string name="offline_lists">Offline lists</string>
<string name="migrate_count">Move %s to Tasks.org</string>
<string name="above_average">Above average</string>
<string name="below_average">Below average</string>
</resources>

@ -95,7 +95,7 @@
<!--================================================== General == -->
<style name="TextAppearance" parent="android:TextAppearance">
<style name="TextAppearance" parent="TextAppearance.MaterialComponents.Body1">
<item name="android:textColor">@color/text_primary</item>
</style>

Loading…
Cancel
Save