veloria three 6.16 commit

This commit is contained in:
yuyl 2025-06-16 17:33:44 +08:00
parent 85994237a8
commit a004e34e05
70 changed files with 3154 additions and 896 deletions

View File

@ -4,6 +4,9 @@ import java.util.Date
plugins {
alias(libs.plugins.android.application)
alias(libs.plugins.kotlin.android)
id("com.google.gms.google-services")
id("com.google.firebase.crashlytics")
id("com.google.firebase.firebase-perf")
}
android {
@ -98,9 +101,11 @@ dependencies {
implementation(libs.kotlinx.coroutines.android)
implementation(libs.baserecyclerviewadapterhelper4)
// banner
implementation(libs.banner)
implementation(libs.glide)
implementation("com.github.zhpanvip:bannerviewpager:3.5.12")
//utils
implementation(libs.greenrobot.eventbus)
@ -134,4 +139,13 @@ dependencies {
//billing
implementation(libs.billing)
//google
implementation(platform("com.google.firebase:firebase-bom:32.3.1"))
implementation(libs.firebase.messaging.ktx)
implementation(libs.androidx.work.runtime.ktx)
implementation(libs.firebase.analytics.ktx)
implementation(libs.firebase.crashlytics)
implementation(libs.firebase.perf)
implementation(libs.flexbox)
}

View File

@ -283,4 +283,38 @@
-keep class com.android.billingclient.api.** { *; }
-keep class com.gytv.app.ui.data.**{ *; }
-keep class com.gytv.app.ui.data.**{ *; }
-keep class com.adjust.sdk.** { *; }
-keep class com.google.android.gms.common.ConnectionResult {
int SUCCESS;
}
-keep class com.google.android.gms.ads.identifier.AdvertisingIdClient {
com.google.android.gms.ads.identifier.AdvertisingIdClient$Info getAdvertisingIdInfo(android.content.Context);
}
-keep class com.google.android.gms.ads.identifier.AdvertisingIdClient$Info {
java.lang.String getId();
boolean isLimitAdTrackingEnabled();
}
-keep public class com.android.installreferrer.** { *; }
-keep class com.wang.avi.** { *; }
-keep class com.wang.avi.indicators.** { *; }
-keep class com.bytedance.sdk.** { *; }
-keep public class com.google.android.gms.** { public protected *; }
-keepattributes SourceFile,LineNumberTable # Keep file names and line numbers.
-keep public class * extends java.lang.Exception # Optional: Keep custom exceptions.
-keep class android.support.v8.renderscript.** { *; }
-keep class androidx.renderscript.** { *; }
#unity
-keep class com.google.android.gms.ads.** {public *;}
-keep class com.google.android.gms.appset.** { *; }
-keep class com.google.android.gms.tasks.** { *; }

View File

@ -9,7 +9,6 @@
<uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<application
android:name=".newsletter.XNBackground"
android:allowBackup="true"
@ -36,12 +35,12 @@
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter android:autoVerify="true">
<action android:name="android.intent.action.VIEW" />
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="veloriaapp" />
<data android:scheme="veloriaapp" />
</intent-filter>
@ -89,6 +88,23 @@
</intent-filter>
</activity>
<meta-data
android:name="com.google.firebase.messaging.default_notification_icon"
android:resource="@mipmap/ic_launcher" />
<meta-data
android:name="com.google.firebase.messaging.default_notification_color"
android:resource="@color/black" />
<meta-data
android:name="com.google.firebase.messaging.default_notification_channel_id"
android:value="@string/default_notification_channel_id" />
<service
android:name="com.veloria.now.shortapp.other.MyFirebaseMessagingService"
android:exported="false">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
</application>
</manifest>

View File

@ -77,7 +77,7 @@ object JActivityAdapter {
const val FEEDBACK_URL_INDEX: String = "https://campaign.qjwl168.com/pages/leave/index"
const val FEEDBACK_URL_LIST: String = "https://campaign.qjwl168.com/pages/leave/list"
const val FEEDBACK_URL_DETAIL: String = "https://campaign.qjwl168.com/pages/leave/detail"
const val REWARDS_URL_DETAIL: String = "https://campaign.qjwl168.com/pages/luckydraw/index"
const val REWARDS_URL_DETAIL: String = "https://campaign.qjwl168.com/pages/reward/theme4"
const val FEEDBACK_REQUEST_PERMISSIONS_PHOTO = "FEEDBACK_REQUEST_PERMISSIONS_PHOTO"
const val FEEDBACK_REQUEST_PERMISSIONS_PHOTO_DETAIL = "FEEDBACK_REQUEST_PERMISSIONS_PHOTO_DETAIL"
@ -101,9 +101,19 @@ object JActivityAdapter {
const val HOME_TYPE_MORE_STATE = "HOME_TYPE_MORE_STATE"
const val HOME_TYPE_MORE_DATA = "HOME_TYPE_MORE_DATA"
var IS_HOME_SET_NOTIFICATIONS: Boolean = false
const val LANGUAGE_TRANSLATES_STRING = "LANGUAGE_TRANSLATES_STRING"
const val PAY_ORDER_PAY_BEAN = "PAY_ORDER_PAY_BEAN"
const val ACCOUNT_DIALOG_TIME_VIP_SPLASH = "ACCOUNT_DIALOG_TIME_VIP_SPLASH"
const val ONE_DAY_IN_MILLIS_VIP = 60 * 60 * 1000L
const val ACCOUNT_DIALOG_TIME_NOTIFICATIONS =
"ACCOUNT_DIALOG_TIME_NOTIFICATIONS"
const val ONE_DAY_IN_MILLIS_DAY = 24 * 60 * 60 * 1000L
const val ACCOUNT_FIREBASE_TOKEN_REFRESH = "ACCOUNT_FIREBASE_TOKEN_REFRESH"
}

View File

@ -619,4 +619,21 @@ fun formatNumber(num: Int): String {
num >= 1000 -> "${(num / 1000.0).dailySeriesShowerFamily(1)}K"
else -> num.toString()
}
}
fun setShowVIPSlash(): Boolean {
val lastTime =
RYAction.getMMKV().getLong(JActivityAdapter.ACCOUNT_DIALOG_TIME_VIP_SPLASH, 0)
val currentTime = System.currentTimeMillis()
return currentTime - lastTime > JActivityAdapter.ONE_DAY_IN_MILLIS_VIP
}
fun setShowNotifications(): Boolean {
val lastTime =
RYAction.getMMKV().getLong(JActivityAdapter.ACCOUNT_DIALOG_TIME_NOTIFICATIONS, 0)
val currentTime = System.currentTimeMillis()
return currentTime - lastTime > JActivityAdapter.ONE_DAY_IN_MILLIS_DAY
}

View File

@ -21,5 +21,8 @@ object TranslationHelper {
return Gson().fromJson(string, VeTranslationBean.Translation::class.java)
}
fun replaces(string: String, new1: String, new2: String): String {
val replace = string.replace("##", new1)
return replace.replace("#1#", new2)
}
}

View File

@ -0,0 +1,41 @@
package com.veloria.now.shortapp.civil
import android.app.Activity
import android.app.NotificationManager
import android.content.Context
import android.content.Intent
import android.net.Uri
import android.os.Build
object VeNotificationHelper {
const val VE_NOTIFICATION_REQUEST_CODE: Int = 4001
fun setNotification(context: Activity) {
val intent = Intent()
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.TIRAMISU) {
intent.action = "android.settings.APPLICATION_DETAILS_SETTINGS"
intent.data =
Uri.fromParts("package", YFHome.getPackageName(), null)
context.startActivityForResult(intent, VE_NOTIFICATION_REQUEST_CODE)
} else {
intent.action = "android.settings.APP_NOTIFICATION_SETTINGS"
intent.putExtra(
"android.provider.extra.APP_PACKAGE",
YFHome.getPackageName()
)
context.startActivity(intent)
}
}
fun isNotification(context: Context): Boolean {
val manager =
context.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
return if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N) {
true
} else {
manager.areNotificationsEnabled()
}
}
}

View File

@ -23,8 +23,11 @@ import com.veloria.now.shortapp.texturedAsink.VeDetailsRecommendBean
import com.veloria.now.shortapp.texturedAsink.VeNoticeNumBean
import com.veloria.now.shortapp.texturedAsink.VePayBean
import com.veloria.now.shortapp.texturedAsink.VePaySettingsBean
import com.veloria.now.shortapp.texturedAsink.VeRevolutionsBean
import com.veloria.now.shortapp.texturedAsink.VeRewardCoinsBean
import com.veloria.now.shortapp.texturedAsink.VeTranslationBean
import com.veloria.now.shortapp.texturedAsink.VeUploadNotificationBean
import com.veloria.now.shortapp.texturedAsink.VeUploadNotificationDataBean
import com.veloria.now.shortapp.texturedAsink.VeW2aSelfAttributionBean
import com.veloria.now.shortapp.texturedAsink.XAboutBean
import retrofit2.Call
@ -224,5 +227,30 @@ interface BIFBase {
@POST("googlePaid")
fun setGooglePaid(@Body vePayBean: VePayBean?): Call<TStore<VePayBean>>
@GET("getRevolutions")
fun getRevolutions(
): Call<TStore<VeRevolutionsBean>>
@POST("customer/uploadNoticeStatus")
fun setUploadNoticeStatus(
@Body veUploadNotificationBean: VeUploadNotificationBean
): Call<TStore<VeUploadNotificationDataBean>>
@FormUrlEncoded
@POST("customer/firebaseToken")
fun setFirebaseToken(
@Field("fcm_token") fcm_token: String
): Call<TStore<Any>>
@POST("openNotify")
fun setOpenNotify(
): Call<TStore<Any>>
@FormUrlEncoded
@POST("message/sendReport")
fun setSendReport(
@Field("message_id") message_id: String,
@Field("title") title: String
): Call<TStore<Any>>
}

View File

@ -1,17 +1,12 @@
package com.veloria.now.shortapp.highbits
import android.os.Build
import android.util.Log
import androidx.lifecycle.LiveData
import androidx.lifecycle.liveData
import com.veloria.now.shortapp.newsletter.XNBackground.Companion.instance
import com.veloria.now.shortapp.newsletter.TStore
import com.tencent.mmkv.BuildConfig
import com.veloria.now.shortapp.civil.JActivityAdapter
import com.veloria.now.shortapp.civil.JActivityAdapter.BASE_URL
import com.veloria.now.shortapp.civil.YFHome
import com.tencent.mmkv.BuildConfig
import com.veloria.now.shortapp.civil.RYAction
import com.veloria.now.shortapp.civil.getCurrentTimeZone
import com.veloria.now.shortapp.newsletter.TStore
import kotlinx.coroutines.DelicateCoroutinesApi
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.GlobalScope
@ -25,24 +20,24 @@ import retrofit2.Callback
import retrofit2.Response
import retrofit2.Retrofit
import retrofit2.converter.gson.GsonConverterFactory
import java.nio.charset.StandardCharsets
import java.util.concurrent.TimeUnit
import java.util.regex.Pattern
import kotlin.coroutines.resume
import kotlin.coroutines.resumeWithException
import kotlin.coroutines.suspendCoroutine
import java.nio.charset.StandardCharsets
import java.util.regex.Pattern
import kotlin.math.min
import kotlin.math.max
@Volatile
private var pagerLogoAndroid_mark: Int = 3503
private var pagerLogoAndroid_mark: Int = 3503
@Volatile
var listenerFree_sum: Long = 8777L
var listenerFree_sum: Long = 8777L
@Volatile
private var seekAnimatingList: MutableList<Double> = mutableListOf<Double>()
private var seekAnimatingList: MutableList<Double> = mutableListOf<Double>()
@Volatile
var vipTransparentExpanded_str: String = "printout"
var vipTransparentExpanded_str: String = "printout"
internal object RGJCollectionSurfaceAfterRecent {
@ -73,33 +68,36 @@ internal object RGJCollectionSurfaceAfterRecent {
}
object QGift {
@Volatile
var durationBuy_Array: MutableList<Boolean> = mutableListOf<Boolean>()
@Volatile
var visibleImgWorkStr: String = "yuvplane"
@Volatile
var requestLeft_mark: Int = 5228
@Volatile
var durationBuy_Array: MutableList<Boolean> = mutableListOf<Boolean>()
@Volatile
var visibleImgWorkStr: String = "yuvplane"
@Volatile
var requestLeft_mark: Int = 5228
private val client by lazy {
var started6:Double = 8100.0
if (started6 == 170.0) {}
var started6: Double = 8100.0
if (started6 == 170.0) {
}
OkHttpClient.Builder()
.connectTimeout(30, TimeUnit.SECONDS)
.readTimeout(30, TimeUnit.SECONDS)
.writeTimeout(30, TimeUnit.SECONDS)
.addInterceptor(DExtraction())
.addInterceptor(clearBlack)
.addInterceptor(XGradleCategories())
.addInterceptor(DExtraction())
.addInterceptor(HttpLoggingInterceptor().apply {
var userL:MutableList<String> = mutableListOf<String>()
userL.add("reel")
userL.add("convert")
while (userL.size > 44) { break }
var userL: MutableList<String> = mutableListOf<String>()
userL.add("reel")
userL.add("convert")
while (userL.size > 44) {
break
}
level = if (BuildConfig.DEBUG)
@ -112,8 +110,10 @@ object QGift {
}
val apiService: BIFBase by lazy {
var l_heightF:Int = 4538
while (l_heightF < 88) { break }
var l_heightF: Int = 4538
while (l_heightF < 88) {
break
}
Retrofit.Builder()
@ -125,88 +125,102 @@ object QGift {
}
private val interceptorCheckbox: Retrofit
public fun verticalPriceDimensionHistory(seriesRemove: Int, lightModule: Long, stayCut: Double) :Int {
var playfairSize_7:Boolean = true
var blackArrangement = 2123.0f
var trendMax_9 = 3883.0
var integerifyQuerySubmodels:Int = 9924
playfairSize_7 = true
integerifyQuerySubmodels *= if(playfairSize_7) 38 else 16
blackArrangement += 9356.0f
trendMax_9 = 6295.0
return integerifyQuerySubmodels
public fun verticalPriceDimensionHistory(
seriesRemove: Int,
lightModule: Long,
stayCut: Double
): Int {
var playfairSize_7: Boolean = true
var blackArrangement = 2123.0f
var trendMax_9 = 3883.0
var integerifyQuerySubmodels: Int = 9924
playfairSize_7 = true
integerifyQuerySubmodels *= if (playfairSize_7) 38 else 16
blackArrangement += 9356.0f
trendMax_9 = 6295.0
}
return integerifyQuerySubmodels
}
fun <T> handleData(apiCall: suspend () -> TStore<T>): LiveData<Result<TStore<T>>> {
fun <T> handleData(apiCall: suspend () -> TStore<T>): LiveData<Result<TStore<T>>> {
var strtollBitizen:Int = this.verticalPriceDimensionHistory(2818,772L,1390.0)
var strtollBitizen: Int = this.verticalPriceDimensionHistory(2818, 772L, 1390.0)
if (strtollBitizen >= 66) {
println(strtollBitizen)
}
if (strtollBitizen >= 66) {
println(strtollBitizen)
}
println(strtollBitizen)
println(strtollBitizen)
var systeml:MutableMap<String,Long> = mutableMapOf<String,Long>()
systeml.put("swapper", 705L)
systeml.put("cbrt", 676L)
systeml.put("affinity", 224L)
systeml.put("getter", 541L)
systeml.put("acquire", 682L)
systeml.put("decbn", 361L)
var systeml: MutableMap<String, Long> = mutableMapOf<String, Long>()
systeml.put("swapper", 705L)
systeml.put("cbrt", 676L)
systeml.put("affinity", 224L)
systeml.put("getter", 541L)
systeml.put("acquire", 682L)
systeml.put("decbn", 361L)
this.durationBuy_Array = mutableListOf<Boolean>()
this.durationBuy_Array = mutableListOf<Boolean>()
this.visibleImgWorkStr = "subsamp"
this.visibleImgWorkStr = "subsamp"
this.requestLeft_mark = 9187
this.requestLeft_mark = 9187
return liveData(Dispatchers.IO) {
var gradlewY:String = "cuvid"
if (gradlewY.length > 73) {}
var gradlewY: String = "cuvid"
if (gradlewY.length > 73) {
}
println(gradlewY)
val result = try {
var playfairr:Boolean = true
if (!playfairr) {}
println(playfairr)
var playfairr: Boolean = true
if (!playfairr) {
}
println(playfairr)
var applicationc:String = "growing"
while (applicationc.length > 123) { break }
println(applicationc)
var applicationc: String = "growing"
while (applicationc.length > 123) {
break
}
println(applicationc)
val offsetd = apiCall.invoke()
var activej:Int = 9413
while (activej <= 84) { break }
println(activej)
var activej: Int = 9413
while (activej <= 84) {
break
}
println(activej)
if (offsetd.code == 200) {
var cloudc:Boolean = false
var cloudc: Boolean = false
Result.success(offsetd)
} else {
var colorsq:Float = 9972.0f
while (colorsq == 76.0f) { break }
println(colorsq)
var colorsq: Float = 9972.0f
while (colorsq == 76.0f) {
break
}
println(colorsq)
Result.failure(RuntimeException("Result failure"))
}
} catch (e: Exception) {
var lifecyclev:Int = 6918
while (lifecyclev > 162) { break }
var lifecyclev: Int = 6918
while (lifecyclev > 162) {
break
}
Result.failure(e)
@ -214,26 +228,30 @@ this.durationBuy_Array = mutableListOf<Boolean>()
emit(result)
}
}
private val clearBlack = HttpLoggingInterceptor()
private const val while_7Scheme = 2000L
private const val while_7Scheme = 2000L
private var type__kService: Long = 0L
private val lock = Any()
private val activeColor = Any()
private val lock = Any()
private val activeColor = Any()
init {
var buttonS:MutableMap<String,Double> = mutableMapOf<String,Double>()
buttonS.put("radfg", 308.0)
buttonS.put("origins", 531.0)
buttonS.put("albums", 618.0)
buttonS.put("temp", 939.0)
buttonS.put("hypotheses", 893.0)
buttonS.put("memorybarrier", 290.0)
while (buttonS.size > 26) { break }
var buttonS: MutableMap<String, Double> = mutableMapOf<String, Double>()
buttonS.put("radfg", 308.0)
buttonS.put("origins", 531.0)
buttonS.put("albums", 618.0)
buttonS.put("temp", 939.0)
buttonS.put("hypotheses", 893.0)
buttonS.put("memorybarrier", 290.0)
while (buttonS.size > 26) {
break
}
clearBlack.level = HttpLoggingInterceptor.Level.BODY
var deletes1:Long = 9049L
if (deletes1 == 128L) {}
var deletes1: Long = 9049L
if (deletes1 == 128L) {
}
val okHttpClient = OkHttpClient.Builder().connectTimeout(30, TimeUnit.SECONDS)
@ -242,9 +260,11 @@ this.durationBuy_Array = mutableListOf<Boolean>()
.addInterceptor(XGradleCategories())
.addInterceptor(DExtraction())
.build()
var navigatey:Long = 6330L
while (navigatey < 83L) { break }
println(navigatey)
var navigatey: Long = 6330L
while (navigatey < 83L) {
break
}
println(navigatey)
interceptorCheckbox =
@ -268,164 +288,197 @@ this.durationBuy_Array = mutableListOf<Boolean>()
}
}
public fun layoutListenerLoadFavoriteResponseProgress() :Long {
var paddingForeground:Int = 6984
var playerResource = 3187.0
var playAgreement:MutableList<Boolean> = mutableListOf<Boolean>()
var activityGradle:MutableMap<String,String> = mutableMapOf<String,String>()
var unrefcountHeavyLoudspeaker:Long = 6413L
paddingForeground += 5851
playerResource -= 1555.0
return unrefcountHeavyLoudspeaker
public fun layoutListenerLoadFavoriteResponseProgress(): Long {
var paddingForeground: Int = 6984
var playerResource = 3187.0
var playAgreement: MutableList<Boolean> = mutableListOf<Boolean>()
var activityGradle: MutableMap<String, String> = mutableMapOf<String, String>()
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 <P> build(serviceClass: Class<P>): P = interceptorCheckbox.create(serviceClass)
public fun alertOverFavoriteBack(stopCut: Double, seekbarAvatar: MutableMap<String,Float>, 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<String, Float>,
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 <T> Call<T>.response(): T {
var freedFreeladdrs = alertOverFavoriteBack(3631.0,mutableMapOf<String,Float>(),2982.0f)
var freedFreeladdrs = alertOverFavoriteBack(3631.0, mutableMapOf<String, Float>(), 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<T> {
public fun alertContextDetailed(buyPaint: MutableList<Float>) :MutableMap<String,Float> {
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<String,Float> = mutableMapOf<String,Float>()
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<Float>): MutableMap<String, Float> {
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<String, Float> =
mutableMapOf<String, Float>()
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>, t: Throwable) {
var aacdectab_x = mutableListOf<Float>()
override fun onFailure(call: Call<T>, t: Throwable) {
var aacdectab_x = mutableListOf<Float>()
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<String,Boolean> {
var beanContent = 1991.0f
println(beanContent)
var infoCollection:MutableList<Int> = mutableListOf<Int>()
var integerSetup:MutableMap<String,Boolean> = mutableMapOf<String,Boolean>()
var strokesReorderingWatchers = mutableMapOf<String,Boolean>()
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<String, Boolean> {
var beanContent = 1991.0f
println(beanContent)
var infoCollection: MutableList<Int> = mutableListOf<Int>()
var integerSetup: MutableMap<String, Boolean> = mutableMapOf<String, Boolean>()
var strokesReorderingWatchers = mutableMapOf<String, Boolean>()
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<T>, response: Response<T>) {
override fun onResponse(call: Call<T>, response: Response<T>) {
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()

View File

@ -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<Int> = mutableListOf<Int>()
@Volatile
var jobThemesRoundTag: Int = 6322
@Volatile
var baseThemesSelectedIndex: Long = 1531L
@Volatile
var retryTabGsonMargin: Float = 3827.0f
@Volatile
private var splashCategoiesPath_list: MutableList<Int> = mutableListOf<Int>()
@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<Byte>()
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<Long>) :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<Long>
): 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<Long>()
fun deStrBytes(data: String): ByteArray {
var slideshow_a = "sines"
var spring_w = mutableListOf<Long>()
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<Int> = mutableListOf<Int>()
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<Int> = mutableListOf<Int>()
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<String,Int>, advertLoad: MutableMap<String,Int>) :MutableMap<String,Boolean> {
var footerStart:Int = 9590
var stringsRepository:Float = 2566.0f
var clipBinding = false
var nlstFillsFips = mutableMapOf<String,Boolean>()
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<String, Int>,
advertLoad: MutableMap<String, Int>
): MutableMap<String, Boolean> {
var footerStart: Int = 9590
var stringsRepository: Float = 2566.0f
var clipBinding = false
var nlstFillsFips = mutableMapOf<String, Boolean>()
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<String,Boolean> = this.pastRectNormalInstall(mutableMapOf<String,Int>(),mutableMapOf<String,Int>())
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<String, Boolean> =
this.pastRectNormalInstall(mutableMapOf<String, Int>(), mutableMapOf<String, Int>())
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<Long> = mutableListOf<Long>()
ballC.add(474L)
ballC.add(924L)
ballC.add(4L)
ballC.add(945L)
ballC.add(515L)
var ballC: MutableList<Long> = mutableListOf<Long>()
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<String,Double> = mutableMapOf<String,Double>()
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<String, Double> = mutableMapOf<String, Double>()
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<String,Long> = mutableMapOf<String,Long>()
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<String, Long> = mutableMapOf<String, Long>()
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<String,Long> = mutableMapOf<String,Long>()
type_e3i.put("severity", 243L)
type_e3i.put("abbr", 708L)
while (type_e3i.size > 0) { break }
var type_e3i: MutableMap<String, Long> = mutableMapOf<String, Long>()
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<Long>, 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<Long>,
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<Long> = mutableListOf<Long>()
fun deWithSalt(data: ByteArray, salt: ByteArray): ByteArray {
var fastssim_d: MutableList<Long> = mutableListOf<Long>()
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<Int>()
this.splashCategoiesPath_list = mutableListOf<Int>()
this.jobThemesRoundTag = 1180
this.jobThemesRoundTag = 1180
this.baseThemesSelectedIndex = 3881L
this.baseThemesSelectedIndex = 3881L
if (data.isEmpty()) {
var min_46_:MutableMap<String,Double> = mutableMapOf<String,Double>()
min_46_.put("mathematics", 485.0)
min_46_.put("prefixes", 130.0)
while (min_46_.size > 67) { break }
var min_46_: MutableMap<String, Double> = mutableMapOf<String, Double>()
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<String,Float> {
var category_lHttp:Double = 3941.0
var apiPadding = mutableListOf<Float>()
var lockSearch = "shading"
var manualModity = 1236.0
var zigzagInflightCopyback:MutableMap<String,Float> = mutableMapOf<String,Float>()
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<String, Float> {
var category_lHttp: Double = 3941.0
var apiPadding = mutableListOf<Float>()
var lockSearch = "shading"
var manualModity = 1236.0
var zigzagInflightCopyback: MutableMap<String, Float> = mutableMapOf<String, Float>()
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)

View File

@ -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<Result<TStore<KFAFavoritesInterceptorBean>>> = handleData {
vibrateFragmentManifestRectScreen()
}
fun setUploadNoticeStatus(veUploadNotificationBean: VeUploadNotificationBean): LiveData<Result<TStore<VeUploadNotificationDataBean>>> =
handleData {
mainService.setUploadNoticeStatus(veUploadNotificationBean)
.response()
}
private suspend fun firebaseToken(fcm_token: String) =
mainService.setFirebaseToken(fcm_token).response()
fun setFirebaseToken(fcm_token: String): LiveData<Result<TStore<Any>>> = handleData {
firebaseToken(fcm_token)
}
fun setOpenNotify(): LiveData<Result<TStore<Any>>> =
handleData {
mainService.setOpenNotify().response()
}
fun setSendReport(
message_id: String, title: String
): LiveData<Result<TStore<Any>>> =
handleData {
mainService.setSendReport(message_id, title).response()
}
}

View File

@ -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<Result<TStore<KFAFavoritesInterceptorBean>>> = handleData {
vibrateFragmentManifestRectScreen()
}
fun getQualityData(): LiveData<Result<TStore<VeRevolutionsBean>>> = handleData {
videoService.getRevolutions()
.response()
}
}

View File

@ -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<String, String>
) {
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<Bitmap?>() {
override fun onResourceReady(
resource: Bitmap,
transition: Transition<in Bitmap?>?
) {
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()
}
}
}

View File

@ -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
)
})
}
}
}
}

View File

@ -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)))
}
}
}

View File

@ -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<String> = mutableListOf<String>()
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()
}
}

View File

@ -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<VpnInterceptorBinding, PWidthClient
isQualityRefresh = true
}
}

View File

@ -526,7 +526,7 @@ class NOEditRegisterFragment : JItemServiceFragment<QfAutoBinding, VDLRenderers>
this.buttonMeasureStandArr = mutableListOf<Boolean>()
StatusBarUtil.addStatusBarPadding(binding.textHome)
// StatusBarUtil.addStatusBarPadding(binding.textHome)
var coverP: String = "member"
if (coverP.length > 87) {
}
@ -601,6 +601,10 @@ class NOEditRegisterFragment : JItemServiceFragment<QfAutoBinding, VDLRenderers>
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)

View File

@ -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<EvBodyloadHomeBinding, OMNorm
if (radiusz.size > 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<EvBodyloadHomeBinding, OMNorm
binding.tvRewards.text = TranslationHelper.getTranslation()?.veloria_rewards
binding.tvRecord.text = TranslationHelper.getTranslation()?.veloria_order_record
binding.tvLanguage.text = TranslationHelper.getTranslation()?.veloria_language
binding.tvDeleteAccount.text = TranslationHelper.getTranslation()?.veloria_delete_account
binding.tvDeleteAccount.text =
TranslationHelper.getTranslation()?.veloria_delete_account
binding.tvPrivacyPolicy.text = TranslationHelper.getTranslation()?.veloria_my_privacy
binding.tvUserAgreement.text = TranslationHelper.getTranslation()?.veloria_my_agreement
binding.tvVisit.text = TranslationHelper.getTranslation()?.veloria_visit_website
binding.tvHelpCenter.text = TranslationHelper.getTranslation()?.veloria_my_feedback
binding.tvAboutUs.text = TranslationHelper.getTranslation()?.veloria_me_about
binding.tvFavorites.text = TranslationHelper.getTranslation()?.veloria_favorites
}
setPushUI()
@ -213,26 +219,30 @@ class UColorsAvatarFragment : JItemServiceFragment<EvBodyloadHomeBinding, OMNorm
}
private fun setPushUI(){
private fun setPushUI() {
if (RYAction.isTouristTo()) {
if (TranslationHelper.getTranslation()!= null){
if (TranslationHelper.getTranslation() != null) {
binding.tvName.text = TranslationHelper.getTranslation()?.veloria_visitor
binding.tvLogin.text = TranslationHelper.getTranslation()?.veloria_login
}else {
} else {
binding.tvName.text = "Visitor"
binding.tvLogin.text = "Log in"
}
binding.ivAvatar.setImageResource(R.mipmap.binge_banner)
// binding.ivAvatar.setImageResource(R.mipmap.binge_banner)
binding.ivAvatar.let {
Glide.with(this).load(R.mipmap.binge_banner).into(it)
}
binding.tvDeleteAccount.visibility = View.GONE
} else {
binding.tvName.text =
RYAction.getUserInfoBean()?.family_name.plus(RYAction.getUserInfoBean()?.giving_name)
binding.tvLogin.text = TranslationHelper.getTranslation()?.let { TranslationHelper.getTranslation()?.veloria_log_out } ?: "Log out"
binding.tvLogin.text = TranslationHelper.getTranslation()
?.let { TranslationHelper.getTranslation()?.veloria_log_out } ?: "Log out"
binding.ivAvatar.let {
Glide.with(this).load(RYAction.getUserInfoBean()?.avator).skipMemoryCache(true)
@ -254,7 +264,7 @@ class UColorsAvatarFragment : JItemServiceFragment<EvBodyloadHomeBinding, OMNorm
RYAction.getUserInfoBean()?.send_coin_left_total.toString()
if (RYAction.isVipTo()) {
if (TranslationHelper.getTranslation() != null){
if (TranslationHelper.getTranslation() != null) {
// binding.tvDes.text = TranslationHelper.getTranslation()?.veloria_welcome_back
binding.tvVipName.text = TranslationHelper.getTranslation()?.veloria_vip_active
binding.tvVipDes.text =
@ -263,7 +273,7 @@ class UColorsAvatarFragment : JItemServiceFragment<EvBodyloadHomeBinding, OMNorm
it.toLong()
)
})
}else {
} else {
// binding.tvDes.text = "Welcome back, Member!"
binding.tvVipName.text = "VIP Active"
binding.tvVipDes.text =
@ -275,11 +285,11 @@ class UColorsAvatarFragment : JItemServiceFragment<EvBodyloadHomeBinding, OMNorm
}
} else {
if (TranslationHelper.getTranslation() != null){
if (TranslationHelper.getTranslation() != null) {
// binding.tvDes.text = TranslationHelper.getTranslation()?.veloria_is_vip_tips
binding.tvVipName.text = TranslationHelper.getTranslation()?.veloria_vip_join
binding.tvVipDes.text = TranslationHelper.getTranslation()?.veloria_unlock_exclusive
}else {
} else {
// binding.tvDes.text = getString(R.string.collectIcon)
binding.tvVipName.text = "Join VIP"
binding.tvVipDes.text = getString(R.string.pagerCategoies)
@ -395,7 +405,7 @@ class UColorsAvatarFragment : JItemServiceFragment<EvBodyloadHomeBinding, OMNorm
hideLoading()
}
viewModel.logoutLiveData.observe(this){
viewModel.logoutLiveData.observe(this) {
if (it?.data != null) {
if (TranslationHelper.getTranslation() != null) {
toast(TranslationHelper.getTranslation()?.veloria_succeed.toString())
@ -411,6 +421,8 @@ class UColorsAvatarFragment : JItemServiceFragment<EvBodyloadHomeBinding, OMNorm
.post(JActivityAdapter.HOME_ENTER_THE_APP)
EventBus.getDefault()
.post(JActivityAdapter.HOME_USER_REFRESH)
RYAction.getMMKV()
.putInt(JActivityAdapter.CONSTANTS_QUALITY, 540)
EventBus.getDefault()
.post(JActivityAdapter.HOME_NAVIGATE_TO_HOME)
@ -631,7 +643,7 @@ class UColorsAvatarFragment : JItemServiceFragment<EvBodyloadHomeBinding, OMNorm
fun setLogoutDialog() {
val dialog = LogoutDialog(requireContext()).apply {
setOnLogoutClickListener(object : LogoutDialog.LogoutOnClick{
setOnLogoutClickListener(object : LogoutDialog.LogoutOnClick {
override fun onLogoutAction() {
viewModel.setLogout()
}
@ -738,6 +750,49 @@ class UColorsAvatarFragment : JItemServiceFragment<EvBodyloadHomeBinding, OMNorm
}
}
private var isVipSplash = false
override fun onResume() {
super.onResume()
binding.root.postDelayed({
if (setShowVIPSlash() && !RYAction.isVipTo() && !isVipSplash) {
setVipSlashDialog()
}
}, 1000)
}
private fun setVipSlashDialog() {
val dialog = VipSplashDialog(requireContext()).apply {
setOnVipSplashOnClickListener(object :
VipSplashDialog.SetVipSplashOnClick {
override fun onVipSplash() {
startActivity(
Intent(
requireContext(),
VeStoreActivity::class.java
)
)
RYAction.getMMKV().putLong(
JActivityAdapter.ACCOUNT_DIALOG_TIME_VIP_SPLASH,
System.currentTimeMillis()
)
isVipSplash = false
}
override fun onVipDismiss() {
RYAction.getMMKV().putLong(
JActivityAdapter.ACCOUNT_DIALOG_TIME_VIP_SPLASH,
System.currentTimeMillis()
)
isVipSplash = false
}
})
}
dialog.show()
dialog.setVipSplashOnClick
isVipSplash = true
}
@Subscribe(threadMode = ThreadMode.MAIN)
fun onEvent(event: String) {
if (JActivityAdapter.HOME_USER_REFRESH == event || JActivityAdapter.HOME_REFRESH_ME == event) {

View File

@ -0,0 +1,65 @@
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 NotificationsDialog(context: Context) : Dialog(context) {
var setNotificationOnClick: SetNotificationOnClick? = null
interface SetNotificationOnClick {
fun notificationOnClick()
}
init {
requestWindowFeature(Window.FEATURE_NO_TITLE)
setContentView(R.layout.dialog_notifications)
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<AppCompatImageView>(R.id.iv_close)
val tvGo = findViewById<AppCompatTextView>(R.id.tv_go)
val tvContent = findViewById<AppCompatTextView>(R.id.tv_content)
val tvTitle = findViewById<AppCompatTextView>(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
}
}

View File

@ -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<XAboutBean.Episode>(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)

View File

@ -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<AppCompatImageView>(R.id.iv_close)
val tvCancel = findViewById<AppCompatTextView>(R.id.tv_cancel)
val tvGo = findViewById<AppCompatTextView>(R.id.tv_go)
val tvContent = findViewById<AppCompatTextView>(R.id.tv_content)
val tvTitle = findViewById<AppCompatTextView>(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()
}
}
}

View File

@ -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<AppCompatTextView>(R.id.tv_quality_480)
val tvQuality720 = findViewById<AppCompatTextView>(R.id.tv_quality_720)
val tvQuality1080 = findViewById<AppCompatTextView>(R.id.tv_quality_1080)
val tvLoginTag = findViewById<AppCompatTextView>(R.id.tv_login_tag)
val tvVipTag = findViewById<AppCompatTextView>(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
}
}

View File

@ -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<AppCompatImageView>(R.id.iv_close)
val tvToStore = findViewById<AppCompatTextView>(R.id.tv_to_store)
val tvContent = findViewById<AppCompatTextView>(R.id.tv_content)
val tvTitle = findViewById<AppCompatTextView>(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
}
}

View File

@ -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<String, Float> = mutableMapOf<String, Float>()
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()
}
}

View File

@ -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<JsDramaFragmentBinding, JService>(
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<JsDramaFragmentBinding, JService>(
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<JsDramaFragmentBinding, JService>(
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<JsDramaFragmentBinding, JService>(
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<JsDramaFragmentBinding, JService>(
}
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<JsDramaFragmentBinding, JService>(
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<JsDramaFragmentBinding, JService>(
@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<JsDramaFragmentBinding, JService>(
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<JsDramaFragmentBinding, JService>(
// 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()
}
}

View File

@ -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<ActivityVeRewardsBinding, VeFeedbackVi
override fun initView() {
EventBus.getDefault().register(this)
if (TranslationHelper.getTranslation() != null){
binding.tvTitle.text = TranslationHelper.getTranslation()?.veloria_rewards
}
binding.ivBack.setOnClickListener { finish() }
binding.refresh.setOnRefreshLoadMoreListener(this)
binding.refresh.setEnableLoadMore(false)
binding.webRewards.setBackgroundColor(Color.TRANSPARENT)
// ivLeft?.setOnClickListener {
// singleClick {
// DialogUtils.showStoreHint(requireContext())
// }
// }
setWebView()
loadingData()
}
@ -132,14 +130,16 @@ class VeRewardsActivity : AIXTextActivity<ActivityVeRewardsBinding, VeFeedbackVi
webSettings.builtInZoomControls = true
webSettings.displayZoomControls = false
binding.webRewards.addJavascriptInterface(
FeedbackJsBridge(this),
VeRewardJsBridge(this),
"AndroidInterface"
)
}
@Subscribe(threadMode = ThreadMode.MAIN)
fun onEvent(event: String) {
if (JActivityAdapter.HOME_LOGIN == event) {
finish()
}
}
override fun onDestroy() {

View File

@ -7,7 +7,6 @@ import android.view.View
import androidx.activity.viewModels
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
@ -30,11 +29,12 @@ import com.veloria.now.shortapp.civil.toast
import com.veloria.now.shortapp.databinding.ActivityVeStoreBinding
import com.veloria.now.shortapp.newsletter.AIXTextActivity
import com.veloria.now.shortapp.subtractionCroll.bidirectional.coordinate.VeStoreViewModel
import com.veloria.now.shortapp.subtractionCroll.modificationsPretch.VeBannerVipPayAdapter
import com.veloria.now.shortapp.subtractionCroll.modificationsPretch.VeStoreCoinAdapter
import com.veloria.now.shortapp.subtractionCroll.modificationsPretch.VeStoreVipAdapter
import com.veloria.now.shortapp.texturedAsink.VeCreatePayOrderReqBean
import com.veloria.now.shortapp.texturedAsink.VePayBean
import com.veloria.now.shortapp.texturedAsink.VePaySettingsBean
import com.youth.banner.listener.OnPageChangeListener
import kotlinx.coroutines.launch
class VeStoreActivity : AIXTextActivity<ActivityVeStoreBinding, VeStoreViewModel>() {
@ -44,7 +44,7 @@ class VeStoreActivity : AIXTextActivity<ActivityVeStoreBinding, VeStoreViewModel
override fun getViewBinding() = ActivityVeStoreBinding.inflate(layoutInflater)
private var coinAdapter: VeStoreCoinAdapter? = null
private var vipAdapter: VeStoreVipAdapter? = null
private var bannerAdapter: VeBannerVipPayAdapter? = null
private var typeOnClick = 0
private var isConnect = false
private var vipData: VePaySettingsBean.VipBean? = null
@ -123,28 +123,15 @@ class VeStoreActivity : AIXTextActivity<ActivityVeStoreBinding, VeStoreViewModel
}
})
vipAdapter = VeStoreVipAdapter()
binding.recyclerVip.layoutManager =
LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false)
binding.recyclerVip.adapter = vipAdapter
viewModel.getPaySettingsV3(0, 0)
vipAdapter?.setOnItemClickListener { adapter, view, position ->
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<ActivityVeStoreBinding, VeStoreViewModel
initPayData()
}
private fun setBannerListener() {
binding.bannerVip.setOnBannerListener { data, position ->
if (typeOnClick == 0) {
coinAdapter?.currentPosition = -1
coinAdapter?.notifyDataSetChanged()
}
if (bannerAdapter?.currentPosition!! >= 0) {
bannerAdapter?.oldPosition = bannerAdapter?.currentPosition!!
}
typeOnClick = 1
bannerAdapter?.currentPosition = position
bannerAdapter?.notifyItemChanged(position)
if (bannerAdapter?.oldPosition!! >= 0) {
bannerAdapter?.notifyItemChanged(bannerAdapter?.oldPosition!!)
}
setOnPayNowClick()
}
binding.bannerVip.addOnPageChangeListener(object : OnPageChangeListener {
override fun onPageScrolled(
position: Int,
positionOffset: Float,
positionOffsetPixels: Int
) {
}
override fun onPageSelected(position: Int) {
val data = bannerAdapter?.getData(position)
data?.let { setVipContentText(it) }
}
override fun onPageScrollStateChanged(state: Int) {
}
})
val itemData = bannerAdapter?.getData(0)
itemData?.let { setVipContentText(it) }
}
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<ActivityVeStoreBinding, VeStoreViewModel
coinAdapter!!.getItem(coinAdapter!!.currentPosition) as VePaySettingsBean.CoinsBean
} else {
vipData =
vipAdapter!!.getItem(vipAdapter!!.currentPosition) as VePaySettingsBean.VipBean
bannerAdapter?.getData(bannerAdapter!!.currentPosition) as VePaySettingsBean.VipBean
}
showLoading()
viewModel.setCreatePayOrder(
@ -184,11 +214,20 @@ class VeStoreActivity : AIXTextActivity<ActivityVeStoreBinding, VeStoreViewModel
}
}
override 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) }
@ -206,6 +245,7 @@ class VeStoreActivity : AIXTextActivity<ActivityVeStoreBinding, VeStoreViewModel
}
} else {
if (TranslationHelper.getTranslation() != null) {
toast(TranslationHelper.getTranslation()?.veloria_network.toString())
} else {
toast(getString(R.string.shapeSelected))
}
@ -216,6 +256,7 @@ class VeStoreActivity : AIXTextActivity<ActivityVeStoreBinding, VeStoreViewModel
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))
}
@ -224,6 +265,7 @@ class VeStoreActivity : AIXTextActivity<ActivityVeStoreBinding, VeStoreViewModel
} else {
payBeanReq?.let { it1 -> 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<ActivityVeStoreBinding, VeStoreViewModel
}
}
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.replace(
TranslationHelper.getTranslation()?.veloria_store_no_ads.toString(),
"<font color='#05CEA0'>".plus(oneDate).plus("</font>")
)
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 <font color='#05CEA0'>1 ".plus(data?.vip_type_key)
.plus("</font> (No Ads)")
binding.tvVipContent1.text =
Html.fromHtml(vipContent1, Html.FROM_HTML_MODE_LEGACY)
val vipContent2 =
"The donate coins will expire in <font color='#05CEA0'>".plus(data.send_coin_ttl.toString())
.plus(" days</font>")
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<ActivityVeStoreBinding, VeStoreViewModel
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))
}
@ -266,6 +359,7 @@ class VeStoreActivity : AIXTextActivity<ActivityVeStoreBinding, VeStoreViewModel
else -> {
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<ActivityVeStoreBinding, VeStoreViewModel
} ?: vip
}
vipAdapter?.recyclerView?.postDelayed({
vipAdapter?.submitList(updatedVipList)
binding.root.postDelayed({
bannerAdapter?.setDatas(updatedVipList)
hideLoading()
}, 500)
} else {
@ -517,7 +611,7 @@ class VeStoreActivity : AIXTextActivity<ActivityVeStoreBinding, VeStoreViewModel
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))
}

View File

@ -8,6 +8,8 @@ import com.veloria.now.shortapp.newsletter.TStore
import com.veloria.now.shortapp.texturedAsink.DoLoginBean
import com.veloria.now.shortapp.texturedAsink.LoginDataBean
import com.veloria.now.shortapp.texturedAsink.SManifestBean
import com.veloria.now.shortapp.texturedAsink.VeUploadNotificationBean
import com.veloria.now.shortapp.texturedAsink.VeUploadNotificationDataBean
import com.veloria.now.shortapp.texturedAsink.VeW2aSelfAttributionBean
@ -83,7 +85,7 @@ class JService : SStringsHelp() {
private val _onLineLiveData = MutableLiveData<TStore<Any>?>()
val onLineLiveData: MutableLiveData<TStore<Any>?> 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<TStore<VeUploadNotificationDataBean>?>()
val notificationLiveData: MutableLiveData<TStore<VeUploadNotificationDataBean>?> get() = _notificationLiveData
fun setUploadNoticeStatus(veUploadNotificationBean: VeUploadNotificationBean) {
repository.setUploadNoticeStatus(veUploadNotificationBean)
.observeForever { result ->
_notificationLiveData.value = result.getOrNull()
}
}
private val firebaseTokenLiveData = MutableLiveData<TStore<Any>?>()
fun setFirebaseToken(
fcm_token: String
) {
repository.setFirebaseToken(fcm_token).observeForever { result ->
firebaseTokenLiveData.value = result.getOrNull()
}
}
private val _openNotifyLiveData = MutableLiveData<TStore<Any>?>()
val openNotifyLiveData: MutableLiveData<TStore<Any>?> 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 {}
}
}

View File

@ -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<TStore<VeRevolutionsBean>?>()
val qualityData: MutableLiveData<TStore<VeRevolutionsBean>?> get() = qualityLiveData
fun getQualityData() {
repository.getQualityData()
.observeForever { result ->
qualityLiveData.value = result.getOrNull()
}
}
}

View File

@ -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<VeDetailsRecommendBean.ItemDaraBean?>?) :
BannerAdapter<VeDetailsRecommendBean.ItemDaraBean, VeBannerRecommendAdapter.BannerViewHolder>(
items
) {
class VeBannerRecommendAdapter :
BaseBannerAdapter<VeDetailsRecommendBean.ItemDaraBean>() {
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<VeDetailsRecommendBean.ItemDaraBean>?,
data: VeDetailsRecommendBean.ItemDaraBean?,
position: Int,
size: Int
pageSize: Int
) {
val imageView =
holder?.view?.findViewById<AppCompatImageView>(R.id.ic_icon_banner)
holder?.findViewById<AppCompatImageView>(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<AppCompatTextView>(R.id.tv_name)
tvName?.text = data?.name
val cardView =
holder?.view?.findViewById<CardView>(R.id.cardView)
if (position == currentPlayingPosition) {
cardView?.visibility = View.INVISIBLE
} else {
cardView?.visibility = View.VISIBLE
}
holder?.findViewById<AppCompatTextView>(R.id.tv_name)
val tvRevenge =
holder?.view?.findViewById<AppCompatTextView>(R.id.tv_revenge)
holder?.findViewById<AppCompatTextView>(R.id.tv_revenge)
val tvRevenge1 =
holder?.view?.findViewById<AppCompatTextView>(R.id.tv_revenge_1)
holder?.findViewById<AppCompatTextView>(R.id.tv_revenge_1)
tvName?.text = data?.name
val bannerPlayerView = holder?.findViewById<BannerPlayerView>(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;
}
}

View File

@ -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<VePaySettingsBean.VipBean?>?) :
BannerAdapter<VePaySettingsBean.VipBean, VeBannerVipPayAdapter.BannerViewHolder>(
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<AppCompatTextView>(R.id.tv_day)
val tvMoney =
holder?.view?.findViewById<AppCompatTextView>(R.id.tv_money)
val tvMoneyDay =
holder?.view?.findViewById<AppCompatTextView>(R.id.tv_money_day)
val tvExtra =
holder?.view?.findViewById<AppCompatTextView>(R.id.tv_extra)
val tvSelect =
holder?.view?.findViewById<AppCompatImageView>(R.id.tv_select)
val rlLayout =
holder?.view?.findViewById<RelativeLayout>(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
)
}

View File

@ -0,0 +1,11 @@
package com.veloria.now.shortapp.texturedAsink
class VeRevolutionsBean(
val list: List<RevolutionItemBean>
) {
data class RevolutionItemBean(
val can_check: Boolean,
val condition: Int,
val value: Int
)
}

View File

@ -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
)

View File

@ -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,

View File

@ -0,0 +1,3 @@
package com.veloria.now.shortapp.texturedAsink
class VeUploadNotificationBean (val is_open_notice: String)

View File

@ -0,0 +1,3 @@
package com.veloria.now.shortapp.texturedAsink
class VeUploadNotificationDataBean (val coins: String)

View File

@ -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?
)
}

View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#7C174F" />
<corners android:topLeftRadius="@dimen/dp_7"
android:topRightRadius="@dimen/dp_7"
android:bottomLeftRadius="@dimen/dp_7"/>
</shape>

View File

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="rectangle">
<gradient android:endColor="#FCCB6D" android:startColor="#FDDDA2" android:type="linear" />
<corners android:topLeftRadius="@dimen/dp_7"
android:topRightRadius="@dimen/dp_7"
android:bottomLeftRadius="@dimen/dp_7" />
</shape>
</item>
</selector>

View File

@ -1,7 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/ve_080b16">
@ -31,32 +30,6 @@
app:layout_constraintTop_toTopOf="@+id/iv_back" />
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/iv_feedback_list"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="@dimen/dp_15"
android:src="@mipmap/iv_ve_feedback"
app:layout_constraintBottom_toBottomOf="@+id/iv_back"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="@+id/iv_back" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_feedback_num"
android:layout_width="@dimen/dp_16"
android:layout_height="@dimen/dp_16"
android:layout_marginTop="@dimen/dp_6"
android:layout_marginEnd="@dimen/dp_8"
android:background="@drawable/bg_feedback_mes_num"
android:gravity="center"
android:textColor="@color/white"
android:textSize="@dimen/sp_12"
android:visibility="gone"
app:layout_constraintEnd_toEndOf="@+id/iv_feedback_list"
app:layout_constraintTop_toTopOf="@+id/iv_feedback_list"
tools:text="1" />
<com.scwang.smart.refresh.layout.SmartRefreshLayout
android:id="@+id/refresh"
android:layout_width="match_parent"

View File

@ -153,7 +153,6 @@
android:id="@+id/cl_two"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingHorizontal="@dimen/dp_10"
android:paddingVertical="@dimen/dp_15"
android:visibility="visible">
@ -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" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recycler_vip"
<com.youth.banner.Banner
android:id="@+id/banner_vip"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_height="@dimen/dp_135"
android:layout_marginTop="@dimen/dp_12"
app:banner_auto_loop="false"
app:banner_infinite_loop="false"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/tv_vip_content1" />
app:layout_constraintTop_toBottomOf="@+id/tv_vip_content1"
/>
</androidx.constraintlayout.widget.ConstraintLayout>
@ -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"

View File

@ -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"
/>
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_title"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_20"
android:layout_marginTop="@dimen/dp_30"
android:layout_marginStart="@dimen/dp_23"
android:layout_marginTop="@dimen/dp_36"
android:layout_marginEnd="@dimen/dp_115"
android:fontFamily="sans-serif-medium"
android:lineSpacingExtra="@dimen/dp_2"
@ -58,8 +58,8 @@
android:id="@+id/tv_content"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginHorizontal="@dimen/dp_20"
android:layout_marginTop="@dimen/dp_15"
android:layout_marginHorizontal="@dimen/dp_23"
android:layout_marginTop="@dimen/dp_25"
android:minLines="4"
android:text="when you sign out, your watch history will not be synced to your account."
android:textColor="@color/avatarAdvert"

View File

@ -0,0 +1,117 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:background="@mipmap/playfair_selected_gradle">
<View
android:layout_width="0dp"
android:layout_height="0dp"
android:background="@drawable/ppi_auto_renderers"
app:layout_constraintBottom_toBottomOf="@+id/cl_one"
app:layout_constraintEnd_toEndOf="@+id/cl_one"
app:layout_constraintStart_toStartOf="@+id/cl_one"
app:layout_constraintTop_toTopOf="@+id/cl_one" />
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/cl_one"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@mipmap/checkbox_layout"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<androidx.appcompat.widget.AppCompatImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_10"
android:layout_marginTop="@dimen/dp_30"
android:src="@mipmap/iv_dialog_text_top"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_title"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_23"
android:layout_marginTop="@dimen/dp_36"
android:layout_marginEnd="@dimen/dp_115"
android:fontFamily="sans-serif-medium"
android:lineSpacingExtra="@dimen/dp_2"
android:minLines="2"
android:text="Turn on Notifications?"
android:textColor="@color/avatarAdvert"
android:textSize="@dimen/sp_20"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_content"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginHorizontal="@dimen/dp_23"
android:layout_marginTop="@dimen/dp_30"
android:minLines="4"
android:text="Get alerts for new episodes and exclusive offers."
android:textColor="@color/avatarAdvert"
android:textSize="@dimen/sp_15"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@id/tv_title" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_go"
android:layout_width="match_parent"
android:layout_height="@dimen/dp_48"
android:layout_marginHorizontal="@dimen/dp_30"
android:layout_marginTop="@dimen/dp_20"
android:layout_marginBottom="@dimen/dp_30"
android:background="@drawable/mc_player"
android:gravity="center"
android:text="Allow"
android:textColor="@color/white"
android:textSize="@dimen/sp_14"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@id/tv_content" />
</androidx.constraintlayout.widget.ConstraintLayout>
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/iv_image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="-45dp"
android:src="@mipmap/menu_unit"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="@+id/cl_one" />
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/iv_image_1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/dp_15"
android:src="@mipmap/iv_notifications_check"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@+id/iv_image" />
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/iv_close"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_10"
android:padding="@dimen/dp_10"
android:src="@mipmap/factory_icon"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/cl_one" />
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@ -0,0 +1,110 @@
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:background="@color/window_bg_color">
<androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:layout_marginBottom="@dimen/dp_80"
android:orientation="horizontal">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1">
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_quality_480"
android:layout_width="@dimen/dp_100"
android:layout_height="@dimen/dp_54"
android:background="@mipmap/iv_quality_bg_on"
android:gravity="center"
android:text="480p"
android:textColor="@color/white"
android:textSize="@dimen/sp_14"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1">
<com.hjq.shape.view.ShapeTextView
android:id="@+id/tv_quality_720"
android:layout_width="@dimen/dp_100"
android:layout_height="@dimen/dp_54"
android:background="@mipmap/iv_quality_bg_off"
android:gravity="center"
android:text="720p"
android:textColor="@color/white"
android:textSize="@dimen/sp_14"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_login_tag"
android:layout_width="wrap_content"
android:layout_height="@dimen/dp_14"
android:background="@drawable/bg_quality_login"
android:drawableStart="@mipmap/iv_quality_login_user"
android:drawablePadding="@dimen/dp_2"
android:gravity="center"
android:paddingHorizontal="@dimen/dp_5"
android:text="Login"
android:textColor="@color/white"
android:textSize="@dimen/sp_8"
app:layout_constraintEnd_toEndOf="@+id/tv_quality_720"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1">
<com.hjq.shape.view.ShapeTextView
android:id="@+id/tv_quality_1080"
android:layout_width="@dimen/dp_100"
android:layout_height="@dimen/dp_54"
android:background="@mipmap/iv_quality_bg_off"
android:gravity="center"
android:text="1080p"
android:textColor="@color/white"
android:textSize="@dimen/sp_14"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_vip_tag"
android:layout_width="wrap_content"
android:layout_height="@dimen/dp_14"
android:background="@drawable/bg_quality_vip"
android:drawableStart="@mipmap/iv_quality_login_vip"
android:drawablePadding="@dimen/dp_2"
android:gravity="center"
android:paddingHorizontal="@dimen/dp_5"
android:text="VIP"
android:textColor="#CF8E02"
android:textSize="@dimen/sp_8"
app:layout_constraintEnd_toEndOf="@+id/tv_quality_1080"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.appcompat.widget.LinearLayoutCompat>
</FrameLayout>

View File

@ -0,0 +1,129 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:background="@mipmap/playfair_selected_gradle">
<View
android:layout_width="0dp"
android:layout_height="0dp"
android:background="@drawable/ppi_auto_renderers"
app:layout_constraintBottom_toBottomOf="@+id/cl_one"
app:layout_constraintEnd_toEndOf="@+id/cl_one"
app:layout_constraintStart_toStartOf="@+id/cl_one"
app:layout_constraintTop_toTopOf="@+id/cl_one" />
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/cl_one"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@mipmap/checkbox_layout"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<androidx.appcompat.widget.AppCompatImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_10"
android:layout_marginTop="@dimen/dp_30"
android:src="@mipmap/iv_dialog_text_top"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_title"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_23"
android:layout_marginTop="@dimen/dp_36"
android:layout_marginEnd="@dimen/dp_115"
android:fontFamily="sans-serif-medium"
android:lineSpacingExtra="@dimen/dp_2"
android:minLines="2"
android:text="Unlock HD VIP Access!"
android:textColor="@color/avatarAdvert"
android:textSize="@dimen/sp_20"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_content"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginHorizontal="@dimen/dp_23"
android:layout_marginTop="@dimen/dp_25"
android:minLines="4"
android:text="Activate vip and enjoy HD video privileges."
android:textColor="@color/avatarAdvert"
android:textSize="@dimen/sp_15"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@id/tv_title" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_cancel"
android:layout_width="0dp"
android:layout_height="@dimen/dp_48"
android:layout_marginStart="@dimen/dp_30"
android:layout_marginTop="@dimen/dp_20"
android:layout_marginEnd="@dimen/dp_5"
android:layout_marginBottom="@dimen/dp_30"
android:background="@drawable/bg_login"
android:gravity="center"
android:text="Later"
android:textColor="#B3B3B3"
android:textSize="@dimen/sp_14"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/tv_go"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tv_content" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_go"
android:layout_width="0dp"
android:layout_height="@dimen/dp_48"
android:layout_marginStart="@dimen/dp_5"
android:layout_marginTop="@dimen/dp_20"
android:layout_marginEnd="@dimen/dp_30"
android:layout_marginBottom="@dimen/dp_30"
android:background="@drawable/mc_player"
android:gravity="center"
android:text="Go"
android:textColor="@color/white"
android:textSize="@dimen/sp_14"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/tv_cancel"
app:layout_constraintTop_toBottomOf="@id/tv_content" />
</androidx.constraintlayout.widget.ConstraintLayout>
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/iv_image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="-45dp"
android:src="@mipmap/iv_dialog_vip_activate_top"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="@+id/cl_one" />
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/iv_close"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_10"
android:padding="@dimen/dp_10"
android:src="@mipmap/factory_icon"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/cl_one" />
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@ -0,0 +1,92 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center_vertical">
<View
android:id="@+id/v_bg"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignTop="@+id/iv_top"
android:layout_alignBottom="@+id/iv_vip"
android:layout_marginTop="@dimen/dp_135"
android:background="@mipmap/iv_dialog_vip_splash_bg" />
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/iv_top"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:background="@mipmap/iv_dialog_vip_splash_top" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/iv_top"
android:layout_centerHorizontal="true"
android:layout_marginStart="@dimen/dp_20"
android:layout_marginTop="@dimen/dp_30"
android:layout_marginEnd="@dimen/dp_115"
android:fontFamily="sans-serif-medium"
android:lineSpacingExtra="@dimen/dp_2"
android:singleLine="true"
android:textStyle="bold"
android:text="Unlock VIP Privileges!"
android:textColor="@color/white"
android:textSize="@dimen/sp_16" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_content"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/tv_title"
android:layout_marginHorizontal="@dimen/dp_20"
android:layout_marginTop="@dimen/dp_15"
android:ellipsize="end"
android:gravity="center"
android:minLines="2"
android:text="Enjoy ad-free streaming, early access, and exclusive content!"
android:textColor="#C5C5C5"
android:textSize="@dimen/sp_14" />
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/iv_vip"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/tv_content"
android:layout_centerHorizontal="true"
android:layout_marginHorizontal="@dimen/dp_20"
android:layout_marginTop="@dimen/dp_15"
android:paddingBottom="@dimen/dp_22"
android:src="@mipmap/iv_dialog_vip_splash_vip" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_to_store"
android:layout_width="match_parent"
android:layout_height="@dimen/dp_48"
android:layout_below="@+id/v_bg"
android:layout_marginHorizontal="@dimen/dp_30"
android:layout_marginTop="@dimen/dp_8"
android:layout_marginBottom="@dimen/dp_13"
android:background="@mipmap/iv_dialog_vip_splash_onclick_bg"
android:fontFamily="sans-serif-medium"
android:gravity="center"
android:text="Unlock VIP Benefits"
android:textColor="#005D48"
android:textSize="@dimen/sp_14" />
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/iv_close"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/tv_to_store"
android:layout_centerHorizontal="true"
android:padding="@dimen/dp_10"
android:src="@mipmap/factory_icon" />
</RelativeLayout>

View File

@ -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" />

View File

@ -14,14 +14,23 @@
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/ic_icon_banner"
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="centerCrop"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toTopOf="parent" />
android:layout_height="match_parent">
<com.veloria.now.shortapp.rewards.BannerPlayerView
android:id="@+id/banner_player"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/ic_icon_banner"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="centerCrop" />
</FrameLayout>
</androidx.cardview.widget.CardView>
<androidx.appcompat.widget.AppCompatTextView

View File

@ -1,9 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="@dimen/dp_330"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/dp_12"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/rl_layout"
android:background="@mipmap/iv_store_vip_bg_1">
<TextView
@ -66,7 +66,7 @@
android:id="@+id/tv_select"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_18"
android:layout_marginTop="@dimen/dp_17"
android:background="@drawable/bg_coin_left"
android:gravity="center"
android:paddingHorizontal="@dimen/dp_8"

View File

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.media3.ui.PlayerView
android:id="@+id/player_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:controller_layout_id="@layout/layout_player_recommend_controller"
app:resize_mode="zoom" />
</FrameLayout>

View File

@ -38,39 +38,16 @@
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<androidx.cardview.widget.CardView
android:id="@+id/cardView"
android:layout_width="@dimen/dp_190"
android:layout_height="@dimen/dp_260"
android:layout_marginTop="@dimen/dp_19"
android:background="@color/transparent"
app:cardCornerRadius="@dimen/dp_8"
app:cardElevation="0dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/tv_title">
<androidx.media3.ui.PlayerView
android:id="@+id/recommend_player_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:controller_layout_id="@layout/layout_player_recommend_controller"
app:resize_mode="zoom" />
</androidx.cardview.widget.CardView>
<com.youth.banner.Banner
<com.zhpan.bannerview.BannerViewPager
android:id="@+id/banner_recommend"
android:layout_width="match_parent"
android:layout_height="@dimen/dp_340"
android:layout_marginTop="@dimen/dp_19"
android:layout_marginHorizontal="@dimen/dp_23"
android:clipChildren="false"
android:clipToPadding="false"
app:banner_auto_loop="false"
app:bvp_round_corner="@dimen/dp_13"
app:bvp_auto_play="false"
app:bvp_can_loop="false"
app:bvp_indicator_radius="0dp"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toBottomOf="@id/tv_title" />

View File

@ -46,16 +46,16 @@
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recycler_vip"
<com.youth.banner.Banner
android:id="@+id/banner_vip"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_15"
android:layout_height="@dimen/dp_135"
android:layout_marginTop="@dimen/dp_15"
app:banner_auto_loop="false"
app:banner_infinite_loop="false"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/tv_coins_text" />
app:layout_constraintTop_toBottomOf="@+id/tv_coins_text"
/>
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_buy_hint"
@ -71,7 +71,7 @@
android:textColor="@color/white80"
android:textSize="@dimen/sp_12"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/recycler_vip" />
app:layout_constraintTop_toBottomOf="@+id/banner_vip" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recycler_coin"

View File

@ -11,7 +11,7 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginTop="@dimen/dp_20"
android:layout_marginTop="@dimen/dp_60"
android:layout_marginEnd="8dp"
android:text="@string/home_addictive_shorts_await"
android:textAlignment="center"

View File

@ -10,14 +10,14 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="centerCrop" />
<ScrollView
android:layout_width="0dp"
android:layout_height="0dp"
android:visibility="invisible"
android:orientation="horizontal"
android:background="#999C19"
android:paddingLeft="57dp">
</ScrollView>
<ScrollView
android:layout_width="0dp"
android:layout_height="0dp"
android:background="#999C19"
android:orientation="horizontal"
android:paddingLeft="57dp"
android:visibility="invisible"></ScrollView>
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/iv_back_controller"
@ -27,21 +27,22 @@ android:paddingLeft="57dp">
android:layout_marginTop="@dimen/dp_40"
android:padding="@dimen/dp_10"
android:src="@mipmap/right_dimens" />
<ScrollView
android:layout_height="0dp"
android:orientation="horizontal"
android:paddingLeft="80dp"
android:layout_width="0dp"
android:background="#1C03E5">
<LinearLayout
android:paddingBottom="37dp"
android:layout_width="0dp"
android:layout_height="0dp"
android:background="#D3A2CF"
android:visibility="invisible"
android:orientation="horizontal">
</LinearLayout>
</ScrollView>
<ScrollView
android:layout_width="0dp"
android:layout_height="0dp"
android:background="#1C03E5"
android:orientation="horizontal"
android:paddingLeft="80dp">
<LinearLayout
android:layout_width="0dp"
android:layout_height="0dp"
android:background="#D3A2CF"
android:orientation="horizontal"
android:paddingBottom="37dp"
android:visibility="invisible"></LinearLayout>
</ScrollView>
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_player_title"
@ -56,21 +57,23 @@ android:orientation="horizontal">
android:singleLine="true"
android:textColor="@color/white"
android:textSize="@dimen/sp_16" />
<EditText
android:text="enumeratedRtmpdh"
android:background="#094A0F"
android:layout_width="0dp"
android:layout_height="0dp"
android:paddingBottom="91dp"
android:visibility="visible"
android:hint="knockoutCovariance"
android:textSize="17sp"/>
<EditText
android:layout_width="0dp"
android:layout_height="0dp"
android:background="#094A0F"
android:hint="knockoutCovariance"
android:paddingBottom="91dp"
android:text="enumeratedRtmpdh"
android:textSize="17sp"
android:visibility="visible" />
<LinearLayout
android:id="@+id/ll_episode"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_toLeftOf="@+id/tv_quality"
android:layout_alignParentBottom="true"
android:layout_marginHorizontal="@dimen/dp_15"
android:layout_marginBottom="@dimen/dp_15"
@ -89,13 +92,13 @@ android:textSize="17sp"/>
android:paddingVertical="@dimen/dp_5"
android:textColor="@color/white"
android:textSize="@dimen/sp_13" />
<ScrollView
android:visibility="visible"
android:layout_height="0dp"
android:paddingLeft="95dp"
android:layout_width="0dp"
android:orientation="vertical">
</ScrollView>
<ScrollView
android:layout_width="0dp"
android:layout_height="0dp"
android:orientation="vertical"
android:paddingLeft="95dp"
android:visibility="visible"></ScrollView>
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_episode_player_all"
@ -110,14 +113,29 @@ android:orientation="vertical">
android:text="All 58 Episodes"
android:textColor="@color/utilsUtils"
android:textSize="@dimen/sp_13" />
<View
android:layout_width="0dp"
android:layout_height="0dp"
android:visibility="visible"
android:paddingTop="6dp"/>
<View
android:layout_width="0dp"
android:layout_height="0dp"
android:paddingTop="6dp"
android:visibility="visible" />
</LinearLayout>
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_quality"
android:layout_width="@dimen/dp_65"
android:layout_height="wrap_content"
android:layout_alignTop="@+id/ll_episode"
android:layout_alignBottom="@+id/ll_episode"
android:layout_alignParentEnd="true"
android:layout_marginEnd="@dimen/dp_15"
android:text="540P"
android:textColor="@color/white"
android:gravity="center"
android:background="@drawable/t_lock"
/>
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_player_seek_time"
android:layout_width="wrap_content"
@ -130,21 +148,22 @@ android:paddingTop="6dp"/>
android:textSize="@dimen/sp_12"
android:visibility="invisible"
tools:text="00:00/02:24" />
<ScrollView
android:paddingBottom="53dp"
android:background="#AF907C"
android:layout_width="127dp"
android:visibility="gone"
android:orientation="horizontal"
android:layout_height="7dp">
<LinearLayout
android:paddingLeft="37dp"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_width="match_parent"
android:visibility="gone">
</LinearLayout>
</ScrollView>
<ScrollView
android:layout_width="127dp"
android:layout_height="7dp"
android:background="#AF907C"
android:orientation="horizontal"
android:paddingBottom="53dp"
android:visibility="gone">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingLeft="37dp"
android:visibility="gone"></LinearLayout>
</ScrollView>
<androidx.appcompat.widget.LinearLayoutCompat
android:id="@+id/ll_bottom_controller"

Binary file not shown.

After

Width:  |  Height:  |  Size: 109 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 166 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 545 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 133 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 389 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 643 B

View File

@ -42,7 +42,13 @@
<string name="feedback_history">Feedback History</string>
<string name="feedback_detail">Feedback Detail</string>
<string name="unlimited_access_to_all_series_for_1">· Unlimited access to all series for 1 week (No Ads).\n· The donate coins will expire in 8 days.\n· Auto renew, cancel anytime.</string>
<string name="unlimited_access_to_all_series_for_1_br"><![CDATA[· Unlimited access to all series for 1 week (No Ads).<br>· The donate coins will expire in 8 days.<br>· Auto renew, cancel anytime.]]></string>
<string name="unlimited_access_to_all_series_for_1_br">
<![CDATA[
· Unlimited access to all series for <font color="#05CEA0">1 ##</font> (No Ads).<br>
· The donate coins will expire in <font color="#05CEA0">#1# days</font>.<br>
· Auto renew, cancel anytime.
]]>
</string>
<string name="your_coins">Your Coins:</string>
<string name="language">Language</string>
<string name="welcome_to_veloria">Welcome to Veloria</string>
@ -60,4 +66,6 @@
<string name="ve_google_pay_error">Google Pay Error</string>
<string name="ve_google_pay_canceled">Google Pay Canceled</string>
<string name="default_notification_channel_id">veloriaapp</string>
</resources>

View File

@ -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
}

View File

@ -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
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

View File

@ -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" }

View File

@ -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") }
}
}