release 4.7.3

This commit is contained in:
k0shk0sh 2019-12-29 12:38:10 +01:00
parent ba3d0ea296
commit 5a8cb14b27
8 changed files with 92 additions and 213 deletions

View File

@ -30,8 +30,8 @@ android {
applicationId "com.fastaccess.github"
minSdkVersion 21
targetSdkVersion 29
versionCode 472
versionName "4.7.2"
versionCode 473
versionName "4.7.3"
buildConfigString "GITHUB_CLIENT_ID", (buildProperties.secrets['github_client_id'] | buildProperties.notThere['github_client_id']).string
buildConfigString "GITHUB_SECRET", (buildProperties.secrets['github_secret'] | buildProperties.notThere['github_secret']).string
buildConfigString "IMGUR_CLIENT_ID", (buildProperties.secrets['imgur_client_id'] | buildProperties.notThere['imgur_client_id']).string
@ -162,7 +162,6 @@ dependencies {
implementation("com.apollographql.apollo:apollo-runtime:1.2.2")
implementation 'com.jaredrummler:android-device-names:1.1.9'
implementation 'net.yslibrary.keyboardvisibilityevent:keyboardvisibilityevent:2.1.0'
implementation 'com.airbnb.android:lottie:3.3.1'
implementation 'com.firebase:firebase-jobdispatcher:0.8.2'
implementation 'com.google.guava:guava:27.0.1-android' /*to be removed*/
debugImplementation 'com.github.whataa:pandora:2.0.6'

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -5,7 +5,9 @@ import com.crashlytics.android.Crashlytics
import com.crashlytics.android.answers.Answers
import com.crashlytics.android.answers.PurchaseEvent
import com.crashlytics.android.core.CrashlyticsCore
import com.fastaccess.App
import com.fastaccess.BuildConfig
import com.google.firebase.analytics.FirebaseAnalytics
import io.fabric.sdk.android.Fabric
import java.math.BigDecimal
import java.math.RoundingMode

View File

@ -1,24 +1,22 @@
package com.fastaccess.ui.modules.main.premium
import android.animation.Animator
import android.annotation.SuppressLint
import android.app.Activity
import android.content.Context
import android.content.Intent
import android.os.Bundle
import androidx.transition.TransitionManager
import android.view.View
import android.widget.Button
import android.widget.EditText
import android.widget.FrameLayout
import android.widget.TextView
import androidx.transition.TransitionManager
import butterknife.BindView
import butterknife.OnClick
import butterknife.OnEditorAction
import com.airbnb.lottie.LottieAnimationView
import com.fastaccess.BuildConfig
import com.fastaccess.R
import com.fastaccess.helper.*
import com.fastaccess.provider.fabric.FabricProvider
import com.fastaccess.helper.AppHelper
import com.fastaccess.helper.Logger
import com.fastaccess.helper.RxHelper
import com.fastaccess.ui.base.BaseActivity
import com.fastaccess.ui.modules.main.donation.DonateActivity
import com.miguelbcr.io.rx_billing_service.RxBillingService
@ -30,12 +28,8 @@ import io.reactivex.disposables.Disposable
* Created by kosh on 13/07/2017.
*/
class PremiumActivity : BaseActivity<PremiumMvp.View, PremiumPresenter>(), PremiumMvp.View {
@BindView(R.id.editText) lateinit var editText: EditText
@BindView(R.id.viewGroup) lateinit var viewGroup: FrameLayout
@BindView(R.id.progressLayout) lateinit var progressLayout: View
@BindView(R.id.successActivationView) lateinit var successActivationView: LottieAnimationView
@BindView(R.id.successActivationHolder) lateinit var successActivationHolder: View
@BindView(R.id.proPrice) lateinit var proPriceText: TextView
@BindView(R.id.enterprisePrice) lateinit var enterpriseText: TextView
@BindView(R.id.buyAll) lateinit var buyAll: Button
@ -69,55 +63,38 @@ class PremiumActivity : BaseActivity<PremiumMvp.View, PremiumPresenter>(), Premi
@OnClick(R.id.buyEnterprise) fun onBuyEnterprise() {
if (!isGoogleSupported()) return
val price = enterpriseText.tag as? Long?
DonateActivity.Companion.start(this, enterpriseKey, price, enterpriseText.text.toString())
}
@OnClick(R.id.unlock) fun onUnlock() {
if (!isGoogleSupported()) return
if (BuildConfig.DEBUG) {
PrefGetter.setProItems()
PrefGetter.setEnterpriseItem()
onSuccessfullyActivated()
return
}
val isEmpty = editText.text.isNullOrBlank()
editText.error = if (isEmpty) getString(R.string.required_field) else null
if (!isEmpty) {
presenter.onCheckPromoCode(editText.text.toString())
}
}
@OnEditorAction(R.id.editText) fun onEditorAction(): Boolean {
onUnlock()
return true
DonateActivity.start(this, enterpriseKey, price, enterpriseText.text.toString())
}
@OnClick(R.id.close) fun onClose() = finish()
@SuppressLint("CheckResult")
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
buyAll.text = getString(R.string.purchase_all).replace("%price%", "$7.99")
RxHelper.getObservable(RxBillingService.getInstance(this, BuildConfig.DEBUG)
RxHelper.getObservable(
RxBillingService.getInstance(this, BuildConfig.DEBUG)
.getSkuDetails(ProductType.IN_APP, arrayListOf(enterpriseKey, proKey, allFeaturesKey))
.toObservable())
.flatMap { Observable.fromIterable(it) }
.subscribe({
Logger.e(it.sku(), it.price(), it.priceCurrencyCode(), it.priceAmountMicros())
when (it.sku()) {
enterpriseKey -> {
enterpriseText.text = it.price()
enterpriseText.tag = it.priceAmountMicros()
}
proKey -> {
proPriceText.text = it.price()
proPriceText.tag = it.priceAmountMicros()
}
allFeaturesKey -> {
buyAll.text = getString(R.string.purchase_all).replace("%price%", it.price())
buyAll.tag = it.priceAmountMicros()
}
.toObservable()
)
.flatMap { Observable.fromIterable(it) }
.subscribe({
Logger.e(it.sku(), it.price(), it.priceCurrencyCode(), it.priceAmountMicros())
when (it.sku()) {
enterpriseKey -> {
enterpriseText.text = it.price()
enterpriseText.tag = it.priceAmountMicros()
}
}, { t -> t.printStackTrace() })
proKey -> {
proPriceText.text = it.price()
proPriceText.tag = it.priceAmountMicros()
}
allFeaturesKey -> {
buyAll.text = getString(R.string.purchase_all).replace("%price%", it.price())
buyAll.tag = it.priceAmountMicros()
}
}
}, { t -> t.printStackTrace() })
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
@ -133,24 +110,7 @@ class PremiumActivity : BaseActivity<PremiumMvp.View, PremiumPresenter>(), Premi
finish()
}
override fun onSuccessfullyActivated() {
ViewHelper.hideKeyboard(editText)
hideProgress()
successActivationHolder.visibility = View.VISIBLE
FabricProvider.logPurchase(InputHelper.toString(editText))
successActivationView.addAnimatorListener(object : Animator.AnimatorListener {
override fun onAnimationRepeat(p0: Animator?) {}
override fun onAnimationEnd(p0: Animator?) {
showMessage(R.string.success, R.string.success)
successResult()
}
override fun onAnimationCancel(p0: Animator?) {}
override fun onAnimationStart(p0: Animator?) {}
})
successActivationView.playAnimation()
}
override fun onSuccessfullyActivated() {}
override fun onNoMatch() {
hideProgress()
@ -158,7 +118,6 @@ class PremiumActivity : BaseActivity<PremiumMvp.View, PremiumPresenter>(), Premi
}
override fun showProgress(resId: Int) {
ViewHelper.hideKeyboard(editText)
TransitionManager.beginDelayedTransition(viewGroup)
progressLayout.visibility = View.VISIBLE
}

View File

@ -6,6 +6,7 @@ import android.os.Bundle
import androidx.viewpager.widget.ViewPager
import android.view.MenuItem
import android.view.View
import android.widget.ProgressBar
import butterknife.BindView
import com.airbnb.lottie.LottieAnimationView
import com.evernote.android.state.State
@ -28,7 +29,7 @@ import com.fastaccess.ui.widgets.CardsPagerTransformerBasic
class ProjectPagerActivity : BaseActivity<ProjectPagerMvp.View, ProjectPagerPresenter>(), ProjectPagerMvp.View {
@BindView(R.id.pager) lateinit var pager: ViewPager
@BindView(R.id.loading) lateinit var loading: LottieAnimationView
@BindView(R.id.loading) lateinit var loading: ProgressBar
@State var isProgressShowing = false
override fun canBack(): Boolean = true
@ -61,12 +62,10 @@ class ProjectPagerActivity : BaseActivity<ProjectPagerMvp.View, ProjectPagerPres
override fun showProgress(resId: Int) {
isProgressShowing = true
loading.visibility = View.VISIBLE
loading.playAnimation()
}
override fun hideProgress() {
isProgressShowing = false
loading.cancelAnimation()
loading.visibility = View.GONE
}

View File

@ -1,9 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
android:id="@+id/viewGroup"
xmlns:android="http://schemas.android.com/apk/res/android"
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/viewGroup"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:focusableInTouchMode="true"
@ -18,8 +17,8 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/bottom_border"
android:paddingBottom="@dimen/spacing_normal"
android:paddingTop="@dimen/spacing_normal">
android:paddingTop="@dimen/spacing_normal"
android:paddingBottom="@dimen/spacing_normal">
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/close"
@ -28,16 +27,16 @@
android:layout_gravity="start|center"
android:layout_marginStart="@dimen/spacing_xs_large"
android:background="?selectableItemBackgroundBorderless"
android:paddingBottom="@dimen/spacing_micro"
android:paddingTop="@dimen/spacing_micro"
android:src="@drawable/ic_back"/>
android:paddingBottom="@dimen/spacing_micro"
android:src="@drawable/ic_back" />
<com.fastaccess.ui.widgets.FontTextView
style="@style/TextAppearance.AppCompat.Title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/keyline_1"
android:text="@string/fasthub_premium_features"/>
android:text="@string/fasthub_premium_features" />
</FrameLayout>
@ -55,30 +54,30 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingBottom="@dimen/spacing_normal"
android:paddingTop="@dimen/spacing_normal">
android:paddingTop="@dimen/spacing_normal"
android:paddingBottom="@dimen/spacing_normal">
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?selectableItemBackground"
android:orientation="horizontal"
android:paddingBottom="@dimen/spacing_micro"
android:paddingTop="@dimen/spacing_micro">
android:paddingTop="@dimen/spacing_micro"
android:paddingBottom="@dimen/spacing_micro">
<androidx.appcompat.widget.AppCompatImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="start|center"
android:layout_marginStart="@dimen/spacing_xs_large"
android:src="@drawable/ic_group"/>
android:src="@drawable/ic_group" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="start|center"
android:paddingEnd="@dimen/spacing_xs_large"
android:paddingStart="@dimen/keyline_1">
android:paddingStart="@dimen/keyline_1"
android:paddingEnd="@dimen/spacing_xs_large">
<com.fastaccess.ui.widgets.FontTextView
style="@style/TextAppearance.AppCompat.Subhead"
@ -86,15 +85,15 @@
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="@string/enterprise"
android:textColor="@color/search_tab_highlighter"/>
android:textColor="@color/search_tab_highlighter" />
<com.fastaccess.ui.widgets.FontTextView
android:id="@+id/enterprisePrice"
style="@style/Base.TextAppearance.AppCompat.Subhead"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="$ 5.99"
android:textColor="@color/material_red_700"/>
android:textColor="@color/material_red_700"
tools:text="$ 5.99" />
</LinearLayout>
</FrameLayout>
@ -103,9 +102,9 @@
style="@style/Base.TextAppearance.AppCompat.Small"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingEnd="@dimen/spacing_xs_large"
android:paddingStart="@dimen/keyline_1"
android:text="@string/enterprise_pro_description"/>
android:paddingEnd="@dimen/spacing_xs_large"
android:text="@string/enterprise_pro_description" />
<com.fastaccess.ui.widgets.FontButton
android:id="@+id/buyEnterprise"
@ -113,8 +112,14 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="end"
android:layout_marginTop="@dimen/spacing_xs_large"
android:layout_marginEnd="@dimen/spacing_normal"
android:text="@string/purchase"/>
android:drawableEnd="@drawable/ic_arrow_right"
android:drawablePadding="@dimen/spacing_normal"
android:drawableTint="@color/material_green_700"
android:text="@string/purchase"
android:textAllCaps="false"
android:textColor="@color/material_green_700" />
</LinearLayout>
@ -122,30 +127,30 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingBottom="@dimen/spacing_normal"
android:paddingTop="@dimen/spacing_normal">
android:paddingTop="@dimen/spacing_normal"
android:paddingBottom="@dimen/spacing_normal">
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?selectableItemBackground"
android:orientation="horizontal"
android:paddingBottom="@dimen/spacing_micro"
android:paddingTop="@dimen/spacing_micro">
android:paddingTop="@dimen/spacing_micro"
android:paddingBottom="@dimen/spacing_micro">
<androidx.appcompat.widget.AppCompatImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="start|center"
android:layout_marginStart="@dimen/spacing_xs_large"
android:src="@drawable/ic_repo"/>
android:src="@drawable/ic_repo" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="start|center"
android:paddingEnd="@dimen/spacing_xs_large"
android:paddingStart="@dimen/keyline_1">
android:paddingStart="@dimen/keyline_1"
android:paddingEnd="@dimen/spacing_xs_large">
<com.fastaccess.ui.widgets.FontTextView
style="@style/TextAppearance.AppCompat.Subhead"
@ -153,15 +158,15 @@
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="@string/pro_features"
android:textColor="@color/search_tab_highlighter"/>
android:textColor="@color/search_tab_highlighter" />
<com.fastaccess.ui.widgets.FontTextView
android:id="@+id/proPrice"
style="@style/Base.TextAppearance.AppCompat.Subhead"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="$ 3.99"
android:textColor="@color/material_red_700"/>
android:textColor="@color/material_red_700"
tools:text="$ 3.99" />
</LinearLayout>
</FrameLayout>
@ -169,9 +174,9 @@
style="@style/Base.TextAppearance.AppCompat.Small"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingEnd="@dimen/spacing_xs_large"
android:paddingStart="@dimen/keyline_1"
android:text="@string/pro_features_list"/>
android:paddingEnd="@dimen/spacing_xs_large"
android:text="@string/pro_features_list" />
<com.fastaccess.ui.widgets.FontButton
android:id="@+id/buyPro"
@ -179,88 +184,27 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="end"
android:layout_marginTop="@dimen/spacing_xs_large"
android:layout_marginEnd="@dimen/spacing_normal"
android:text="@string/purchase"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingBottom="@dimen/spacing_normal"
android:paddingTop="@dimen/spacing_normal">
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?selectableItemBackground"
android:orientation="horizontal"
android:paddingBottom="@dimen/spacing_micro"
android:paddingTop="@dimen/spacing_micro">
<androidx.appcompat.widget.AppCompatImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="start|center"
android:layout_marginStart="@dimen/spacing_xs_large"
android:src="@drawable/ic_unlock"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="start|center"
android:paddingEnd="@dimen/spacing_xs_large"
android:paddingStart="@dimen/keyline_1">
<com.fastaccess.ui.widgets.FontTextView
style="@style/TextAppearance.AppCompat.Subhead"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="@string/unlock_everything"
android:textColor="@color/search_tab_highlighter"/>
<com.fastaccess.ui.widgets.FontTextView
style="@style/Base.TextAppearance.AppCompat.Subhead"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="$ 0.00"
android:textColor="@color/material_red_700"/>
</LinearLayout>
</FrameLayout>
<com.fastaccess.ui.widgets.FontEditText
android:id="@+id/editText"
style="@style/Base.TextAppearance.AppCompat.Small"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/spacing_xs_large"
android:layout_marginStart="@dimen/keyline_1"
android:hint="@string/secret_code"
android:imeOptions="actionDone"
android:inputType="textWebEditText"
android:singleLine="true"/>
<com.fastaccess.ui.widgets.FontButton
android:id="@+id/unlock"
style="@style/Widget.AppCompat.Button.Borderless.Colored"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="end"
android:layout_marginEnd="@dimen/spacing_normal"
android:text="@string/unlock"/>
android:drawableEnd="@drawable/ic_arrow_right"
android:drawablePadding="@dimen/spacing_normal"
android:drawableTint="@color/material_green_700"
android:text="@string/purchase"
android:textAllCaps="false"
android:textColor="@color/material_green_700" />
</LinearLayout>
</LinearLayout>
</ScrollView>
<com.fastaccess.ui.widgets.FontButton
android:id="@+id/buyAll"
style="@style/Widget.AppCompat.ButtonBar"
style="@style/Widget.AppCompat.Button.Borderless.Colored"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?selectableItemBackground"
android:text="@string/purchase_all"
android:textColor="@color/material_red_700"/>
android:textAppearance="@style/TextAppearance.AppCompat.Title"
android:textColor="?colorAccent" />
</LinearLayout>
@ -275,27 +219,7 @@
<ProgressBar
style="?android:progressBarStyleLarge"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</LinearLayout>
<LinearLayout
android:id="@+id/successActivationHolder"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="?android:windowBackground"
android:gravity="center"
android:visibility="gone"
tools:visibility="visible">
<com.airbnb.lottie.LottieAnimationView
android:id="@+id/successActivationView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
app:lottie_autoPlay="false"
app:lottie_fileName="lottie/code_invite_success.json"
app:lottie_loop="false"/>
android:layout_height="wrap_content" />
</LinearLayout>

View File

@ -1,8 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.drawerlayout.widget.DrawerLayout
android:id="@+id/drawer"
xmlns:android="http://schemas.android.com/apk/res/android"
<androidx.drawerlayout.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/drawer"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true">
@ -13,7 +13,7 @@
android:layout_height="match_parent"
android:orientation="vertical">
<include layout="@layout/appbar_elevation_dark"/>
<include layout="@layout/appbar_elevation_dark" />
<FrameLayout
android:layout_width="match_parent"
@ -22,20 +22,18 @@
<com.fastaccess.ui.widgets.ViewPagerView
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
android:layout_height="match_parent" />
<com.airbnb.lottie.LottieAnimationView
<ProgressBar
android:id="@+id/loading"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:visibility="gone"
app:lottie_autoPlay="true"
app:lottie_fileName="lottie/bounching_ball.json"
app:lottie_loop="true"/>
tools:visibility="visible" />
</FrameLayout>
</LinearLayout>
<include layout="@layout/nav_menu_layout"/>
<include layout="@layout/nav_menu_layout" />
</androidx.drawerlayout.widget.DrawerLayout>