From 5af75efe9e9331dede0f8eb934a35548479d970f Mon Sep 17 00:00:00 2001 From: Laurent Date: Mon, 17 Jun 2019 12:40:17 +0200 Subject: [PATCH] Subscription refresh + refactoring --- .../android/ui/activity/BillingActivity.kt | 22 ++++++------ .../android/ui/activity/ImportActivity.kt | 2 +- .../android/ui/activity/components/Codes.kt | 4 ++- .../android/ui/fragment/FeedFragment.kt | 2 +- .../android/ui/fragment/SettingsFragment.kt | 36 +++++++++++-------- 5 files changed, 39 insertions(+), 27 deletions(-) diff --git a/app/src/main/java/net/pokeranalytics/android/ui/activity/BillingActivity.kt b/app/src/main/java/net/pokeranalytics/android/ui/activity/BillingActivity.kt index 71aafcd9..c60cfd9c 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/activity/BillingActivity.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/activity/BillingActivity.kt @@ -1,18 +1,25 @@ package net.pokeranalytics.android.ui.activity -import android.content.Context +import android.app.Activity import android.content.Intent import android.os.Bundle +import androidx.fragment.app.Fragment import net.pokeranalytics.android.R import net.pokeranalytics.android.ui.activity.components.PokerAnalyticsActivity -import net.pokeranalytics.android.util.billing.AppGuard +import net.pokeranalytics.android.ui.activity.components.RequestCode class BillingActivity : PokerAnalyticsActivity() { companion object { - fun newInstance(context: Context) { - val intent = Intent(context, BillingActivity::class.java) - context.startActivity(intent) + + fun newInstanceForResult(activity: Activity) { + val intent = Intent(activity, BillingActivity::class.java) + activity.startActivityForResult(intent, RequestCode.SUBSCRIPTION.value) + } + + fun newInstanceForResult(fragment: Fragment) { + val intent = Intent(fragment.requireContext(), BillingActivity::class.java) + fragment.startActivityForResult(intent, RequestCode.SUBSCRIPTION.value) } } @@ -21,11 +28,6 @@ class BillingActivity : PokerAnalyticsActivity() { setContentView(R.layout.activity_billing) } - override fun onResume() { - super.onResume() - - } - } diff --git a/app/src/main/java/net/pokeranalytics/android/ui/activity/ImportActivity.kt b/app/src/main/java/net/pokeranalytics/android/ui/activity/ImportActivity.kt index 37e09ce2..498a5f86 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/activity/ImportActivity.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/activity/ImportActivity.kt @@ -118,7 +118,7 @@ class ImportActivity : PokerAnalyticsActivity() { if (!AppGuard.isProUser && sessionCount >= AppGuard.MAX_SESSIONS_BEFORE_REQUESTING_SUBSCRIPTION) { // && !BuildConfig.DEBUG Toast.makeText(this, "Please subscribe!", Toast.LENGTH_LONG).show() - BillingActivity.newInstance(this) + BillingActivity.newInstanceForResult(this) return } diff --git a/app/src/main/java/net/pokeranalytics/android/ui/activity/components/Codes.kt b/app/src/main/java/net/pokeranalytics/android/ui/activity/components/Codes.kt index c8ada486..db99aed0 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/activity/components/Codes.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/activity/components/Codes.kt @@ -8,7 +8,9 @@ enum class RequestCode(var value: Int) { NEW_SESSION(800), NEW_TRANSACTION(801), NEW_REPORT(802), - IMPORT(900) + IMPORT(900), + SUBSCRIPTION(901), + CURRENCY(902) } enum class ResultCode(var value: Int) { 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 1dc63371..82db898e 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 @@ -275,7 +275,7 @@ class FeedFragment : FilterableFragment(), RowRepresentableDelegate { val sessionCount = this.feedSessionAdapter.realmResults.size if (!AppGuard.isProUser && sessionCount >= AppGuard.MAX_SESSIONS_BEFORE_REQUESTING_SUBSCRIPTION) { // && !BuildConfig.DEBUG // Toast.makeText(context, "Please subscribe!", Toast.LENGTH_LONG).show() - BillingActivity.newInstance(requireContext()) + BillingActivity.newInstanceForResult(this) return } diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/SettingsFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/SettingsFragment.kt index 125fac2a..364a50fc 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/SettingsFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/SettingsFragment.kt @@ -18,6 +18,7 @@ import net.pokeranalytics.android.ui.activity.BillingActivity import net.pokeranalytics.android.ui.activity.CurrenciesActivity import net.pokeranalytics.android.ui.activity.DataListActivity import net.pokeranalytics.android.ui.activity.GDPRActivity +import net.pokeranalytics.android.ui.activity.components.RequestCode import net.pokeranalytics.android.ui.adapter.RowRepresentableAdapter import net.pokeranalytics.android.ui.adapter.RowRepresentableDelegate import net.pokeranalytics.android.ui.adapter.StaticRowRepresentableDataSource @@ -57,7 +58,6 @@ class SettingsFragment : PokerAnalyticsFragment(), RowRepresentableDelegate, Sta rows } - const val REQUEST_CODE_CURRENCY: Int = 100 } private lateinit var settingsAdapterRow: RowRepresentableAdapter @@ -73,17 +73,25 @@ class SettingsFragment : PokerAnalyticsFragment(), RowRepresentableDelegate, Sta } override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { - if (requestCode == REQUEST_CODE_CURRENCY && resultCode == Activity.RESULT_OK) { - data?.let { - Preferences.setCurrencyCode(data.getStringExtra(CurrenciesFragment.INTENT_CURRENCY_CODE), requireContext()) - val realm = Realm.getDefaultInstance() - realm.executeTransaction { - it.where(Session::class.java).isNull("bankroll.currency.code").findAll().forEach { - it.bankrollHasBeenUpdated() - } - } - realm.close() - settingsAdapterRow.refreshRow(SettingRow.CURRENCY) + + when (requestCode) { + RequestCode.CURRENCY.value -> { + if (resultCode == Activity.RESULT_OK) { + data?.let { + Preferences.setCurrencyCode(data.getStringExtra(CurrenciesFragment.INTENT_CURRENCY_CODE), requireContext()) + val realm = Realm.getDefaultInstance() + realm.executeTransaction { + realm.where(Session::class.java).isNull("bankroll.currency.code").findAll().forEach { session -> + session.bankrollHasBeenUpdated() + } + } + realm.close() + settingsAdapterRow.refreshRow(SettingRow.CURRENCY) + } + } + } + RequestCode.SUBSCRIPTION.value -> { + settingsAdapterRow.refreshRow(SettingRow.SUBSCRIPTION) } } } @@ -105,7 +113,7 @@ class SettingsFragment : PokerAnalyticsFragment(), RowRepresentableDelegate, Sta when (row) { SettingRow.SUBSCRIPTION -> { if (!AppGuard.isProUser) { - BillingActivity.newInstance(requireContext()) + BillingActivity.newInstanceForResult(this) } else { this.openPlaystoreAccount() } @@ -113,7 +121,7 @@ class SettingsFragment : PokerAnalyticsFragment(), RowRepresentableDelegate, Sta SettingRow.RATE_APP -> parentActivity?.openPlayStorePage() SettingRow.CONTACT_US -> parentActivity?.openContactMail(R.string.contact) SettingRow.BUG_REPORT -> parentActivity?.openContactMail(R.string.bug_report_subject, Realm.getDefaultInstance().path) - SettingRow.CURRENCY -> CurrenciesActivity.newInstanceForResult(this@SettingsFragment, REQUEST_CODE_CURRENCY) + SettingRow.CURRENCY -> CurrenciesActivity.newInstanceForResult(this@SettingsFragment, RequestCode.CURRENCY.value) SettingRow.FOLLOW_US -> { when (position) { 0 -> parentActivity?.openUrl(URL.BLOG.value)