diff --git a/app/build.gradle.kts b/app/build.gradle.kts index fcaad7d..26a9693 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -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) + } \ No newline at end of file diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro index 60264ca..3a3c09f 100644 --- a/app/proguard-rules.pro +++ b/app/proguard-rules.pro @@ -283,4 +283,38 @@ -keep class com.android.billingclient.api.** { *; } --keep class com.gytv.app.ui.data.**{ *; } \ No newline at end of file +-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.** { *; } \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 49d61d6..352491c 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -9,7 +9,6 @@ - - + - - + + - + @@ -89,6 +88,23 @@ + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/com/veloria/now/shortapp/civil/JActivityAdapter.kt b/app/src/main/java/com/veloria/now/shortapp/civil/JActivityAdapter.kt index a7f748b..b29055e 100644 --- a/app/src/main/java/com/veloria/now/shortapp/civil/JActivityAdapter.kt +++ b/app/src/main/java/com/veloria/now/shortapp/civil/JActivityAdapter.kt @@ -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" + } diff --git a/app/src/main/java/com/veloria/now/shortapp/civil/REVideoAdapter.kt b/app/src/main/java/com/veloria/now/shortapp/civil/REVideoAdapter.kt index 569c908..11f4ef7 100644 --- a/app/src/main/java/com/veloria/now/shortapp/civil/REVideoAdapter.kt +++ b/app/src/main/java/com/veloria/now/shortapp/civil/REVideoAdapter.kt @@ -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 } \ No newline at end of file diff --git a/app/src/main/java/com/veloria/now/shortapp/civil/TranslationHelper.kt b/app/src/main/java/com/veloria/now/shortapp/civil/TranslationHelper.kt index 9ec7408..f3a4650 100644 --- a/app/src/main/java/com/veloria/now/shortapp/civil/TranslationHelper.kt +++ b/app/src/main/java/com/veloria/now/shortapp/civil/TranslationHelper.kt @@ -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) + } } \ No newline at end of file diff --git a/app/src/main/java/com/veloria/now/shortapp/civil/VeNotificationHelper.kt b/app/src/main/java/com/veloria/now/shortapp/civil/VeNotificationHelper.kt new file mode 100644 index 0000000..3db7d0a --- /dev/null +++ b/app/src/main/java/com/veloria/now/shortapp/civil/VeNotificationHelper.kt @@ -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() + } + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/veloria/now/shortapp/highbits/BIFBase.kt b/app/src/main/java/com/veloria/now/shortapp/highbits/BIFBase.kt index 3b17649..68757a8 100644 --- a/app/src/main/java/com/veloria/now/shortapp/highbits/BIFBase.kt +++ b/app/src/main/java/com/veloria/now/shortapp/highbits/BIFBase.kt @@ -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> + @GET("getRevolutions") + fun getRevolutions( + ): Call> + + @POST("customer/uploadNoticeStatus") + fun setUploadNoticeStatus( + @Body veUploadNotificationBean: VeUploadNotificationBean + ): Call> + + @FormUrlEncoded + @POST("customer/firebaseToken") + fun setFirebaseToken( + @Field("fcm_token") fcm_token: String + ): Call> + + @POST("openNotify") + fun setOpenNotify( + ): Call> + + @FormUrlEncoded + @POST("message/sendReport") + fun setSendReport( + @Field("message_id") message_id: String, + @Field("title") title: String + ): Call> } \ No newline at end of file diff --git a/app/src/main/java/com/veloria/now/shortapp/highbits/QGift.kt b/app/src/main/java/com/veloria/now/shortapp/highbits/QGift.kt index ac1efa1..14d8cd3 100644 --- a/app/src/main/java/com/veloria/now/shortapp/highbits/QGift.kt +++ b/app/src/main/java/com/veloria/now/shortapp/highbits/QGift.kt @@ -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 = mutableListOf() +private var seekAnimatingList: MutableList = mutableListOf() + @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 = mutableListOf() -@Volatile - var visibleImgWorkStr: String = "yuvplane" -@Volatile - var requestLeft_mark: Int = 5228 + @Volatile + var durationBuy_Array: MutableList = mutableListOf() + @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 = mutableListOf() - userL.add("reel") - userL.add("convert") - while (userL.size > 44) { break } + var userL: MutableList = mutableListOf() + 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 handleData(apiCall: suspend () -> TStore): LiveData>> { + fun handleData(apiCall: suspend () -> TStore): LiveData>> { -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 = mutableMapOf() - 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 = mutableMapOf() + 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() + this.durationBuy_Array = mutableListOf() - 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() 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 = mutableMapOf() - 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 = mutableMapOf() + 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() .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() } } - - public fun layoutListenerLoadFavoriteResponseProgress() :Long { - var paddingForeground:Int = 6984 - var playerResource = 3187.0 - var playAgreement:MutableList = mutableListOf() - var activityGradle:MutableMap = mutableMapOf() - 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 = mutableListOf() + var activityGradle: MutableMap = mutableMapOf() + var unrefcountHeavyLoudspeaker: Long = 6413L + paddingForeground += 5851 + playerResource -= 1555.0 -} + return unrefcountHeavyLoudspeaker + + } -fun getUserAgent(): String { + fun getUserAgent(): String { -var kmeansTesselate:Long = this.layoutListenerLoadFavoriteResponseProgress() + var kmeansTesselate: Long = this.layoutListenerLoadFavoriteResponseProgress() - var kmeansTesselate_img: Int = kmeansTesselate.toInt() - if (kmeansTesselate > 53L) { - println(kmeansTesselate) - } + var kmeansTesselate_img: Int = kmeansTesselate.toInt() + if (kmeansTesselate > 53L) { + println(kmeansTesselate) + } -println(kmeansTesselate) + println(kmeansTesselate) - var progressr:Int = 8219 + var progressr: Int = 8219 - return System.getProperty(RGJCollectionSurfaceAfterRecent.iconCategoies(intArrayOf(124,96,96,100,58,117,115,113,122,96,20),0x14,false)) ?: "" + return System.getProperty( + RGJCollectionSurfaceAfterRecent.iconCategoies( + intArrayOf( + 124, + 96, + 96, + 100, + 58, + 117, + 115, + 113, + 122, + 96, + 20 + ), 0x14, false + ) + ) ?: "" } fun

build(serviceClass: Class

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