Add option to enroll in beta programs

This commit is contained in:
Rahul Kumar Patel
2021-02-19 02:15:28 +05:30
parent a06665fc94
commit d0963d0eba
5 changed files with 165 additions and 5 deletions

View File

@@ -30,6 +30,7 @@ import android.view.View
import android.widget.LinearLayout
import com.aurora.Constants
import com.aurora.gplayapi.data.models.App
import com.aurora.gplayapi.data.models.AuthData
import com.aurora.gplayapi.data.models.File
import com.aurora.gplayapi.helpers.AppDetailsHelper
import com.aurora.gplayapi.helpers.PurchaseHelper
@@ -63,6 +64,7 @@ class AppDetailsActivity : BaseDetailsActivity() {
private lateinit var B: ActivityDetailsBinding
private lateinit var bottomSheetBehavior: BottomSheetBehavior<LinearLayout>
private lateinit var authData: AuthData
private lateinit var app: App
private lateinit var downloadManager: DownloadManager
private lateinit var fetch: Fetch
@@ -226,7 +228,7 @@ class AppDetailsActivity : BaseDetailsActivity() {
private fun fetchCompleteApp() {
task {
val authData = AuthProvider.with(this).getAuthData()
authData = AuthProvider.with(this).getAuthData()
return@task AppDetailsHelper(authData)
.using(HttpClient.getPreferredClient())
.getAppByPackageName(app.packageName)
@@ -285,6 +287,16 @@ class AppDetailsActivity : BaseDetailsActivity() {
inflateAppRatingAndReviews(B.layoutDetailsReview, app)
inflateAppDevInfo(B.layoutDetailsDev, app)
inflateAppPrivacy(B.layoutDetailsPrivacy, app)
if (!authData.isAnonymous) {
app.testingProgram?.let {
if (it.isAvailable && it.isSubscribed) {
B.layoutDetailsApp.txtLine1.text = it.displayName
}
}
inflateBetaSubscription(B.layoutDetailsBeta, app)
}
}
}

View File

@@ -32,18 +32,19 @@ import androidx.core.text.HtmlCompat
import com.aurora.Constants
import com.aurora.gplayapi.data.models.App
import com.aurora.gplayapi.data.models.Review
import com.aurora.gplayapi.helpers.AppDetailsHelper
import com.aurora.gplayapi.helpers.ReviewsHelper
import com.aurora.store.R
import com.aurora.store.data.model.ExodusReport
import com.aurora.store.data.model.Report
import com.aurora.store.data.network.HttpClient
import com.aurora.store.data.providers.AuthProvider
import com.aurora.store.databinding.LayoutDetailsDescriptionBinding
import com.aurora.store.databinding.LayoutDetailsDevBinding
import com.aurora.store.databinding.LayoutDetailsPrivacyBinding
import com.aurora.store.databinding.LayoutDetailsReviewBinding
import com.aurora.store.databinding.*
import com.aurora.store.util.CommonUtil
import com.aurora.store.util.NavigationUtil
import com.aurora.store.util.extensions.hide
import com.aurora.store.util.extensions.load
import com.aurora.store.util.extensions.show
import com.aurora.store.util.extensions.toast
import com.aurora.store.view.custom.RatingView
import com.aurora.store.view.epoxy.views.*
@@ -232,6 +233,60 @@ abstract class BaseDetailsActivity : BaseActivity() {
}
}
fun inflateBetaSubscription(B: LayoutDetailsBetaBinding, app: App) {
app.testingProgram?.let { betaProgram ->
if (betaProgram.isAvailable) {
B.root.show()
updateBetaActions(B, betaProgram.isSubscribed)
if (betaProgram.isSubscribedAndInstalled) {
}
B.imgBeta.load(betaProgram.artwork.url) {
}
B.btnBetaAction.setOnClickListener {
val authData = AuthProvider.with(this).getAuthData()
task {
B.btnBetaAction.text = getString(R.string.action_pending)
B.btnBetaAction.isEnabled = false
AppDetailsHelper(authData).testingProgram(
app.packageName,
!betaProgram.isSubscribed
)
} successUi {
B.btnBetaAction.isEnabled = true
if (it.subscribed) {
updateBetaActions(B, true)
}
if (it.unsubscribed) {
updateBetaActions(B, false)
}
} failUi {
updateBetaActions(B, betaProgram.isSubscribed)
toast("Failed to update beta status")
}
}
} else {
B.root.hide()
}
}
}
private fun updateBetaActions(B: LayoutDetailsBetaBinding, isSubscribed: Boolean) {
if (isSubscribed) {
B.btnBetaAction.text = getString(R.string.action_leave)
B.txtBetaTitle.text = getString(R.string.details_beta_subscribed)
} else {
B.btnBetaAction.text = getString(R.string.action_join)
B.txtBetaTitle.text = getString(R.string.details_beta_available)
}
}
//Helpers
private fun openScreenshotActivity(app: App, position: Int) {
val intent = Intent(