diff --git a/app/build.gradle.kts b/app/build.gradle.kts index cc8a6c7..a90dafa 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -14,8 +14,8 @@ android { applicationId = "com.veloria.now.shortapp" minSdk = 24 targetSdk = 34 - versionCode = 4 - versionName = "1.0.3" + versionCode = 5 + versionName = "1.0.4" testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" } diff --git a/app/src/main/java/com/veloria/now/shortapp/subtractionCroll/adminSourceid/NOEditRegisterFragment.kt b/app/src/main/java/com/veloria/now/shortapp/subtractionCroll/adminSourceid/NOEditRegisterFragment.kt index 5b3cf95..5d76cca 100644 --- a/app/src/main/java/com/veloria/now/shortapp/subtractionCroll/adminSourceid/NOEditRegisterFragment.kt +++ b/app/src/main/java/com/veloria/now/shortapp/subtractionCroll/adminSourceid/NOEditRegisterFragment.kt @@ -1653,8 +1653,11 @@ class NOEditRegisterFragment : JItemServiceFragment break } + val maxSize = appearanceBase.size - (appearanceBase.size % 3) - homeDramaAdapter?.submitList(appearanceBase) + val dramaArrayList = appearanceBase.take(maxSize) + + homeDramaAdapter?.submitList(dramaArrayList) } else { var loginm: String = "downmix" while (loginm.length > 104) { diff --git a/app/src/main/java/com/veloria/now/shortapp/subtractionCroll/avcintraRelock/PlayerBuyDialogFragment.kt b/app/src/main/java/com/veloria/now/shortapp/subtractionCroll/avcintraRelock/PlayerBuyDialogFragment.kt index 3afa4dc..90c32db 100644 --- a/app/src/main/java/com/veloria/now/shortapp/subtractionCroll/avcintraRelock/PlayerBuyDialogFragment.kt +++ b/app/src/main/java/com/veloria/now/shortapp/subtractionCroll/avcintraRelock/PlayerBuyDialogFragment.kt @@ -13,6 +13,7 @@ import android.view.WindowManager import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.lifecycleScope import androidx.recyclerview.widget.GridLayoutManager +import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView import com.android.billingclient.api.AcknowledgePurchaseParams import com.android.billingclient.api.BillingClient @@ -32,16 +33,17 @@ import com.veloria.now.shortapp.civil.JActivityAdapter import com.veloria.now.shortapp.civil.RYAction import com.veloria.now.shortapp.civil.TranslationHelper import com.veloria.now.shortapp.civil.YFHome +import com.veloria.now.shortapp.civil.singleOnClick import com.veloria.now.shortapp.civil.toast import com.veloria.now.shortapp.databinding.LayoutVePlayerBuyDialogBinding import com.veloria.now.shortapp.subtractionCroll.bidirectional.coordinate.VeStoreViewModel -import com.veloria.now.shortapp.subtractionCroll.modificationsPretch.VeBannerVipPayAdapter import com.veloria.now.shortapp.subtractionCroll.modificationsPretch.VeStoreCoinAdapter +import com.veloria.now.shortapp.subtractionCroll.modificationsPretch.VeStoreCoinBigAdapter +import com.veloria.now.shortapp.subtractionCroll.modificationsPretch.VeStoreVipAdapter import com.veloria.now.shortapp.texturedAsink.VeCreatePayOrderReqBean import com.veloria.now.shortapp.texturedAsink.VePayBean import com.veloria.now.shortapp.texturedAsink.VePaySettingsBean import com.veloria.now.shortapp.texturedAsink.XAboutBean -import com.youth.banner.listener.OnPageChangeListener import kotlinx.coroutines.launch import org.greenrobot.eventbus.EventBus @@ -52,7 +54,8 @@ class PlayerBuyDialogFragment : BottomSheetDialogFragment() { private val viewModel by lazy { ViewModelProvider(this)[VeStoreViewModel::class.java] } private var coinAdapter: VeStoreCoinAdapter? = null - private var bannerAdapter: VeBannerVipPayAdapter? = null + private var coinBigAdapter: VeStoreCoinBigAdapter? = null + private var vipAdapter: VeStoreVipAdapter? = null private var promise_view_ad: Int? = -1 private var connectNum = 0 private var short_play_id: Int? = 0 @@ -65,6 +68,7 @@ class PlayerBuyDialogFragment : BottomSheetDialogFragment() { private var order_code = "" private var vipData: VePaySettingsBean.VipBean? = null private var coinsData: VePaySettingsBean.CoinsBean? = null + private var coinsBigData: VePaySettingsBean.CoinsBean? = null private var isBuy = false private var purchaseData: Purchase? = null @@ -90,27 +94,17 @@ class PlayerBuyDialogFragment : BottomSheetDialogFragment() { if (TranslationHelper.getTranslation() != null) { binding?.tvCoinsText?.text = TranslationHelper.getTranslation()?.veloria_your_coins - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { binding?.tvTips?.text = Html.fromHtml( TranslationHelper.getTranslation()?.veloria_store_tips ?: getString(R.string.ve_store_tips_br), Html.FROM_HTML_MODE_COMPACT ) - binding?.tvBuyHint?.text = Html.fromHtml( - TranslationHelper.getTranslation()?.veloria_unlimited_access_to - ?: getString(R.string.unlimited_access_to_all_series_for_1_br), - Html.FROM_HTML_MODE_COMPACT - ) } else { binding?.tvTips?.text = Html.fromHtml( TranslationHelper.getTranslation()?.veloria_store_tips ?: getString(R.string.ve_store_tips_br) ) - binding?.tvBuyHint?.text = Html.fromHtml( - TranslationHelper.getTranslation()?.veloria_unlimited_access_to - ?: getString(R.string.unlimited_access_to_all_series_for_1_br) - ) } } @@ -122,6 +116,10 @@ class PlayerBuyDialogFragment : BottomSheetDialogFragment() { dismiss() } + vipAdapter = VeStoreVipAdapter() + binding?.recyclerVip?.layoutManager = LinearLayoutManager(requireContext()) + binding?.recyclerVip?.adapter = vipAdapter + coinAdapter = VeStoreCoinAdapter() binding?.recyclerCoin?.layoutManager = GridLayoutManager(requireContext(), 3) binding?.recyclerCoin?.adapter = coinAdapter @@ -138,38 +136,64 @@ class PlayerBuyDialogFragment : BottomSheetDialogFragment() { } }) + coinBigAdapter = VeStoreCoinBigAdapter() + binding?.recyclerCoinBig?.layoutManager = GridLayoutManager(requireContext(), 2) + binding?.recyclerCoinBig?.adapter = coinBigAdapter + binding?.recyclerCoinBig?.addItemDecoration(object : RecyclerView.ItemDecoration() { + override fun getItemOffsets( + outRect: Rect, + view: View, + parent: RecyclerView, + state: RecyclerView.State + ) { + outRect.left = resources.getDimension(R.dimen.dp_5).toInt() + outRect.right = resources.getDimension(R.dimen.dp_5).toInt() + outRect.bottom = resources.getDimension(R.dimen.dp_10).toInt() + } + }) + + showLoading() viewModel.getPaySettingsV3(0, 0) + vipAdapter?.setOnItemClickListener { adapter, view, position -> + if (typeOnClick != 1) { + coinAdapter?.currentPosition = -1 + coinAdapter?.notifyDataSetChanged() + coinBigAdapter?.currentPosition = -1 + coinBigAdapter?.notifyDataSetChanged() + } + typeOnClick = 1 + vipAdapter?.currentPosition = position + vipAdapter?.notifyDataSetChanged() + + setOnPayNowClick() + } coinAdapter?.setOnItemClickListener { adapter, view, position -> - if (typeOnClick == 1) { - if (bannerAdapter?.currentPosition!! >= 0) { - bannerAdapter?.notifyItemChanged(bannerAdapter?.currentPosition!!) - } - bannerAdapter?.oldPosition = -1 - bannerAdapter?.currentPosition = -1 + if (typeOnClick != 0) { + vipAdapter?.currentPosition = -1 + vipAdapter?.notifyDataSetChanged() + coinBigAdapter?.currentPosition = -1 + coinBigAdapter?.notifyDataSetChanged() } typeOnClick = 0 coinAdapter?.currentPosition = position coinAdapter?.notifyDataSetChanged() - coinsData = - coinAdapter!!.getItem(position) as VePaySettingsBean.CoinsBean - - if (parcelable != null) { - short_play_id?.let { - VeCreatePayOrderReqBean( - coinsData?.id.toString(), - "google", - it, - parcelable!!.short_play_video_id - ) - }?.let { - viewModel.setCreatePayOrder( - it - ) - } + setOnPayNowClick() + } + coinBigAdapter?.setOnItemClickListener { adapter, view, position -> + if (typeOnClick != 2) { + vipAdapter?.currentPosition = -1 + vipAdapter?.notifyDataSetChanged() + coinAdapter?.currentPosition = -1 + coinAdapter?.notifyDataSetChanged() } + typeOnClick = 2 + coinBigAdapter?.currentPosition = position + coinBigAdapter?.notifyDataSetChanged() + + setOnPayNowClick() } observeData() @@ -184,34 +208,44 @@ class PlayerBuyDialogFragment : BottomSheetDialogFragment() { window?.setGravity(Gravity.BOTTOM) val layoutParams = window?.attributes layoutParams?.width = WindowManager.LayoutParams.MATCH_PARENT - layoutParams?.height = resources.getDimensionPixelSize(R.dimen.dp_600) + layoutParams?.height = (requireActivity().resources.displayMetrics.heightPixels - requireActivity().resources.getDimension(R.dimen.dp_90)).toInt() window?.attributes = layoutParams return dialog } - private fun setBannerListener() { - binding?.bannerVip?.setOnBannerListener { data, position -> - if (typeOnClick == 0) { - coinAdapter?.currentPosition = -1 - coinAdapter?.notifyDataSetChanged() - } - if (bannerAdapter?.currentPosition!! >= 0) { - bannerAdapter?.oldPosition = bannerAdapter?.currentPosition!! - } - typeOnClick = 1 - bannerAdapter?.currentPosition = position - bannerAdapter?.notifyItemChanged(position) - if (bannerAdapter?.oldPosition!! >= 0) { - bannerAdapter?.notifyItemChanged(bannerAdapter?.oldPosition!!) - } - vipData = - bannerAdapter?.getData(bannerAdapter!!.currentPosition) as VePaySettingsBean.VipBean + fun setOnPayNowClick() { + singleOnClick { + if (!isConnect) { + if (TranslationHelper.getTranslation() != null) { + } else { + toast(getString(R.string.ve_google_pay_error)) + } + return@singleOnClick + } + if (typeOnClick == 0) { + coinsData = + coinAdapter?.getItem(coinAdapter!!.currentPosition) as VePaySettingsBean.CoinsBean + } else if (typeOnClick == 1) { + vipData = + vipAdapter?.getItem(vipAdapter!!.currentPosition) as VePaySettingsBean.VipBean + } else { + coinsBigData = + coinBigAdapter?.getItem(coinBigAdapter!!.currentPosition) as VePaySettingsBean.CoinsBean + } showLoading() + var idStr = "" + if (typeOnClick == 0) { + idStr = coinsData?.id.toString() + } else if (typeOnClick == 1) { + idStr = vipData?.id.toString() + } else { + idStr = coinsBigData?.id.toString() + } if (parcelable != null) { short_play_id?.let { VeCreatePayOrderReqBean( - vipData?.id.toString(), + idStr, "google", it, parcelable!!.short_play_video_id @@ -222,62 +256,48 @@ class PlayerBuyDialogFragment : BottomSheetDialogFragment() { ) } } - } - - binding?.bannerVip?.addOnPageChangeListener(object : OnPageChangeListener { - override fun onPageScrolled( - position: Int, - positionOffset: Float, - positionOffsetPixels: Int - ) { - } - - override fun onPageSelected(position: Int) { - val data = bannerAdapter?.getData(position) - data?.let { setVipContentText(it) } - - } - - override fun onPageScrollStateChanged(state: Int) { - } - - }) - - val itemData = bannerAdapter?.getData(0) - itemData?.let { setVipContentText(it) } - - } - - private fun setVipContentText(data: VePaySettingsBean.VipBean) { - val vipContent1 = TranslationHelper.replaces( - getString(R.string.unlimited_access_to_all_series_for_1_br), - data?.vip_type_key.toString(), - data.send_coin_ttl.toString() - ) - binding?.tvBuyHint?.text = - Html.fromHtml(vipContent1, Html.FROM_HTML_MODE_LEGACY) - } fun observeData() { viewModel.PaySettingsV3.observe(this) { if (it?.data != null) { - coinAdapter?.submitList(it.data.list_coins) if (it.data.list_sub_vip.isNotEmpty()) { - binding?.tvBuyHint?.visibility = View.VISIBLE - binding?.bannerVip?.visibility = View.VISIBLE - bannerAdapter = - VeBannerVipPayAdapter(it.data.list_sub_vip) - binding?.bannerVip?.setBannerGalleryEffect( - resources.getDimension(R.dimen.dp_5).toInt(), - resources.getDimension(R.dimen.dp_5).toInt() - ) - binding?.bannerVip?.setAdapter(bannerAdapter) - setBannerListener() + vipAdapter?.submitList(it.data.list_sub_vip) + binding?.recyclerVip?.visibility = View.VISIBLE + + it.data.list_sub_vip.let { it1 -> querySubVipProductDetails(it1) } + + } else { + binding?.recyclerVip?.visibility = View.GONE + } + if (it.data.list_coins.isNotEmpty()) { + val small = it.data.list_coins.filter { coins -> coins.size == "small" } + val big = it.data.list_coins.filter { coins -> coins.size == "big" } + if (small.isNotEmpty()) { + coinAdapter?.submitList(small) + binding?.recyclerCoin?.visibility = View.VISIBLE + } else { + binding?.recyclerCoin?.visibility = View.GONE + } + if (big.isNotEmpty()) { + coinBigAdapter?.submitList(big) + binding?.recyclerCoinBig?.visibility = View.VISIBLE + } else { + binding?.recyclerCoinBig?.visibility = View.GONE + } + if (small?.isNotEmpty() == true) { + small?.let { it1 -> queryInAppCoinsProductDetails(it1, "small") } + } + if (big?.isNotEmpty() == true) { + big?.let { it1 -> queryInAppCoinsProductDetails(it1, "big") } + } + binding?.tvCoinTitle?.visibility = View.VISIBLE + } else { + binding?.recyclerCoin?.visibility = View.GONE + binding?.recyclerCoinBig?.visibility = View.GONE + binding?.tvCoinTitle?.visibility = View.GONE } - it.data.list_sub_vip.let { it1 -> querySubVipProductDetails(it1) } - it.data.list_coins.let { it1 -> queryInAppCoinsProductDetails(it1) } } binding?.root?.postDelayed({ @@ -290,8 +310,10 @@ class PlayerBuyDialogFragment : BottomSheetDialogFragment() { order_code = it.data.order_code.toString() if (typeOnClick == 0) { coinsData?.android_template_id?.let { it1 -> getProduct(it1) } - } else { + } else if (typeOnClick == 1) { vipData?.android_template_id?.let { it1 -> getProduct(it1) } + } else { + coinsBigData?.android_template_id?.let { it1 -> getProduct(it1) } } } else { if (TranslationHelper.getTranslation() != null) { @@ -333,10 +355,10 @@ class PlayerBuyDialogFragment : BottomSheetDialogFragment() { BillingClient.BillingResponseCode.OK -> { for (purchase in purchases!!) { if (purchase.purchaseState == Purchase.PurchaseState.PURCHASED) { - if (typeOnClick == 0) { - consumePurchase(purchase) - } else { + if (typeOnClick == 1) { consumePurchaseSub(purchase) + } else { + consumePurchase(purchase) } } } @@ -443,7 +465,7 @@ class PlayerBuyDialogFragment : BottomSheetDialogFragment() { } binding?.root?.postDelayed({ - bannerAdapter?.setDatas(updatedVipList) + vipAdapter?.submitList(updatedVipList) hideLoading() }, 500) } else { @@ -473,7 +495,8 @@ class PlayerBuyDialogFragment : BottomSheetDialogFragment() { } private fun queryInAppCoinsProductDetails( - coinsList: List + coinsList: List, + type: String ) { val productDetailsResponseListener = ProductDetailsResponseListener { billingResult, productDetailsList -> @@ -492,7 +515,11 @@ class PlayerBuyDialogFragment : BottomSheetDialogFragment() { } coinAdapter?.recyclerView?.postDelayed({ - coinAdapter?.submitList(updatedCoinsList) + if (type == "small") { + coinAdapter?.submitList(updatedCoinsList) + } else { + coinBigAdapter?.submitList(updatedCoinsList) + } }, 500) } else { hideLoading() @@ -533,10 +560,10 @@ class PlayerBuyDialogFragment : BottomSheetDialogFragment() { } } } - val productType: String = if (typeOnClick == 0) { - BillingClient.ProductType.INAPP - } else { + val productType: String = if (typeOnClick == 1) { BillingClient.ProductType.SUBS + } else { + BillingClient.ProductType.INAPP } val inAppProductInfo = ArrayList() @@ -597,12 +624,12 @@ class PlayerBuyDialogFragment : BottomSheetDialogFragment() { ConsumeResponseListener { billingResult, purchaseToken -> val vePayBean = VePayBean( order_code, - if (typeOnClick == 0) coinsData?.id.toString() else vipData?.id.toString(), + if (typeOnClick == 0) coinsData?.id.toString() else coinsBigData?.id.toString(), YFHome.getPackageName(), - if (typeOnClick == 0) coinsData?.android_template_id.toString() else vipData?.android_template_id.toString(), + if (typeOnClick == 0) coinsData?.android_template_id.toString() else coinsBigData?.android_template_id.toString(), purchaseToken, purchaseData?.orderId.toString(), - if (typeOnClick == 0) coinsData?.price.toString() else vipData?.price.toString() + if (typeOnClick == 0) coinsData?.price.toString() else coinsBigData?.price.toString() ) payBeanReq = vePayBean if (billingResult.responseCode == BillingClient.BillingResponseCode.OK) { @@ -642,7 +669,6 @@ class PlayerBuyDialogFragment : BottomSheetDialogFragment() { billingClientData?.endConnection() billingClientData = null System.gc() - System.gc() EventBus.getDefault() .post(JActivityAdapter.VIDEO_PAY_REFRESH_DISMISS) super.onDismiss(dialog) diff --git a/app/src/main/java/com/veloria/now/shortapp/subtractionCroll/bidirectional/VeStoreActivity.kt b/app/src/main/java/com/veloria/now/shortapp/subtractionCroll/bidirectional/VeStoreActivity.kt index 36e3c3c..2f333a9 100644 --- a/app/src/main/java/com/veloria/now/shortapp/subtractionCroll/bidirectional/VeStoreActivity.kt +++ b/app/src/main/java/com/veloria/now/shortapp/subtractionCroll/bidirectional/VeStoreActivity.kt @@ -30,13 +30,12 @@ import com.veloria.now.shortapp.civil.toast import com.veloria.now.shortapp.databinding.ActivityVeStoreBinding import com.veloria.now.shortapp.newsletter.AIXTextActivity import com.veloria.now.shortapp.subtractionCroll.bidirectional.coordinate.VeStoreViewModel -import com.veloria.now.shortapp.subtractionCroll.modificationsPretch.VeBannerVipPayAdapter import com.veloria.now.shortapp.subtractionCroll.modificationsPretch.VeStoreCoinAdapter +import com.veloria.now.shortapp.subtractionCroll.modificationsPretch.VeStoreCoinBigAdapter import com.veloria.now.shortapp.subtractionCroll.modificationsPretch.VeStoreVipAdapter import com.veloria.now.shortapp.texturedAsink.VeCreatePayOrderReqBean import com.veloria.now.shortapp.texturedAsink.VePayBean import com.veloria.now.shortapp.texturedAsink.VePaySettingsBean -import com.youth.banner.listener.OnPageChangeListener import kotlinx.coroutines.launch class VeStoreActivity : AIXTextActivity() { @@ -46,11 +45,15 @@ class VeStoreActivity : AIXTextActivity= Build.VERSION_CODES.N) { binding.tvTips.text = Html.fromHtml( TranslationHelper.getTranslation()?.veloria_store_tips @@ -90,25 +82,15 @@ class VeStoreActivity : AIXTextActivity + if (typeOnClick != 1) { + coinAdapter?.currentPosition = -1 + coinAdapter?.notifyDataSetChanged() + coinBigAdapter?.currentPosition = -1 + coinBigAdapter?.notifyDataSetChanged() + } + typeOnClick = 1 + vipAdapter?.currentPosition = position + vipAdapter?.notifyDataSetChanged() + + setOnPayNowClick() + } coinAdapter?.setOnItemClickListener { adapter, view, position -> - if (typeOnClick == 1) { - if (bannerAdapter?.currentPosition!! >= 0) { - bannerAdapter?.notifyItemChanged(bannerAdapter?.currentPosition!!) - } - bannerAdapter?.oldPosition = -1 - bannerAdapter?.currentPosition = -1 + if (typeOnClick != 0) { + vipAdapter?.currentPosition = -1 + vipAdapter?.notifyDataSetChanged() + coinBigAdapter?.currentPosition = -1 + coinBigAdapter?.notifyDataSetChanged() } typeOnClick = 0 coinAdapter?.currentPosition = position @@ -142,64 +151,23 @@ class VeStoreActivity : AIXTextActivity + if (typeOnClick != 2) { + vipAdapter?.currentPosition = -1 + vipAdapter?.notifyDataSetChanged() + coinAdapter?.currentPosition = -1 + coinAdapter?.notifyDataSetChanged() + } + typeOnClick = 2 + coinBigAdapter?.currentPosition = position + coinBigAdapter?.notifyDataSetChanged() + + setOnPayNowClick() + } initPayData() } - private fun setBannerListener() { - binding.bannerVip.setOnBannerListener { data, position -> - if (typeOnClick == 0) { - coinAdapter?.currentPosition = -1 - coinAdapter?.notifyDataSetChanged() - } - if (bannerAdapter?.currentPosition!! >= 0) { - bannerAdapter?.oldPosition = bannerAdapter?.currentPosition!! - } - typeOnClick = 1 - bannerAdapter?.currentPosition = position - bannerAdapter?.notifyItemChanged(position) - if (bannerAdapter?.oldPosition!! >= 0) { - bannerAdapter?.notifyItemChanged(bannerAdapter?.oldPosition!!) - } - setOnPayNowClick() - } - - binding.bannerVip.addOnPageChangeListener(object : OnPageChangeListener { - override fun onPageScrolled( - position: Int, - positionOffset: Float, - positionOffsetPixels: Int - ) { - } - - override fun onPageSelected(position: Int) { - val data = bannerAdapter?.getData(position) - data?.let { setVipContentText(it) } - - } - - override fun onPageScrollStateChanged(state: Int) { - } - - }) - - val itemData = bannerAdapter?.getData(0) - itemData?.let { setVipContentText(it) } - - } - - private fun setVipContentText(data: VePaySettingsBean.VipBean) { - val vipContent1 = - "Unlimited access to all series for 1 ".plus(data?.vip_type_key) - .plus(" (No Ads)") - binding.tvVipContent1.text = - Html.fromHtml(vipContent1, Html.FROM_HTML_MODE_LEGACY) - val vipContent2 = - "The donate coins will expire in ".plus(data.send_coin_ttl.toString()) - .plus(" days") - binding.tvVipContent2.text = - Html.fromHtml(vipContent2, Html.FROM_HTML_MODE_LEGACY) - } fun setOnPayNowClick() { singleOnClick { @@ -212,15 +180,26 @@ class VeStoreActivity : AIXTextActivity querySubVipProductDetails(it1) } - it.data.list_sub_vip.let { it1 -> querySubVipProductDetails(it1) } - it.data.list_coins.let { it1 -> queryInAppCoinsProductDetails(it1) } + } else { + binding.recyclerVip.visibility = View.GONE + } + if (it.data.list_coins.isNotEmpty()) { + val small = it.data.list_coins.filter { coins -> coins.size == "small" } + val big = it.data.list_coins.filter { coins -> coins.size == "big" } + if (small.isNotEmpty()) { + coinAdapter?.submitList(small) + binding.recyclerCoin.visibility = View.VISIBLE + } else { + binding.recyclerCoin.visibility = View.GONE + } + if (big.isNotEmpty()) { + coinBigAdapter?.submitList(big) + binding.recyclerCoinBig.visibility = View.VISIBLE + } else { + binding.recyclerCoinBig.visibility = View.GONE + } + if (small?.isNotEmpty() == true) { + small?.let { it1 -> queryInAppCoinsProductDetails(it1, "small") } + } + if (big?.isNotEmpty() == true) { + big?.let { it1 -> queryInAppCoinsProductDetails(it1, "big") } + } + binding.tvCoinTitle.visibility = View.VISIBLE + } else { + binding.recyclerCoin.visibility = View.GONE + binding.recyclerCoinBig.visibility = View.GONE + binding.tvCoinTitle.visibility = View.GONE + } } hideLoading() @@ -263,8 +256,10 @@ class VeStoreActivity : AIXTextActivity getProduct(it1) } - } else { + } else if (typeOnClick == 1) { vipData?.android_template_id?.let { it1 -> getProduct(it1) } + } else { + coinsBigData?.android_template_id?.let { it1 -> getProduct(it1) } } } else { if (TranslationHelper.getTranslation() != null) { @@ -296,7 +291,6 @@ class VeStoreActivity : AIXTextActivity { for (purchase in purchases!!) { if (purchase.purchaseState == Purchase.PurchaseState.PURCHASED) { - if (typeOnClick == 0) { - consumePurchase(purchase) - } else { + if (typeOnClick == 1) { consumePurchaseSub(purchase) + } else { + consumePurchase(purchase) } } } @@ -419,7 +413,7 @@ class VeStoreActivity : AIXTextActivity + coinsList: List, + type: String ) { val productDetailsResponseListener = ProductDetailsResponseListener { billingResult, productDetailsList -> @@ -468,7 +463,11 @@ class VeStoreActivity : AIXTextActivity() @@ -591,12 +590,12 @@ class VeStoreActivity : AIXTextActivity val vePayBean = VePayBean( order_code, - if (typeOnClick == 0) coinsData?.id.toString() else vipData?.id.toString(), + if (typeOnClick == 0) coinsData?.id.toString() else coinsBigData?.id.toString(), YFHome.getPackageName(), - if (typeOnClick == 0) coinsData?.android_template_id.toString() else vipData?.android_template_id.toString(), + if (typeOnClick == 0) coinsData?.android_template_id.toString() else coinsBigData?.android_template_id.toString(), purchaseToken, purchaseData?.orderId.toString(), - if (typeOnClick == 0) coinsData?.price.toString() else vipData?.price.toString() + if (typeOnClick == 0) coinsData?.price.toString() else coinsBigData?.price.toString() ) payBeanReq = vePayBean if (billingResult.responseCode == BillingClient.BillingResponseCode.OK) { diff --git a/app/src/main/java/com/veloria/now/shortapp/subtractionCroll/modificationsPretch/VeStoreCoinAdapter.kt b/app/src/main/java/com/veloria/now/shortapp/subtractionCroll/modificationsPretch/VeStoreCoinAdapter.kt index 5605d01..19ada94 100644 --- a/app/src/main/java/com/veloria/now/shortapp/subtractionCroll/modificationsPretch/VeStoreCoinAdapter.kt +++ b/app/src/main/java/com/veloria/now/shortapp/subtractionCroll/modificationsPretch/VeStoreCoinAdapter.kt @@ -53,7 +53,7 @@ class VeStoreCoinAdapter : } else { holder.binding.tvSelect.visibility = View.GONE - holder.binding.root.setBackgroundResource(R.drawable.bg_store_coin_bg) + holder.binding.root.setBackgroundResource(R.mipmap.bg_store_coin_bg) } val sendCoins = item?.send_coins?.toDouble() if (sendCoins != null) { diff --git a/app/src/main/java/com/veloria/now/shortapp/subtractionCroll/modificationsPretch/VeStoreCoinBigAdapter.kt b/app/src/main/java/com/veloria/now/shortapp/subtractionCroll/modificationsPretch/VeStoreCoinBigAdapter.kt new file mode 100644 index 0000000..ea2bca3 --- /dev/null +++ b/app/src/main/java/com/veloria/now/shortapp/subtractionCroll/modificationsPretch/VeStoreCoinBigAdapter.kt @@ -0,0 +1,74 @@ +package com.veloria.now.shortapp.subtractionCroll.modificationsPretch + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.recyclerview.widget.RecyclerView +import com.chad.library.adapter4.BaseQuickAdapter +import com.veloria.now.shortapp.R +import com.veloria.now.shortapp.databinding.ItemVeStoreCoinBigBinding +import com.veloria.now.shortapp.texturedAsink.VePaySettingsBean +import kotlin.math.floor + +class VeStoreCoinBigAdapter : + BaseQuickAdapter() { + + var currentPosition = -1 + + class VH( + parent: ViewGroup, + val binding: ItemVeStoreCoinBigBinding = ItemVeStoreCoinBigBinding.inflate( + LayoutInflater.from(parent.context), parent, false + ), + ) : RecyclerView.ViewHolder(binding.root) + + override fun onCreateViewHolder(context: Context, parent: ViewGroup, viewType: Int): VH { + return VH(parent) + } + + override fun onBindViewHolder( + holder: VH, + position: Int, + item: VePaySettingsBean.CoinsBean? + ) { + if (null != item) { + holder.binding.tvCoins.text = "+".plus(item.coins.toString()) + holder.binding.tvPrice.text = item.price_google + if (item.send_coins > 0) { + holder.binding.tvBonus.text = "+".plus(item.send_coins).plus(" Bonus") + } else { + holder.binding.tvBonus.text = "" + } + if (item.corner_marker.isNotEmpty()) { + holder.binding.tvHot.visibility = View.VISIBLE + } else { + holder.binding.tvHot.visibility = View.INVISIBLE + } + if (currentPosition == position) { + holder.binding.tvSelect.visibility = View.VISIBLE + holder.binding.root.setBackgroundResource(R.drawable.bg_store_coin_on) + } else { + holder.binding.tvSelect.visibility = View.GONE + holder.binding.root.setBackgroundResource(R.drawable.bg_store_coin_off) + } + val sendCoins = item?.send_coins?.toDouble() + if (sendCoins != null) { + if (sendCoins > 0) { + val coins = item?.coins?.toDouble() + val let = coins?.let { sendCoins?.div(it) } + val times = let?.times(100) + if (times != null) { + val floor = floor(times).toInt() + holder.binding.tvCorner.text = "+".plus(floor).plus("%") + holder.binding.tvCorner.visibility = View.VISIBLE + } + } else { + holder.binding.tvCorner.visibility = View.INVISIBLE + } + } + + } + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/veloria/now/shortapp/subtractionCroll/modificationsPretch/VeStoreVipAdapter.kt b/app/src/main/java/com/veloria/now/shortapp/subtractionCroll/modificationsPretch/VeStoreVipAdapter.kt index 8fc9f48..5d796c6 100644 --- a/app/src/main/java/com/veloria/now/shortapp/subtractionCroll/modificationsPretch/VeStoreVipAdapter.kt +++ b/app/src/main/java/com/veloria/now/shortapp/subtractionCroll/modificationsPretch/VeStoreVipAdapter.kt @@ -37,12 +37,33 @@ class VeStoreVipAdapter : holder.binding.tvDay.text = item.brief holder.binding.tvMoney.text = item.price_google holder.binding.tvMoneyDay.text = "/".plus(item.vip_type_key) + holder.binding.tvDescription.text = item.description + holder.binding.tvInfo.text = item.auto_sub if ((item.send_coins ?: 0) > 0) { holder.binding.tvExtra.text = - "+".plus(TranslationHelper.getTranslation()?.let { TranslationHelper.getTranslation()?.veloria_extra } ?: "Extra").plus(" ").plus(item.send_coins) + "+".plus( + TranslationHelper.getTranslation() + ?.let { TranslationHelper.getTranslation()?.veloria_extra } ?: "Extra") + .plus(" ").plus(item.send_coins) + + if (TranslationHelper.getTranslation() != null) { + holder.binding.tvExpire.text = + TranslationHelper.getTranslation()?.veloria_donate_expire?.let { + TranslationHelper.replace( + it, + item.send_coin_ttl.toString() + ) + } + } else { + holder.binding.tvExpire.text = + "The donate coins will expire in ".plus(item.send_coin_ttl.toString()) + .plus(" days") + } holder.binding.tvExtra.visibility = View.VISIBLE + holder.binding.tvExpire.visibility = View.VISIBLE } else { holder.binding.tvExtra.visibility = View.GONE + holder.binding.tvExpire.visibility = View.GONE } if (currentPosition == position) { @@ -53,40 +74,56 @@ class VeStoreVipAdapter : when (item.vip_type_key) { - "week" -> { + "month" -> { holder.binding.root.setBackgroundResource(R.mipmap.iv_store_vip_bg_1) + holder.binding.tvDay.setTextColor(Color.parseColor("#647DA7")) + holder.binding.tvMoney.setTextColor(Color.parseColor("#647DA7")) + holder.binding.tvMoneyDay.setTextColor(Color.parseColor("#647DA7")) + holder.binding.tvExtra.setTextColor(Color.parseColor("#214170")) + holder.binding.tvExtra.setBackgroundResource(R.drawable.bg_store_vip_1) + holder.binding.tvDescription.setTextColor(Color.parseColor("#303962")) + holder.binding.tvDescription.setBackgroundResource(R.drawable.bg_store_vip_text_1) + holder.binding.tvInfo.setTextColor(Color.parseColor("#8790B7")) + holder.binding.tvExpire.setTextColor(Color.parseColor("#8790B7")) + } + + "week" -> { + holder.binding.root.setBackgroundResource(R.mipmap.iv_store_vip_bg_2) holder.binding.tvDay.setTextColor(Color.parseColor("#64A3A7")) holder.binding.tvMoney.setTextColor(Color.parseColor("#64A3A7")) holder.binding.tvMoneyDay.setTextColor(Color.parseColor("#64A3A7")) - holder.binding.tvExtra.setTextColor(Color.parseColor("#416767")) - holder.binding.tvExtra.setBackgroundResource(R.drawable.bg_store_vip_1) - } - - "month" -> { - holder.binding.root.setBackgroundResource(R.mipmap.iv_store_vip_bg_2) - holder.binding.tvDay.setTextColor(Color.parseColor("#9C7565")) - holder.binding.tvMoney.setTextColor(Color.parseColor("#9C7565")) - holder.binding.tvMoneyDay.setTextColor(Color.parseColor("#9C7565")) - holder.binding.tvExtra.setTextColor(Color.parseColor("#573D31")) + holder.binding.tvExtra.setTextColor(Color.parseColor("#16706A")) holder.binding.tvExtra.setBackgroundResource(R.drawable.bg_store_vip_2) + holder.binding.tvDescription.setTextColor(Color.parseColor("#416767")) + holder.binding.tvDescription.setBackgroundResource(R.drawable.bg_store_vip_text_2) + holder.binding.tvInfo.setTextColor(Color.parseColor("#8AAEA6")) + holder.binding.tvExpire.setTextColor(Color.parseColor("#8AAEA6")) } "quarter" -> { holder.binding.root.setBackgroundResource(R.mipmap.iv_store_vip_bg_3) - holder.binding.tvDay.setTextColor(Color.parseColor("#647DA7")) - holder.binding.tvMoney.setTextColor(Color.parseColor("#647DA7")) - holder.binding.tvMoneyDay.setTextColor(Color.parseColor("#647DA7")) - holder.binding.tvExtra.setTextColor(Color.parseColor("#303962")) + holder.binding.tvDay.setTextColor(Color.parseColor("#7869FF")) + holder.binding.tvMoney.setTextColor(Color.parseColor("#7869FF")) + holder.binding.tvMoneyDay.setTextColor(Color.parseColor("#7869FF")) + holder.binding.tvExtra.setTextColor(Color.parseColor("#510087")) holder.binding.tvExtra.setBackgroundResource(R.drawable.bg_store_vip_3) + holder.binding.tvDescription.setTextColor(Color.parseColor("#5F1EB9")) + holder.binding.tvDescription.setBackgroundResource(R.drawable.bg_store_vip_text_3) + holder.binding.tvInfo.setTextColor(Color.parseColor("#A395D9")) + holder.binding.tvExpire.setTextColor(Color.parseColor("#A395D9")) } "year" -> { holder.binding.root.setBackgroundResource(R.mipmap.iv_store_vip_bg_4) - holder.binding.tvDay.setTextColor(Color.parseColor("#9C6586")) - holder.binding.tvMoney.setTextColor(Color.parseColor("#9C6586")) - holder.binding.tvMoneyDay.setTextColor(Color.parseColor("#9C6586")) - holder.binding.tvExtra.setTextColor(Color.parseColor("#674162")) + holder.binding.tvDay.setTextColor(Color.parseColor("#573D31")) + holder.binding.tvMoney.setTextColor(Color.parseColor("#573D31")) + holder.binding.tvMoneyDay.setTextColor(Color.parseColor("#573D31")) + holder.binding.tvExtra.setTextColor(Color.parseColor("#683D00")) holder.binding.tvExtra.setBackgroundResource(R.drawable.bg_store_vip_4) + holder.binding.tvDescription.setTextColor(Color.parseColor("#573D31")) + holder.binding.tvDescription.setBackgroundResource(R.drawable.bg_store_vip_text_4) + holder.binding.tvInfo.setTextColor(Color.parseColor("#AC978D")) + holder.binding.tvExpire.setTextColor(Color.parseColor("#AC978D")) } } } diff --git a/app/src/main/java/com/veloria/now/shortapp/texturedAsink/VeTranslationBean.kt b/app/src/main/java/com/veloria/now/shortapp/texturedAsink/VeTranslationBean.kt index 1d6f1df..7d459c3 100644 --- a/app/src/main/java/com/veloria/now/shortapp/texturedAsink/VeTranslationBean.kt +++ b/app/src/main/java/com/veloria/now/shortapp/texturedAsink/VeTranslationBean.kt @@ -16,6 +16,7 @@ class VeTranslationBean( ) data class Translation( + val veloria_donate_expire : String, val veloria_not_found_string : String, val veloria_not_found : String, val veloria_episode : String, diff --git a/app/src/main/res/drawable/bg_coin_big_right.xml b/app/src/main/res/drawable/bg_coin_big_right.xml new file mode 100644 index 0000000..adc0a43 --- /dev/null +++ b/app/src/main/res/drawable/bg_coin_big_right.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_coin_left_big.xml b/app/src/main/res/drawable/bg_coin_left_big.xml new file mode 100644 index 0000000..560eee8 --- /dev/null +++ b/app/src/main/res/drawable/bg_coin_left_big.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_coin_right.xml b/app/src/main/res/drawable/bg_coin_right.xml index c94b818..5a2fe40 100644 --- a/app/src/main/res/drawable/bg_coin_right.xml +++ b/app/src/main/res/drawable/bg_coin_right.xml @@ -1,5 +1,5 @@ - + \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_store_coin_money_bottom.xml b/app/src/main/res/drawable/bg_store_coin_money_bottom.xml new file mode 100644 index 0000000..40b0530 --- /dev/null +++ b/app/src/main/res/drawable/bg_store_coin_money_bottom.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_store_coin_money_bottom_big.xml b/app/src/main/res/drawable/bg_store_coin_money_bottom_big.xml new file mode 100644 index 0000000..85c70f9 --- /dev/null +++ b/app/src/main/res/drawable/bg_store_coin_money_bottom_big.xml @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_store_coin_off.xml b/app/src/main/res/drawable/bg_store_coin_off.xml new file mode 100644 index 0000000..10285a1 --- /dev/null +++ b/app/src/main/res/drawable/bg_store_coin_off.xml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_store_coin_on.xml b/app/src/main/res/drawable/bg_store_coin_on.xml new file mode 100644 index 0000000..fde40ce --- /dev/null +++ b/app/src/main/res/drawable/bg_store_coin_on.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_store_vip_1.xml b/app/src/main/res/drawable/bg_store_vip_1.xml index 3c813cf..23b66d7 100644 --- a/app/src/main/res/drawable/bg_store_vip_1.xml +++ b/app/src/main/res/drawable/bg_store_vip_1.xml @@ -2,8 +2,10 @@ - - + + \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_store_vip_2.xml b/app/src/main/res/drawable/bg_store_vip_2.xml index 43863aa..b5d9447 100644 --- a/app/src/main/res/drawable/bg_store_vip_2.xml +++ b/app/src/main/res/drawable/bg_store_vip_2.xml @@ -2,8 +2,10 @@ - - + + \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_store_vip_3.xml b/app/src/main/res/drawable/bg_store_vip_3.xml index 76c2b48..a602b9d 100644 --- a/app/src/main/res/drawable/bg_store_vip_3.xml +++ b/app/src/main/res/drawable/bg_store_vip_3.xml @@ -2,8 +2,10 @@ - - + + \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_store_vip_4.xml b/app/src/main/res/drawable/bg_store_vip_4.xml index ca3db9f..687e080 100644 --- a/app/src/main/res/drawable/bg_store_vip_4.xml +++ b/app/src/main/res/drawable/bg_store_vip_4.xml @@ -2,8 +2,10 @@ - - + + \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_store_vip_text_1.xml b/app/src/main/res/drawable/bg_store_vip_text_1.xml new file mode 100644 index 0000000..86e2c9a --- /dev/null +++ b/app/src/main/res/drawable/bg_store_vip_text_1.xml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_store_vip_text_2.xml b/app/src/main/res/drawable/bg_store_vip_text_2.xml new file mode 100644 index 0000000..81f7616 --- /dev/null +++ b/app/src/main/res/drawable/bg_store_vip_text_2.xml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_store_vip_text_3.xml b/app/src/main/res/drawable/bg_store_vip_text_3.xml new file mode 100644 index 0000000..b34a509 --- /dev/null +++ b/app/src/main/res/drawable/bg_store_vip_text_3.xml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_store_vip_text_4.xml b/app/src/main/res/drawable/bg_store_vip_text_4.xml new file mode 100644 index 0000000..4869d1f --- /dev/null +++ b/app/src/main/res/drawable/bg_store_vip_text_4.xml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_ve_store.xml b/app/src/main/res/layout/activity_ve_store.xml index dacdfc5..904cced 100644 --- a/app/src/main/res/layout/activity_ve_store.xml +++ b/app/src/main/res/layout/activity_ve_store.xml @@ -5,286 +5,94 @@ android:layout_height="match_parent" android:background="@mipmap/playfair_selected_gradle"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginTop="@dimen/dp_35" + android:padding="@dimen/dp_15" + android:src="@mipmap/right_dimens" /> + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_ve_store_coin.xml b/app/src/main/res/layout/item_ve_store_coin.xml index f936e01..9e6b3a3 100644 --- a/app/src/main/res/layout/item_ve_store_coin.xml +++ b/app/src/main/res/layout/item_ve_store_coin.xml @@ -1,13 +1,11 @@ + android:background="@mipmap/bg_store_coin_bg" + android:orientation="vertical"> - + app:layout_constraintStart_toStartOf="parent" /> + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_ve_store_vip.xml b/app/src/main/res/layout/item_ve_store_vip.xml index 2a95600..4b1251f 100644 --- a/app/src/main/res/layout/item_ve_store_vip.xml +++ b/app/src/main/res/layout/item_ve_store_vip.xml @@ -1,57 +1,95 @@ - + android:textColor="#647DA7" + android:textSize="@dimen/sp_12" /> - - + android:textColor="#647DA7" + android:textSize="@dimen/sp_16" /> + + + + + + - - + + + + + + + android:layout_height="match_parent" + android:layout_below="@+id/iv_close_dialog" + android:layout_marginTop="@dimen/dp_7"> - - - - - - - + android:layout_height="match_parent"> - + - + - + - + - \ No newline at end of file + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/mipmap-xxhdpi/bg_store_coin_bg.png b/app/src/main/res/mipmap-xxhdpi/bg_store_coin_bg.png new file mode 100644 index 0000000..04acc84 Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/bg_store_coin_bg.png differ diff --git a/app/src/main/res/mipmap-xxhdpi/iv_store_vip_bg_1.webp b/app/src/main/res/mipmap-xxhdpi/iv_store_vip_bg_1.webp index c21ab1d..8a11972 100644 Binary files a/app/src/main/res/mipmap-xxhdpi/iv_store_vip_bg_1.webp and b/app/src/main/res/mipmap-xxhdpi/iv_store_vip_bg_1.webp differ diff --git a/app/src/main/res/mipmap-xxhdpi/iv_store_vip_bg_2.webp b/app/src/main/res/mipmap-xxhdpi/iv_store_vip_bg_2.webp index 13a0bc1..c7c79a0 100644 Binary files a/app/src/main/res/mipmap-xxhdpi/iv_store_vip_bg_2.webp and b/app/src/main/res/mipmap-xxhdpi/iv_store_vip_bg_2.webp differ diff --git a/app/src/main/res/mipmap-xxhdpi/iv_store_vip_bg_3.webp b/app/src/main/res/mipmap-xxhdpi/iv_store_vip_bg_3.webp index 141c603..5dd7b24 100644 Binary files a/app/src/main/res/mipmap-xxhdpi/iv_store_vip_bg_3.webp and b/app/src/main/res/mipmap-xxhdpi/iv_store_vip_bg_3.webp differ diff --git a/app/src/main/res/mipmap-xxhdpi/iv_store_vip_bg_4.webp b/app/src/main/res/mipmap-xxhdpi/iv_store_vip_bg_4.webp index dc45b27..0c72384 100644 Binary files a/app/src/main/res/mipmap-xxhdpi/iv_store_vip_bg_4.webp and b/app/src/main/res/mipmap-xxhdpi/iv_store_vip_bg_4.webp differ diff --git a/app/src/main/res/mipmap-xxhdpi/iv_store_vip_big_hot.png b/app/src/main/res/mipmap-xxhdpi/iv_store_vip_big_hot.png new file mode 100644 index 0000000..f794efc Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/iv_store_vip_big_hot.png differ