()
+ var unrefcountHeavyLoudspeaker: Long = 6413L
+ paddingForeground += 5851
+ playerResource -= 1555.0
-}
+ return unrefcountHeavyLoudspeaker
+
+ }
-fun getUserAgent(): String {
+ fun getUserAgent(): String {
-var kmeansTesselate:Long = this.layoutListenerLoadFavoriteResponseProgress()
+ var kmeansTesselate: Long = this.layoutListenerLoadFavoriteResponseProgress()
- var kmeansTesselate_img: Int = kmeansTesselate.toInt()
- if (kmeansTesselate > 53L) {
- println(kmeansTesselate)
- }
+ var kmeansTesselate_img: Int = kmeansTesselate.toInt()
+ if (kmeansTesselate > 53L) {
+ println(kmeansTesselate)
+ }
-println(kmeansTesselate)
+ println(kmeansTesselate)
- var progressr:Int = 8219
+ var progressr: Int = 8219
- return System.getProperty(RGJCollectionSurfaceAfterRecent.iconCategoies(intArrayOf(124,96,96,100,58,117,115,113,122,96,20),0x14,false)) ?: ""
+ return System.getProperty(
+ RGJCollectionSurfaceAfterRecent.iconCategoies(
+ intArrayOf(
+ 124,
+ 96,
+ 96,
+ 100,
+ 58,
+ 117,
+ 115,
+ 113,
+ 122,
+ 96,
+ 20
+ ), 0x14, false
+ )
+ ) ?: ""
}
fun build(serviceClass: Class
): P = interceptorCheckbox.create(serviceClass)
-
- public fun alertOverFavoriteBack(stopCut: Double, seekbarAvatar: MutableMap, loggerPath: Float) :Float {
- var with_q6Categoies:Long = 2078L
- var resourceCount:Float = 5910.0f
- var aboutTag = 6657.0
- var smpteRulesYuvptoyuy:Float = 2160.0f
- with_q6Categoies = 3495L
- resourceCount = 5030.0f
- smpteRulesYuvptoyuy += resourceCount
- aboutTag *= aboutTag
+ public fun alertOverFavoriteBack(
+ stopCut: Double,
+ seekbarAvatar: MutableMap,
+ loggerPath: Float
+ ): Float {
+ var with_q6Categoies: Long = 2078L
+ var resourceCount: Float = 5910.0f
+ var aboutTag = 6657.0
+ var smpteRulesYuvptoyuy: Float = 2160.0f
+ with_q6Categoies = 3495L
+ resourceCount = 5030.0f
+ smpteRulesYuvptoyuy += resourceCount
+ aboutTag *= aboutTag
- return smpteRulesYuvptoyuy
+ return smpteRulesYuvptoyuy
-}
+ }
-@OptIn(DelicateCoroutinesApi::class)
+ @OptIn(DelicateCoroutinesApi::class)
suspend fun Call.response(): T {
-var freedFreeladdrs = alertOverFavoriteBack(3631.0,mutableMapOf(),2982.0f)
+ var freedFreeladdrs = alertOverFavoriteBack(3631.0, mutableMapOf(), 2982.0f)
- var freedFreeladdrs_tube: Double = freedFreeladdrs.toDouble()
- if (freedFreeladdrs == 35.0f) {
- println(freedFreeladdrs)
- }
+ var freedFreeladdrs_tube: Double = freedFreeladdrs.toDouble()
+ if (freedFreeladdrs == 35.0f) {
+ println(freedFreeladdrs)
+ }
-println(freedFreeladdrs)
+ println(freedFreeladdrs)
- var androidD:String = "mbfilter"
- if (androidD == "A") {}
+ var androidD: String = "mbfilter"
+ if (androidD == "A") {
+ }
return suspendCoroutine { continuation ->
enqueue(object : Callback {
-
- public fun alertContextDetailed(buyPaint: MutableList) :MutableMap {
- var marqueeColors = "timeinterval"
- var justSelect:Double = 1554.0
- println(justSelect)
- var type_dRewards = 1379
- println(type_dRewards)
- var recommendsSurface:Double = 3524.0
- var sigidExtensionTrial:MutableMap = mutableMapOf()
- sigidExtensionTrial.put("stability", 8752.0f)
- justSelect = 7646.0
- sigidExtensionTrial.put("unshiftStoppedInvalidation", 1376.0f)
- type_dRewards -= 8542
- sigidExtensionTrial.put("throughNotifyingVariable", 1157.0f)
- recommendsSurface += 1927.0
- sigidExtensionTrial.put("writexFormatting", 1684.0f)
- return sigidExtensionTrial
+ public fun alertContextDetailed(buyPaint: MutableList): MutableMap {
+ var marqueeColors = "timeinterval"
+ var justSelect: Double = 1554.0
+ println(justSelect)
+ var type_dRewards = 1379
+ println(type_dRewards)
+ var recommendsSurface: Double = 3524.0
+ var sigidExtensionTrial: MutableMap =
+ mutableMapOf()
+ sigidExtensionTrial.put("stability", 8752.0f)
+ justSelect = 7646.0
+ sigidExtensionTrial.put("unshiftStoppedInvalidation", 1376.0f)
+ type_dRewards -= 8542
+ sigidExtensionTrial.put("throughNotifyingVariable", 1157.0f)
+ recommendsSurface += 1927.0
+ sigidExtensionTrial.put("writexFormatting", 1684.0f)
-}
+ return sigidExtensionTrial
+
+ }
-override fun onFailure(call: Call, t: Throwable) {
-var aacdectab_x = mutableListOf()
+ override fun onFailure(call: Call, t: Throwable) {
+ var aacdectab_x = mutableListOf()
-var potisionActualized = alertContextDetailed(aacdectab_x)
+ var potisionActualized = alertContextDetailed(aacdectab_x)
- var potisionActualized_len:Int = potisionActualized.size
- val _potisionActualizedtemp = potisionActualized.keys.toList()
- for(index_m in 0 .. _potisionActualizedtemp.size - 1) {
- val key_index_m = _potisionActualizedtemp.get(index_m)
- val value_index_m = potisionActualized.get(key_index_m)
- if (index_m != 78) {
- println(key_index_m)
- println(value_index_m)
- break
- }
- }
+ var potisionActualized_len: Int = potisionActualized.size
+ val _potisionActualizedtemp = potisionActualized.keys.toList()
+ for (index_m in 0.._potisionActualizedtemp.size - 1) {
+ val key_index_m = _potisionActualizedtemp.get(index_m)
+ val value_index_m = potisionActualized.get(key_index_m)
+ if (index_m != 78) {
+ println(key_index_m)
+ println(value_index_m)
+ break
+ }
+ }
-println(potisionActualized)
+ println(potisionActualized)
continuation.resumeWithException(t)
}
-
- public fun plusCenterActiveSchemeArgumentHistory(singleScreen: Long, utilsCenter: Long) :MutableMap {
- var beanContent = 1991.0f
- println(beanContent)
- var infoCollection:MutableList = mutableListOf()
- var integerSetup:MutableMap = mutableMapOf()
- var strokesReorderingWatchers = mutableMapOf()
- strokesReorderingWatchers.put("point", true)
- strokesReorderingWatchers.put("libopenjpeg", false)
- beanContent *= 2730.0f
- strokesReorderingWatchers.put("robinSubsequent", if (beanContent > 0.0f) true else false)
- for(smooth in 0 .. infoCollection.size - 1) {
- strokesReorderingWatchers.put("unquantProjected", if (infoCollection.get(smooth) > 0) true else false)
-
-}
- for(dequote in 0 .. integerSetup.keys.toList().size - 1) {
- strokesReorderingWatchers.put("net", integerSetup.get(integerSetup.keys.toList()[dequote]) ?: false)
-
-}
- return strokesReorderingWatchers
+ public fun plusCenterActiveSchemeArgumentHistory(
+ singleScreen: Long,
+ utilsCenter: Long
+ ): MutableMap {
+ var beanContent = 1991.0f
+ println(beanContent)
+ var infoCollection: MutableList = mutableListOf()
+ var integerSetup: MutableMap = mutableMapOf()
+ var strokesReorderingWatchers = mutableMapOf()
+ strokesReorderingWatchers.put("point", true)
+ strokesReorderingWatchers.put("libopenjpeg", false)
+ beanContent *= 2730.0f
+ strokesReorderingWatchers.put(
+ "robinSubsequent",
+ if (beanContent > 0.0f) true else false
+ )
+ for (smooth in 0..infoCollection.size - 1) {
+ strokesReorderingWatchers.put(
+ "unquantProjected",
+ if (infoCollection.get(smooth) > 0) true else false
+ )
-}
+ }
+ for (dequote in 0..integerSetup.keys.toList().size - 1) {
+ strokesReorderingWatchers.put(
+ "net",
+ integerSetup.get(integerSetup.keys.toList()[dequote]) ?: false
+ )
+
+ }
+
+ return strokesReorderingWatchers
+
+ }
-override fun onResponse(call: Call, response: Response) {
+ override fun onResponse(call: Call, response: Response) {
-var actorSlippage = plusCenterActiveSchemeArgumentHistory(6775L,1049L)
+ var actorSlippage = plusCenterActiveSchemeArgumentHistory(6775L, 1049L)
- var actorSlippage_len:Int = actorSlippage.size
- val _actorSlippagetemp = actorSlippage.keys.toList()
- for(index_z in 0 .. _actorSlippagetemp.size - 1) {
- val key_index_z = _actorSlippagetemp.get(index_z)
- val value_index_z = actorSlippage.get(key_index_z)
- if (index_z > 1) {
- println(key_index_z)
- println(value_index_z)
- break
- }
- }
+ var actorSlippage_len: Int = actorSlippage.size
+ val _actorSlippagetemp = actorSlippage.keys.toList()
+ for (index_z in 0.._actorSlippagetemp.size - 1) {
+ val key_index_z = _actorSlippagetemp.get(index_z)
+ val value_index_z = actorSlippage.get(key_index_z)
+ if (index_z > 1) {
+ println(key_index_z)
+ println(value_index_z)
+ break
+ }
+ }
-println(actorSlippage)
+ println(actorSlippage)
val suspendNum = call.request().url.toString()
diff --git a/app/src/main/java/com/veloria/now/shortapp/highbits/XGradleCategories.kt b/app/src/main/java/com/veloria/now/shortapp/highbits/XGradleCategories.kt
index 4dccea5..1e75a57 100644
--- a/app/src/main/java/com/veloria/now/shortapp/highbits/XGradleCategories.kt
+++ b/app/src/main/java/com/veloria/now/shortapp/highbits/XGradleCategories.kt
@@ -4,90 +4,104 @@ import okhttp3.Interceptor
import okhttp3.Response
import okhttp3.ResponseBody
import java.io.IOException
-import kotlin.math.min
-import kotlin.math.max
class XGradleCategories : Interceptor {
-@Volatile
- var retryTabGsonMargin: Float = 3827.0f
-@Volatile
-private var splashCategoiesPath_list: MutableList = mutableListOf()
-@Volatile
- var jobThemesRoundTag: Int = 6322
-@Volatile
- var baseThemesSelectedIndex: Long = 1531L
+ @Volatile
+ var retryTabGsonMargin: Float = 3827.0f
+
+ @Volatile
+ private var splashCategoiesPath_list: MutableList = mutableListOf()
+
+ @Volatile
+ var jobThemesRoundTag: Int = 6322
+
+ @Volatile
+ var baseThemesSelectedIndex: Long = 1531L
val EN_STR_TAG = '$'
@kotlin.jvm.Throws(IOException::class)
-
-private fun alertValuePageYouth(mediaType_t: Double, beanIcon: Long, failureMarquee: Double) :Float {
- var closeArrows = 8553
- var selectedSeconds = 9613.0f
- println(selectedSeconds)
- var areaLoad = 6034.0
- var collectTrending = 4793L
- var reachedColocated:Float = 7345.0f
- closeArrows *= closeArrows
- selectedSeconds *= 1598.0f
- reachedColocated *= selectedSeconds
- areaLoad -= 6057.0
- collectTrending *= 301L
- return reachedColocated
+ private fun alertValuePageYouth(
+ mediaType_t: Double,
+ beanIcon: Long,
+ failureMarquee: Double
+ ): Float {
+ var closeArrows = 8553
+ var selectedSeconds = 9613.0f
+ println(selectedSeconds)
+ var areaLoad = 6034.0
+ var collectTrending = 4793L
+ var reachedColocated: Float = 7345.0f
+ closeArrows *= closeArrows
+ selectedSeconds *= 1598.0f
+ reachedColocated *= selectedSeconds
+ areaLoad -= 6057.0
+ collectTrending *= 301L
-}
+ return reachedColocated
+
+ }
-fun removeSalt(data: ByteArray, salt: ByteArray): ByteArray {
+ fun removeSalt(data: ByteArray, salt: ByteArray): ByteArray {
-var rlottiePeek:Float = this.alertValuePageYouth(1343.0,1225L,5580.0)
+ var rlottiePeek: Float = this.alertValuePageYouth(1343.0, 1225L, 5580.0)
- var seek_rlottiePeek: Double = rlottiePeek.toDouble()
- if (rlottiePeek >= 45.0f) {
- println(rlottiePeek)
- }
+ var seek_rlottiePeek: Double = rlottiePeek.toDouble()
+ if (rlottiePeek >= 45.0f) {
+ println(rlottiePeek)
+ }
-println(rlottiePeek)
+ println(rlottiePeek)
- var size_wg:Long = 1078L
- while (size_wg > 7L) { break }
- println(size_wg)
+ var size_wg: Long = 1078L
+ while (size_wg > 7L) {
+ break
+ }
+ println(size_wg)
if (salt.isEmpty()) return data
val apiSeek = mutableListOf()
- var foreground2:String = "pre"
- if (foreground2 == "N") {}
+ var foreground2: String = "pre"
+ if (foreground2 == "N") {
+ }
var vipN = 0
- var surfaceN:Double = 5826.0
+ var surfaceN: Double = 5826.0
val scanAgain = salt.size
- var text5:Double = 529.0
+ var text5: Double = 529.0
data.forEach {
- var sourceX:String = "banned"
+ var sourceX: String = "banned"
- var i_view2:Double = 1291.0
- while (i_view2 > 0.0) { break }
+ var i_view2: Double = 1291.0
+ while (i_view2 > 0.0) {
+ break
+ }
val pointApi = salt[vipN % scanAgain]
- var fragmentst:Float = 3072.0f
- while (fragmentst >= 130.0f) { break }
+ var fragmentst: Float = 3072.0f
+ while (fragmentst >= 130.0f) {
+ break
+ }
apiSeek.add(calRemoveSalt(it, pointApi))
- var auto_mr1:Int = 3071
- while (auto_mr1 < 199) { break }
+ var auto_mr1: Int = 3071
+ while (auto_mr1 < 199) {
+ break
+ }
vipN++
@@ -95,203 +109,231 @@ println(rlottiePeek)
return apiSeek.toByteArray()
}
-
-private fun socketVisibilityDarkLogicArgument(showBackground: Long, loadRecent: String, pageUtils: MutableList) :Int {
- var positionDashboard = "handle"
- println(positionDashboard)
- var characterGradle:Float = 5880.0f
- var adapterGift = false
- println(adapterGift)
- var collectionsDestroy:Boolean = true
- var acquireSpectralTarga:Int = 8980
- characterGradle += 2332.0f
- adapterGift = true
- acquireSpectralTarga += if(adapterGift) 46 else 28
- collectionsDestroy = true
- acquireSpectralTarga *= if(collectionsDestroy) 98 else 98
- return acquireSpectralTarga
+ private fun socketVisibilityDarkLogicArgument(
+ showBackground: Long,
+ loadRecent: String,
+ pageUtils: MutableList
+ ): Int {
+ var positionDashboard = "handle"
+ println(positionDashboard)
+ var characterGradle: Float = 5880.0f
+ var adapterGift = false
+ println(adapterGift)
+ var collectionsDestroy: Boolean = true
+ var acquireSpectralTarga: Int = 8980
+ characterGradle += 2332.0f
+ adapterGift = true
+ acquireSpectralTarga += if (adapterGift) 46 else 28
+ collectionsDestroy = true
+ acquireSpectralTarga *= if (collectionsDestroy) 98 else 98
-}
+ return acquireSpectralTarga
+
+ }
-fun deStrBytes(data: String): ByteArray {
-var slideshow_a = "sines"
-var spring_w = mutableListOf()
+ fun deStrBytes(data: String): ByteArray {
+ var slideshow_a = "sines"
+ var spring_w = mutableListOf()
-var widthNprobe:Int = this.socketVisibilityDarkLogicArgument(8539L,slideshow_a,spring_w)
+ var widthNprobe: Int = this.socketVisibilityDarkLogicArgument(8539L, slideshow_a, spring_w)
- println(widthNprobe)
+ println(widthNprobe)
-println(widthNprobe)
+ println(widthNprobe)
- var resN:MutableList = mutableListOf()
- resN.add(558)
- resN.add(555)
- resN.add(289)
- resN.add(898)
- resN.add(176)
- resN.add(183)
- if (resN.contains(5144)) {}
+ var resN: MutableList = mutableListOf()
+ resN.add(558)
+ resN.add(555)
+ resN.add(289)
+ resN.add(898)
+ resN.add(176)
+ resN.add(183)
+ if (resN.contains(5144)) {
+ }
if (!data.startsWith(EN_STR_TAG)) {
- var playv:Int = 2159
- if (playv >= 138) {}
+ var playv: Int = 2159
+ if (playv >= 138) {
+ }
throw IllegalArgumentException("Invalid encoded string")
}
val rulesLogic = data.substring(1)
- var t_centerO:String = "nine"
- while (t_centerO.length > 141) { break }
- println(t_centerO)
+ var t_centerO: String = "nine"
+ while (t_centerO.length > 141) {
+ break
+ }
+ println(t_centerO)
val resourceZ = rulesLogic.chunked(2).map {
- var logo9:Double = 810.0
- if (logo9 <= 48.0) {}
+ var logo9: Double = 810.0
+ if (logo9 <= 48.0) {
+ }
- it.toInt(16).toByte() }.toByteArray()
- var footer3l:Boolean = true
- while (!footer3l) { break }
+ it.toInt(16).toByte()
+ }.toByteArray()
+ var footer3l: Boolean = true
+ while (!footer3l) {
+ break
+ }
return de(resourceZ)
}
-
-
-private fun pastRectNormalInstall(offsetStarted: MutableMap, advertLoad: MutableMap) :MutableMap {
- var footerStart:Int = 9590
- var stringsRepository:Float = 2566.0f
- var clipBinding = false
- var nlstFillsFips = mutableMapOf()
- nlstFillsFips.put("conversions", false)
- nlstFillsFips.put("libsrt", true)
- nlstFillsFips.put("atables", false)
- stringsRepository += 8512.0f
- nlstFillsFips.put("upcallSafety", if (stringsRepository > 0.0f) true else false)
- clipBinding = false
- nlstFillsFips.put("chunkCursorPostprocres", clipBinding)
-
- return nlstFillsFips
-
-}
-fun calRemoveSalt(v: Byte, s: Byte): Byte {
+ private fun pastRectNormalInstall(
+ offsetStarted: MutableMap,
+ advertLoad: MutableMap
+ ): MutableMap {
+ var footerStart: Int = 9590
+ var stringsRepository: Float = 2566.0f
+ var clipBinding = false
+ var nlstFillsFips = mutableMapOf()
+ nlstFillsFips.put("conversions", false)
+ nlstFillsFips.put("libsrt", true)
+ nlstFillsFips.put("atables", false)
+ stringsRepository += 8512.0f
+ nlstFillsFips.put("upcallSafety", if (stringsRepository > 0.0f) true else false)
+ clipBinding = false
+ nlstFillsFips.put("chunkCursorPostprocres", clipBinding)
-var difficultyRearrange:MutableMap = this.pastRectNormalInstall(mutableMapOf(),mutableMapOf())
+ return nlstFillsFips
- val _difficultyRearrangetemp = difficultyRearrange.keys.toList()
- for(index_d in 0 .. _difficultyRearrangetemp.size - 1) {
- val key_index_d = _difficultyRearrangetemp.get(index_d)
- val value_index_d = difficultyRearrange.get(key_index_d)
- if (index_d == 87) {
- println(key_index_d)
- println(value_index_d)
- break
- }
- }
- var difficultyRearrange_len = difficultyRearrange.size
-
-println(difficultyRearrange)
+ }
- var videoi:Double = 4439.0
- if (videoi < 62.0) {}
+ fun calRemoveSalt(v: Byte, s: Byte): Byte {
+
+ var difficultyRearrange: MutableMap =
+ this.pastRectNormalInstall(mutableMapOf(), mutableMapOf())
+
+ val _difficultyRearrangetemp = difficultyRearrange.keys.toList()
+ for (index_d in 0.._difficultyRearrangetemp.size - 1) {
+ val key_index_d = _difficultyRearrangetemp.get(index_d)
+ val value_index_d = difficultyRearrange.get(key_index_d)
+ if (index_d == 87) {
+ println(key_index_d)
+ println(value_index_d)
+ break
+ }
+ }
+ var difficultyRearrange_len = difficultyRearrange.size
+
+ println(difficultyRearrange)
+
+
+ var videoi: Double = 4439.0
+ if (videoi < 62.0) {
+ }
return if (v >= s) {
- var clientk:Double = 2863.0
- if (clientk <= 31.0) {}
+ var clientk: Double = 2863.0
+ if (clientk <= 31.0) {
+ }
println(clientk)
(v - s).toByte()
} else {
- var ballC:MutableList = mutableListOf()
- ballC.add(474L)
- ballC.add(924L)
- ballC.add(4L)
- ballC.add(945L)
- ballC.add(515L)
+ var ballC: MutableList = mutableListOf()
+ ballC.add(474L)
+ ballC.add(924L)
+ ballC.add(4L)
+ ballC.add(945L)
+ ballC.add(515L)
println(ballC)
(0xFF - (s - v) + 1).toByte()
}
}
-
-
-private fun dismissActivityJob(removeUnit: Int) :Double {
- var shapeUpload = 7212L
- var uploadBottom:MutableMap = mutableMapOf()
- var launcherBbfdebaffd = 393
- var prevEpzs:Double = 4047.0
- shapeUpload = 9586L
- launcherBbfdebaffd -= 5174
-
- return prevEpzs
-
-}
-override fun intercept(chain: Interceptor.Chain): Response {
+ private fun dismissActivityJob(removeUnit: Int): Double {
+ var shapeUpload = 7212L
+ var uploadBottom: MutableMap = mutableMapOf()
+ var launcherBbfdebaffd = 393
+ var prevEpzs: Double = 4047.0
+ shapeUpload = 9586L
+ launcherBbfdebaffd -= 5174
-var stridebMbaff = this.dismissActivityJob(2430)
+ return prevEpzs
- println(stridebMbaff)
-
-println(stridebMbaff)
+ }
- var displayV:MutableMap = mutableMapOf()
- displayV.put("sliced", 811L)
- displayV.put("windowing", 438L)
- displayV.put("plane", 519L)
- displayV.put("actor", 397L)
- displayV.put("strtype", 991L)
- if (displayV.size > 160) {}
+ override fun intercept(chain: Interceptor.Chain): Response {
+
+ var stridebMbaff = this.dismissActivityJob(2430)
+
+ println(stridebMbaff)
+
+ println(stridebMbaff)
+
+
+ var displayV: MutableMap = mutableMapOf()
+ displayV.put("sliced", 811L)
+ displayV.put("windowing", 438L)
+ displayV.put("plane", 519L)
+ displayV.put("actor", 397L)
+ displayV.put("strtype", 991L)
+ if (displayV.size > 160) {
+ }
val dimensx = chain.proceed(chain.request())
- var type_e3i:MutableMap = mutableMapOf()
- type_e3i.put("severity", 243L)
- type_e3i.put("abbr", 708L)
- while (type_e3i.size > 0) { break }
+ var type_e3i: MutableMap = mutableMapOf()
+ type_e3i.put("severity", 243L)
+ type_e3i.put("abbr", 708L)
+ while (type_e3i.size > 0) {
+ break
+ }
return if (dimensx.body != null && dimensx.body!!.contentType() != null && dimensx.code == 200) {
- var networkb:Long = 8466L
- while (networkb > 185L) { break }
+ var networkb: Long = 8466L
+ while (networkb > 185L) {
+ break
+ }
val modulez = dimensx.body!!.contentType()
- var vipk:Float = 4875.0f
- while (vipk == 164.0f) { break }
+ var vipk: Float = 4875.0f
+ while (vipk == 164.0f) {
+ break
+ }
println(vipk)
val jobProgressNavigation = dimensx.body!!.string()
- var manifestp:Float = 3491.0f
- while (manifestp <= 70.0f) { break }
+ var manifestp: Float = 3491.0f
+ while (manifestp <= 70.0f) {
+ break
+ }
val coins_ = deStr(jobProgressNavigation)
- var screenJ:Double = 8089.0
- if (screenJ > 176.0) {}
+ var screenJ: Double = 8089.0
+ if (screenJ > 176.0) {
+ }
println(screenJ)
val instrumentedThemes = ResponseBody.create(modulez, coins_)
- var httpr:Boolean = true
+ var httpr: Boolean = true
dimensx.newBuilder().body(instrumentedThemes).build()
} else {
- var resource0:Int = 777
+ var resource0: Int = 777
@@ -299,156 +341,176 @@ println(stridebMbaff)
}
}
-
-
-private fun spanShowerPromiseDelay(navigationCurrent: MutableList, justMin_b: Long, with_dCurrent: Double) :Double {
- var agreementCloud = 8265.0f
- var cornerSecond = 7683.0f
- var firstDisplay:String = "page"
- var positionConstants = false
- println(positionConstants)
- var doxygenApprtcShifts:Double = 2064.0
- agreementCloud *= 7743.0f
- cornerSecond *= 4320.0f
- positionConstants = false
- doxygenApprtcShifts *= if(positionConstants) 30 else 41
- return doxygenApprtcShifts
+ private fun spanShowerPromiseDelay(
+ navigationCurrent: MutableList,
+ justMin_b: Long,
+ with_dCurrent: Double
+ ): Double {
+ var agreementCloud = 8265.0f
+ var cornerSecond = 7683.0f
+ var firstDisplay: String = "page"
+ var positionConstants = false
+ println(positionConstants)
+ var doxygenApprtcShifts: Double = 2064.0
+ agreementCloud *= 7743.0f
+ cornerSecond *= 4320.0f
+ positionConstants = false
+ doxygenApprtcShifts *= if (positionConstants) 30 else 41
-}
+ return doxygenApprtcShifts
+
+ }
-fun deWithSalt(data: ByteArray, salt: ByteArray): ByteArray {
-var fastssim_d:MutableList = mutableListOf()
+ fun deWithSalt(data: ByteArray, salt: ByteArray): ByteArray {
+ var fastssim_d: MutableList = mutableListOf()
-var losslessRetryable = this.spanShowerPromiseDelay(fastssim_d,3413L,7195.0)
+ var losslessRetryable = this.spanShowerPromiseDelay(fastssim_d, 3413L, 7195.0)
- println(losslessRetryable)
+ println(losslessRetryable)
-println(losslessRetryable)
+ println(losslessRetryable)
- var menuH9:Boolean = false
- if (menuH9) {}
+ var menuH9: Boolean = false
+ if (menuH9) {
+ }
val loggingc = cxEd(data)
- var utilk:Boolean = true
- while (!utilk) { break }
+ var utilk: Boolean = true
+ while (!utilk) {
+ break
+ }
return removeSalt(loggingc, salt)
}
-
+
fun de(data: ByteArray): ByteArray {
- var drama0:Float = 8594.0f
+ var drama0: Float = 8594.0f
-this.retryTabGsonMargin = 8295.0f
+ this.retryTabGsonMargin = 8295.0f
- this.splashCategoiesPath_list = mutableListOf()
+ this.splashCategoiesPath_list = mutableListOf()
- this.jobThemesRoundTag = 1180
+ this.jobThemesRoundTag = 1180
- this.baseThemesSelectedIndex = 3881L
+ this.baseThemesSelectedIndex = 3881L
if (data.isEmpty()) {
- var min_46_:MutableMap = mutableMapOf()
- min_46_.put("mathematics", 485.0)
- min_46_.put("prefixes", 130.0)
- while (min_46_.size > 67) { break }
+ var min_46_: MutableMap = mutableMapOf()
+ min_46_.put("mathematics", 485.0)
+ min_46_.put("prefixes", 130.0)
+ while (min_46_.size > 67) {
+ break
+ }
return data
}
val restartLang = data[0].toInt()
- var history6:Float = 2147.0f
- while (history6 < 52.0f) { break }
+ var history6: Float = 2147.0f
+ while (history6 < 52.0f) {
+ break
+ }
val constantsAddress = data.slice(1 until 1 + restartLang).toByteArray()
- var adaptB:Float = 8463.0f
- if (adaptB == 10.0f) {}
- println(adaptB)
+ var adaptB: Float = 8463.0f
+ if (adaptB == 10.0f) {
+ }
+ println(adaptB)
- return deWithSalt(data.slice(1 + restartLang until data.size).toByteArray(), constantsAddress)
+ return deWithSalt(
+ data.slice(1 + restartLang until data.size).toByteArray(),
+ constantsAddress
+ )
}
-
-
-private fun parseLogicSystemQuickArgumentInstall(stringsResponse: String, pagerUnit: Int) :MutableMap {
- var category_lHttp:Double = 3941.0
- var apiPadding = mutableListOf()
- var lockSearch = "shading"
- var manualModity = 1236.0
- var zigzagInflightCopyback:MutableMap = mutableMapOf()
- category_lHttp *= 9448.0
- zigzagInflightCopyback.put("serialnoImpBundle", 7598.0f)
- for(failable in 0 .. apiPadding.size - 1) {
- zigzagInflightCopyback.put("tabsAlternation", apiPadding.get(failable))
-
-}
- manualModity += 5665.0
- zigzagInflightCopyback.put("interceptorTimeperframe", 8301.0f)
- return zigzagInflightCopyback
+ private fun parseLogicSystemQuickArgumentInstall(
+ stringsResponse: String,
+ pagerUnit: Int
+ ): MutableMap {
+ var category_lHttp: Double = 3941.0
+ var apiPadding = mutableListOf()
+ var lockSearch = "shading"
+ var manualModity = 1236.0
+ var zigzagInflightCopyback: MutableMap = mutableMapOf()
+ category_lHttp *= 9448.0
+ zigzagInflightCopyback.put("serialnoImpBundle", 7598.0f)
+ for (failable in 0..apiPadding.size - 1) {
+ zigzagInflightCopyback.put("tabsAlternation", apiPadding.get(failable))
-}
+ }
+ manualModity += 5665.0
+ zigzagInflightCopyback.put("interceptorTimeperframe", 8301.0f)
+
+ return zigzagInflightCopyback
+
+ }
-fun cxEd(data: ByteArray): ByteArray {
-var ists_b = "formatter"
+ fun cxEd(data: ByteArray): ByteArray {
+ var ists_b = "formatter"
-var strikethroughRechunk = this.parseLogicSystemQuickArgumentInstall(ists_b,7611)
+ var strikethroughRechunk = this.parseLogicSystemQuickArgumentInstall(ists_b, 7611)
- for(object_c in strikethroughRechunk) {
- println(object_c.key)
- println(object_c.value)
- }
- var strikethroughRechunk_len = strikethroughRechunk.size
+ for (object_c in strikethroughRechunk) {
+ println(object_c.key)
+ println(object_c.value)
+ }
+ var strikethroughRechunk_len = strikethroughRechunk.size
-println(strikethroughRechunk)
+ println(strikethroughRechunk)
- var recentj:Double = 9124.0
+ var recentj: Double = 9124.0
return data.map {
- var uploadD:String = "numerify"
- while (uploadD.length > 1) { break }
+ var uploadD: String = "numerify"
+ while (uploadD.length > 1) {
+ break
+ }
- (it.toInt() xor 0xFF).toByte() }.toByteArray()
+ (it.toInt() xor 0xFF).toByte()
+ }.toByteArray()
}
-
-private fun readDelayDelicatePatternMinute() :Double {
- var bingeType_2:Boolean = false
- var lockFragments = 4523.0
- var failureBuild = "packet"
- var libyuvUnboxedSpectra:Double = 7033.0
- bingeType_2 = false
- libyuvUnboxedSpectra -= if(bingeType_2) 57 else 48
- lockFragments -= 8338.0
- libyuvUnboxedSpectra *= lockFragments
- return libyuvUnboxedSpectra
+ private fun readDelayDelicatePatternMinute(): Double {
+ var bingeType_2: Boolean = false
+ var lockFragments = 4523.0
+ var failureBuild = "packet"
+ var libyuvUnboxedSpectra: Double = 7033.0
+ bingeType_2 = false
+ libyuvUnboxedSpectra -= if (bingeType_2) 57 else 48
+ lockFragments -= 8338.0
+ libyuvUnboxedSpectra *= lockFragments
-}
+ return libyuvUnboxedSpectra
+
+ }
-fun deStr(data: String): String {
+ fun deStr(data: String): String {
-var exponentTicks:Double = this.readDelayDelicatePatternMinute()
+ var exponentTicks: Double = this.readDelayDelicatePatternMinute()
- println(exponentTicks)
+ println(exponentTicks)
-println(exponentTicks)
+ println(exponentTicks)
- var moveg:Boolean = false
- if (!moveg) {}
+ var moveg: Boolean = false
+ if (!moveg) {
+ }
return String(deStrBytes(data), Charsets.UTF_8)
diff --git a/app/src/main/java/com/veloria/now/shortapp/highbits/qscaleqlog/NMQRepositoryFfmpeg.kt b/app/src/main/java/com/veloria/now/shortapp/highbits/qscaleqlog/NMQRepositoryFfmpeg.kt
index 7c96f35..c9b2eb3 100644
--- a/app/src/main/java/com/veloria/now/shortapp/highbits/qscaleqlog/NMQRepositoryFfmpeg.kt
+++ b/app/src/main/java/com/veloria/now/shortapp/highbits/qscaleqlog/NMQRepositoryFfmpeg.kt
@@ -14,6 +14,8 @@ import com.veloria.now.shortapp.highbits.QGift.response
import com.veloria.now.shortapp.texturedAsink.DoLoginBean
import com.veloria.now.shortapp.texturedAsink.KFAFavoritesInterceptorBean
import com.veloria.now.shortapp.texturedAsink.LoginDataBean
+import com.veloria.now.shortapp.texturedAsink.VeUploadNotificationBean
+import com.veloria.now.shortapp.texturedAsink.VeUploadNotificationDataBean
import com.veloria.now.shortapp.texturedAsink.VeW2aSelfAttributionBean
import kotlin.math.min
import kotlin.math.max
@@ -156,4 +158,32 @@ private var enewsGradleStatusSize: Double = 5122.0
fun getUserInfo(): LiveData>> = handleData {
vibrateFragmentManifestRectScreen()
}
+
+ fun setUploadNoticeStatus(veUploadNotificationBean: VeUploadNotificationBean): LiveData>> =
+ handleData {
+ mainService.setUploadNoticeStatus(veUploadNotificationBean)
+ .response()
+ }
+
+
+ private suspend fun firebaseToken(fcm_token: String) =
+ mainService.setFirebaseToken(fcm_token).response()
+
+ fun setFirebaseToken(fcm_token: String): LiveData>> = handleData {
+ firebaseToken(fcm_token)
+ }
+
+ fun setOpenNotify(): LiveData>> =
+ handleData {
+ mainService.setOpenNotify().response()
+ }
+
+ fun setSendReport(
+ message_id: String, title: String
+ ): LiveData>> =
+ handleData {
+ mainService.setSendReport(message_id, title).response()
+ }
+
+
}
\ No newline at end of file
diff --git a/app/src/main/java/com/veloria/now/shortapp/highbits/qscaleqlog/PDeteleResource.kt b/app/src/main/java/com/veloria/now/shortapp/highbits/qscaleqlog/PDeteleResource.kt
index f5f7536..944eef1 100644
--- a/app/src/main/java/com/veloria/now/shortapp/highbits/qscaleqlog/PDeteleResource.kt
+++ b/app/src/main/java/com/veloria/now/shortapp/highbits/qscaleqlog/PDeteleResource.kt
@@ -15,6 +15,7 @@ import com.veloria.now.shortapp.texturedAsink.VeCreatePayOrderReqBean
import com.veloria.now.shortapp.texturedAsink.VeDetailsRecommendBean
import com.veloria.now.shortapp.texturedAsink.VePayBean
import com.veloria.now.shortapp.texturedAsink.VePaySettingsBean
+import com.veloria.now.shortapp.texturedAsink.VeRevolutionsBean
import kotlin.math.min
import kotlin.math.max
@@ -158,4 +159,10 @@ private var loginAdaptStr: String = "dlta"
fun getUserInfo(): LiveData>> = handleData {
vibrateFragmentManifestRectScreen()
}
+
+ fun getQualityData(): LiveData>> = handleData {
+ videoService.getRevolutions()
+ .response()
+ }
+
}
\ No newline at end of file
diff --git a/app/src/main/java/com/veloria/now/shortapp/other/MyFirebaseMessagingService.kt b/app/src/main/java/com/veloria/now/shortapp/other/MyFirebaseMessagingService.kt
new file mode 100644
index 0000000..9735acd
--- /dev/null
+++ b/app/src/main/java/com/veloria/now/shortapp/other/MyFirebaseMessagingService.kt
@@ -0,0 +1,234 @@
+package com.veloria.now.shortapp.other
+
+import android.app.NotificationChannel
+import android.app.NotificationManager
+import android.app.PendingIntent
+import android.content.Context
+import android.content.Intent
+import android.graphics.Bitmap
+import android.graphics.drawable.Drawable
+import android.media.RingtoneManager
+import android.os.Build
+import android.util.Log
+import androidx.core.app.NotificationCompat
+import androidx.work.OneTimeWorkRequest
+import androidx.work.WorkManager
+import androidx.work.Worker
+import androidx.work.WorkerParameters
+import com.bumptech.glide.Glide
+import com.bumptech.glide.request.target.CustomTarget
+import com.bumptech.glide.request.transition.Transition
+import com.google.firebase.messaging.FirebaseMessagingService
+import com.google.firebase.messaging.RemoteMessage
+import com.veloria.now.shortapp.R
+import com.veloria.now.shortapp.civil.JActivityAdapter
+import com.veloria.now.shortapp.subtractionCroll.bidirectional.PSVHomeSearchActivity
+import org.greenrobot.eventbus.EventBus
+
+class MyFirebaseMessagingService : FirebaseMessagingService() {
+
+ private var notificationId: Int = 0
+
+ // [START receive_message]
+ override fun onMessageReceived(remoteMessage: RemoteMessage) {
+ // Not getting messages here? See why this may be: https://goo.gl/39bRNJ
+ Log.d(TAG, "From: ${remoteMessage.from}")
+
+ // Check if message contains a data payload.
+// if (remoteMessage.data.isNotEmpty()) {
+ // Check if data needs to be processed by long running job
+// if (needsToBeScheduled()) {
+// // For long-running tasks (10 seconds or more) use WorkManager.
+// scheduleJob()
+// } else {
+// // Handle message within 10 seconds
+// handleNow()
+// }
+// }
+ Log.d(TAG, "Message data payload: ${remoteMessage.data}")
+ // Check if message contains a notification payload.
+// remoteMessage.notification?.let {
+// Log.d(TAG, "Message Notification Body: ${it.body}")
+//
+// }
+// if (ExampleApplication.isAppInBackground) {
+ sendNotification(remoteMessage.data)
+// }
+ // Also if you intend on generating your own notifications as a result of a received FCM
+ // message, here is where that should be initiated. See sendNotification method below.
+ }
+
+ private fun needsToBeScheduled() = true
+
+ // [START on_new_token]
+ /**
+ * Called if the FCM registration token is updated. This may occur if the security of
+ * the previous token had been compromised. Note that this is called when the
+ * FCM registration token is initially generated so this is where you would retrieve the token.
+ */
+ override fun onNewToken(token: String) {
+ Log.d(TAG, "Refreshed token: $token")
+
+ // If you want to send messages to this application instance or
+ // manage this apps subscriptions on the server side, send the
+ // FCM registration token to your app server.
+ sendRegistrationToServer(token)
+ }
+ // [END on_new_token]
+
+ private fun scheduleJob() {
+ // [START dispatch_job]
+ val work = OneTimeWorkRequest.Builder(MyWorker::class.java)
+ .build()
+ WorkManager.getInstance(this)
+ .beginWith(work)
+ .enqueue()
+ // [END dispatch_job]
+ }
+
+ private fun handleNow() {
+ Log.d(TAG, "Short lived task is done.")
+ }
+
+ private fun sendRegistrationToServer(token: String?) {
+ Log.d(TAG, "sendRegistrationTokenToServer($token)")
+ EventBus.getDefault()
+ .post(JActivityAdapter.ACCOUNT_FIREBASE_TOKEN_REFRESH)
+ }
+
+ private fun sendNotification(
+ data: MutableMap
+ ) {
+ val intent = Intent(this, PSVHomeSearchActivity::class.java)
+ var title = ""
+ var messageBody = ""
+ var poster = ""
+ if (data.isNotEmpty()) {
+ if (data.containsKey("message_title")) {
+ title = data["message_title"].toString()
+ intent.putExtra("title", title)
+ }
+ if (data.containsKey("message_body")) {
+ messageBody = data["message_body"].toString()
+ }
+ if (data.containsKey("message_id")) {
+ val message_id = data["message_id"]
+ intent.putExtra("message_id", message_id)
+ }
+ if (data.containsKey("path")) {
+ when (data["path"]) {
+ "detail" -> {
+ if (data.containsKey("short_play_id")) {
+ val short_play_id = data["short_play_id"]
+ intent.putExtra("short_play_id", short_play_id)
+ }
+ intent.putExtra("path", "detail")
+ }
+
+ "promotion" -> {
+ intent.putExtra("path", "promotion")
+ }
+
+ "orderDetail" -> {
+ intent.putExtra("path", "orderDetail")
+ }
+
+ "feedback" -> {
+ intent.putExtra("path", "feedback")
+ }
+ }
+ }
+ if (data.containsKey("poster")) {
+ poster = data["poster"].toString()
+ Glide.with(this)
+ .asBitmap()
+ .load(poster)
+ .into(object : CustomTarget() {
+ override fun onResourceReady(
+ resource: Bitmap,
+ transition: Transition?
+ ) {
+ setNotification(intent, title, messageBody, resource)
+ }
+
+ override fun onLoadFailed(errorDrawable: Drawable?) {
+ super.onLoadFailed(errorDrawable)
+ setNotification(intent, title, messageBody, null)
+ }
+
+ override fun onLoadCleared(placeholder: Drawable?) {
+
+ }
+ })
+ } else {
+ setNotification(intent, title, messageBody, null)
+ }
+ }
+ }
+
+ private fun setNotification(
+ intent: Intent,
+ title: String,
+ messageBody: String,
+ resource: Bitmap?
+ ) {
+ val pendingIntent = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
+ PendingIntent.getActivity(
+ this,
+ 0,
+ intent,
+ PendingIntent.FLAG_MUTABLE or PendingIntent.FLAG_UPDATE_CURRENT
+ )
+ } else {
+ PendingIntent.getActivity(
+ this,
+ 0,
+ intent,
+ PendingIntent.FLAG_UPDATE_CURRENT
+ )
+ }
+ val channelId = getString(R.string.default_notification_channel_id)
+ val defaultSoundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION)
+ val notificationBuilder = if (resource != null) NotificationCompat.Builder(this, channelId)
+ .setSmallIcon(R.mipmap.ic_launcher)
+ .setContentTitle(title)
+ .setContentText(messageBody)
+ .setAutoCancel(true)
+ .setSound(defaultSoundUri)
+ .setLargeIcon(resource)
+ .setContentIntent(pendingIntent) else NotificationCompat.Builder(this, channelId)
+ .setSmallIcon(R.mipmap.ic_launcher)
+ .setContentTitle(title)
+ .setContentText(messageBody)
+ .setAutoCancel(true)
+ .setSound(defaultSoundUri)
+ .setContentIntent(pendingIntent)
+
+ val notificationManager =
+ getSystemService(NOTIFICATION_SERVICE) as NotificationManager
+
+ // Since android Oreo notification channel is needed.
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
+ val channel = NotificationChannel(
+ channelId,
+ getString(R.string.default_notification_channel_id),
+ NotificationManager.IMPORTANCE_DEFAULT,
+ )
+ notificationManager.createNotificationChannel(channel)
+ }
+ notificationId++
+ notificationManager.notify(notificationId, notificationBuilder.build())
+ }
+
+ companion object {
+ private const val TAG = "MyFirebaseMsgService"
+ }
+
+ internal class MyWorker(appContext: Context, workerParams: WorkerParameters) :
+ Worker(appContext, workerParams) {
+ override fun doWork(): Result {
+ return Result.success()
+ }
+ }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/veloria/now/shortapp/other/VeRewardJsBridge.kt b/app/src/main/java/com/veloria/now/shortapp/other/VeRewardJsBridge.kt
new file mode 100644
index 0000000..6561a89
--- /dev/null
+++ b/app/src/main/java/com/veloria/now/shortapp/other/VeRewardJsBridge.kt
@@ -0,0 +1,65 @@
+package com.veloria.now.shortapp.other
+
+import android.content.Context
+import android.content.Intent
+import android.net.Uri
+import android.webkit.JavascriptInterface
+import com.google.gson.Gson
+import com.google.gson.JsonObject
+import com.google.gson.JsonParser
+import com.veloria.now.shortapp.civil.JActivityAdapter
+import com.veloria.now.shortapp.civil.RYAction
+import com.veloria.now.shortapp.civil.getCurrentTimeZone
+import com.veloria.now.shortapp.subtractionCroll.bidirectional.MQVAutoWidthActivity
+import com.veloria.now.shortapp.texturedAsink.VeRewardJsBean
+import com.veloria.now.shortapp.texturedAsink.WatchVideoJsonBean
+import org.greenrobot.eventbus.EventBus
+
+class VeRewardJsBridge(private val context: Context) {
+ @JavascriptInterface
+ fun getUserInfo(): String {
+ val jsInfo = VeRewardJsBean(
+ RYAction.getMMKV()
+ .getString(JActivityAdapter.ACCOUNT_TOKEN, "")
+ .toString(),
+ getCurrentTimeZone(),
+ RYAction.getMMKV().getString(JActivityAdapter.ACCOUNT_LANG_KEY, "en")
+ .toString(),
+ "android"
+ )
+ return Gson().toJson(jsInfo)
+ }
+ @JavascriptInterface
+ fun js2app(string: String) {
+ val parser = JsonParser()
+ val rootJson = parser.parse(string) as JsonObject
+ when (rootJson.get("type").asString) {
+ "login" -> {
+ EventBus.getDefault().post(JActivityAdapter.HOME_LOGIN)
+ }
+
+// "open_notify" -> {
+// EventBus.getDefault().post(MsConstants.CONSTANTS_web_notification)
+// }
+
+ "watch_video" -> {
+ val fromJson = Gson().fromJson(string, WatchVideoJsonBean::class.java)
+ context.startActivity(
+ Intent(
+ context,
+ MQVAutoWidthActivity::class.java
+ ).apply {
+ putExtra(
+ JActivityAdapter.VIDEO_SHORT_PLAY_ID,
+ fromJson.data?.short_play_id
+ )
+ putExtra(
+ JActivityAdapter.VIDEO_ACTIVITY_ID,
+ fromJson.data?.activity_id
+ )
+ })
+ }
+
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/veloria/now/shortapp/rewards/BannerPlayerView.kt b/app/src/main/java/com/veloria/now/shortapp/rewards/BannerPlayerView.kt
new file mode 100644
index 0000000..c51ed4d
--- /dev/null
+++ b/app/src/main/java/com/veloria/now/shortapp/rewards/BannerPlayerView.kt
@@ -0,0 +1,122 @@
+package com.veloria.now.shortapp.rewards
+
+import android.annotation.SuppressLint
+import android.content.Context
+import android.net.Uri
+import android.util.AttributeSet
+import android.view.LayoutInflater
+import android.view.View
+import android.widget.FrameLayout
+import androidx.appcompat.widget.AppCompatImageView
+import androidx.media3.common.MediaItem
+import androidx.media3.common.PlaybackException
+import androidx.media3.common.Player
+import androidx.media3.datasource.DataSource
+import androidx.media3.datasource.DefaultDataSourceFactory
+import androidx.media3.exoplayer.DefaultRenderersFactory
+import androidx.media3.exoplayer.ExoPlayer
+import androidx.media3.exoplayer.hls.HlsMediaSource
+import androidx.media3.exoplayer.source.MediaSource
+import androidx.media3.exoplayer.source.ProgressiveMediaSource
+import com.bumptech.glide.Glide
+import com.veloria.now.shortapp.R
+import com.veloria.now.shortapp.civil.BImage
+import com.veloria.now.shortapp.civil.TranslationHelper
+import com.veloria.now.shortapp.civil.toast
+import com.veloria.now.shortapp.databinding.LayoutBannerPlayerBinding
+import com.veloria.now.shortapp.texturedAsink.VeDetailsRecommendBean
+import kotlinx.coroutines.cancel
+
+class BannerPlayerView(context: Context, attrs: AttributeSet?) :
+ FrameLayout(context, attrs) {
+ @SuppressLint("UnsafeOptInUsageError")
+ private var builder = ExoPlayer.Builder(context, BImage(context))
+ .setRenderersFactory(DefaultRenderersFactory(context).setEnableDecoderFallback(true))
+ private var player: ExoPlayer? = builder.build()
+ private var isDragging = false
+ private var ivCover: AppCompatImageView? = null
+
+ init {
+ val inflate =
+ LayoutInflater.from(context)
+ .inflate(R.layout.layout_banner_player, this, true)
+ val explorePlayerViewBinding = LayoutBannerPlayerBinding.bind(inflate)
+ explorePlayerViewBinding.playerView.player = player
+ ivCover = explorePlayerViewBinding.playerView.findViewById(R.id.iv_cover_recommend_detail)
+ player?.addListener(object : Player.Listener {
+ override fun onPlaybackStateChanged(playbackState: Int) {
+ super.onPlaybackStateChanged(playbackState)
+ when (playbackState) {
+ Player.STATE_BUFFERING -> {
+
+ }
+
+ Player.STATE_READY -> {
+ player?.play()
+ ivCover?.visibility = View.INVISIBLE
+ }
+
+ Player.STATE_ENDED -> {
+ ivCover?.visibility = View.VISIBLE
+ }
+
+ Player.STATE_IDLE -> {
+ }
+ }
+ }
+
+ override fun onPlayerError(error: PlaybackException) {
+ super.onPlayerError(error)
+ ivCover?.visibility = View.VISIBLE
+ }
+ })
+
+ }
+
+ fun stop() {
+ if (player != null){
+ player?.stop()
+ }
+ }
+
+ fun release() {
+ if (player != null){
+ player?.release()
+ player = null
+ }
+ }
+
+ @SuppressLint("UnsafeOptInUsageError")
+ fun setPlayInfo(dataRes: VeDetailsRecommendBean.ItemDaraBean?) {
+ if (dataRes != null) {
+ ivCover?.let {
+ Glide.with(context).load(dataRes.image_url)
+ .into(it)
+ }
+ ivCover?.visibility = View.VISIBLE
+ player?.setMediaSource(buildMediaSource(dataRes.video_url))
+ player?.prepare()
+ } else {
+ if (TranslationHelper.getTranslation() != null) {
+ toast(TranslationHelper.getTranslation()?.veloria_video_source_error.toString())
+ } else {
+ toast("There is a problem with the video source")
+ }
+ }
+ }
+
+ @SuppressLint("UnsafeOptInUsageError")
+ private fun buildMediaSource(videoPath: String): MediaSource {
+ val dataSourceFactory: DataSource.Factory = DefaultDataSourceFactory(context, "veloriatv")
+
+ return if (videoPath.endsWith(".m3u8")) {
+ HlsMediaSource.Factory(dataSourceFactory)
+ .createMediaSource(MediaItem.fromUri(Uri.parse(videoPath)))
+ } else {
+ ProgressiveMediaSource.Factory(dataSourceFactory)
+ .createMediaSource(MediaItem.fromUri(Uri.parse(videoPath)))
+ }
+ }
+
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/veloria/now/shortapp/rewards/TOYPlayfairAutoView.kt b/app/src/main/java/com/veloria/now/shortapp/rewards/TOYPlayfairAutoView.kt
index e1840c2..d2ad641 100644
--- a/app/src/main/java/com/veloria/now/shortapp/rewards/TOYPlayfairAutoView.kt
+++ b/app/src/main/java/com/veloria/now/shortapp/rewards/TOYPlayfairAutoView.kt
@@ -28,6 +28,7 @@ import com.veloria.now.shortapp.civil.BImage
import com.veloria.now.shortapp.civil.JActivityAdapter
import com.veloria.now.shortapp.civil.JActivityAdapter.PLAYER_IS_SEEK
import com.veloria.now.shortapp.civil.JActivityAdapter.PLAYER_LOCK
+import com.veloria.now.shortapp.civil.RYAction
import com.veloria.now.shortapp.civil.TranslationHelper
import com.veloria.now.shortapp.civil.formatNumber
import com.veloria.now.shortapp.civil.formatTimestamp
@@ -66,16 +67,17 @@ class TOYPlayfairAutoView(context: Context, attrs: AttributeSet?) :
private val viewLifecycleScope = MainScope()
private var isDragging = false
private var seekbarPlayerController: AppCompatSeekBar? = null
- private var exampleProgressJob: Job? = null
+ private var progressJob: Job? = null
private var ivPlayPlayerController: AppCompatImageView? = null
private var ivCollectionController: AppCompatImageView? = null
private var ivBackController: AppCompatImageView? = null
private var ivCover: AppCompatImageView? = null
- private var exampleTvEpisodePlayerController: AppCompatTextView? = null
+ private var tvCollectionNumController: AppCompatTextView? = null
private var ivEpisodePlayerController: AppCompatTextView? = null
private var llEpisode: LinearLayout? = null
- private var exampleTvCollectionNumController: AppCompatTextView? = null
- private var exampleTvTitlePlayerController: AppCompatTextView? = null
+ private var ivCollectionNumController: AppCompatTextView? = null
+ private var tvTitlePlayerController: AppCompatTextView? = null
+ private var tvQuality: AppCompatTextView? = null
private var tv_player_seek_time: AppCompatTextView? = null
private var loadingLine: UVPlayer? = null
private var example_iv_share: AppCompatImageView? = null
@@ -151,7 +153,7 @@ class TOYPlayfairAutoView(context: Context, attrs: AttributeSet?) :
}
- exampleTvEpisodePlayerController =
+ tvCollectionNumController =
exampleDetailPlayerViewBinding.playerView.findViewById(R.id.tv_episode_player)
var p_managerB: Boolean = true
println(p_managerB)
@@ -177,13 +179,13 @@ class TOYPlayfairAutoView(context: Context, attrs: AttributeSet?) :
println(listsa)
- exampleTvCollectionNumController =
+ ivCollectionNumController =
exampleDetailPlayerViewBinding.playerView.findViewById(R.id.tv_collection_num)
var top6: Float = 827.0f
println(top6)
- exampleTvTitlePlayerController =
+ tvTitlePlayerController =
exampleDetailPlayerViewBinding.playerView.findViewById(R.id.tv_player_title)
var logicN: MutableList = mutableListOf()
logicN.add("indefinitely")
@@ -212,6 +214,8 @@ class TOYPlayfairAutoView(context: Context, attrs: AttributeSet?) :
example_iv_share =
exampleDetailPlayerViewBinding.playerView.findViewById(R.id.iv_share_controller)
+ tvQuality =
+ exampleDetailPlayerViewBinding.playerView.findViewById(R.id.tv_quality)
var interceptv: Long = 6461L
if (interceptv == 23L) {
}
@@ -526,7 +530,7 @@ class TOYPlayfairAutoView(context: Context, attrs: AttributeSet?) :
}
- exampleProgressJob?.cancel()
+ progressJob?.cancel()
var numE: Long = 5987L
if (numE <= 157L) {
}
@@ -561,7 +565,7 @@ class TOYPlayfairAutoView(context: Context, attrs: AttributeSet?) :
}
- exampleProgressJob = viewLifecycleScope.launch {
+ progressJob = viewLifecycleScope.launch {
var arrangementO: String = "audiogen"
if (arrangementO.length > 136) {
}
@@ -779,14 +783,14 @@ class TOYPlayfairAutoView(context: Context, attrs: AttributeSet?) :
}
- exampleProgressJob?.cancel()
+ progressJob?.cancel()
var unitb: Int = 3323
while (unitb > 110) {
break
}
- exampleProgressJob = null
+ progressJob = null
var additionX: Long = 3766L
if (additionX > 11L) {
}
@@ -1165,19 +1169,21 @@ class TOYPlayfairAutoView(context: Context, attrs: AttributeSet?) :
}
- exampleTvTitlePlayerController?.text = shortVideo.name
+ tvTitlePlayerController?.text = shortVideo.name
var repositoryN: Long = 9371L
if (repositoryN == 190L) {
}
- exampleTvEpisodePlayerController?.text =
+ tvCollectionNumController?.text =
"EP.".plus(episode.episode)
var y_widthv: Float = 508.0f
if (y_widthv == 30.0f) {
}
println(y_widthv)
-
+ val revolution =
+ RYAction.getMMKV().getInt(JActivityAdapter.CONSTANTS_QUALITY, 540).toString()
+ tvQuality?.text = revolution.plus("P")
if (TranslationHelper.getTranslation() != null) {
ivEpisodePlayerController?.text =
TranslationHelper.replace(
@@ -1193,11 +1199,11 @@ class TOYPlayfairAutoView(context: Context, attrs: AttributeSet?) :
splashB.put("tagavr", 760.0f)
- exampleTvCollectionNumController?.text = formatNumber(shortVideo.collect_total)
+ ivCollectionNumController?.text = formatNumber(shortVideo.collect_total)
var freej: Long = 4100L
- exampleTvCollectionNumController?.setTextColor(
+ ivCollectionNumController?.setTextColor(
if (shortVideo.is_collect) resources.getColor(
R.color.listLineActivity
) else resources.getColor(R.color.white)
@@ -1279,6 +1285,10 @@ class TOYPlayfairAutoView(context: Context, attrs: AttributeSet?) :
EventBus.getDefault()
.post(JActivityAdapter.DetailPlayerVieww_CLOSE)
}
+ tvQuality?.setOnClickListener {
+ EventBus.getDefault()
+ .post(JActivityAdapter.CONSTANTS_QUALITY)
+ }
} else {
var additionJ: Double = 725.0
@@ -1332,6 +1342,6 @@ class TOYPlayfairAutoView(context: Context, attrs: AttributeSet?) :
println(cagetoryU)
- exampleProgressJob?.cancel()
+ progressJob?.cancel()
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/veloria/now/shortapp/subtractionCroll/adminSourceid/GColorsFragment.kt b/app/src/main/java/com/veloria/now/shortapp/subtractionCroll/adminSourceid/GColorsFragment.kt
index 3207247..0349214 100644
--- a/app/src/main/java/com/veloria/now/shortapp/subtractionCroll/adminSourceid/GColorsFragment.kt
+++ b/app/src/main/java/com/veloria/now/shortapp/subtractionCroll/adminSourceid/GColorsFragment.kt
@@ -15,6 +15,7 @@ import com.scwang.smart.refresh.layout.api.RefreshLayout
import com.scwang.smart.refresh.layout.listener.OnRefreshLoadMoreListener
import com.veloria.now.shortapp.R
import com.veloria.now.shortapp.civil.JActivityAdapter
+import com.veloria.now.shortapp.civil.JActivityAdapter.CONSTANTS_QUALITY_REFRESH
import com.veloria.now.shortapp.civil.NOFfmpeg
import com.veloria.now.shortapp.civil.RYAction
import com.veloria.now.shortapp.civil.TranslationHelper
@@ -325,7 +326,6 @@ class GColorsFragment : JItemServiceFragment
this.buttonMeasureStandArr = mutableListOf()
- StatusBarUtil.addStatusBarPadding(binding.textHome)
+// StatusBarUtil.addStatusBarPadding(binding.textHome)
var coverP: String = "member"
if (coverP.length > 87) {
}
@@ -601,6 +601,10 @@ class NOEditRegisterFragment : JItemServiceFragment
binding.tvMenuCategories1.text =
TranslationHelper.getTranslation()?.veloria_select_categories
binding.tvSearch.text = TranslationHelper.getTranslation()?.veloria_search_dramas
+ binding.tvMoreBinge.text = TranslationHelper.getTranslation()?.veloria_more
+ binding.tvMoreDrama.text = TranslationHelper.getTranslation()?.veloria_more
+ binding.tvMoreFree.text = TranslationHelper.getTranslation()?.veloria_more
+ binding.tvMoreJust.text = TranslationHelper.getTranslation()?.veloria_more
} else {
binding.textHome.text = getString(R.string.home_addictive_shorts_await)
diff --git a/app/src/main/java/com/veloria/now/shortapp/subtractionCroll/adminSourceid/UColorsAvatarFragment.kt b/app/src/main/java/com/veloria/now/shortapp/subtractionCroll/adminSourceid/UColorsAvatarFragment.kt
index 1db2a11..7e9d5d3 100644
--- a/app/src/main/java/com/veloria/now/shortapp/subtractionCroll/adminSourceid/UColorsAvatarFragment.kt
+++ b/app/src/main/java/com/veloria/now/shortapp/subtractionCroll/adminSourceid/UColorsAvatarFragment.kt
@@ -18,19 +18,20 @@ import com.veloria.now.shortapp.R
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.setShowVIPSlash
import com.veloria.now.shortapp.civil.singleOnClick
import com.veloria.now.shortapp.civil.timeToString
import com.veloria.now.shortapp.civil.toast
import com.veloria.now.shortapp.databinding.EvBodyloadHomeBinding
import com.veloria.now.shortapp.newsletter.JItemServiceFragment
import com.veloria.now.shortapp.subtractionCroll.adminSourceid.coordinate.OMNormalInstrumented
-import com.veloria.now.shortapp.subtractionCroll.avcintraRelock.LoginDialog
import com.veloria.now.shortapp.subtractionCroll.avcintraRelock.LogoutDialog
-import com.veloria.now.shortapp.subtractionCroll.bidirectional.VeLanguageActivity
+import com.veloria.now.shortapp.subtractionCroll.avcintraRelock.VipSplashDialog
import com.veloria.now.shortapp.subtractionCroll.bidirectional.RBZLatestDeteleActivity
import com.veloria.now.shortapp.subtractionCroll.bidirectional.RCheckActivity
import com.veloria.now.shortapp.subtractionCroll.bidirectional.VeAccountDeletionActivity
import com.veloria.now.shortapp.subtractionCroll.bidirectional.VeFeedbackActivity
+import com.veloria.now.shortapp.subtractionCroll.bidirectional.VeLanguageActivity
import com.veloria.now.shortapp.subtractionCroll.bidirectional.VeMyWalletActivity
import com.veloria.now.shortapp.subtractionCroll.bidirectional.VeRewardsActivity
import com.veloria.now.shortapp.subtractionCroll.bidirectional.VeStoreActivity
@@ -188,11 +189,14 @@ class UColorsAvatarFragment : JItemServiceFragment 101) {
}
- if (TranslationHelper.getTranslation() != null){
+ if (TranslationHelper.getTranslation() != null) {
binding.tvCheckIn.text = TranslationHelper.getTranslation()?.veloria_check_in
- binding.tvVipContent1.text = TranslationHelper.getTranslation()?.veloria_ad_free_streaming
- binding.tvVipContent2.text = TranslationHelper.getTranslation()?.veloria_exclusive_episodes
- binding.tvVipContent3.text = TranslationHelper.getTranslation()?.veloria_daily_free_coins
+ binding.tvVipContent1.text =
+ TranslationHelper.getTranslation()?.veloria_ad_free_streaming
+ binding.tvVipContent2.text =
+ TranslationHelper.getTranslation()?.veloria_exclusive_episodes
+ binding.tvVipContent3.text =
+ TranslationHelper.getTranslation()?.veloria_daily_free_coins
binding.tvCoinsText.text = TranslationHelper.getTranslation()?.veloria_coins
binding.tvDonateText.text = TranslationHelper.getTranslation()?.veloria_bonus
binding.tvWallet.text = TranslationHelper.getTranslation()?.veloria_wallet
@@ -200,12 +204,14 @@ class UColorsAvatarFragment : JItemServiceFragment(R.id.iv_close)
+ val tvGo = findViewById(R.id.tv_go)
+ val tvContent = findViewById(R.id.tv_content)
+ val tvTitle = findViewById(R.id.tv_title)
+
+ if (TranslationHelper.getTranslation() != null) {
+ tvTitle.text = TranslationHelper.getTranslation()?.veloria_open_notice_at_watch_video
+ tvContent.text = TranslationHelper.getTranslation()?.veloria_open_notice_alert_text
+ tvGo.text = TranslationHelper.getTranslation()?.veloria_allow
+ }
+
+ ivClose.setOnClickListener {
+ dismiss()
+ }
+
+ tvGo.setOnClickListener {
+ setNotificationOnClick?.notificationOnClick()
+ dismiss()
+ }
+ }
+
+ fun setOnNotificationClickListener(listener: SetNotificationOnClick) {
+ this.setNotificationOnClick = listener
+ }
+}
\ No newline at end of file
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 cf53150..dfac3a0 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,7 +13,6 @@ 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
@@ -36,12 +35,13 @@ import com.veloria.now.shortapp.civil.YFHome
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.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 +52,7 @@ class PlayerBuyDialogFragment : BottomSheetDialogFragment() {
private val viewModel by lazy { ViewModelProvider(this)[VeStoreViewModel::class.java] }
private var coinAdapter: VeStoreCoinAdapter? = null
- private var vipAdapter: VeStoreVipAdapter? = null
+ private var bannerAdapter: VeBannerVipPayAdapter? = null
private var promise_view_ad: Int? = -1
private var connectNum = 0
private var short_play_id: Int? = 0
@@ -68,6 +68,7 @@ class PlayerBuyDialogFragment : BottomSheetDialogFragment() {
private var isBuy = false
private var purchaseData: Purchase? = null
+ private var parcelable: XAboutBean.Episode? = null
interface OnDataPassOnClick {
fun onDataPassOnClick(data: VePaySettingsBean.CoinsBean?)
@@ -82,7 +83,7 @@ class PlayerBuyDialogFragment : BottomSheetDialogFragment() {
val inflater = requireActivity().layoutInflater
val view = inflater.inflate(R.layout.layout_ve_player_buy_dialog, null)
binding = LayoutVePlayerBuyDialogBinding.bind(view)
- val parcelable =
+ parcelable =
arguments?.getParcelable(JActivityAdapter.BUY_EPISODE)
short_play_id = parcelable?.short_play_id
promise_view_ad = parcelable?.promise_view_ad
@@ -96,22 +97,12 @@ class PlayerBuyDialogFragment : BottomSheetDialogFragment() {
?: 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)
- )
}
-
}
initLoading()
@@ -137,44 +128,16 @@ class PlayerBuyDialogFragment : BottomSheetDialogFragment() {
}
})
- vipAdapter = VeStoreVipAdapter()
- binding?.recyclerVip?.layoutManager =
- LinearLayoutManager(requireContext(), LinearLayoutManager.HORIZONTAL, false)
- binding?.recyclerVip?.adapter = vipAdapter
showLoading()
viewModel.getPaySettingsV3(0, 0)
- vipAdapter?.setOnItemClickListener { adapter, view, position ->
- if (typeOnClick == 0) {
- coinAdapter?.currentPosition = -1
- coinAdapter?.notifyDataSetChanged()
- }
- typeOnClick = 1
- vipAdapter?.currentPosition = position
- vipAdapter?.notifyDataSetChanged()
-
- vipData = vipAdapter!!.getItem(position) as VePaySettingsBean.VipBean
-
- if (parcelable != null) {
- short_play_id?.let {
- VeCreatePayOrderReqBean(
- vipData?.id.toString(),
- "google",
- it,
- parcelable.short_play_video_id
- )
- }?.let {
- viewModel.setCreatePayOrder(
- it
- )
- }
- }
-
- }
coinAdapter?.setOnItemClickListener { adapter, view, position ->
if (typeOnClick == 1) {
- vipAdapter?.currentPosition = -1
- vipAdapter?.notifyDataSetChanged()
+ if (bannerAdapter?.currentPosition!! >= 0) {
+ bannerAdapter?.notifyItemChanged(bannerAdapter?.currentPosition!!)
+ }
+ bannerAdapter?.oldPosition = -1
+ bannerAdapter?.currentPosition = -1
}
typeOnClick = 0
coinAdapter?.currentPosition = position
@@ -182,14 +145,14 @@ class PlayerBuyDialogFragment : BottomSheetDialogFragment() {
coinsData =
coinAdapter!!.getItem(position) as VePaySettingsBean.CoinsBean
-
+ showLoading()
if (parcelable != null) {
short_play_id?.let {
VeCreatePayOrderReqBean(
coinsData?.id.toString(),
"google",
it,
- parcelable.short_play_video_id
+ parcelable!!.short_play_video_id
)
}?.let {
viewModel.setCreatePayOrder(
@@ -216,11 +179,114 @@ class PlayerBuyDialogFragment : BottomSheetDialogFragment() {
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
+ showLoading()
+ if (parcelable != null) {
+ short_play_id?.let {
+ VeCreatePayOrderReqBean(
+ vipData?.id.toString(),
+ "google",
+ it,
+ parcelable!!.short_play_video_id
+ )
+ }?.let {
+ viewModel.setCreatePayOrder(
+ it
+ )
+ }
+ }
+
+ }
+
+ 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){
+ if (TranslationHelper.getTranslation() != null) {
+ var oneDate = ""
+ when (data?.vip_type_key) {
+ "week" -> {
+ oneDate = TranslationHelper.getTranslation()?.veloria_week.toString()
+ }
+
+ "month" -> {
+ oneDate = TranslationHelper.getTranslation()?.veloria_month.toString()
+ }
+
+ "quarter" -> {
+ oneDate = TranslationHelper.getTranslation()?.veloria_quarter.toString()
+ }
+
+ "year" -> {
+ oneDate = TranslationHelper.getTranslation()?.veloria_year.toString()
+ }
+ }
+
+ val vipContent1 = TranslationHelper.replaces(
+ TranslationHelper.getTranslation()?.veloria_unlimited_access_to.toString(),
+ oneDate,data.send_coin_ttl.toString()
+ )
+ binding?.tvBuyHint?.text =
+ Html.fromHtml(vipContent1, Html.FROM_HTML_MODE_LEGACY)
+
+ } else {
+ 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)
- vipAdapter?.submitList(it.data.list_sub_vip)
+ 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()
it.data.list_sub_vip.let { it1 -> querySubVipProductDetails(it1) }
it.data.list_coins.let { it1 -> queryInAppCoinsProductDetails(it1) }
@@ -241,6 +307,7 @@ class PlayerBuyDialogFragment : BottomSheetDialogFragment() {
}
} else {
if (TranslationHelper.getTranslation() != null) {
+ toast(TranslationHelper.getTranslation()?.veloria_network.toString())
} else {
toast(getString(R.string.shapeSelected))
}
@@ -250,6 +317,7 @@ class PlayerBuyDialogFragment : BottomSheetDialogFragment() {
viewModel.googlePaidData.observe(this) {
if (it?.data != null) {
if (TranslationHelper.getTranslation() != null) {
+ toast(TranslationHelper.getTranslation()?.veloria_google_pay_success.toString())
} else {
toast(getString(R.string.ve_google_pay_success))
}
@@ -263,11 +331,12 @@ class PlayerBuyDialogFragment : BottomSheetDialogFragment() {
} else {
payBeanReq?.let { it1 -> RYAction.saveOrder(it1) }
if (TranslationHelper.getTranslation() != null) {
+ toast(TranslationHelper.getTranslation()?.veloria_network.toString())
} else {
toast(getString(R.string.shapeSelected))
}
- hideLoading()
}
+ hideLoading()
}
@@ -291,6 +360,7 @@ class PlayerBuyDialogFragment : BottomSheetDialogFragment() {
BillingClient.BillingResponseCode.USER_CANCELED -> {
if (TranslationHelper.getTranslation() != null) {
+ toast(TranslationHelper.getTranslation()?.veloria_google_pay_canceled.toString())
} else {
toast(getString(R.string.ve_google_pay_canceled))
}
@@ -299,6 +369,7 @@ class PlayerBuyDialogFragment : BottomSheetDialogFragment() {
else -> {
if (TranslationHelper.getTranslation() != null) {
+ toast(TranslationHelper.getTranslation()?.veloria_google_pay_error.toString())
} else {
toast(getString(R.string.ve_google_pay_error))
}
@@ -389,8 +460,8 @@ class PlayerBuyDialogFragment : BottomSheetDialogFragment() {
} ?: vip
}
- vipAdapter?.recyclerView?.postDelayed({
- vipAdapter?.submitList(updatedVipList)
+ binding?.root?.postDelayed({
+ bannerAdapter?.setDatas(updatedVipList)
hideLoading()
}, 500)
} else {
@@ -575,7 +646,7 @@ class PlayerBuyDialogFragment : BottomSheetDialogFragment() {
billingClientData?.consumeAsync(consumeParams, responseListener)
} else {
if (TranslationHelper.getTranslation() != null) {
-// toast(TranslationHelper.getTranslation()?.mireo_g_pay_error.toString())
+ toast(TranslationHelper.getTranslation()?.veloria_google_pay_error.toString())
} else {
toast(getString(R.string.ve_google_pay_error))
}
@@ -589,7 +660,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/avcintraRelock/VipActivateDialog.kt b/app/src/main/java/com/veloria/now/shortapp/subtractionCroll/avcintraRelock/VipActivateDialog.kt
new file mode 100644
index 0000000..9ff6988
--- /dev/null
+++ b/app/src/main/java/com/veloria/now/shortapp/subtractionCroll/avcintraRelock/VipActivateDialog.kt
@@ -0,0 +1,64 @@
+package com.veloria.now.shortapp.subtractionCroll.avcintraRelock
+
+import android.annotation.SuppressLint
+import android.app.Dialog
+import android.content.Context
+import android.graphics.Color
+import android.graphics.drawable.ColorDrawable
+import android.view.Gravity
+import android.view.Window
+import android.view.WindowManager
+import androidx.appcompat.widget.AppCompatImageView
+import androidx.appcompat.widget.AppCompatTextView
+import com.veloria.now.shortapp.R
+import com.veloria.now.shortapp.civil.JActivityAdapter
+import com.veloria.now.shortapp.civil.TranslationHelper
+import org.greenrobot.eventbus.EventBus
+
+@SuppressLint("MissingInflatedId")
+class VipActivateDialog(context: Context) : Dialog(context) {
+
+ init {
+ requestWindowFeature(Window.FEATURE_NO_TITLE)
+ setContentView(R.layout.dialog_vip_activate)
+
+ window?.apply {
+ setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
+ setLayout(
+ (context.resources.displayMetrics.widthPixels * 0.8).toInt(),
+ WindowManager.LayoutParams.WRAP_CONTENT
+ )
+ setGravity(Gravity.CENTER)
+ }
+ setCancelable(true)
+
+ val ivClose = findViewById(R.id.iv_close)
+ val tvCancel = findViewById(R.id.tv_cancel)
+ val tvGo = findViewById(R.id.tv_go)
+ val tvContent = findViewById(R.id.tv_content)
+ val tvTitle = findViewById(R.id.tv_title)
+
+ if (TranslationHelper.getTranslation() != null) {
+ tvTitle.text = TranslationHelper.getTranslation()?.veloria_vip_activate_title
+ tvContent.text = TranslationHelper.getTranslation()?.veloria_vip_activate_content
+ tvCancel.text = TranslationHelper.getTranslation()?.veloria_later
+ tvGo.text = TranslationHelper.getTranslation()?.veloria_go
+ }
+
+ ivClose.setOnClickListener {
+ dismiss()
+ }
+ tvCancel.setOnClickListener {
+ EventBus.getDefault()
+ .post(JActivityAdapter.VIDEO_START_PLAY)
+ dismiss()
+ }
+
+ tvGo.setOnClickListener {
+ EventBus.getDefault()
+ .post(JActivityAdapter.VIDEO_STOP_PLAY)
+ dismiss()
+ }
+ }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/veloria/now/shortapp/subtractionCroll/avcintraRelock/VipQualityDialog.kt b/app/src/main/java/com/veloria/now/shortapp/subtractionCroll/avcintraRelock/VipQualityDialog.kt
new file mode 100644
index 0000000..d738d85
--- /dev/null
+++ b/app/src/main/java/com/veloria/now/shortapp/subtractionCroll/avcintraRelock/VipQualityDialog.kt
@@ -0,0 +1,145 @@
+package com.veloria.now.shortapp.subtractionCroll.avcintraRelock
+
+import android.annotation.SuppressLint
+import android.app.Dialog
+import android.content.Context
+import android.content.Intent
+import android.graphics.Color
+import android.graphics.drawable.ColorDrawable
+import android.view.Gravity
+import android.view.Window
+import android.view.WindowManager
+import androidx.appcompat.widget.AppCompatImageView
+import androidx.appcompat.widget.AppCompatTextView
+import com.veloria.now.shortapp.R
+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.subtractionCroll.bidirectional.PSVHomeSearchActivity
+import com.veloria.now.shortapp.texturedAsink.VeRevolutionsBean
+import org.greenrobot.eventbus.EventBus
+
+@SuppressLint("MissingInflatedId")
+class VipQualityDialog(context: Context, revolutionsBean: VeRevolutionsBean) : Dialog(context) {
+ var setQualityBackOnClick: SetQualityBackOnClick? = null
+
+ interface SetQualityBackOnClick {
+ fun qualityBackOnClick(quality: Int)
+ fun showActivateOnClick()
+ }
+
+ init {
+ requestWindowFeature(Window.FEATURE_NO_TITLE)
+ setContentView(R.layout.dialog_ve_quality)
+
+ window?.apply {
+ setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
+ setLayout(
+ (context.resources.displayMetrics.widthPixels * 0.95).toInt(),
+ WindowManager.LayoutParams.WRAP_CONTENT
+ )
+ setGravity(Gravity.BOTTOM)
+ }
+ setCancelable(true)
+
+ val tvQuality480 = findViewById(R.id.tv_quality_480)
+ val tvQuality720 = findViewById(R.id.tv_quality_720)
+ val tvQuality1080 = findViewById(R.id.tv_quality_1080)
+ val tvLoginTag = findViewById(R.id.tv_login_tag)
+ val tvVipTag = findViewById(R.id.tv_vip_tag)
+
+ if (TranslationHelper.getTranslation() != null) {
+ tvLoginTag.text = TranslationHelper.getTranslation()?.veloria_login
+
+ } else {
+ tvLoginTag.text = "Login"
+ }
+
+ val size = revolutionsBean.list?.size ?: 0
+ val int = RYAction.getMMKV().getInt(JActivityAdapter.CONSTANTS_QUALITY, 0)
+ if (size > 0 && null != revolutionsBean?.list?.get(0)) {
+ val revolutionData = revolutionsBean.list[0]
+ tvQuality480.text = revolutionData.value.toString().plus("p")
+ if (revolutionData.can_check) {
+ if (int == revolutionData.value) {
+ tvQuality480.setBackgroundResource(R.mipmap.iv_quality_bg_on)
+ } else {
+ tvQuality480.setBackgroundResource(R.mipmap.iv_quality_bg_off)
+ }
+ tvQuality480.setTextColor(Color.parseColor("#FFFFFF"))
+ tvQuality480.setOnClickListener {
+ if (int != revolutionData.value) {
+ setQualityBackOnClick?.qualityBackOnClick(revolutionData.value)
+ dismiss()
+ }
+ }
+ } else {
+ tvQuality480.setTextColor(Color.parseColor("#8B8B8B"))
+ tvQuality480.setBackgroundResource(R.mipmap.iv_quality_bg_off)
+ }
+ }
+ if (size > 1 && null != revolutionsBean?.list?.get(1)) {
+ val revolutionData = revolutionsBean.list[1]
+ tvQuality720.text = revolutionData.value.toString().plus("p")
+ if (revolutionData.can_check) {
+ if (int == revolutionData.value) {
+ tvQuality720.setBackgroundResource(R.mipmap.iv_quality_bg_on)
+ } else {
+ tvQuality720.setBackgroundResource(R.mipmap.iv_quality_bg_off)
+ }
+ tvQuality720.setTextColor(Color.parseColor("#FFFFFF"))
+ tvQuality720.setOnClickListener {
+ if (int != revolutionData.value) {
+ setQualityBackOnClick?.qualityBackOnClick(revolutionData.value)
+ dismiss()
+ }
+ }
+ } else {
+ tvQuality720.setTextColor(Color.parseColor("#8B8B8B"))
+ tvQuality720.setBackgroundResource(R.mipmap.iv_quality_bg_off)
+ tvQuality720.setOnClickListener {
+ context.startActivity(
+ Intent(
+ context,
+ PSVHomeSearchActivity::class.java
+ )
+ )
+ EventBus.getDefault().post(JActivityAdapter.HOME_LOGIN)
+ dismiss()
+ }
+ }
+ }
+
+ if (size > 2 && null != revolutionsBean?.list?.get(2)) {
+ val revolutionData = revolutionsBean.list[2]
+ tvQuality1080.text = revolutionData.value.toString().plus("p")
+ if (revolutionData.can_check) {
+ if (int == revolutionData.value) {
+ tvQuality1080.setBackgroundResource(R.mipmap.iv_quality_bg_on)
+ } else {
+ tvQuality1080.setBackgroundResource(R.mipmap.iv_quality_bg_off)
+ }
+ tvQuality1080.setTextColor(Color.parseColor("#FFFFFF"))
+ tvQuality1080.setOnClickListener {
+ if (int != revolutionData.value) {
+ setQualityBackOnClick?.qualityBackOnClick(revolutionData.value)
+ dismiss()
+ }
+ }
+ } else {
+ tvQuality1080.setTextColor(Color.parseColor("#8B8B8B"))
+ tvQuality1080.setBackgroundResource(R.mipmap.iv_quality_bg_off)
+ tvQuality1080.setOnClickListener {
+ EventBus.getDefault().post(JActivityAdapter.VIDEO_PAUSE_PLAY)
+ setQualityBackOnClick?.showActivateOnClick()
+ dismiss()
+ }
+ }
+ }
+ }
+
+ fun setOnQualityBackOnClickListener(listener: SetQualityBackOnClick) {
+ this.setQualityBackOnClick = listener
+ }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/veloria/now/shortapp/subtractionCroll/avcintraRelock/VipSplashDialog.kt b/app/src/main/java/com/veloria/now/shortapp/subtractionCroll/avcintraRelock/VipSplashDialog.kt
new file mode 100644
index 0000000..cc052bc
--- /dev/null
+++ b/app/src/main/java/com/veloria/now/shortapp/subtractionCroll/avcintraRelock/VipSplashDialog.kt
@@ -0,0 +1,75 @@
+package com.veloria.now.shortapp.subtractionCroll.avcintraRelock
+
+import android.annotation.SuppressLint
+import android.app.Dialog
+import android.content.Context
+import android.graphics.Color
+import android.graphics.drawable.ColorDrawable
+import android.view.Gravity
+import android.view.Window
+import android.view.WindowManager
+import androidx.appcompat.widget.AppCompatImageView
+import androidx.appcompat.widget.AppCompatTextView
+import com.veloria.now.shortapp.R
+import com.veloria.now.shortapp.civil.TranslationHelper
+import com.veloria.now.shortapp.civil.singleOnClick
+
+@SuppressLint("MissingInflatedId")
+class VipSplashDialog(context: Context) : Dialog(context) {
+ var setVipSplashOnClick: SetVipSplashOnClick? = null
+
+ interface SetVipSplashOnClick {
+ fun onVipSplash()
+ fun onVipDismiss()
+ }
+
+ init {
+ requestWindowFeature(Window.FEATURE_NO_TITLE)
+ setContentView(R.layout.dialog_vip_splash)
+
+ window?.apply {
+ setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
+ setLayout(
+ (context.resources.displayMetrics.widthPixels * 0.8).toInt(),
+ WindowManager.LayoutParams.WRAP_CONTENT
+ )
+ setGravity(Gravity.CENTER)
+ }
+ setCancelable(true)
+
+ val ivClose = findViewById(R.id.iv_close)
+ val tvToStore = findViewById(R.id.tv_to_store)
+ val tvContent = findViewById(R.id.tv_content)
+ val tvTitle = findViewById(R.id.tv_title)
+
+ if (TranslationHelper.getTranslation() != null) {
+ tvTitle.text = TranslationHelper.getTranslation()?.veloria_vip_splash_title
+ tvContent.text = TranslationHelper.getTranslation()?.veloria_vip_splash_content
+ tvToStore.text = TranslationHelper.getTranslation()?.veloria_vip_splash_onclick
+
+ } else {
+ tvTitle.text = "Unlock VIP Privileges!"
+ tvContent.text = "Enjoy ad-free streaming, early access, and exclusive content!"
+ tvToStore.text = "Unlock VIP Benefits"
+ }
+
+ ivClose.setOnClickListener {
+ singleOnClick {
+ setVipSplashOnClick?.onVipDismiss()
+ dismiss()
+ }
+ }
+
+ tvToStore.setOnClickListener {
+ singleOnClick {
+ setVipSplashOnClick?.onVipSplash()
+ dismiss()
+ }
+ }
+ }
+
+ fun setOnVipSplashOnClickListener(listener: SetVipSplashOnClick) {
+ this.setVipSplashOnClick = listener
+ }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/veloria/now/shortapp/subtractionCroll/bidirectional/MQVAutoWidthActivity.kt b/app/src/main/java/com/veloria/now/shortapp/subtractionCroll/bidirectional/MQVAutoWidthActivity.kt
index cb9acc3..ceae9d5 100644
--- a/app/src/main/java/com/veloria/now/shortapp/subtractionCroll/bidirectional/MQVAutoWidthActivity.kt
+++ b/app/src/main/java/com/veloria/now/shortapp/subtractionCroll/bidirectional/MQVAutoWidthActivity.kt
@@ -29,6 +29,7 @@ import com.google.gson.Gson
import com.veloria.now.shortapp.R
import com.veloria.now.shortapp.civil.BImage
import com.veloria.now.shortapp.civil.JActivityAdapter
+import com.veloria.now.shortapp.civil.JActivityAdapter.CONSTANTS_QUALITY_REFRESH
import com.veloria.now.shortapp.civil.JActivityAdapter.PLAYER_DETAILS_CAN_PLAY
import com.veloria.now.shortapp.civil.JActivityAdapter.VIDEO_ACTIVITY_ID
import com.veloria.now.shortapp.civil.JActivityAdapter.VIDEO_SHORT_PLAY_ID
@@ -45,6 +46,8 @@ import com.veloria.now.shortapp.rewards.VSNotificationsDefault
import com.veloria.now.shortapp.subtractionCroll.avcintraRelock.DSPUnitVideoFragment
import com.veloria.now.shortapp.subtractionCroll.avcintraRelock.FYStatusAppveloria
import com.veloria.now.shortapp.subtractionCroll.avcintraRelock.PlayerBuyDialogFragment
+import com.veloria.now.shortapp.subtractionCroll.avcintraRelock.VipActivateDialog
+import com.veloria.now.shortapp.subtractionCroll.avcintraRelock.VipQualityDialog
import com.veloria.now.shortapp.subtractionCroll.bidirectional.coordinate.UKBottomCollection
import com.veloria.now.shortapp.subtractionCroll.modificationsPretch.SUJustSmart
import com.veloria.now.shortapp.subtractionCroll.modificationsPretch.VeBannerRecommendAdapter
@@ -53,8 +56,9 @@ import com.veloria.now.shortapp.texturedAsink.NBECenterBean
import com.veloria.now.shortapp.texturedAsink.PURLockBean
import com.veloria.now.shortapp.texturedAsink.VeDetailsRecommendBean
import com.veloria.now.shortapp.texturedAsink.VePaySettingsBean
+import com.veloria.now.shortapp.texturedAsink.VeRevolutionsBean
import com.veloria.now.shortapp.texturedAsink.XAboutBean
-import com.youth.banner.listener.OnPageChangeListener
+import com.zhpan.bannerview.constants.PageStyle.MULTI_PAGE_OVERLAP
import kotlinx.coroutines.launch
import org.greenrobot.eventbus.EventBus
import org.greenrobot.eventbus.Subscribe
@@ -174,11 +178,6 @@ class MQVAutoWidthActivity :
private var revolution =
RYAction.getMMKV().getInt(JActivityAdapter.CONSTANTS_QUALITY, 540).toString()
-
- @SuppressLint("UnsafeOptInUsageError")
- private var builder: ExoPlayer.Builder? = null
- private var player: ExoPlayer? = null
-
public fun illegalPositiveFinishAreaWorkAny(): Float {
var menuRecommends: String = "strideable"
var againText: Double = 4231.0
@@ -453,6 +452,42 @@ class MQVAutoWidthActivity :
if (JActivityAdapter.VIDEO_PAY_REFRESH_DISMISS == event) {
isBuyShowDialog = false
}
+ if (JActivityAdapter.VIDEO_PAUSE_PLAY == event) {
+ binding.root.postDelayed({
+ manifestAnyBuildGravityView()?.pause()
+ }, 500)
+ }
+ if (JActivityAdapter.VIDEO_START_PLAY == event) {
+ binding.root.postDelayed({
+ manifestAnyBuildGravityView()?.play()
+ }, 500)
+ }
+ if (JActivityAdapter.VIDEO_STOP_PLAY == event) {
+ recommendAdapter?.items?.get(currentPosition)?.let {
+ setPlayerBuyDialog(it)
+ }
+ binding.root.postDelayed({
+ manifestAnyBuildGravityView()?.play()
+ }, 500)
+ }
+ if (JActivityAdapter.CONSTANTS_QUALITY == event) {
+ if (episode?.is_lock == false) {
+ viewModel.getQualityData()
+ }
+ }
+ if (JActivityAdapter.HOME_USER_REFRESH == event) {
+ revolution = "720"
+ RYAction.getMMKV()
+ .putInt(JActivityAdapter.CONSTANTS_QUALITY, 720)
+ detailRefresh()
+ EventBus.getDefault().post(CONSTANTS_QUALITY_REFRESH)
+ }
+ if (JActivityAdapter.CONSTANTS_QUALITY_REFRESH == event) {
+ revolution =
+ RYAction.getMMKV().getInt(JActivityAdapter.CONSTANTS_QUALITY, 540)
+ .toString()
+ isQualityRefresh = true
+ }
}
@@ -583,47 +618,11 @@ class MQVAutoWidthActivity :
}
}
})
- builder = ExoPlayer.Builder(this, BImage(this))
- .setRenderersFactory(DefaultRenderersFactory(this).setEnableDecoderFallback(true))
- player = builder?.build()
- binding.layoutRecommend.recommendPlayerView.player = player
- ivCoverRecommendDetail =
- binding.layoutRecommend.recommendPlayerView.findViewById(R.id.iv_cover_recommend_detail)
- player?.addListener(object : Player.Listener {
- override fun onPlaybackStateChanged(playbackState: Int) {
- super.onPlaybackStateChanged(playbackState)
- when (playbackState) {
- Player.STATE_BUFFERING -> {
-
- }
-
- Player.STATE_READY -> {
- player?.play()
- ivCoverRecommendDetail?.visibility = View.INVISIBLE
- }
-
- Player.STATE_ENDED -> {
- ivCoverRecommendDetail?.visibility = View.VISIBLE
- }
-
- Player.STATE_IDLE -> {
- }
- }
- }
-
- override fun onPlayerError(error: PlaybackException) {
- super.onPlayerError(error)
- ivCoverRecommendDetail?.visibility = View.VISIBLE
- }
-
- })
binding.layoutRecommend.ivCloseDialog.setOnClickListener {
finish()
}
-
-
showLoading()
var appendK: MutableMap = mutableMapOf()
appendK.put("decklink", 519.0f)
@@ -1364,10 +1363,6 @@ class MQVAutoWidthActivity :
while (cagetoryb >= 19.0) {
break
}
- player?.stop()
- player?.release()
- player = null
-
manifestAnyBuildGravityView()?.stop()
var circleA: Int = 8245
while (circleA >= 16) {
@@ -1376,6 +1371,10 @@ class MQVAutoWidthActivity :
manifestAnyBuildGravityView()?.release()
+
+ bannerAdapter.getCurrentPlayerView()?.stop()
+ bannerAdapter.getCurrentPlayerView()?.release()
+
}
recommendAdapter?.shortVideo = null
var mmkvi: Double = 540.0
@@ -1967,6 +1966,19 @@ class MQVAutoWidthActivity :
}
}
}
+
+ viewModel.qualityData.observe(this) {
+ it?.data?.let {
+ setQualityDialog(it)
+ } ?: run {
+ if (TranslationHelper.getTranslation() != null) {
+ toast(TranslationHelper.getTranslation()?.veloria_network.toString())
+ } else {
+ toast(getString(R.string.shapeSelected))
+ }
+ }
+ }
+
}
@@ -2073,21 +2085,27 @@ class MQVAutoWidthActivity :
return false
}
+ private lateinit var bannerAdapter: VeBannerRecommendAdapter
@SuppressLint("UnsafeOptInUsageError")
private fun setDetailsRecommendation(data: VeDetailsRecommendBean) {
if (data.list.isNotEmpty()) {
PLAYER_DETAILS_CAN_PLAY = false
binding.layoutRecommend.root.visibility = View.VISIBLE
- val bannerAdapter =
- VeBannerRecommendAdapter(data.list)
- binding.layoutRecommend.bannerRecommend.setBannerGalleryMZ(
- resources.getDimension(R.dimen.dp_20).toInt()
+ bannerAdapter =
+ VeBannerRecommendAdapter()
+ binding.layoutRecommend.bannerRecommend.setAdapter(
+ bannerAdapter
)
+ binding.layoutRecommend.bannerRecommend.apply {
+ setLifecycleRegistry(lifecycle)
+ setRevealWidth(resources.getDimension(R.dimen.dp_50).toInt())
+ setPageStyle(MULTI_PAGE_OVERLAP)
+ }.create(data.list)
- binding.layoutRecommend.bannerRecommend.addOnPageChangeListener(
+ binding.layoutRecommend.bannerRecommend.registerOnPageChangeCallback(
object :
- OnPageChangeListener {
+ ViewPager2.OnPageChangeCallback() {
override fun onPageScrolled(
position: Int,
positionOffset: Float,
@@ -2100,56 +2118,33 @@ class MQVAutoWidthActivity :
bannerPosition = position
bannerAdapter.currentPlayingPosition = position
bannerAdapter.notifyDataSetChanged()
- val data = bannerAdapter.getData(position)
- ivCoverRecommendDetail?.let { it1 ->
- Glide.with(this@MQVAutoWidthActivity)
- .load(data?.image_url)
- .into(it1)
- }
- binding.layoutRecommend.cardView.visibility = View.VISIBLE
- ivCoverRecommendDetail?.visibility = View.VISIBLE
- player?.stop()
- player?.setMediaSource(buildMediaSource(data?.video_url.toString()))
- player?.prepare()
}
override fun onPageScrollStateChanged(state: Int) {
- if (1 == state) {
- player?.pause()
- binding.layoutRecommend.cardView.visibility =
- View.INVISIBLE
- bannerAdapter.currentPlayingPosition = -1
- bannerAdapter.notifyDataSetChanged()
- } else {
- if (2 == state) {
- if (player?.isPlaying == false) {
- player?.play()
- binding.layoutRecommend.cardView.visibility =
- View.VISIBLE
- bannerAdapter.currentPlayingPosition =
- bannerPosition
- bannerAdapter.notifyDataSetChanged()
- }
- }
- }
+// if (1 == state) {
+// bannerAdapter.currentPlayingPosition = -1
+// bannerAdapter.notifyDataSetChanged()
+// } else {
+// if (2 == state) {
+// if (player?.isPlaying == false) {
+// bannerAdapter.currentPlayingPosition =
+// bannerPosition
+// bannerAdapter.notifyDataSetChanged()
+// }
+// }
+// }
}
})
- binding.layoutRecommend.bannerRecommend.setAdapter(
- bannerAdapter
- )
+
binding.layoutRecommend.tvWatchNow.setOnClickListener {
- val data = bannerAdapter.getData(bannerPosition)
+ val data = binding.layoutRecommend.bannerRecommend.getData()[bannerPosition] as VeDetailsRecommendBean.ItemDaraBean
watchNow(data, data?.short_play_id)
}
- val data = bannerAdapter.getData(0)
+ val data = data.list[0]
ivCoverRecommendDetail?.let { it1 ->
Glide.with(this@MQVAutoWidthActivity).load(data?.image_url)
.into(it1)
}
- lifecycleScope.launch {
- player?.setMediaSource(buildMediaSource(data?.video_url.toString()))
- player?.prepare()
- }
} else {
finish()
}
@@ -2174,7 +2169,8 @@ class MQVAutoWidthActivity :
) {
binding.layoutRecommend.bannerRecommend.postDelayed({
if (data?.short_play_id != null) {
- player?.stop()
+ bannerAdapter.getCurrentPlayerView()?.stop()
+ bannerAdapter.getCurrentPlayerView()?.release()
if (short_play_id != null) {
shortPlayId = short_play_id
}
@@ -2184,5 +2180,31 @@ class MQVAutoWidthActivity :
binding.layoutRecommend.root.visibility = View.INVISIBLE
}
+ private fun setQualityDialog(revolutionData: VeRevolutionsBean) {
+ val dialog = VipQualityDialog(this, revolutionData).apply {
+ setOnQualityBackOnClickListener(object :
+ VipQualityDialog.SetQualityBackOnClick {
+ override fun qualityBackOnClick(quality: Int) {
+ RYAction.getMMKV()
+ .putInt(JActivityAdapter.CONSTANTS_QUALITY, quality)
+ EventBus.getDefault().post(CONSTANTS_QUALITY_REFRESH)
+ revolution = quality.toString()
+ detailRefresh()
+ }
+
+ override fun showActivateOnClick() {
+ setVipActivateDialog()
+ }
+
+ })
+ }
+ dialog.show()
+ dialog.setQualityBackOnClick
+ }
+
+ private fun setVipActivateDialog() {
+ val dialog = VipActivateDialog(this)
+ dialog.show()
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/veloria/now/shortapp/subtractionCroll/bidirectional/PSVHomeSearchActivity.kt b/app/src/main/java/com/veloria/now/shortapp/subtractionCroll/bidirectional/PSVHomeSearchActivity.kt
index 465ff42..4f47da2 100644
--- a/app/src/main/java/com/veloria/now/shortapp/subtractionCroll/bidirectional/PSVHomeSearchActivity.kt
+++ b/app/src/main/java/com/veloria/now/shortapp/subtractionCroll/bidirectional/PSVHomeSearchActivity.kt
@@ -1,15 +1,21 @@
package com.veloria.now.shortapp.subtractionCroll.bidirectional
+import android.Manifest
import android.app.Activity
import android.content.ClipData
import android.content.ClipboardManager
import android.content.Context
import android.content.Intent
+import android.content.pm.PackageManager
+import android.os.Build
import android.os.Bundle
import android.text.TextUtils
+import android.util.Log
import android.view.KeyEvent
import android.view.View
+import androidx.activity.result.contract.ActivityResultContracts
import androidx.activity.viewModels
+import androidx.core.content.ContextCompat
import androidx.fragment.app.Fragment
import androidx.lifecycle.lifecycleScope
import com.blankj.utilcode.util.NetworkUtils
@@ -22,12 +28,17 @@ import com.facebook.FacebookException
import com.facebook.GraphRequest
import com.facebook.login.LoginManager
import com.facebook.login.LoginResult
+import com.google.android.gms.common.GoogleApiAvailability
+import com.google.android.gms.tasks.OnCompleteListener
+import com.google.firebase.messaging.FirebaseMessaging
import com.google.gson.Gson
import com.veloria.now.shortapp.R
import com.veloria.now.shortapp.civil.JActivityAdapter
import com.veloria.now.shortapp.civil.JActivityAdapter.VIDEO_SHORT_PLAY_ID
import com.veloria.now.shortapp.civil.RYAction
import com.veloria.now.shortapp.civil.TranslationHelper
+import com.veloria.now.shortapp.civil.VeNotificationHelper
+import com.veloria.now.shortapp.civil.setShowNotifications
import com.veloria.now.shortapp.civil.singleOnClick
import com.veloria.now.shortapp.civil.toast
import com.veloria.now.shortapp.databinding.JsDramaFragmentBinding
@@ -38,9 +49,11 @@ import com.veloria.now.shortapp.subtractionCroll.adminSourceid.NOEditRegisterFra
import com.veloria.now.shortapp.subtractionCroll.adminSourceid.UColorsAvatarFragment
import com.veloria.now.shortapp.subtractionCroll.adminSourceid.YYLoginHistoryFragment
import com.veloria.now.shortapp.subtractionCroll.avcintraRelock.LoginDialog
+import com.veloria.now.shortapp.subtractionCroll.avcintraRelock.NotificationsDialog
import com.veloria.now.shortapp.subtractionCroll.bidirectional.coordinate.JService
import com.veloria.now.shortapp.texturedAsink.LoginDataBean
import com.veloria.now.shortapp.texturedAsink.VeHomeWatchBean
+import com.veloria.now.shortapp.texturedAsink.VeUploadNotificationBean
import kotlinx.coroutines.launch
import org.greenrobot.eventbus.EventBus
import org.greenrobot.eventbus.Subscribe
@@ -230,16 +243,22 @@ class PSVHomeSearchActivity : AIXTextActivity(
EventBus.getDefault()
.post(JActivityAdapter.HOME_USER_REFRESH)
+ val revolution =
+ RYAction.getMMKV().getInt(JActivityAdapter.CONSTANTS_QUALITY, 540).toString()
+ if (revolution == "540") {
+ RYAction.getMMKV()
+ .putInt(JActivityAdapter.CONSTANTS_QUALITY, 720)
+ }
}
}
- viewModel.w2aSelfAttributionData.observe(this){
+ viewModel.w2aSelfAttributionData.observe(this) {
if (needSave) {
setAdjustToDetail()
}
}
- viewModel.onLineLiveData.observe(this){
+ viewModel.onLineLiveData.observe(this) {
}
@@ -376,7 +395,7 @@ class PSVHomeSearchActivity : AIXTextActivity(
if (string?.isNotEmpty() == true && NetworkUtils.isConnected()) {
val fromJson = Gson().fromJson(string, VeHomeWatchBean::class.java)
showHistoryDialog(fromJson)
- }else {
+ } else {
binding.dialogWatch.root.visibility = View.INVISIBLE
}
}, 500
@@ -454,7 +473,10 @@ class PSVHomeSearchActivity : AIXTextActivity(
var episode0: Long = 1323L
if (episode0 > 52L) {
}
-
+ path = intent?.getStringExtra("path").toString()
+ short_play_id = intent?.getStringExtra("short_play_id").toString()
+ message_id = intent?.getStringExtra("message_id").toString()
+ title = intent?.getStringExtra("title").toString()
manifestShapeSinkExclusive()
@@ -487,12 +509,12 @@ class PSVHomeSearchActivity : AIXTextActivity(
loginResult.accessToken
) { jsonObject, response ->
if (response!!.error != null) {
- if (TranslationHelper.getTranslation() != null){
+ if (TranslationHelper.getTranslation() != null) {
toast(
"Facebook ".plus(TranslationHelper.getTranslation()?.veloria_login_exception)
.plus(".${response.error?.exception.toString()}")
)
- }else {
+ } else {
toast("Facebook Error")
}
} else {
@@ -522,24 +544,34 @@ class PSVHomeSearchActivity : AIXTextActivity(
}
override fun onCancel() {
- if (TranslationHelper.getTranslation() != null){
+ if (TranslationHelper.getTranslation() != null) {
toast("Facebook ".plus(TranslationHelper.getTranslation()?.veloria_login_cancel))
- }else {
+ } else {
toast("Facebook Cancel")
}
}
override fun onError(exception: FacebookException) {
- if (TranslationHelper.getTranslation() != null){
+ if (TranslationHelper.getTranslation() != null) {
toast(
"Facebook ".plus(TranslationHelper.getTranslation()?.veloria_login_exception)
.plus("n.$exception")
)
- }else {
+ } else {
toast("Facebook Error")
}
}
})
+
+
+ GoogleApiAvailability.getInstance().makeGooglePlayServicesAvailable(this)
+ .addOnCompleteListener {
+ if (it.isSuccessful) {
+ askNotificationPermission()
+ }
+ }
+ binding.root.postDelayed({ setNotificationTo() }, 700)
+
}
private fun stayPrimaryRecommendSearchToast(
@@ -747,6 +779,9 @@ class PSVHomeSearchActivity : AIXTextActivity(
binding.bottomNavBar.updateSelection(0)
playWhatHeavyPlatformEach(0)
}
+ if (JActivityAdapter.ACCOUNT_FIREBASE_TOKEN_REFRESH == event) {
+ getFirebaseMessaging()
+ }
}
private fun restartApplication(context: Context) {
@@ -780,7 +815,20 @@ class PSVHomeSearchActivity : AIXTextActivity(
@Deprecated("Deprecated in Java")
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
- callbackManager?.onActivityResult(requestCode, resultCode, data)
+ if (requestCode == VeNotificationHelper.VE_NOTIFICATION_REQUEST_CODE) {
+ JActivityAdapter.IS_HOME_SET_NOTIFICATIONS = VeNotificationHelper.isNotification(this)
+ if (JActivityAdapter.IS_HOME_SET_NOTIFICATIONS) {
+ getFirebaseMessaging()
+ viewModel.setOpenNotify()
+ }
+ viewModel.setUploadNoticeStatus(
+ VeUploadNotificationBean(
+ if (JActivityAdapter.IS_HOME_SET_NOTIFICATIONS) "1" else "0"
+ )
+ )
+ } else {
+ callbackManager?.onActivityResult(requestCode, resultCode, data)
+ }
}
@@ -890,7 +938,7 @@ class PSVHomeSearchActivity : AIXTextActivity(
if (string?.isNotEmpty() == true && NetworkUtils.isConnected()) {
val fromJson = Gson().fromJson(string, VeHomeWatchBean::class.java)
showHistoryDialog(fromJson)
- }else {
+ } else {
binding.dialogWatch.root.visibility = View.INVISIBLE
}
}, 500
@@ -976,7 +1024,169 @@ class PSVHomeSearchActivity : AIXTextActivity(
// setDeeplinkFbApi(facebook_id)
}
}
- data?.let { viewModel.setW2aSelfAttribution(it) }
+ singleOnClick {
+ data?.let { viewModel.setW2aSelfAttribution(it) }
+ }
}
+ private fun getFirebaseMessaging() {
+ FirebaseMessaging.getInstance().token.addOnCompleteListener(OnCompleteListener { task ->
+ if (!task.isSuccessful) {
+ return@OnCompleteListener
+ }
+ // Get new FCM registration token
+ val token = task.result
+ // Log and toast
+ Log.d("LOG_TAG", token)
+ viewModel.setFirebaseToken(token)
+ })
+ }
+
+ private fun askNotificationPermission() {
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
+ if (ContextCompat.checkSelfPermission(
+ this, Manifest.permission.POST_NOTIFICATIONS
+ ) == PackageManager.PERMISSION_GRANTED
+ ) {
+ getFirebaseMessaging()
+ viewModel.setOpenNotify()
+ } else {
+ if (setShowNotifications()) {
+ setNotifications()
+ }
+ }
+ } else {
+ if (VeNotificationHelper.isNotification(this)) {
+ getFirebaseMessaging()
+ viewModel.setOpenNotify()
+ } else {
+ if (setShowNotifications()) {
+ setNotifications()
+ }
+ }
+ }
+ }
+
+ private fun setNotifications() {
+ val dialog = NotificationsDialog(this).apply {
+ setOnNotificationClickListener(object :
+ NotificationsDialog.SetNotificationOnClick {
+ override fun notificationOnClick() {
+ setNotificationOnClick()
+ }
+ })
+ }
+ dialog.show()
+ dialog.setNotificationOnClick
+ dialog.setOnDismissListener {
+ RYAction.getMMKV().putLong(
+ JActivityAdapter.ACCOUNT_DIALOG_TIME_NOTIFICATIONS,
+ System.currentTimeMillis()
+ )
+ }
+ }
+
+ fun setNotificationOnClick() {
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
+ setRequestPermission.launch(Manifest.permission.POST_NOTIFICATIONS)
+ } else {
+ VeNotificationHelper.setNotification(this)
+ }
+ }
+
+ private val setRequestPermission = registerForActivityResult(
+ ActivityResultContracts.RequestPermission(),
+ ) { isGranted: Boolean ->
+ JActivityAdapter.IS_HOME_SET_NOTIFICATIONS = isGranted
+ if (isGranted) {
+ getFirebaseMessaging()
+ viewModel.setOpenNotify()
+ } else {
+ VeNotificationHelper.setNotification(this)
+ }
+ }
+
+ private fun setNotificationTo() {
+ if (message_id.isNotBlank() && !message_id.contentEquals("null")) {
+ if ("0" != message_id) {
+ viewModel.setSendReport(message_id, title)
+ }
+ }
+ when (path) {
+ "detail" -> {
+ if (short_play_id.isNotEmpty() && "null" != short_play_id) {
+ try {
+ val toInt = short_play_id.toInt()
+ binding.root.postDelayed({
+ startActivity(Intent(
+ this, MQVAutoWidthActivity::class.java
+ ).apply {
+ putExtra(
+ VIDEO_SHORT_PLAY_ID, toInt
+ )
+ })
+ }, 700)
+ } catch (e: Exception) {
+ e.printStackTrace()
+ }
+ }
+ }
+
+ "promotion" -> {
+ binding.root.postDelayed({
+ startActivity(
+ Intent(
+ this, VeRewardsActivity::class.java
+ )
+ )
+ }, 700)
+ }
+
+ "orderDetail" -> {
+ binding.root.postDelayed({
+ startActivity(
+ Intent(
+ this, VeMyWalletActivity::class.java
+ )
+ )
+ }, 700)
+ }
+
+ "feedback" -> {
+ binding.root.postDelayed({
+ if (message_id.isNotBlank() && message_id != "null") {
+ RYAction.getMMKV()
+ .putString(JActivityAdapter.FEEDBACK_DETAIL_ID, message_id)
+ startActivity(
+ Intent(
+ this, VeFeedbackDetailActivity::class.java
+ )
+ )
+ } else {
+ startActivity(
+ Intent(
+ this, VeFeedbackListActivity::class.java
+ )
+ )
+ }
+ }, 700)
+ }
+ }
+ }
+
+ private var path = ""
+ private var short_play_id = ""
+ private var message_id = ""
+ private var title = ""
+
+ override fun onNewIntent(intent: Intent?) {
+ super.onNewIntent(intent)
+ path = intent?.getStringExtra("path").toString()
+ short_play_id = intent?.getStringExtra("short_play_id").toString()
+ message_id = intent?.getStringExtra("message_id").toString()
+ title = intent?.getStringExtra("title").toString()
+ setNotificationTo()
+ }
+
+
}
\ No newline at end of file
diff --git a/app/src/main/java/com/veloria/now/shortapp/subtractionCroll/bidirectional/VeRewardsActivity.kt b/app/src/main/java/com/veloria/now/shortapp/subtractionCroll/bidirectional/VeRewardsActivity.kt
index f540ecf..aa789e6 100644
--- a/app/src/main/java/com/veloria/now/shortapp/subtractionCroll/bidirectional/VeRewardsActivity.kt
+++ b/app/src/main/java/com/veloria/now/shortapp/subtractionCroll/bidirectional/VeRewardsActivity.kt
@@ -25,6 +25,7 @@ import com.veloria.now.shortapp.databinding.ActivityVeRewardsBinding
import com.veloria.now.shortapp.newsletter.AIXTextActivity
import com.veloria.now.shortapp.newsletter.XNBackground
import com.veloria.now.shortapp.other.FeedbackJsBridge
+import com.veloria.now.shortapp.other.VeRewardJsBridge
import com.veloria.now.shortapp.rewards.VSNotificationsDefault
import com.veloria.now.shortapp.subtractionCroll.bidirectional.coordinate.VeFeedbackViewModel
import org.greenrobot.eventbus.EventBus
@@ -41,18 +42,15 @@ class VeRewardsActivity : AIXTextActivity() {
@@ -44,7 +44,7 @@ class VeStoreActivity : AIXTextActivity
- if (typeOnClick == 0) {
- coinAdapter?.currentPosition = -1
- coinAdapter?.notifyDataSetChanged()
- }
- typeOnClick = 1
- vipAdapter?.currentPosition = position
- vipAdapter?.notifyDataSetChanged()
-
- setOnPayNowClick()
- }
coinAdapter?.setOnItemClickListener { adapter, view, position ->
if (typeOnClick == 1) {
- vipAdapter?.currentPosition = -1
- vipAdapter?.notifyDataSetChanged()
+ if (bannerAdapter?.currentPosition!! >= 0) {
+ bannerAdapter?.notifyItemChanged(bannerAdapter?.currentPosition!!)
+ }
+ bannerAdapter?.oldPosition = -1
+ bannerAdapter?.currentPosition = -1
}
typeOnClick = 0
coinAdapter?.currentPosition = position
@@ -156,10 +143,53 @@ class VeStoreActivity : AIXTextActivity
+ 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) }
+
+ }
+
fun setOnPayNowClick() {
singleOnClick {
if (!isConnect) {
if (TranslationHelper.getTranslation() != null) {
+ toast(TranslationHelper.getTranslation()?.veloria_google_pay_error.toString())
} else {
toast(getString(R.string.ve_google_pay_error))
}
@@ -170,7 +200,7 @@ class VeStoreActivity : AIXTextActivity querySubVipProductDetails(it1) }
it.data.list_coins.let { it1 -> queryInAppCoinsProductDetails(it1) }
@@ -206,6 +245,7 @@ class VeStoreActivity : AIXTextActivity RYAction.saveOrder(it1) }
if (TranslationHelper.getTranslation() != null) {
+ toast(TranslationHelper.getTranslation()?.veloria_network.toString())
} else {
toast(getString(R.string.shapeSelected))
}
@@ -240,6 +282,56 @@ class VeStoreActivity : AIXTextActivity {
+ oneDate = TranslationHelper.getTranslation()?.veloria_week.toString()
+ }
+
+ "month" -> {
+ oneDate = TranslationHelper.getTranslation()?.veloria_month.toString()
+ }
+
+ "quarter" -> {
+ oneDate = TranslationHelper.getTranslation()?.veloria_quarter.toString()
+ }
+
+ "year" -> {
+ oneDate = TranslationHelper.getTranslation()?.veloria_year.toString()
+ }
+ }
+
+ val vipContent1 = TranslationHelper.replace(
+ TranslationHelper.getTranslation()?.veloria_store_no_ads.toString(),
+ "".plus(oneDate).plus("")
+ )
+ binding.tvVipContent1.text =
+ Html.fromHtml(vipContent1, Html.FROM_HTML_MODE_LEGACY)
+ val vipContent2 = TranslationHelper.replace(
+ TranslationHelper.getTranslation()?.veloria_store_donate_coins.toString(),
+ data.send_coin_ttl.toString()
+ )
+ binding.tvVipContent2.text =
+ Html.fromHtml(vipContent2, Html.FROM_HTML_MODE_LEGACY)
+
+ } else {
+ 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)
+ }
+
+ }
+
private fun initPayData() {
val purchasesUpdatedListener =
PurchasesUpdatedListener { billingResult, purchases ->
@@ -258,6 +350,7 @@ class VeStoreActivity : AIXTextActivity {
if (TranslationHelper.getTranslation() != null) {
+ toast(TranslationHelper.getTranslation()?.veloria_google_pay_canceled.toString())
} else {
toast(getString(R.string.ve_google_pay_canceled))
}
@@ -266,6 +359,7 @@ class VeStoreActivity : AIXTextActivity {
if (TranslationHelper.getTranslation() != null) {
+ toast(TranslationHelper.getTranslation()?.veloria_google_pay_error.toString())
} else {
toast(getString(R.string.ve_google_pay_error))
}
@@ -356,8 +450,8 @@ class VeStoreActivity : AIXTextActivity?>()
val onLineLiveData: MutableLiveData?> get() = _onLineLiveData
fun setOnLine() {
- repository.setOnLine().observeForever {result ->
+ repository.setOnLine().observeForever { result ->
_onLineLiveData.value = result.getOrNull()
}
}
@@ -105,4 +107,34 @@ class JService : SStringsHelp() {
}
}
+ private val _notificationLiveData = MutableLiveData?>()
+ val notificationLiveData: MutableLiveData?> get() = _notificationLiveData
+ fun setUploadNoticeStatus(veUploadNotificationBean: VeUploadNotificationBean) {
+ repository.setUploadNoticeStatus(veUploadNotificationBean)
+ .observeForever { result ->
+ _notificationLiveData.value = result.getOrNull()
+ }
+ }
+
+ private val firebaseTokenLiveData = MutableLiveData?>()
+ fun setFirebaseToken(
+ fcm_token: String
+ ) {
+ repository.setFirebaseToken(fcm_token).observeForever { result ->
+ firebaseTokenLiveData.value = result.getOrNull()
+ }
+ }
+
+ private val _openNotifyLiveData = MutableLiveData?>()
+ val openNotifyLiveData: MutableLiveData?> get() = _openNotifyLiveData
+ fun setOpenNotify() {
+ repository.setOpenNotify().observeForever { result ->
+ _openNotifyLiveData.value = result.getOrNull()
+ }
+ }
+
+ fun setSendReport(message_id: String, title: String) {
+ repository.setSendReport(message_id, title).observeForever {}
+ }
+
}
\ No newline at end of file
diff --git a/app/src/main/java/com/veloria/now/shortapp/subtractionCroll/bidirectional/coordinate/UKBottomCollection.kt b/app/src/main/java/com/veloria/now/shortapp/subtractionCroll/bidirectional/coordinate/UKBottomCollection.kt
index 1277430..18f0de2 100644
--- a/app/src/main/java/com/veloria/now/shortapp/subtractionCroll/bidirectional/coordinate/UKBottomCollection.kt
+++ b/app/src/main/java/com/veloria/now/shortapp/subtractionCroll/bidirectional/coordinate/UKBottomCollection.kt
@@ -9,6 +9,7 @@ import com.veloria.now.shortapp.highbits.qscaleqlog.PDeteleResource
import com.veloria.now.shortapp.texturedAsink.KFAFavoritesInterceptorBean
import com.veloria.now.shortapp.texturedAsink.VeBuyVideoBean
import com.veloria.now.shortapp.texturedAsink.VeDetailsRecommendBean
+import com.veloria.now.shortapp.texturedAsink.VeRevolutionsBean
import kotlin.math.min
import kotlin.math.max
@@ -99,4 +100,13 @@ private var moreSecond_sum: Int = 6970
_userInfo.value = result.getOrNull()
}
+ private val qualityLiveData = MutableLiveData?>()
+ val qualityData: MutableLiveData?> get() = qualityLiveData
+ fun getQualityData() {
+ repository.getQualityData()
+ .observeForever { result ->
+ qualityLiveData.value = result.getOrNull()
+ }
+ }
+
}
diff --git a/app/src/main/java/com/veloria/now/shortapp/subtractionCroll/modificationsPretch/VeBannerRecommendAdapter.kt b/app/src/main/java/com/veloria/now/shortapp/subtractionCroll/modificationsPretch/VeBannerRecommendAdapter.kt
index b541aa1..0fbcd46 100644
--- a/app/src/main/java/com/veloria/now/shortapp/subtractionCroll/modificationsPretch/VeBannerRecommendAdapter.kt
+++ b/app/src/main/java/com/veloria/now/shortapp/subtractionCroll/modificationsPretch/VeBannerRecommendAdapter.kt
@@ -1,77 +1,77 @@
package com.veloria.now.shortapp.subtractionCroll.modificationsPretch
-import android.view.LayoutInflater
import android.view.View
-import android.view.ViewGroup
import androidx.appcompat.widget.AppCompatImageView
import androidx.appcompat.widget.AppCompatTextView
-import androidx.cardview.widget.CardView
-import androidx.recyclerview.widget.RecyclerView
import com.bumptech.glide.Glide
import com.veloria.now.shortapp.R
+import com.veloria.now.shortapp.newsletter.XNBackground
+import com.veloria.now.shortapp.rewards.BannerPlayerView
import com.veloria.now.shortapp.texturedAsink.VeDetailsRecommendBean
-import com.youth.banner.adapter.BannerAdapter
+import com.zhpan.bannerview.BaseBannerAdapter
+import com.zhpan.bannerview.BaseViewHolder
-class VeBannerRecommendAdapter(items: List?) :
- BannerAdapter(
- items
- ) {
+class VeBannerRecommendAdapter :
+ BaseBannerAdapter() {
var currentPlayingPosition = 0
- override fun onCreateHolder(parent: ViewGroup, viewType: Int): BannerViewHolder {
- val view: View = LayoutInflater.from(parent.context)
- .inflate(R.layout.item_ve_banner_recommend, parent, false)
- view.layoutParams = ViewGroup.LayoutParams(
- ViewGroup.LayoutParams.MATCH_PARENT,
- ViewGroup.LayoutParams.MATCH_PARENT
- )
- return BannerViewHolder(view)
+ private var currentBannerPlayerView: BannerPlayerView? = null
+
+ fun getCurrentPlayerView(): BannerPlayerView? {
+ return currentBannerPlayerView
}
- override fun onBindView(
- holder: BannerViewHolder?,
+ override fun bindData(
+ holder: BaseViewHolder?,
data: VeDetailsRecommendBean.ItemDaraBean?,
position: Int,
- size: Int
+ pageSize: Int
) {
val imageView =
- holder?.view?.findViewById(R.id.ic_icon_banner)
+ holder?.findViewById(R.id.ic_icon_banner)
if (imageView != null) {
- Glide.with(holder.view.context!!)
+ Glide.with(XNBackground.instance)
.load(data?.image_url)
.placeholder(R.mipmap.collection_trending_recommend)
.into(imageView)
}
val tvName =
- holder?.view?.findViewById(R.id.tv_name)
- tvName?.text = data?.name
- val cardView =
- holder?.view?.findViewById(R.id.cardView)
- if (position == currentPlayingPosition) {
- cardView?.visibility = View.INVISIBLE
- } else {
- cardView?.visibility = View.VISIBLE
- }
-
+ holder?.findViewById(R.id.tv_name)
val tvRevenge =
- holder?.view?.findViewById(R.id.tv_revenge)
+ holder?.findViewById(R.id.tv_revenge)
val tvRevenge1 =
- holder?.view?.findViewById(R.id.tv_revenge_1)
+ holder?.findViewById(R.id.tv_revenge_1)
+ tvName?.text = data?.name
+ val bannerPlayerView = holder?.findViewById(R.id.banner_player)
+ if (position == currentPlayingPosition) {
+ imageView?.visibility = View.INVISIBLE
+ bannerPlayerView?.setPlayInfo(data)
+ currentBannerPlayerView = bannerPlayerView
+ tvName?.visibility = View.VISIBLE
- tvRevenge?.visibility = View.GONE
- tvRevenge1?.visibility = View.GONE
- if (null != data?.category && data.category.isNotEmpty()) {
- tvRevenge?.text = data.category[0]
- tvRevenge?.visibility = View.VISIBLE
- if (data.category.size > 1) {
- tvRevenge1?.text = data.category[1]
- tvRevenge1?.visibility = View.VISIBLE
+ tvRevenge?.visibility = View.GONE
+ tvRevenge1?.visibility = View.GONE
+ if (null != data?.category && data.category.isNotEmpty()) {
+ tvRevenge?.text = data.category[0]
+ tvRevenge?.visibility = View.VISIBLE
+ if (data.category.size > 1) {
+ tvRevenge1?.text = data.category[1]
+ tvRevenge1?.visibility = View.VISIBLE
+ }
}
+
+ } else {
+ imageView?.visibility = View.VISIBLE
+ bannerPlayerView?.stop()
+ tvName?.visibility = View.GONE
+ tvRevenge?.visibility = View.GONE
+ tvRevenge1?.visibility = View.GONE
}
+
+
}
- inner class BannerViewHolder(var view: View) : RecyclerView.ViewHolder(
- view
- )
-
+ override fun getLayoutId(viewType: Int): Int {
+ return R.layout.item_ve_banner_recommend;
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/veloria/now/shortapp/subtractionCroll/modificationsPretch/VeBannerVipPayAdapter.kt b/app/src/main/java/com/veloria/now/shortapp/subtractionCroll/modificationsPretch/VeBannerVipPayAdapter.kt
new file mode 100644
index 0000000..6216527
--- /dev/null
+++ b/app/src/main/java/com/veloria/now/shortapp/subtractionCroll/modificationsPretch/VeBannerVipPayAdapter.kt
@@ -0,0 +1,119 @@
+package com.veloria.now.shortapp.subtractionCroll.modificationsPretch
+
+import android.graphics.Color
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.widget.RelativeLayout
+import androidx.appcompat.widget.AppCompatImageView
+import androidx.appcompat.widget.AppCompatTextView
+import androidx.recyclerview.widget.RecyclerView
+import com.veloria.now.shortapp.R
+import com.veloria.now.shortapp.civil.TranslationHelper
+import com.veloria.now.shortapp.texturedAsink.VePaySettingsBean
+import com.youth.banner.adapter.BannerAdapter
+
+class VeBannerVipPayAdapter(items: List?) :
+ BannerAdapter(
+ items
+ ) {
+
+ var oldPosition = -1
+ var currentPosition = -1
+
+ override fun onCreateHolder(parent: ViewGroup, viewType: Int): BannerViewHolder {
+ val view: View = LayoutInflater.from(parent.context)
+ .inflate(R.layout.item_ve_store_vip, parent, false)
+ view.layoutParams = ViewGroup.LayoutParams(
+ ViewGroup.LayoutParams.MATCH_PARENT,
+ ViewGroup.LayoutParams.MATCH_PARENT
+ )
+ return BannerViewHolder(view)
+ }
+
+ override fun onBindView(
+ holder: BannerViewHolder?,
+ item: VePaySettingsBean.VipBean?,
+ position: Int,
+ size: Int
+ ) {
+ if (null != item) {
+ val tvDay =
+ holder?.view?.findViewById(R.id.tv_day)
+ val tvMoney =
+ holder?.view?.findViewById(R.id.tv_money)
+ val tvMoneyDay =
+ holder?.view?.findViewById(R.id.tv_money_day)
+ val tvExtra =
+ holder?.view?.findViewById(R.id.tv_extra)
+ val tvSelect =
+ holder?.view?.findViewById(R.id.tv_select)
+ val rlLayout =
+ holder?.view?.findViewById(R.id.rl_layout)
+
+ tvDay?.text = item.brief
+ tvMoney?.text = item.price_google
+ tvMoneyDay?.text = "/".plus(item.vip_type_key)
+ if ((item.send_coins ?: 0) > 0) {
+ tvExtra?.text =
+ "+".plus(
+ TranslationHelper.getTranslation()
+ ?.let { TranslationHelper.getTranslation()?.veloria_extra } ?: "Extra")
+ .plus(" ").plus(item.send_coins)
+ tvExtra?.visibility = View.VISIBLE
+ } else {
+ tvExtra?.visibility = View.GONE
+ }
+
+ if (currentPosition == position) {
+ tvSelect?.visibility = View.VISIBLE
+ } else {
+ tvSelect?.visibility = View.GONE
+ }
+
+
+ when (item.vip_type_key) {
+ "week" -> {
+ rlLayout?.setBackgroundResource(R.mipmap.iv_store_vip_bg_1)
+ tvDay?.setTextColor(Color.parseColor("#64A3A7"))
+ tvMoney?.setTextColor(Color.parseColor("#64A3A7"))
+ tvMoneyDay?.setTextColor(Color.parseColor("#64A3A7"))
+ tvExtra?.setTextColor(Color.parseColor("#416767"))
+ tvExtra?.setBackgroundResource(R.drawable.bg_store_vip_1)
+ }
+
+ "month" -> {
+ rlLayout?.setBackgroundResource(R.mipmap.iv_store_vip_bg_2)
+ tvDay?.setTextColor(Color.parseColor("#9C7565"))
+ tvMoney?.setTextColor(Color.parseColor("#9C7565"))
+ tvMoneyDay?.setTextColor(Color.parseColor("#9C7565"))
+ tvExtra?.setTextColor(Color.parseColor("#573D31"))
+ tvExtra?.setBackgroundResource(R.drawable.bg_store_vip_2)
+ }
+
+ "quarter" -> {
+ rlLayout?.setBackgroundResource(R.mipmap.iv_store_vip_bg_3)
+ tvDay?.setTextColor(Color.parseColor("#647DA7"))
+ tvMoney?.setTextColor(Color.parseColor("#647DA7"))
+ tvMoneyDay?.setTextColor(Color.parseColor("#647DA7"))
+ tvExtra?.setTextColor(Color.parseColor("#303962"))
+ tvExtra?.setBackgroundResource(R.drawable.bg_store_vip_3)
+ }
+
+ "year" -> {
+ rlLayout?.setBackgroundResource(R.mipmap.iv_store_vip_bg_4)
+ tvDay?.setTextColor(Color.parseColor("#9C6586"))
+ tvMoney?.setTextColor(Color.parseColor("#9C6586"))
+ tvMoneyDay?.setTextColor(Color.parseColor("#9C6586"))
+ tvExtra?.setTextColor(Color.parseColor("#674162"))
+ tvExtra?.setBackgroundResource(R.drawable.bg_store_vip_4)
+ }
+ }
+ }
+ }
+
+ inner class BannerViewHolder(var view: View) : RecyclerView.ViewHolder(
+ view
+ )
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/veloria/now/shortapp/texturedAsink/VeRevolutionsBean.kt b/app/src/main/java/com/veloria/now/shortapp/texturedAsink/VeRevolutionsBean.kt
new file mode 100644
index 0000000..fdff7cf
--- /dev/null
+++ b/app/src/main/java/com/veloria/now/shortapp/texturedAsink/VeRevolutionsBean.kt
@@ -0,0 +1,11 @@
+package com.veloria.now.shortapp.texturedAsink
+
+class VeRevolutionsBean(
+ val list: List
+) {
+ data class RevolutionItemBean(
+ val can_check: Boolean,
+ val condition: Int,
+ val value: Int
+ )
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/veloria/now/shortapp/texturedAsink/VeRewardJsBean.kt b/app/src/main/java/com/veloria/now/shortapp/texturedAsink/VeRewardJsBean.kt
new file mode 100644
index 0000000..9d89d4a
--- /dev/null
+++ b/app/src/main/java/com/veloria/now/shortapp/texturedAsink/VeRewardJsBean.kt
@@ -0,0 +1,8 @@
+package com.veloria.now.shortapp.texturedAsink
+
+class VeRewardJsBean (
+ val token: String,
+ val time_zone: String,
+ val lang: String,
+ val type: String
+)
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..5d92cc7 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,25 @@ class VeTranslationBean(
)
data class Translation(
+ val veloria_open_notice_at_watch_video : String,
+ val veloria_allow : String,
+ val veloria_open_notice_alert_text : String,
+ val veloria_favorites : String,
+ val veloria_more : String,
+ val veloria_week : String,
+ val veloria_month : String,
+ val veloria_quarter : String,
+ val veloria_year : String,
+ val veloria_go : String,
+ val veloria_later : String,
+ val veloria_vip_activate_content : String,
+ val veloria_vip_activate_title : String,
+ val veloria_vip_splash_onclick : String,
+ val veloria_vip_splash_content : String,
+ val veloria_vip_splash_title : String,
+ val veloria_google_pay_success : String,
+ val veloria_google_pay_canceled : String,
+ val veloria_google_pay_error : String,
val veloria_not_found_string : String,
val veloria_not_found : String,
val veloria_episode : String,
diff --git a/app/src/main/java/com/veloria/now/shortapp/texturedAsink/VeUploadNotificationBean.kt b/app/src/main/java/com/veloria/now/shortapp/texturedAsink/VeUploadNotificationBean.kt
new file mode 100644
index 0000000..9366b8a
--- /dev/null
+++ b/app/src/main/java/com/veloria/now/shortapp/texturedAsink/VeUploadNotificationBean.kt
@@ -0,0 +1,3 @@
+package com.veloria.now.shortapp.texturedAsink
+
+class VeUploadNotificationBean (val is_open_notice: String)
\ No newline at end of file
diff --git a/app/src/main/java/com/veloria/now/shortapp/texturedAsink/VeUploadNotificationDataBean.kt b/app/src/main/java/com/veloria/now/shortapp/texturedAsink/VeUploadNotificationDataBean.kt
new file mode 100644
index 0000000..f53b85c
--- /dev/null
+++ b/app/src/main/java/com/veloria/now/shortapp/texturedAsink/VeUploadNotificationDataBean.kt
@@ -0,0 +1,3 @@
+package com.veloria.now.shortapp.texturedAsink
+
+class VeUploadNotificationDataBean (val coins: String)
\ No newline at end of file
diff --git a/app/src/main/java/com/veloria/now/shortapp/texturedAsink/WatchVideoJsonBean.kt b/app/src/main/java/com/veloria/now/shortapp/texturedAsink/WatchVideoJsonBean.kt
new file mode 100644
index 0000000..0fb659b
--- /dev/null
+++ b/app/src/main/java/com/veloria/now/shortapp/texturedAsink/WatchVideoJsonBean.kt
@@ -0,0 +1,14 @@
+package com.veloria.now.shortapp.texturedAsink
+
+class WatchVideoJsonBean(
+ val data: Data?,
+ val is_complete: Boolean,
+ val is_show: Int,
+ val type: String
+) {
+
+ data class Data(
+ val activity_id: Int,
+ val short_play_id: Int?
+ )
+}
\ No newline at end of file
diff --git a/app/src/main/res/drawable/bg_quality_login.xml b/app/src/main/res/drawable/bg_quality_login.xml
new file mode 100644
index 0000000..3d493fb
--- /dev/null
+++ b/app/src/main/res/drawable/bg_quality_login.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/bg_quality_vip.xml b/app/src/main/res/drawable/bg_quality_vip.xml
new file mode 100644
index 0000000..a705a92
--- /dev/null
+++ b/app/src/main/res/drawable/bg_quality_vip.xml
@@ -0,0 +1,11 @@
+
+
+ -
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_ve_rewards.xml b/app/src/main/res/layout/activity_ve_rewards.xml
index 37854b5..d38064e 100644
--- a/app/src/main/res/layout/activity_ve_rewards.xml
+++ b/app/src/main/res/layout/activity_ve_rewards.xml
@@ -1,7 +1,6 @@
@@ -31,32 +30,6 @@
app:layout_constraintTop_toTopOf="@+id/iv_back" />
-
-
-
-
-
@@ -164,6 +163,7 @@
android:layout_marginStart="@dimen/dp_5"
android:drawableStart="@mipmap/iv_store_vip"
android:drawablePadding="@dimen/dp_5"
+ android:paddingHorizontal="@dimen/dp_10"
android:text="Membership Benefits"
android:textColor="@color/white"
android:textSize="@dimen/sp_15"
@@ -175,7 +175,8 @@
android:id="@+id/tv_vip_content1"
android:layout_width="0dp"
android:layout_height="wrap_content"
- android:layout_marginHorizontal="@dimen/dp_5"
+ android:layout_marginStart="@dimen/dp_15"
+ android:layout_marginEnd="@dimen/dp_5"
android:layout_marginTop="@dimen/dp_10"
android:layout_marginBottom="@dimen/dp_12"
android:background="@mipmap/iv_store_benefits_bg"
@@ -221,7 +222,8 @@
android:id="@+id/tv_vip_content3"
android:layout_width="0dp"
android:layout_height="wrap_content"
- android:layout_marginHorizontal="@dimen/dp_5"
+ android:layout_marginEnd="@dimen/dp_15"
+ android:layout_marginStart="@dimen/dp_5"
android:layout_marginTop="@dimen/dp_10"
android:layout_marginBottom="@dimen/dp_12"
android:background="@mipmap/iv_store_benefits_bg"
@@ -240,15 +242,16 @@
app:layout_constraintStart_toEndOf="@+id/tv_vip_content2"
app:layout_constraintTop_toBottomOf="@+id/tv_vip_text" />
-
-
-
+ app:layout_constraintTop_toBottomOf="@+id/tv_vip_content1"
+ />
@@ -260,6 +263,7 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginHorizontal="@dimen/dp_15"
+ android:paddingBottom="@dimen/dp_15"
android:lineSpacingExtra="@dimen/dp_2"
android:text="@string/ve_store_tips"
android:textColor="@color/white50"
diff --git a/app/src/main/res/layout/dialog_logout.xml b/app/src/main/res/layout/dialog_logout.xml
index aa04723..d10d75e 100644
--- a/app/src/main/res/layout/dialog_logout.xml
+++ b/app/src/main/res/layout/dialog_logout.xml
@@ -33,15 +33,15 @@
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
android:layout_marginStart="@dimen/dp_10"
- android:layout_marginTop="@dimen/dp_25"
+ android:layout_marginTop="@dimen/dp_30"
/>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/dialog_ve_quality.xml b/app/src/main/res/layout/dialog_ve_quality.xml
new file mode 100644
index 0000000..b61f1d8
--- /dev/null
+++ b/app/src/main/res/layout/dialog_ve_quality.xml
@@ -0,0 +1,110 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/dialog_vip_activate.xml b/app/src/main/res/layout/dialog_vip_activate.xml
new file mode 100644
index 0000000..e844847
--- /dev/null
+++ b/app/src/main/res/layout/dialog_vip_activate.xml
@@ -0,0 +1,129 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/dialog_vip_splash.xml b/app/src/main/res/layout/dialog_vip_splash.xml
new file mode 100644
index 0000000..9b5661f
--- /dev/null
+++ b/app/src/main/res/layout/dialog_vip_splash.xml
@@ -0,0 +1,92 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/ev_bodyload_home.xml b/app/src/main/res/layout/ev_bodyload_home.xml
index 5fb9e50..86984fe 100644
--- a/app/src/main/res/layout/ev_bodyload_home.xml
+++ b/app/src/main/res/layout/ev_bodyload_home.xml
@@ -318,7 +318,7 @@
android:id="@+id/tv_store"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:layout_marginHorizontal="@dimen/dp_30"
+ android:layout_marginHorizontal="@dimen/dp_20"
android:drawableTop="@mipmap/empty_image"
android:gravity="center"
android:text="Store"
@@ -335,9 +335,9 @@
android:drawableTop="@mipmap/bold_wight_fddebcdbeeffcebdf"
android:gravity="center"
android:text="Rewards"
+ android:layout_marginEnd="@dimen/dp_20"
android:textColor="@color/white"
android:textSize="@dimen/sp_12"
- android:visibility="gone"
app:layout_constraintEnd_toStartOf="@+id/tv_favorites"
app:layout_constraintStart_toEndOf="@+id/tv_store"
app:layout_constraintTop_toTopOf="parent" />
@@ -392,7 +392,7 @@
android:drawablePadding="@dimen/dp_8"
android:gravity="center_vertical"
android:paddingHorizontal="@dimen/dp_10"
- android:visibility="gone"
+ android:visibility="visible"
android:text="@string/dimensImage"
android:textColor="@color/white"
android:textSize="@dimen/sp_14" />
diff --git a/app/src/main/res/layout/item_ve_banner_recommend.xml b/app/src/main/res/layout/item_ve_banner_recommend.xml
index acd4c7b..b449c5f 100644
--- a/app/src/main/res/layout/item_ve_banner_recommend.xml
+++ b/app/src/main/res/layout/item_ve_banner_recommend.xml
@@ -14,14 +14,23 @@
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
-
+ android:layout_height="match_parent">
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/layout_player_recommend.xml b/app/src/main/res/layout/layout_player_recommend.xml
index d256279..b314cf5 100644
--- a/app/src/main/res/layout/layout_player_recommend.xml
+++ b/app/src/main/res/layout/layout_player_recommend.xml
@@ -38,39 +38,16 @@
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
-
-
-
-
-
-
-
-
-
-
diff --git a/app/src/main/res/layout/layout_ve_player_buy_dialog.xml b/app/src/main/res/layout/layout_ve_player_buy_dialog.xml
index a5ce44f..5921bf4 100644
--- a/app/src/main/res/layout/layout_ve_player_buy_dialog.xml
+++ b/app/src/main/res/layout/layout_ve_player_buy_dialog.xml
@@ -46,16 +46,16 @@
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />
-
-
-
+ app:layout_constraintTop_toBottomOf="@+id/tv_coins_text"
+ />
+ app:layout_constraintTop_toBottomOf="@+id/banner_vip" />
-
-
+
+
android:layout_marginTop="@dimen/dp_40"
android:padding="@dimen/dp_10"
android:src="@mipmap/right_dimens" />
-
-
-
-
+
+
+
+
+
android:singleLine="true"
android:textColor="@color/white"
android:textSize="@dimen/sp_16" />
-
+
+
android:paddingVertical="@dimen/dp_5"
android:textColor="@color/white"
android:textSize="@dimen/sp_13" />
-
-
+
+
android:text="All 58 Episodes"
android:textColor="@color/utilsUtils"
android:textSize="@dimen/sp_13" />
-
+
+
+
+
android:textSize="@dimen/sp_12"
android:visibility="invisible"
tools:text="00:00/02:24" />
-
-
-
-
+
+
+
+
+
Feedback History
Feedback Detail
· Unlimited access to all series for 1 week (No Ads).\n· The donate coins will expire in 8 days.\n· Auto renew, cancel anytime.
- · The donate coins will expire in 8 days.
· Auto renew, cancel anytime.]]>
+
+ 1 ## (No Ads).
+ · The donate coins will expire in #1# days.
+ · Auto renew, cancel anytime.
+ ]]>
+
Your Coins:
Language
Welcome to Veloria
@@ -60,4 +66,6 @@
Google Pay Error
Google Pay Canceled
+ veloriaapp
+
\ No newline at end of file
diff --git a/build.gradle.kts b/build.gradle.kts
index 922f551..64d4990 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -2,4 +2,7 @@
plugins {
alias(libs.plugins.android.application) apply false
alias(libs.plugins.kotlin.android) apply false
+ id("com.google.gms.google-services") version "4.4.2" apply false
+ id("com.google.firebase.crashlytics") version "3.0.2" apply false
+ id("com.google.firebase.firebase-perf") version "1.4.2" apply false
}
\ No newline at end of file
diff --git a/gradle.properties b/gradle.properties
index 2f6baf7..f80c45a 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -21,4 +21,9 @@ kotlin.code.style=official
# resources declared in the library itself and none from the library's dependencies,
# thereby reducing the size of the R class for that library
android.nonTransitiveRClass=true
-android.enableJetifier=true
\ No newline at end of file
+android.enableJetifier=true
+
+systemProp.http.proxyHost=127.0.0.1
+systemProp.http.proxyPort=8800
+systemProp.https.proxyHost=127.0.0.1
+systemProp.https.proxyPort=8800
\ No newline at end of file
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
index 9a57a45..e508075 100644
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -7,6 +7,8 @@ baserecyclerviewadapterhelper4 = "4.1.4"
billing = "7.0.0"
eventbusVersion = "3.3.1"
facebookFacebookAndroidSdkVersion = "17.0.2"
+firebaseBom = "32.3.1"
+firebaseMessagingKtx = "24.0.0"
flexbox = "3.0.0"
githubRefreshFooterBall = "3.0.0-alpha"
glide = "4.12.0"
@@ -37,6 +39,7 @@ retrofit = "2.9.0"
shapeblurview = "1.0.5"
shapeviewVersion = "9.6"
utilcodex = "1.31.1"
+workRuntimeKtx = "2.9.1"
[libraries]
adjust-android-webbridge = { module = "com.adjust.sdk:adjust-android-webbridge", version.ref = "adjustAndroidWebbridge" }
@@ -46,12 +49,18 @@ androidx-media3-exoplayer-hls = { module = "androidx.media3:media3-exoplayer-hls
androidx-media3-exoplayer-dash = { module = "androidx.media3:media3-exoplayer-dash", version.ref = "media3ExoplayerDash" }
androidx-media3-exoplayer = { module = "androidx.media3:media3-exoplayer", version.ref = "media3Exoplayer" }
androidx-media3-ui = { module = "androidx.media3:media3-ui", version.ref = "media3Ui" }
+androidx-work-runtime-ktx = { module = "androidx.work:work-runtime-ktx", version.ref = "workRuntimeKtx" }
banner = { module = "io.github.youth5201314:banner", version.ref = "banner" }
baserecyclerviewadapterhelper4 = { module = "io.github.cymchad:BaseRecyclerViewAdapterHelper4", version.ref = "baserecyclerviewadapterhelper4" }
billing = { module = "com.android.billingclient:billing", version.ref = "billing" }
com-android-installreferrer-installreferrer2 = { module = "com.android.installreferrer:installreferrer", version.ref = "androidInstallreferrerVersion" }
com-facebook-android-facebook-android-sdk = { module = "com.facebook.android:facebook-android-sdk", version.ref = "facebookFacebookAndroidSdkVersion" }
converter-gson = { module = "com.squareup.retrofit2:converter-gson", version.ref = "retrofit" }
+firebase-perf = { module = "com.google.firebase:firebase-perf" }
+firebase-crashlytics = { module = "com.google.firebase:firebase-crashlytics" }
+firebase-analytics-ktx = { module = "com.google.firebase:firebase-analytics-ktx" }
+firebase-messaging-ktx = { module = "com.google.firebase:firebase-messaging-ktx", version.ref = "firebaseMessagingKtx" }
+firebase-bom = { module = "com.google.firebase:firebase-bom", version.ref = "firebaseBom" }
flexbox = { module = "com.google.android.flexbox:flexbox", version.ref = "flexbox" }
getactivity-shapeview = { module = "com.github.getActivity:ShapeView", version.ref = "shapeviewVersion" }
github-refresh-footer-ball = { module = "io.github.scwang90:refresh-footer-ball", version.ref = "githubRefreshFooterBall" }
diff --git a/settings.gradle.kts b/settings.gradle.kts
index bc9b7f4..460a008 100644
--- a/settings.gradle.kts
+++ b/settings.gradle.kts
@@ -22,6 +22,9 @@ dependencyResolutionManagement {
maven { url = uri("https://jitpack.io") }
maven { url = uri("https://dl-maven-android.mintegral.com/repository/mbridge_android_sdk_oversea") }
maven { url = uri("https://android-sdk.is.com") }
+ maven { url = uri("https://maven.aliyun.com/repository/google") }
+ maven { url = uri("https://maven.aliyun.com/repository/public") }
+ maven { url = uri("https://maven.aliyun.com/repository/gradle-plugin") }
}
}