1
0
mirror of https://github.com/AllanWang/Frost-for-Facebook.git synced 2024-09-19 23:21:34 +02:00
* Allow file access

* Log all to phone

* Rework billing logic
This commit is contained in:
Allan Wang 2017-07-03 18:40:14 -04:00 committed by GitHub
parent 01250f9382
commit 8edd98fcee
4 changed files with 30 additions and 31 deletions

View File

@ -34,10 +34,7 @@ internal class CrashReportingTree : Timber.Tree() {
Log.DEBUG -> if (!Prefs.verboseLogging) return
}
if (message != null)
if (priority == Log.ERROR)
Crashlytics.log(Log.ERROR, "Frost", message)
else
Crashlytics.log(message)
Crashlytics.log(priority, "Frost", message)
if (t != null) Crashlytics.logException(t)
}
}

View File

@ -101,7 +101,8 @@ fun SettingsActivity.restorePurchases() {
finishRestore(restore, false)
}
getInventory(false, true, reset) {
val proSku = it.getSkuDetails(FROST_PRO)
inv, _ ->
val proSku = inv.getSkuDetails(FROST_PRO)
Prefs.pro = proSku != null
L.d("Restore found: ${Prefs.pro}")
finishRestore(restore, Prefs.pro)
@ -120,10 +121,13 @@ private fun SettingsActivity.finishRestore(snackbar: Snackbar, hasPro: Boolean)
/**
* If user has pro, check if it's valid and destroy the helper
* If cache matches result, it finishes silently
*/
fun Activity.validatePro() {
L.d("Validate pro")
getInventory(Prefs.pro, true, { if (Prefs.pro) playStoreNoLongerPro() }) {
val proSku = it.getSkuDetails(FROST_PRO)
inv, _ ->
val proSku = inv.getSkuDetails(FROST_PRO)
if (proSku == null && Prefs.pro) playStoreNoLongerPro()
else if (proSku != null && !Prefs.pro) playStoreFoundPro()
}
@ -133,13 +137,13 @@ fun Activity.getInventory(
mustHavePlayStore: Boolean = true,
disposeOnFinish: Boolean = true,
onFailed: () -> Unit = {},
onSuccess: (inv: Inventory) -> Unit) {
onSuccess: (inv: Inventory, helper: IabHelper) -> Unit) {
IAB(this, mustHavePlayStore, onFailed) {
helper ->
helper.queryInventoryAsync {
res, inv ->
if (res.isFailure || inv == null) onFailed()
else onSuccess(inv)
else onSuccess(inv, helper)
}
disposeOnFinish
}
@ -155,27 +159,22 @@ fun Activity.openPlayProPurchase(code: Int) {
fun Activity.openPlayPurchase(key: String, code: Int, onSuccess: (key: String) -> Unit) {
L.d("Open play purchase $key $code")
IAB(this, true) {
helper ->
helper.queryInventoryAsync {
res, inv ->
if (res.isFailure) return@queryInventoryAsync playStoreGenericError("Query res error")
if (inv?.getSkuDetails(key) != null) return@queryInventoryAsync playStoreAlreadyPurchased(key)
L.d("IAB: inventory ${inv.allOwnedSkus}")
helper.launchPurchaseFlow(this@openPlayPurchase, key, code) {
result, _ ->
if (result.isSuccess) {
onSuccess(key)
playStorePurchasedSuccessfully(key)
}
frostAnswers {
logPurchase(PurchaseEvent()
.putItemId(key)
.putCustomAttribute("result", result.message)
.putSuccess(result.isSuccess))
}
getInventory(true, false, { playStoreGenericError("Query res error") }) {
inv, helper ->
if (inv.getSkuDetails(key) != null) return@getInventory playStoreAlreadyPurchased(key)
L.d("IAB: inventory ${inv.allOwnedSkus}")
helper.launchPurchaseFlow(this@openPlayPurchase, key, code) {
result, _ ->
if (result.isSuccess) {
onSuccess(key)
playStorePurchasedSuccessfully(key)
}
frostAnswers {
logPurchase(PurchaseEvent()
.putItemId(key)
.putCustomAttribute("result", result.message)
.putSuccess(result.isSuccess))
}
}
false
}
}

View File

@ -45,4 +45,5 @@ class FrostChromeClient(webCore: FrostWebViewCore) : WebChromeClient() {
}
}

View File

@ -58,9 +58,11 @@ class FrostWebViewCore @JvmOverloads constructor(
fun setupWebview(url: String, enum: FbTab? = null) {
baseUrl = url
baseEnum = enum
settings.javaScriptEnabled = true
settings.userAgentString = USER_AGENT_BASIC
// settings.domStorageEnabled = true
with (settings) {
javaScriptEnabled = true
userAgentString = USER_AGENT_BASIC
allowFileAccess = true
}
setLayerType(View.LAYER_TYPE_HARDWARE, null)
frostWebClient = baseEnum?.webClient?.invoke(this) ?: FrostWebViewClient(this)
webViewClient = frostWebClient