aboutsummaryrefslogtreecommitdiff
path: root/app/src/main/kotlin
diff options
context:
space:
mode:
authorAllan Wang <me@allanwang.ca>2017-06-30 22:50:58 -0700
committerAllan Wang <me@allanwang.ca>2017-06-30 22:50:58 -0700
commitd24ee840005af340b1decc2ed9863a742e78a4e1 (patch)
tree1bacf1433a3c0fe49a17d808845e46ab6423b37d /app/src/main/kotlin
parentfb4f71ef83d1bfbd3ae89701dc17f6ae31a35eb7 (diff)
downloadfrost-d24ee840005af340b1decc2ed9863a742e78a4e1.tar.gz
frost-d24ee840005af340b1decc2ed9863a742e78a4e1.tar.bz2
frost-d24ee840005af340b1decc2ed9863a742e78a4e1.zip
Set up billing cyclev1.0
Diffstat (limited to 'app/src/main/kotlin')
-rw-r--r--app/src/main/kotlin/com/pitchedapps/frost/MainActivity.kt2
-rw-r--r--app/src/main/kotlin/com/pitchedapps/frost/SettingsActivity.kt11
-rw-r--r--app/src/main/kotlin/com/pitchedapps/frost/settings/Experimental.kt4
-rw-r--r--app/src/main/kotlin/com/pitchedapps/frost/utils/iab/IAB.kt19
-rw-r--r--app/src/main/kotlin/com/pitchedapps/frost/utils/iab/IABDialogs.kt32
5 files changed, 55 insertions, 13 deletions
diff --git a/app/src/main/kotlin/com/pitchedapps/frost/MainActivity.kt b/app/src/main/kotlin/com/pitchedapps/frost/MainActivity.kt
index 85b70a60..b4d7973e 100644
--- a/app/src/main/kotlin/com/pitchedapps/frost/MainActivity.kt
+++ b/app/src/main/kotlin/com/pitchedapps/frost/MainActivity.kt
@@ -339,7 +339,7 @@ class MainActivity : BaseActivity(), FrostWebViewSearch.SearchContract {
observable.observeOn(AndroidSchedulers.mainThread()).subscribe { hiddenSearchView?.query(it) }
}
foregroundColor = Prefs.textColor
- backgroundColor = Prefs.bgColor
+ backgroundColor = Prefs.bgColor.withMinAlpha(200)
openListener = { hiddenSearchView?.pauseLoad = false }
closeListener = { hiddenSearchView?.pauseLoad = true }
onItemClick = { _, key, _, _ -> launchWebOverlay(key) }
diff --git a/app/src/main/kotlin/com/pitchedapps/frost/SettingsActivity.kt b/app/src/main/kotlin/com/pitchedapps/frost/SettingsActivity.kt
index 7d42accf..a38e124d 100644
--- a/app/src/main/kotlin/com/pitchedapps/frost/SettingsActivity.kt
+++ b/app/src/main/kotlin/com/pitchedapps/frost/SettingsActivity.kt
@@ -1,5 +1,6 @@
package com.pitchedapps.frost
+import android.content.Intent
import android.os.Bundle
import android.view.Menu
import android.view.MenuItem
@@ -14,6 +15,7 @@ import com.mikepenz.community_material_typeface_library.CommunityMaterial
import com.mikepenz.google_material_typeface_library.GoogleMaterial
import com.pitchedapps.frost.settings.*
import com.pitchedapps.frost.utils.*
+import com.pitchedapps.frost.utils.iab.IAB
import com.pitchedapps.frost.utils.iab.IS_FROST_PRO
import com.pitchedapps.frost.utils.iab.IabBroadcastReceiver
import com.pitchedapps.frost.utils.iab.openPlayProPurchase
@@ -23,8 +25,15 @@ import com.pitchedapps.frost.utils.iab.openPlayProPurchase
* Created by Allan Wang on 2017-06-06.
*/
class SettingsActivity : KPrefActivity(), IabBroadcastReceiver.IabBroadcastListener {
+
+ override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
+ if (!(IAB.helper?.handleActivityResult(requestCode, resultCode, data) ?: false))
+ super.onActivityReenter(resultCode, data)
+ }
+
+
override fun receivedBroadcast() {
- TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
+ L.d("IAB broadcast")
}
override fun kPrefCoreAttributes(): CoreAttributeContract.() -> Unit = {
diff --git a/app/src/main/kotlin/com/pitchedapps/frost/settings/Experimental.kt b/app/src/main/kotlin/com/pitchedapps/frost/settings/Experimental.kt
index fcb22320..e0e18622 100644
--- a/app/src/main/kotlin/com/pitchedapps/frost/settings/Experimental.kt
+++ b/app/src/main/kotlin/com/pitchedapps/frost/settings/Experimental.kt
@@ -15,8 +15,8 @@ fun SettingsActivity.getExperimentalPrefs(): KPrefAdapterBuilder.() -> Unit = {
descRes = R.string.experimental_disclaimer_info
}
- checkbox(R.string.search, { Prefs.searchBar }, { Prefs.searchBar = it; setResult(MainActivity.REQUEST_SEARCH) }) {
- descRes = R.string.search_desc
+ checkbox(R.string.search_bar, { Prefs.searchBar }, { Prefs.searchBar = it; setResult(MainActivity.REQUEST_SEARCH) }) {
+ descRes = R.string.search_bar_desc
}
checkbox(R.string.verbose_logging, { Prefs.verboseLogging }, { Prefs.verboseLogging = it }) {
diff --git a/app/src/main/kotlin/com/pitchedapps/frost/utils/iab/IAB.kt b/app/src/main/kotlin/com/pitchedapps/frost/utils/iab/IAB.kt
index 431ba0b6..ec63cce3 100644
--- a/app/src/main/kotlin/com/pitchedapps/frost/utils/iab/IAB.kt
+++ b/app/src/main/kotlin/com/pitchedapps/frost/utils/iab/IAB.kt
@@ -34,6 +34,13 @@ object IAB {
}
}
}
+
+ /**
+ * If user has pro, check if it's valid and destroy the helper
+ */
+ fun validatePro(activity: Activity) {
+
+ }
}
private const val FROST_PRO = "frost_pro"
@@ -68,19 +75,15 @@ fun Activity.openPlayPurchase(key: String, code: Int) {
IAB.helper!!.queryInventoryAsync {
res, inv ->
if (res.isFailure) return@queryInventoryAsync playStoreGenericError("Query res error")
- if (inv == null) return@queryInventoryAsync playStoreGenericError("Empty inventory")
+ if (inv?.getSkuDetails(key) != null) return@queryInventoryAsync playStoreAlreadyPurchased(key)
L.d("IAB: inventory ${inv.allOwnedSkus}")
- val donation = inv.getSkuDetails(key) ?: return@queryInventoryAsync playStoreGenericError("Donation null")
- IAB.helper!!.launchPurchaseFlow(this@openPlayPurchase, donation.sku, code) {
+ IAB.helper!!.launchPurchaseFlow(this@openPlayPurchase, key, code) {
result, _ ->
- if (result.isSuccess) materialDialogThemed {
- title(R.string.play_thank_you)
- content(R.string.play_purchased_pro)
- positiveText(R.string.kau_ok)
- } else playStoreGenericError("Result: ${result.message}")
+ if (result.isSuccess) playStorePurchasedSuccessfully(key)
frostAnswers {
logPurchase(PurchaseEvent()
.putItemId(key)
+ .putCustomAttribute("result", result.message)
.putSuccess(result.isSuccess))
}
}
diff --git a/app/src/main/kotlin/com/pitchedapps/frost/utils/iab/IABDialogs.kt b/app/src/main/kotlin/com/pitchedapps/frost/utils/iab/IABDialogs.kt
index e855138f..f0a544f7 100644
--- a/app/src/main/kotlin/com/pitchedapps/frost/utils/iab/IABDialogs.kt
+++ b/app/src/main/kotlin/com/pitchedapps/frost/utils/iab/IABDialogs.kt
@@ -3,7 +3,10 @@ package com.pitchedapps.frost.utils.iab
import android.app.Activity
import ca.allanwang.kau.utils.restart
import ca.allanwang.kau.utils.startPlayStoreLink
+import ca.allanwang.kau.utils.string
+import com.pitchedapps.frost.MainActivity
import com.pitchedapps.frost.R
+import com.pitchedapps.frost.SettingsActivity
import com.pitchedapps.frost.utils.L
import com.pitchedapps.frost.utils.Prefs
import com.pitchedapps.frost.utils.materialDialogThemed
@@ -15,6 +18,14 @@ private fun playStoreLog(text: String) {
L.e(Throwable(text), "Play Store Exception")
}
+private fun Activity.playRestart() {
+ if (this is MainActivity) restart()
+ else if (this is SettingsActivity) {
+ setResult(MainActivity.REQUEST_RESTART)
+ finish()
+ }
+}
+
fun Activity.playStoreNoLongerPro() {
if (!Prefs.previouslyPro) return //never pro to begin with
Prefs.previouslyPro = false
@@ -24,7 +35,7 @@ fun Activity.playStoreNoLongerPro() {
content(R.string.play_store_not_pro)
positiveText(R.string.reload)
dismissListener {
- this@playStoreNoLongerPro.restart()
+ this@playStoreNoLongerPro.playRestart()
}
}
}
@@ -47,4 +58,23 @@ fun Activity.playStoreGenericError(text: String = "Store generic error") {
content(R.string.play_store_billing_error)
positiveText(R.string.kau_ok)
}
+}
+
+fun Activity.playStoreAlreadyPurchased(key: String) {
+ materialDialogThemed {
+ title(R.string.play_already_purchased)
+ content(String.format(string(R.string.play_already_purchased_content), key))
+ positiveText(R.string.reload)
+ dismissListener {
+ this@playStoreAlreadyPurchased.playRestart()
+ }
+ }
+}
+
+fun Activity.playStorePurchasedSuccessfully(key: String) {
+ materialDialogThemed {
+ title(R.string.play_thank_you)
+ content(R.string.play_purchased_pro)
+ positiveText(R.string.kau_ok)
+ }
} \ No newline at end of file