Compare commits

..

3 Commits

Author SHA1 Message Date
yuyl
e1dd2d7497 veloria three 6.25 commit 2025-06-25 09:42:04 +08:00
yuyl
28b91d8412 veloria three 6.17 commit 2025-06-17 14:41:03 +08:00
yuyl
a004e34e05 veloria three 6.16 commit 2025-06-16 17:33:44 +08:00
124 changed files with 6801 additions and 2675 deletions

View File

@ -4,6 +4,9 @@ import java.util.Date
plugins {
alias(libs.plugins.android.application)
alias(libs.plugins.kotlin.android)
id("com.google.gms.google-services")
id("com.google.firebase.crashlytics")
id("com.google.firebase.firebase-perf")
}
android {
@ -14,8 +17,8 @@ android {
applicationId = "com.veloria.now.shortapp"
minSdk = 24
targetSdk = 34
versionCode = 5
versionName = "1.0.4"
versionCode = 8
versionName = "1.0.6"
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
}
@ -98,9 +101,11 @@ dependencies {
implementation(libs.kotlinx.coroutines.android)
implementation(libs.baserecyclerviewadapterhelper4)
// banner
implementation(libs.banner)
implementation(libs.glide)
implementation(libs.bannerviewpager)
//utils
implementation(libs.greenrobot.eventbus)
@ -134,4 +139,13 @@ dependencies {
//billing
implementation(libs.billing)
//google
implementation(platform("com.google.firebase:firebase-bom:32.3.1"))
implementation(libs.firebase.messaging.ktx)
implementation(libs.androidx.work.runtime.ktx)
implementation(libs.firebase.analytics.ktx)
implementation(libs.firebase.crashlytics)
implementation(libs.firebase.perf)
implementation(libs.flexbox)
}

View File

@ -284,3 +284,40 @@
-keep class com.android.billingclient.api.** { *; }
-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.** { *; }
-keep class androidx.recyclerview.widget.**{*;}
-keep class androidx.viewpager2.widget.**{*;}

View File

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

View File

@ -77,7 +77,7 @@ object JActivityAdapter {
const val FEEDBACK_URL_INDEX: String = "https://campaign.qjwl168.com/pages/leave/index"
const val FEEDBACK_URL_LIST: String = "https://campaign.qjwl168.com/pages/leave/list"
const val FEEDBACK_URL_DETAIL: String = "https://campaign.qjwl168.com/pages/leave/detail"
const val REWARDS_URL_DETAIL: String = "https://campaign.qjwl168.com/pages/luckydraw/index"
const val REWARDS_URL_DETAIL: String = "https://campaign.qjwl168.com/pages/reward/theme4"
const val FEEDBACK_REQUEST_PERMISSIONS_PHOTO = "FEEDBACK_REQUEST_PERMISSIONS_PHOTO"
const val FEEDBACK_REQUEST_PERMISSIONS_PHOTO_DETAIL = "FEEDBACK_REQUEST_PERMISSIONS_PHOTO_DETAIL"
@ -93,6 +93,7 @@ object JActivityAdapter {
const val HOME_USER_REFRESH = "HOME_USER_REFRESH"
const val HOME_REFRESH_ME = "HOME_REFRESH_ME"
const val HOME_LOGIN = "HOME_LOGIN"
const val REWARD_LOGIN = "REWARD_LOGIN"
const val HOME_LEAVE_APP = "HOME_LEAVE_APP"
const val HOME_ON_LINE = "HOME_ON_LINE"
const val HOME_DDL_URL = "HOME_DDL_URL"
@ -101,9 +102,23 @@ 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_VERSION_CONTROL_TIME =
"ACCOUNT_VERSION_CONTROL_TIME"
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"
const val ACCOUNT_WEB_NOTIFICATION = "ACCOUNT_WEB_NOTIFICATION"
}

View File

@ -6,6 +6,7 @@ import android.os.Handler
import android.os.Looper
import android.widget.Toast
import androidx.annotation.RequiresApi
import com.veloria.now.shortapp.civil.JActivityAdapter.ONE_DAY_IN_MILLIS_DAY
import com.veloria.now.shortapp.newsletter.XNBackground
import java.text.SimpleDateFormat
import java.time.Duration
@ -620,3 +621,27 @@ fun formatNumber(num: Int): String {
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
}
fun shouldVersionControl(): Boolean {
val lastPopupTime = RYAction.getMMKV().getLong(JActivityAdapter.ACCOUNT_VERSION_CONTROL_TIME, 0)
val currentTime = System.currentTimeMillis()
return currentTime - lastPopupTime > ONE_DAY_IN_MILLIS_DAY
}

View File

@ -474,19 +474,12 @@ object RYAction {
fun saveOrder(payReq: VePayBean) {
val list = getOrder()
if (!list.contains(payReq)) {
if (!list.contains(payReq) && payReq.order_code.isNotEmpty()) {
list.add(payReq)
}
val toJson = Gson().toJson(list)
getMMKV().putString(JActivityAdapter.PAY_ORDER_PAY_BEAN, toJson)
}
fun removeOrder(payReq: VePayBean?) {
val updatedList = getOrder().filterNot { it == payReq }
getMMKV().putString(
JActivityAdapter.PAY_ORDER_PAY_BEAN,
Gson().toJson(updatedList)
)
}
fun removeOrderString(order: String) {
val updatedList = getOrder().filterNot { it.order_code == order }

View File

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

View File

@ -0,0 +1,41 @@
package com.veloria.now.shortapp.civil
import android.app.Activity
import android.app.NotificationManager
import android.content.Context
import android.content.Intent
import android.net.Uri
import android.os.Build
object VeNotificationHelper {
const val VE_NOTIFICATION_REQUEST_CODE: Int = 4001
fun 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()
}
}
fun setNotification(context: Activity) {
val intent = Intent()
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
intent.action = "android.settings.APP_NOTIFICATION_SETTINGS"
intent.putExtra(
"android.provider.extra.APP_PACKAGE",
YFHome.getPackageName()
)
context.startActivityForResult(intent, VE_NOTIFICATION_REQUEST_CODE)
} else {
intent.action = "android.settings.APPLICATION_DETAILS_SETTINGS"
intent.data =
Uri.fromParts("package", YFHome.getPackageName(), null)
context.startActivityForResult(intent, VE_NOTIFICATION_REQUEST_CODE)
}
}
}

View File

@ -20,16 +20,18 @@ import com.veloria.now.shortapp.newsletter.XNBackground
import java.net.NetworkInterface
import java.nio.charset.StandardCharsets
import java.util.regex.Pattern
import kotlin.math.min
import kotlin.math.max
import kotlin.math.min
@Volatile
private var wightFailure_flag: Long = 4498L
@Volatile
private var lockArrangementTitle_map: MutableMap<String, String> = mutableMapOf<String, String>()
@Volatile
private var themesFormat_str: String = "greatest"
@Volatile
private var constantsNameMax: Double = 8460.0
@ -65,10 +67,13 @@ internal object SCloseSeekString {
object YFHome {
@Volatile
var leftItemsString: String = "reos"
@Volatile
var playCutString: String = "css"
@Volatile
var topModityTag: Long = 7106L
@Volatile
var trendLogo_string: String = "upcall"
@ -76,7 +81,11 @@ object YFHome {
private const val changeRecord = "SystemUtlis"
public fun detailStoreGroupDuring(lockUtils: MutableList<Boolean>, correctPath: MutableMap<String,Double>, applicationDraw: MutableMap<String,Double>) :MutableList<Boolean> {
public fun detailStoreGroupDuring(
lockUtils: MutableList<Boolean>,
correctPath: MutableMap<String, Double>,
applicationDraw: MutableMap<String, Double>
): MutableList<Boolean> {
var rulesRegister__ = "rabbit"
var marqueeFailure: Int = 6673
var window_q8Delete_tf = "blackout"
@ -84,13 +93,17 @@ object YFHome {
println("font: " + rulesRegister__)
for (i in 0..min(1, rulesRegister__.length - 1)) {
if (i < plateauQmblPiecewise.size) {
plateauQmblPiecewise.add(i,if (rulesRegister__.get(i).toString() == "true") true else false)
plateauQmblPiecewise.add(
i,
if (rulesRegister__.get(i).toString() == "true") true else false
)
}
println(rulesRegister__.get(i))
}
marqueeFailure *= 5339
var example_len1 = plateauQmblPiecewise.size
var manual_v:Int = min(kotlin.random.Random.nextInt(49), 1) % max(1, plateauQmblPiecewise.size)
var manual_v: Int =
min(kotlin.random.Random.nextInt(49), 1) % max(1, plateauQmblPiecewise.size)
plateauQmblPiecewise.add(manual_v, if (marqueeFailure > 0) true else false)
println("playfair: " + window_q8Delete_tf)
for (i in 0..min(1, window_q8Delete_tf.length - 1)) {
@ -107,7 +120,11 @@ object YFHome {
fun isNetworkConnected(): Boolean {
var exrdsp_r = mutableListOf<Boolean>()
var sameNbio:MutableList<Boolean> = this.detailStoreGroupDuring(exrdsp_r,mutableMapOf<String,Double>(),mutableMapOf<String,Double>())
var sameNbio: MutableList<Boolean> = this.detailStoreGroupDuring(
exrdsp_r,
mutableMapOf<String, Double>(),
mutableMapOf<String, Double>()
)
for (obj5 in sameNbio) {
println(obj5)
@ -118,14 +135,17 @@ println(sameNbio)
var wightQ: Double = 597.0
while (wightQ < 11.0) { break }
while (wightQ < 11.0) {
break
}
try {
var agreement0: MutableList<Float> = mutableListOf<Float>()
agreement0.add(328.0f)
agreement0.add(789.0f)
if (agreement0.size > 80) {}
if (agreement0.size > 80) {
}
println(agreement0)
@ -134,18 +154,24 @@ println(sameNbio)
.toList()
.filter {
var justz: Boolean = false
while (justz) { break }
while (justz) {
break
}
println(justz)
var context3: Int = 8117
if (context3 < 76) {}
if (context3 < 76) {
}
it.isUp }
it.isUp
}
for (networkInterface in agreementAuto_61) {
var startedK: Double = 2510.0
while (startedK == 163.0) { break }
while (startedK == 163.0) {
break
}
println(startedK)
@ -156,11 +182,16 @@ println(sameNbio)
line9.put("qintfloat", "anonymous")
line9.put("basics", "jsimddct")
line9.put("exit", "jstype")
while (line9.size > 178) { break }
while (line9.size > 178) {
break
}
println(line9)
if (backgroundRecommend != null && !errorLocationAlertDownModuleWhich(backgroundRecommend)) {
if (backgroundRecommend != null && !errorLocationAlertDownModuleWhich(
backgroundRecommend
)
) {
var adapterx: Long = 6989L
@ -182,7 +213,6 @@ println(sameNbio)
}
public fun describeNothingScreenMedia(placePost: Long): String {
var nameAdapter: MutableMap<String, Double> = mutableMapOf<String, Double>()
var release_14Set: MutableList<String> = mutableListOf<String>()
@ -218,7 +248,9 @@ println(strippedArped)
var loggera: Boolean = false
while (loggera) { break }
while (loggera) {
break
}
this.leftItemsString = "dcpred"
@ -232,12 +264,14 @@ this.leftItemsString = "dcpred"
var radiusStore = ""
var stringsT: String = "colors"
if (stringsT.length > 121) {}
if (stringsT.length > 121) {
}
try {
var d_countu: Double = 2702.0
if (d_countu <= 196.0) {}
if (d_countu <= 196.0) {
}
val imageShare = context.packageManager.getPackageInfo(context.packageName, 0)
@ -248,7 +282,8 @@ this.leftItemsString = "dcpred"
radiusStore = imageShare.versionName.toString()
} catch (e: PackageManager.NameNotFoundException) {
var smart2: Long = 8200L
if (smart2 < 129L) {}
if (smart2 < 129L) {
}
println(smart2)
@ -292,7 +327,8 @@ println(betweenBlit)
var jobT: MutableList<String> = mutableListOf<String>()
jobT.add("anandan")
jobT.add("free")
if (jobT.contains("sponsored")) {}
if (jobT.contains("sponsored")) {
}
var coins8 = ""
@ -303,13 +339,15 @@ println(betweenBlit)
var androidb: MutableMap<String, Float> = mutableMapOf<String, Float>()
androidb.put("loudspeaker", 109.0f)
androidb.put("vaacalculation", 253.0f)
if (androidb.size > 95) {}
if (androidb.size > 95) {
}
coins8 = XNBackground.instance.packageName
} catch (e: PackageManager.NameNotFoundException) {
var languagek: Long = 5237L
if (languagek <= 99L) {}
if (languagek <= 99L) {
}
println(languagek)
@ -318,6 +356,16 @@ println(betweenBlit)
return coins8
}
fun getPackageVersionCode(context: Context): Int {
var versionCode = 0
try {
val packageInfo = context.packageManager.getPackageInfo(context.packageName, 0)
versionCode = packageInfo.versionCode
} catch (e: PackageManager.NameNotFoundException) {
e.printStackTrace()
}
return versionCode
}
public fun supportIndexDateMain(fragmentsRenderers: MutableList<Int>): Long {
var exampleFont: Float = 1201.0f
@ -350,25 +398,31 @@ println(dcadecWdlfcn)
var b_titlez: MutableMap<String, Long> = mutableMapOf<String, Long>()
b_titlez.put("termset", 300L)
b_titlez.put("collating", 768L)
while (b_titlez.size > 187) { break }
while (b_titlez.size > 187) {
break
}
val interval_qvCurrent = context.getSystemService(Context.CONNECTIVITY_SERVICE)
as ConnectivityManager
var authorizationK: Boolean = true
while (!authorizationK) { break }
while (!authorizationK) {
break
}
val icont = interval_qvCurrent.activeNetwork ?: return false
var painte: String = "pictype"
while (painte.length > 145) { break }
while (painte.length > 145) {
break
}
println(painte)
val storeFormat = interval_qvCurrent.getNetworkCapabilities(icont) ?: return false
var priceA: String = "byteword"
if (priceA.length > 76) {}
if (priceA.length > 76) {
}
@ -377,7 +431,10 @@ println(dcadecWdlfcn)
}
public fun toneTransparentNotifyAnimationTitleParcel(extractionBackground: Long, seekPosition: MutableMap<String,Boolean>) :Float {
public fun toneTransparentNotifyAnimationTitleParcel(
extractionBackground: Long,
seekPosition: MutableMap<String, Boolean>
): Float {
var pagePrice: MutableList<String> = mutableListOf<String>()
var detachedDescription_d: Int = 6444
var videoHome = 2818L
@ -392,7 +449,8 @@ println(dcadecWdlfcn)
private fun errorLocationAlertDownModuleWhich(address: ByteArray): Boolean {
var acronymsDitance = this.toneTransparentNotifyAnimationTitleParcel(2585L,mutableMapOf<String,Boolean>())
var acronymsDitance =
this.toneTransparentNotifyAnimationTitleParcel(2585L, mutableMapOf<String, Boolean>())
var acronymsDitance_drama: Double = acronymsDitance.toDouble()
println(acronymsDitance)
@ -401,7 +459,8 @@ println(acronymsDitance)
var itemX: Boolean = true
if (!itemX) {}
if (!itemX) {
}
return address.size == 6 && address[0] == 0x00.toByte() && address[1] == 0x00.toByte() && address[2] == 0x5E.toByte()
@ -438,26 +497,29 @@ println(pulsesbitsDecouple)
pathI.put("rprobe", 391.0)
pathI.put("analyzer", 649.0)
pathI.put("test", 485.0)
if (pathI.size > 122) {}
if (pathI.size > 122) {
}
var coinsP = 1
var itemN: Int = 126
while (itemN < 106) { break }
while (itemN < 106) {
break
}
try {
var allK: Int = 3404
if (allK >= 149) {}
if (allK >= 149) {
}
println(allK)
val beanb = context.packageName
var covere: Int = 2617
while (covere > 122) { break }
while (covere > 122) {
break
}
coinsP = context.packageManager
@ -467,7 +529,8 @@ println(pulsesbitsDecouple)
auto_gaM.put("period", 700)
auto_gaM.put("starting", 207)
auto_gaM.put("variancexh", 558)
if (auto_gaM.get("5") != null) {}
if (auto_gaM.get("5") != null) {
}
e.printStackTrace()
@ -477,7 +540,11 @@ println(pulsesbitsDecouple)
}
public fun emptyWorkPriceWhite(contextWork: Float, loadPlaying: Boolean, additionTransparent: Int) :Boolean {
public fun emptyWorkPriceWhite(
contextWork: Float,
loadPlaying: Boolean,
additionTransparent: Int
): Boolean {
var buildOpen: Double = 9006.0
var secondsMenu = mutableListOf<Double>()
var bottomPlay: Float = 3149.0f
@ -504,13 +571,16 @@ println(textattrVideostream)
var mmkvr: Boolean = true
while (mmkvr) { break }
while (mmkvr) {
break
}
println(mmkvr)
val normalTag = "https://www.youtube.com/channel/$channelId"
var recordv: String = "scalable"
if (recordv == "u") {}
if (recordv == "u") {
}
val drawNameBackup = Intent(Intent.ACTION_VIEW, Uri.parse(normalTag))
@ -521,7 +591,9 @@ println(textattrVideostream)
verticalj.add(30.0)
verticalj.add(479.0)
verticalj.add(101.0)
while (verticalj.size > 101) { break }
while (verticalj.size > 101) {
break
}
drawNameBackup.putExtra(
@ -533,7 +605,8 @@ println(textattrVideostream)
val collectionsW: PackageManager = context.getPackageManager()
var animating6: Boolean = true
if (!animating6) {}
if (!animating6) {
}
val paddingb = collectionsW.queryIntentActivities(drawNameBackup, 0)
@ -547,7 +620,8 @@ println(textattrVideostream)
variableH.put("state", "best")
variableH.put("intlist", "bypass")
variableH.put("swapyvbuffer", "scheduled")
if (variableH.get("P") != null) {}
if (variableH.get("P") != null) {
}
println(variableH)
@ -562,7 +636,8 @@ println(textattrVideostream)
Uri.parse("market://details?id=com.google.android.youtube")
)
var androidk: Boolean = true
if (androidk) {}
if (androidk) {
}
println(androidk)
@ -572,7 +647,11 @@ println(textattrVideostream)
}
public fun surfaceWatchSuccessTourist(moreArrows: Int, adapterGradlew: Float, time_kHandler: Boolean) :Int {
public fun surfaceWatchSuccessTourist(
moreArrows: Int,
adapterGradlew: Float,
time_kHandler: Boolean
): Int {
var freeModel: MutableList<String> = mutableListOf<String>()
println(freeModel)
var attrsChoose = 6408.0f
@ -599,14 +678,16 @@ println(launchFiel)
var lineV: String = "dispenser"
if (lineV == "C") {}
if (lineV == "C") {
}
var gnewsz: MutableMap<String, Double> = mutableMapOf<String, Double>()
var min_cwt: MutableList<Double> = mutableListOf<Double>()
min_cwt.add(814.0)
min_cwt.add(600.0)
if (min_cwt.size > 142) {}
if (min_cwt.size > 142) {
}
println(min_cwt)
@ -623,18 +704,22 @@ println(launchFiel)
gnewsz.put("prods", 152.0)
var agentG: Double = 7352.0
while (agentG > 137.0) { break }
while (agentG > 137.0) {
break
}
println(agentG)
gnewsz.put("excluding", 331.0)
var adapteri: Int = 6382
if (adapteri == 28) {}
if (adapteri == 28) {
}
while (gnewsz.size > 80) {
var modelf: Int = 2101
if (modelf <= 75) {}
if (modelf <= 75) {
}
println(modelf)
@ -644,7 +729,9 @@ println(launchFiel)
val register_xColors = Uri.parse(url)
var bodyloadBM: Long = 9317L
while (bodyloadBM == 115L) { break }
while (bodyloadBM == 115L) {
break
}
println(bodyloadBM)
@ -665,7 +752,6 @@ println(launchFiel)
}
public fun submitWhichFactor(stylesBuilder: Int, verticalMenu: Long): String {
var clientFooter: Boolean = false
println(clientFooter)
@ -705,22 +791,27 @@ println(condensedAtch)
var camerau: Double = 4727.0
if (camerau == 4.0) {}
if (camerau == 4.0) {
}
val description_kre = Bitmap.createBitmap(bitmap.width, bitmap.height, Bitmap.Config.ARGB_8888)
val description_kre =
Bitmap.createBitmap(bitmap.width, bitmap.height, Bitmap.Config.ARGB_8888)
var currentA: Int = 5508
if (currentA == 128) {}
if (currentA == 128) {
}
val listenerFree = Canvas(description_kre)
var rewardsl: Long = 8716L
if (rewardsl >= 188L) {}
if (rewardsl >= 188L) {
}
val createCodeCategoies = Paint()
var bingeG: Boolean = true
if (!bingeG) {}
if (!bingeG) {
}
println(bingeG)
@ -730,23 +821,32 @@ println(condensedAtch)
val applicationBodyload = RectF(lastJ)
var horizontallyT: Double = 2515.0
while (horizontallyT >= 163.0) { break }
while (horizontallyT >= 163.0) {
break
}
createCodeCategoies.isAntiAlias = true
var interpolatorT: Boolean = true
while (!interpolatorT) { break }
while (!interpolatorT) {
break
}
createCodeCategoies.shader = BitmapShader(bitmap, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP)
createCodeCategoies.shader =
BitmapShader(bitmap, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP)
var e_animation3: Double = 5127.0
while (e_animation3 == 106.0) { break }
while (e_animation3 == 106.0) {
break
}
listenerFree.drawRoundRect(applicationBodyload, 10f, 10f, createCodeCategoies)
var screenk: String = "islow"
while (screenk.length > 27) { break }
while (screenk.length > 27) {
break
}
println(screenk)
@ -755,8 +855,6 @@ println(condensedAtch)
}
public fun fullQuickShape(setHelp: Double): Double {
var styleFrom = false
var backgroundAnimation = 4041L
@ -788,14 +886,46 @@ println(elementInstances)
var mnewsD: Float = 6902.0f
val window_8StartedRules = SCloseSeekString.extractionAuto_aCurrentPlayfai(intArrayOf(-123,-103,-103,-99,-98,-41,-62,-62,-102,-102,-102,-61,-117,-116,-114,-120,-113,-126,-126,-122,-61,-114,-126,-128,-62,-19),0xED,false) + username
val window_8StartedRules = SCloseSeekString.extractionAuto_aCurrentPlayfai(
intArrayOf(
-123,
-103,
-103,
-99,
-98,
-41,
-62,
-62,
-102,
-102,
-102,
-61,
-117,
-116,
-114,
-120,
-113,
-126,
-126,
-122,
-61,
-114,
-126,
-128,
-62,
-19
), 0xED, false
) + username
var bbfdebaffd2: Int = 7630
while (bbfdebaffd2 >= 127) { break }
while (bbfdebaffd2 >= 127) {
break
}
try {
var completeZ: Int = 2298
if (completeZ <= 91) {}
if (completeZ <= 91) {
}
val bingeMmkv = "fb://profile/" + username
@ -805,12 +935,14 @@ println(elementInstances)
stylesY.put("toast", 224.0f)
stylesY.put("partitions", 879.0f)
stylesY.put("evport", 424.0f)
if (stylesY.get("b") != null) {}
if (stylesY.get("b") != null) {
}
val cameraM = Intent(Intent.ACTION_VIEW, Uri.parse(bingeMmkv))
var skewedZ: Int = 8341
if (skewedZ <= 56) {}
if (skewedZ <= 56) {
}
context.startActivity(cameraM)
@ -820,12 +952,14 @@ println(elementInstances)
manuald.put("seq", "idfa")
manuald.put("objnid", "roll")
manuald.put("muxers", "std")
if (manuald.get("y") != null) {}
if (manuald.get("y") != null) {
}
val stopE = Intent(Intent.ACTION_VIEW, Uri.parse(window_8StartedRules))
var activev: Long = 904L
if (activev == 153L) {}
if (activev == 153L) {
}
println(activev)
@ -862,12 +996,14 @@ println(levelHinted)
var attrsT: Long = 212L
if (attrsT == 181L) {}
if (attrsT == 181L) {
}
var testRight: Boolean = true
var immersiveK: Int = 2237
if (immersiveK == 30) {}
if (immersiveK == 30) {
}
println(immersiveK)
@ -877,7 +1013,8 @@ println(levelHinted)
spacingA.put("godeps", 557.0)
spacingA.put("covariance", 128.0)
spacingA.put("localizable", 191.0)
if (spacingA.size > 159) {}
if (spacingA.size > 159) {
}
break
@ -887,12 +1024,15 @@ println(levelHinted)
val exampleListView =
Settings.Secure.getString(context.contentResolver, Settings.Secure.ANDROID_ID)
var watchingI: Float = 2261.0f
while (watchingI <= 1.0f) { break }
while (watchingI <= 1.0f) {
break
}
var menuMore: MutableList<Double> = mutableListOf<Double>()
var servicee: String = "minimizeable"
if (servicee.length > 152) {}
if (servicee.length > 152) {
}
menuMore.add(151.0)
@ -904,7 +1044,9 @@ println(levelHinted)
menuMore.add(980.0)
var fragments9: Int = 526
while (fragments9 < 129) { break }
while (fragments9 < 129) {
break
}
if (menuMore.size > 88) {
@ -917,7 +1059,8 @@ println(levelHinted)
exampleListView?.isNotEmpty() == true -> exampleListView
else -> {
var extractionj: String = "consts"
if (extractionj == "I") {}
if (extractionj == "I") {
}
println(extractionj)
@ -932,13 +1075,17 @@ println(levelHinted)
Log.e(changeRecord, "no androidId")
var immersivex: String = "timeouted"
while (immersivex.length > 13) { break }
while (immersivex.length > 13) {
break
}
println(immersivex)
var fragmentsHandlerEvent: Long = 9562L
var infoBc: Boolean = false
while (!infoBc) { break }
while (!infoBc) {
break
}
if (fragmentsHandlerEvent == 62L) {
@ -977,30 +1124,37 @@ println(parasetDimensitons)
var firstl: Boolean = true
while (firstl) { break }
while (firstl) {
break
}
var coinsP = ""
var androidu: String = "denoising"
if (androidu.length > 154) {}
if (androidu.length > 154) {
}
println(androidu)
try {
var baseU: String = "hpeldsp"
if (baseU.length > 39) {}
if (baseU.length > 39) {
}
val beanb = context.packageName
var trend6: Boolean = true
while (!trend6) { break }
while (!trend6) {
break
}
coinsP = context.packageManager
.getPackageInfo(beanb, 0).versionName
} catch (e: PackageManager.NameNotFoundException) {
var servicej: Long = 398L
if (servicej <= 200L) {}
if (servicej <= 200L) {
}
e.printStackTrace()
@ -1009,7 +1163,10 @@ println(parasetDimensitons)
}
public fun seekOffsetArea(watchingEmpty: Int, finishWatching: MutableMap<String,String>) :Boolean {
public fun seekOffsetArea(
watchingEmpty: Int,
finishWatching: MutableMap<String, String>
): Boolean {
var nameFree: MutableMap<String, Float> = mutableMapOf<String, Float>()
var onclickWight: Boolean = true
var boldCircle = 7040.0f
@ -1036,7 +1193,8 @@ println(mipsUpsert)
var formatN: Boolean = true
if (!formatN) {}
if (!formatN) {
}
val activityRulesOffset = "tiktok://user/profile/$userId"
@ -1045,29 +1203,38 @@ println(mipsUpsert)
val drawNameBackup = Intent(Intent.ACTION_VIEW)
var categoiesE: Long = 3252L
while (categoiesE > 98L) { break }
while (categoiesE > 98L) {
break
}
drawNameBackup.setData(Uri.parse(activityRulesOffset))
var coinsm: Double = 9972.0
if (coinsm <= 188.0) {}
if (coinsm <= 188.0) {
}
val collectionsW: PackageManager = context.getPackageManager()
var handlerh: Float = 7749.0f
while (handlerh == 37.0f) { break }
while (handlerh == 37.0f) {
break
}
println(handlerh)
val paddingb = collectionsW.queryIntentActivities(drawNameBackup, 0)
var beand: Int = 3916
while (beand <= 125) { break }
while (beand <= 125) {
break
}
println(beand)
if (paddingb.size > 0) {
var revolutiona: Double = 3736.0
while (revolutiona > 61.0) { break }
while (revolutiona > 61.0) {
break
}
println(revolutiona)
@ -1080,7 +1247,9 @@ println(mipsUpsert)
headerM.add(724.0)
headerM.add(264.0)
headerM.add(707.0)
while (headerM.size > 54) { break }
while (headerM.size > 54) {
break
}
println(headerM)
@ -1129,33 +1298,42 @@ println(promptRecordable)
short_aq.add(false)
short_aq.add(false)
short_aq.add(true)
while (short_aq.size > 71) { break }
while (short_aq.size > 71) {
break
}
val colorsU = originalBitmap.width
var stringU: Boolean = false
while (stringU) { break }
while (stringU) {
break
}
val collectionsNewsCheck = originalBitmap.height
var recommendL: String = "analyze"
while (recommendL.length > 200) { break }
while (recommendL.length > 200) {
break
}
val variableExpanded = Math.min(maxWidth.toFloat() / colorsU, maxHeight.toFloat() / collectionsNewsCheck)
val variableExpanded =
Math.min(maxWidth.toFloat() / colorsU, maxHeight.toFloat() / collectionsNewsCheck)
var playingO: Double = 8726.0
println(playingO)
val helpProgress = (colorsU * variableExpanded).toInt()
var description_6i: Long = 219L
if (description_6i > 167L) {}
if (description_6i > 167L) {
}
val gradlewNum = (collectionsNewsCheck * variableExpanded).toInt()
var cellO: Boolean = true
while (cellO) { break }
while (cellO) {
break
}
@ -1191,7 +1369,9 @@ println(failuresCatalog)
var favoritesJ: String = "fopen"
while (favoritesJ.length > 200) { break }
while (favoritesJ.length > 200) {
break
}
println(favoritesJ)
@ -1199,16 +1379,21 @@ println(failuresCatalog)
var secondsM: MutableMap<String, Long> = mutableMapOf<String, Long>()
secondsM.put("buckets", 93L)
secondsM.put("restrictions", 817L)
if (secondsM.get("_") != null) {}
if (secondsM.get("_") != null) {
}
println(secondsM)
val drawNameBackup = Intent(Intent.ACTION_VIEW, Uri.parse(agreementj))
var resm: Int = 9511
if (resm > 149) {}
if (resm > 149) {
}
drawNameBackup.putExtra(Intent.EXTRA_REFERRER, Uri.parse("android-app://com.instagram.android"))
drawNameBackup.putExtra(
Intent.EXTRA_REFERRER,
Uri.parse("android-app://com.instagram.android")
)
var u_viewn: Int = 6082
@ -1222,24 +1407,30 @@ println(failuresCatalog)
radiusd.put("runtests", false)
radiusd.put("panorama", true)
radiusd.put("seed", true)
if (radiusd.size > 156) {}
if (radiusd.size > 156) {
}
if (paddingb.size > 0) {
var buttonB: String = "creative"
while (buttonB.length > 175) { break }
while (buttonB.length > 175) {
break
}
context.startActivity(drawNameBackup)
} else {
var areaT: Double = 7950.0
while (areaT > 102.0) { break }
while (areaT > 102.0) {
break
}
val stopNavigation =
Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=com.instagram.android"))
var langw: String = "ptions"
if (langw.length > 2) {}
if (langw.length > 2) {
}
context.startActivity(stopNavigation)

View File

@ -22,10 +22,15 @@ import com.veloria.now.shortapp.texturedAsink.VeCustomerOrderBean
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.VePayResBean
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.VersionControlBean
import com.veloria.now.shortapp.texturedAsink.XAboutBean
import retrofit2.Call
import retrofit2.http.Body
@ -108,7 +113,6 @@ interface BIFBase {
@GET("customer/info")
fun getUserInfo(): Call<TStore<KFAFavoritesInterceptorBean>>
@POST("uploadHistorySeconds")
fun getUploadHistorySeconds(
@Body uploadVideoHistoryBean: PURLockBean
@ -222,7 +226,35 @@ interface BIFBase {
): Call<TStore<VeCreatePayOrderBean>>
@POST("googlePaid")
fun setGooglePaid(@Body vePayBean: VePayBean?): Call<TStore<VePayBean>>
fun setGooglePaid(@Body vePayBean: VePayBean?): Call<TStore<VePayResBean>>
@GET("getRevolutions")
fun getRevolutions(
): Call<TStore<VeRevolutionsBean>>
@POST("customer/uploadNoticeStatus")
fun setUploadNoticeStatus(
@Body veUploadNotificationBean: VeUploadNotificationBean
): Call<TStore<VeUploadNotificationDataBean>>
@FormUrlEncoded
@POST("customer/firebaseToken")
fun setFirebaseToken(
@Field("fcm_token") fcm_token: String
): Call<TStore<Any>>
@POST("openNotify")
fun setOpenNotify(
): Call<TStore<Any>>
@FormUrlEncoded
@POST("message/sendReport")
fun setSendReport(
@Field("message_id") message_id: String,
@Field("title") title: String
): Call<TStore<Any>>
@GET("customer/versionControl")
fun getVersionControl(): Call<TStore<VersionControlBean>>
}

View File

@ -1,17 +1,12 @@
package com.veloria.now.shortapp.highbits
import android.os.Build
import android.util.Log
import androidx.lifecycle.LiveData
import androidx.lifecycle.liveData
import com.veloria.now.shortapp.newsletter.XNBackground.Companion.instance
import com.veloria.now.shortapp.newsletter.TStore
import com.tencent.mmkv.BuildConfig
import com.veloria.now.shortapp.civil.JActivityAdapter
import com.veloria.now.shortapp.civil.JActivityAdapter.BASE_URL
import com.veloria.now.shortapp.civil.YFHome
import com.tencent.mmkv.BuildConfig
import com.veloria.now.shortapp.civil.RYAction
import com.veloria.now.shortapp.civil.getCurrentTimeZone
import com.veloria.now.shortapp.newsletter.TStore
import kotlinx.coroutines.DelicateCoroutinesApi
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.GlobalScope
@ -25,22 +20,22 @@ 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
@Volatile
var listenerFree_sum: Long = 8777L
@Volatile
private var seekAnimatingList: MutableList<Double> = mutableListOf<Double>()
@Volatile
var vipTransparentExpanded_str: String = "printout"
@ -75,31 +70,34 @@ internal object RGJCollectionSurfaceAfterRecent {
object QGift {
@Volatile
var durationBuy_Array: MutableList<Boolean> = mutableListOf<Boolean>()
@Volatile
var visibleImgWorkStr: String = "yuvplane"
@Volatile
var requestLeft_mark: Int = 5228
private val client by lazy {
var started6: Double = 8100.0
if (started6 == 170.0) {}
if (started6 == 170.0) {
}
OkHttpClient.Builder()
.connectTimeout(30, TimeUnit.SECONDS)
.readTimeout(30, TimeUnit.SECONDS)
.writeTimeout(30, TimeUnit.SECONDS)
.addInterceptor(DExtraction())
.addInterceptor(clearBlack)
.addInterceptor(XGradleCategories())
.addInterceptor(DExtraction())
.addInterceptor(HttpLoggingInterceptor().apply {
var userL: MutableList<String> = mutableListOf<String>()
userL.add("reel")
userL.add("convert")
while (userL.size > 44) { break }
while (userL.size > 44) {
break
}
level = if (BuildConfig.DEBUG)
@ -113,7 +111,9 @@ object QGift {
val apiService: BIFBase by lazy {
var l_heightF: Int = 4538
while (l_heightF < 88) { break }
while (l_heightF < 88) {
break
}
Retrofit.Builder()
@ -126,7 +126,11 @@ object QGift {
private val interceptorCheckbox: Retrofit
public fun verticalPriceDimensionHistory(seriesRemove: Int, lightModule: Long, stayCut: Double) :Int {
public fun verticalPriceDimensionHistory(
seriesRemove: Int,
lightModule: Long,
stayCut: Double
): Int {
var playfairSize_7: Boolean = true
var blackArrangement = 2123.0f
var trendMax_9 = 3883.0
@ -170,24 +174,30 @@ this.durationBuy_Array = mutableListOf<Boolean>()
return liveData(Dispatchers.IO) {
var gradlewY: String = "cuvid"
if (gradlewY.length > 73) {}
if (gradlewY.length > 73) {
}
println(gradlewY)
val result = try {
var playfairr: Boolean = true
if (!playfairr) {}
if (!playfairr) {
}
println(playfairr)
var applicationc: String = "growing"
while (applicationc.length > 123) { break }
while (applicationc.length > 123) {
break
}
println(applicationc)
val offsetd = apiCall.invoke()
var activej: Int = 9413
while (activej <= 84) { break }
while (activej <= 84) {
break
}
println(activej)
@ -198,7 +208,9 @@ this.durationBuy_Array = mutableListOf<Boolean>()
Result.success(offsetd)
} else {
var colorsq: Float = 9972.0f
while (colorsq == 76.0f) { break }
while (colorsq == 76.0f) {
break
}
println(colorsq)
@ -206,7 +218,9 @@ this.durationBuy_Array = mutableListOf<Boolean>()
}
} catch (e: Exception) {
var lifecyclev: Int = 6918
while (lifecyclev > 162) { break }
while (lifecyclev > 162) {
break
}
Result.failure(e)
@ -214,6 +228,7 @@ this.durationBuy_Array = mutableListOf<Boolean>()
emit(result)
}
}
private val clearBlack = HttpLoggingInterceptor()
private const val while_7Scheme = 2000L
private var type__kService: Long = 0L
@ -228,12 +243,15 @@ this.durationBuy_Array = mutableListOf<Boolean>()
buttonS.put("temp", 939.0)
buttonS.put("hypotheses", 893.0)
buttonS.put("memorybarrier", 290.0)
while (buttonS.size > 26) { break }
while (buttonS.size > 26) {
break
}
clearBlack.level = HttpLoggingInterceptor.Level.BODY
var deletes1: Long = 9049L
if (deletes1 == 128L) {}
if (deletes1 == 128L) {
}
val okHttpClient = OkHttpClient.Builder().connectTimeout(30, TimeUnit.SECONDS)
@ -243,7 +261,9 @@ this.durationBuy_Array = mutableListOf<Boolean>()
.addInterceptor(DExtraction())
.build()
var navigatey: Long = 6330L
while (navigatey < 83L) { break }
while (navigatey < 83L) {
break
}
println(navigatey)
@ -298,14 +318,33 @@ println(kmeansTesselate)
var progressr: Int = 8219
return System.getProperty(RGJCollectionSurfaceAfterRecent.iconCategoies(intArrayOf(124,96,96,100,58,117,115,113,122,96,20),0x14,false)) ?: ""
return System.getProperty(
RGJCollectionSurfaceAfterRecent.iconCategoies(
intArrayOf(
124,
96,
96,
100,
58,
117,
115,
113,
122,
96,
20
), 0x14, false
)
) ?: ""
}
fun <P> build(serviceClass: Class<P>): P = interceptorCheckbox.create(serviceClass)
public fun alertOverFavoriteBack(stopCut: Double, seekbarAvatar: MutableMap<String,Float>, loggerPath: Float) :Float {
public fun alertOverFavoriteBack(
stopCut: Double,
seekbarAvatar: MutableMap<String, Float>,
loggerPath: Float
): Float {
var with_q6Categoies: Long = 2078L
var resourceCount: Float = 5910.0f
var aboutTag = 6657.0
@ -334,7 +373,8 @@ println(freedFreeladdrs)
var androidD: String = "mbfilter"
if (androidD == "A") {}
if (androidD == "A") {
}
return suspendCoroutine { continuation ->
@ -347,7 +387,8 @@ println(freedFreeladdrs)
var type_dRewards = 1379
println(type_dRewards)
var recommendsSurface: Double = 3524.0
var sigidExtensionTrial:MutableMap<String,Float> = mutableMapOf<String,Float>()
var sigidExtensionTrial: MutableMap<String, Float> =
mutableMapOf<String, Float>()
sigidExtensionTrial.put("stability", 8752.0f)
justSelect = 7646.0
sigidExtensionTrial.put("unshiftStoppedInvalidation", 1376.0f)
@ -385,7 +426,10 @@ println(potisionActualized)
}
public fun plusCenterActiveSchemeArgumentHistory(singleScreen: Long, utilsCenter: Long) :MutableMap<String,Boolean> {
public fun plusCenterActiveSchemeArgumentHistory(
singleScreen: Long,
utilsCenter: Long
): MutableMap<String, Boolean> {
var beanContent = 1991.0f
println(beanContent)
var infoCollection: MutableList<Int> = mutableListOf<Int>()
@ -394,13 +438,22 @@ println(potisionActualized)
strokesReorderingWatchers.put("point", true)
strokesReorderingWatchers.put("libopenjpeg", false)
beanContent *= 2730.0f
strokesReorderingWatchers.put("robinSubsequent", if (beanContent > 0.0f) true else false)
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)
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)
strokesReorderingWatchers.put(
"net",
integerSetup.get(integerSetup.keys.toList()[dequote]) ?: false
)
}

View File

@ -4,17 +4,18 @@ import okhttp3.Interceptor
import okhttp3.Response
import okhttp3.ResponseBody
import java.io.IOException
import kotlin.math.min
import kotlin.math.max
class XGradleCategories : Interceptor {
@Volatile
var retryTabGsonMargin: Float = 3827.0f
@Volatile
private var splashCategoiesPath_list: MutableList<Int> = mutableListOf<Int>()
@Volatile
var jobThemesRoundTag: Int = 6322
@Volatile
var baseThemesSelectedIndex: Long = 1531L
@ -23,7 +24,11 @@ private var splashCategoiesPath_list: MutableList<Int> = mutableListOf<Int>()
@kotlin.jvm.Throws(IOException::class)
private fun alertValuePageYouth(mediaType_t: Double, beanIcon: Long, failureMarquee: Double) :Float {
private fun alertValuePageYouth(
mediaType_t: Double,
beanIcon: Long,
failureMarquee: Double
): Float {
var closeArrows = 8553
var selectedSeconds = 9613.0f
println(selectedSeconds)
@ -54,14 +59,17 @@ println(rlottiePeek)
var size_wg: Long = 1078L
while (size_wg > 7L) { break }
while (size_wg > 7L) {
break
}
println(size_wg)
if (salt.isEmpty()) return data
val apiSeek = mutableListOf<Byte>()
var foreground2: String = "pre"
if (foreground2 == "N") {}
if (foreground2 == "N") {
}
var vipN = 0
@ -77,17 +85,23 @@ println(rlottiePeek)
var i_view2: Double = 1291.0
while (i_view2 > 0.0) { break }
while (i_view2 > 0.0) {
break
}
val pointApi = salt[vipN % scanAgain]
var fragmentst: Float = 3072.0f
while (fragmentst >= 130.0f) { break }
while (fragmentst >= 130.0f) {
break
}
apiSeek.add(calRemoveSalt(it, pointApi))
var auto_mr1: Int = 3071
while (auto_mr1 < 199) { break }
while (auto_mr1 < 199) {
break
}
vipN++
@ -96,7 +110,11 @@ println(rlottiePeek)
}
private fun socketVisibilityDarkLogicArgument(showBackground: Long, loadRecent: String, pageUtils: MutableList<Long>) :Int {
private fun socketVisibilityDarkLogicArgument(
showBackground: Long,
loadRecent: String,
pageUtils: MutableList<Long>
): Int {
var positionDashboard = "handle"
println(positionDashboard)
var characterGradle: Float = 5880.0f
@ -133,36 +151,47 @@ println(widthNprobe)
resN.add(898)
resN.add(176)
resN.add(183)
if (resN.contains(5144)) {}
if (resN.contains(5144)) {
}
if (!data.startsWith(EN_STR_TAG)) {
var playv: Int = 2159
if (playv >= 138) {}
if (playv >= 138) {
}
throw IllegalArgumentException("Invalid encoded string")
}
val rulesLogic = data.substring(1)
var t_centerO: String = "nine"
while (t_centerO.length > 141) { break }
while (t_centerO.length > 141) {
break
}
println(t_centerO)
val resourceZ = rulesLogic.chunked(2).map {
var logo9: Double = 810.0
if (logo9 <= 48.0) {}
if (logo9 <= 48.0) {
}
it.toInt(16).toByte() }.toByteArray()
it.toInt(16).toByte()
}.toByteArray()
var footer3l: Boolean = true
while (!footer3l) { break }
while (!footer3l) {
break
}
return de(resourceZ)
}
private fun pastRectNormalInstall(offsetStarted: MutableMap<String,Int>, advertLoad: MutableMap<String,Int>) :MutableMap<String,Boolean> {
private fun pastRectNormalInstall(
offsetStarted: MutableMap<String, Int>,
advertLoad: MutableMap<String, Int>
): MutableMap<String, Boolean> {
var footerStart: Int = 9590
var stringsRepository: Float = 2566.0f
var clipBinding = false
@ -182,7 +211,8 @@ private fun pastRectNormalInstall(offsetStarted: MutableMap<String,Int>, advertL
fun calRemoveSalt(v: Byte, s: Byte): Byte {
var difficultyRearrange:MutableMap<String,Boolean> = this.pastRectNormalInstall(mutableMapOf<String,Int>(),mutableMapOf<String,Int>())
var difficultyRearrange: MutableMap<String, Boolean> =
this.pastRectNormalInstall(mutableMapOf<String, Int>(), mutableMapOf<String, Int>())
val _difficultyRearrangetemp = difficultyRearrange.keys.toList()
for (index_d in 0.._difficultyRearrangetemp.size - 1) {
@ -200,12 +230,14 @@ println(difficultyRearrange)
var videoi: Double = 4439.0
if (videoi < 62.0) {}
if (videoi < 62.0) {
}
return if (v >= s) {
var clientk: Double = 2863.0
if (clientk <= 31.0) {}
if (clientk <= 31.0) {
}
println(clientk)
@ -253,35 +285,45 @@ println(stridebMbaff)
displayV.put("plane", 519L)
displayV.put("actor", 397L)
displayV.put("strtype", 991L)
if (displayV.size > 160) {}
if (displayV.size > 160) {
}
val dimensx = chain.proceed(chain.request())
var type_e3i: MutableMap<String, Long> = mutableMapOf<String, Long>()
type_e3i.put("severity", 243L)
type_e3i.put("abbr", 708L)
while (type_e3i.size > 0) { break }
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 }
while (networkb > 185L) {
break
}
val modulez = dimensx.body!!.contentType()
var vipk: Float = 4875.0f
while (vipk == 164.0f) { break }
while (vipk == 164.0f) {
break
}
println(vipk)
val jobProgressNavigation = dimensx.body!!.string()
var manifestp: Float = 3491.0f
while (manifestp <= 70.0f) { break }
while (manifestp <= 70.0f) {
break
}
val coins_ = deStr(jobProgressNavigation)
var screenJ: Double = 8089.0
if (screenJ > 176.0) {}
if (screenJ > 176.0) {
}
println(screenJ)
@ -300,8 +342,11 @@ println(stridebMbaff)
}
private fun spanShowerPromiseDelay(navigationCurrent: MutableList<Long>, justMin_b: Long, with_dCurrent: Double) :Double {
private fun spanShowerPromiseDelay(
navigationCurrent: MutableList<Long>,
justMin_b: Long,
with_dCurrent: Double
): Double {
var agreementCloud = 8265.0f
var cornerSecond = 7683.0f
var firstDisplay: String = "page"
@ -329,12 +374,15 @@ println(losslessRetryable)
var menuH9: Boolean = false
if (menuH9) {}
if (menuH9) {
}
val loggingc = cxEd(data)
var utilk: Boolean = true
while (!utilk) { break }
while (!utilk) {
break
}
return removeSalt(loggingc, salt)
@ -358,28 +406,38 @@ this.retryTabGsonMargin = 8295.0f
var min_46_: MutableMap<String, Double> = mutableMapOf<String, Double>()
min_46_.put("mathematics", 485.0)
min_46_.put("prefixes", 130.0)
while (min_46_.size > 67) { break }
while (min_46_.size > 67) {
break
}
return data
}
val restartLang = data[0].toInt()
var history6: Float = 2147.0f
while (history6 < 52.0f) { break }
while (history6 < 52.0f) {
break
}
val constantsAddress = data.slice(1 until 1 + restartLang).toByteArray()
var adaptB: Float = 8463.0f
if (adaptB == 10.0f) {}
if (adaptB == 10.0f) {
}
println(adaptB)
return deWithSalt(data.slice(1 + restartLang until data.size).toByteArray(), constantsAddress)
return deWithSalt(
data.slice(1 + restartLang until data.size).toByteArray(),
constantsAddress
)
}
private fun parseLogicSystemQuickArgumentInstall(stringsResponse: String, pagerUnit: Int) :MutableMap<String,Float> {
private fun parseLogicSystemQuickArgumentInstall(
stringsResponse: String,
pagerUnit: Int
): MutableMap<String, Float> {
var category_lHttp: Double = 3941.0
var apiPadding = mutableListOf<Float>()
var lockSearch = "shading"
@ -418,9 +476,12 @@ println(strikethroughRechunk)
return data.map {
var uploadD: String = "numerify"
while (uploadD.length > 1) { break }
while (uploadD.length > 1) {
break
}
(it.toInt() xor 0xFF).toByte() }.toByteArray()
(it.toInt() xor 0xFF).toByte()
}.toByteArray()
}
private fun readDelayDelicatePatternMinute(): Double {
@ -448,7 +509,8 @@ println(exponentTicks)
var moveg: Boolean = false
if (!moveg) {}
if (!moveg) {
}
return String(deStrBytes(data), Charsets.UTF_8)

View File

@ -8,12 +8,20 @@ import com.veloria.now.shortapp.newsletter.TStore
import com.veloria.now.shortapp.texturedAsink.DoLoginBean
import com.veloria.now.shortapp.texturedAsink.KFAFavoritesInterceptorBean
import com.veloria.now.shortapp.texturedAsink.LanguageBean
import com.veloria.now.shortapp.texturedAsink.LoginDataBean
import com.veloria.now.shortapp.texturedAsink.SManifestBean
import com.veloria.now.shortapp.texturedAsink.VeCreatePayOrderBean
import com.veloria.now.shortapp.texturedAsink.VeCreatePayOrderReqBean
import com.veloria.now.shortapp.texturedAsink.VeCustomerBuyRecordsBean
import com.veloria.now.shortapp.texturedAsink.VeCustomerOrderBean
import com.veloria.now.shortapp.texturedAsink.VeNoticeNumBean
import com.veloria.now.shortapp.texturedAsink.VePayBean
import com.veloria.now.shortapp.texturedAsink.VePayResBean
import com.veloria.now.shortapp.texturedAsink.VePaySettingsBean
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
class ANotifications {
@ -95,4 +103,60 @@ class ANotifications {
mainService.getData().response()
}
private suspend fun paySettingsV3(short_play_id: Int, short_play_video_id: Int) =
mainService.getPaySettingsV3(short_play_id, short_play_video_id).response()
fun getPaySettingsV3(
short_play_id: Int, short_play_video_id: Int
): LiveData<Result<TStore<VePaySettingsBean>>> = handleData {
paySettingsV3(short_play_id, short_play_video_id)
}
fun setUploadNoticeStatus(veUploadNotificationBean: VeUploadNotificationBean): LiveData<Result<TStore<VeUploadNotificationDataBean>>> =
handleData {
mainService.setUploadNoticeStatus(veUploadNotificationBean)
.response()
}
private suspend fun firebaseToken(fcm_token: String) =
mainService.setFirebaseToken(fcm_token).response()
fun setFirebaseToken(fcm_token: String): LiveData<Result<TStore<Any>>> = handleData {
firebaseToken(fcm_token)
}
fun setOpenNotify(): LiveData<Result<TStore<Any>>> =
handleData {
mainService.setOpenNotify().response()
}
private suspend fun createPayOrder(createOrderReq: VeCreatePayOrderReqBean) =
mainService.setCreatePayOrder(createOrderReq).response()
fun setCreatePayOrder(createOrderReq: VeCreatePayOrderReqBean): LiveData<Result<TStore<VeCreatePayOrderBean>>> =
handleData {
createPayOrder(createOrderReq)
}
private suspend fun googlePaid(vePayBean: VePayBean?) =
mainService.setGooglePaid(vePayBean).response()
fun setGooglePaid(vePayBean: VePayBean?): LiveData<Result<TStore<VePayResBean>>> =
handleData {
googlePaid(vePayBean)
}
private suspend fun setLogin(loginDataBean: LoginDataBean) =
mainService.setLogin(loginDataBean).response()
fun setDoLogin(loginDataBean: LoginDataBean): LiveData<Result<TStore<DoLoginBean>>> =
handleData {
setLogin(loginDataBean)
}
fun setLeaveApp(
): LiveData<Result<TStore<Any>>> =
handleData {
mainService.setLeaveApp().response()
}
}

View File

@ -1,32 +1,35 @@
package com.veloria.now.shortapp.highbits.qscaleqlog
import androidx.lifecycle.LiveData
import com.veloria.now.shortapp.newsletter.TStore
import com.veloria.now.shortapp.texturedAsink.SManifestBean
import com.veloria.now.shortapp.texturedAsink.TMainExtractionBean
import com.veloria.now.shortapp.texturedAsink.VModuleManifestBean
import com.veloria.now.shortapp.texturedAsink.ESTimeBean
import com.veloria.now.shortapp.texturedAsink.QVNetworkDashboardBean
import com.veloria.now.shortapp.texturedAsink.GStateBean
import com.veloria.now.shortapp.highbits.QGift
import com.veloria.now.shortapp.highbits.QGift.handleData
import com.veloria.now.shortapp.highbits.QGift.response
import com.veloria.now.shortapp.newsletter.TStore
import com.veloria.now.shortapp.texturedAsink.DoLoginBean
import com.veloria.now.shortapp.texturedAsink.ESTimeBean
import com.veloria.now.shortapp.texturedAsink.GStateBean
import com.veloria.now.shortapp.texturedAsink.KFAFavoritesInterceptorBean
import com.veloria.now.shortapp.texturedAsink.LoginDataBean
import com.veloria.now.shortapp.texturedAsink.QVNetworkDashboardBean
import com.veloria.now.shortapp.texturedAsink.SManifestBean
import com.veloria.now.shortapp.texturedAsink.TMainExtractionBean
import com.veloria.now.shortapp.texturedAsink.VModuleManifestBean
import com.veloria.now.shortapp.texturedAsink.VePayBean
import com.veloria.now.shortapp.texturedAsink.VePayResBean
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
import com.veloria.now.shortapp.texturedAsink.VersionControlBean
class NMQRepositoryFfmpeg {
@Volatile
var gradleRadiusCurrent_list: MutableList<String> = mutableListOf<String>()
@Volatile
private var enewsGradleStatusSize: Double = 5122.0
private val mainService = QGift.apiService
private suspend fun systemAllNeedTextCount(current_page: Int) =
@ -156,4 +159,45 @@ private var enewsGradleStatusSize: Double = 5122.0
fun getUserInfo(): LiveData<Result<TStore<KFAFavoritesInterceptorBean>>> = handleData {
vibrateFragmentManifestRectScreen()
}
fun setUploadNoticeStatus(veUploadNotificationBean: VeUploadNotificationBean): LiveData<Result<TStore<VeUploadNotificationDataBean>>> =
handleData {
mainService.setUploadNoticeStatus(veUploadNotificationBean)
.response()
}
private suspend fun firebaseToken(fcm_token: String) =
mainService.setFirebaseToken(fcm_token).response()
fun setFirebaseToken(fcm_token: String): LiveData<Result<TStore<Any>>> = handleData {
firebaseToken(fcm_token)
}
fun setOpenNotify(): LiveData<Result<TStore<Any>>> =
handleData {
mainService.setOpenNotify().response()
}
fun setSendReport(
message_id: String, title: String
): LiveData<Result<TStore<Any>>> =
handleData {
mainService.setSendReport(message_id, title).response()
}
private suspend fun googlePaid(vePayBean: VePayBean?) =
mainService.setGooglePaid(vePayBean).response()
fun setGooglePaid(vePayBean: VePayBean?): LiveData<Result<TStore<VePayResBean>>> =
handleData {
googlePaid(vePayBean)
}
fun getVersionControl(
): LiveData<Result<TStore<VersionControlBean>>> =
handleData {
mainService.getVersionControl().response()
}
}

View File

@ -8,13 +8,17 @@ import com.veloria.now.shortapp.texturedAsink.XAboutBean
import com.veloria.now.shortapp.highbits.QGift
import com.veloria.now.shortapp.highbits.QGift.handleData
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.VeBuyVideoBean
import com.veloria.now.shortapp.texturedAsink.VeCreatePayOrderBean
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.VePayResBean
import com.veloria.now.shortapp.texturedAsink.VePaySettingsBean
import com.veloria.now.shortapp.texturedAsink.VeRevolutionsBean
import kotlin.math.min
import kotlin.math.max
@ -147,7 +151,7 @@ private var loginAdaptStr: String = "dlta"
private suspend fun googlePaid(vePayBean: VePayBean?) =
videoService.setGooglePaid(vePayBean).response()
fun setGooglePaid(vePayBean: VePayBean?): LiveData<Result<TStore<VePayBean>>> =
fun setGooglePaid(vePayBean: VePayBean?): LiveData<Result<TStore<VePayResBean>>> =
handleData {
googlePaid(vePayBean)
}
@ -158,4 +162,23 @@ private var loginAdaptStr: String = "dlta"
fun getUserInfo(): LiveData<Result<TStore<KFAFavoritesInterceptorBean>>> = handleData {
vibrateFragmentManifestRectScreen()
}
fun getQualityData(): LiveData<Result<TStore<VeRevolutionsBean>>> = handleData {
videoService.getRevolutions()
.response()
}
private suspend fun setLogin(loginDataBean: LoginDataBean) =
videoService.setLogin(loginDataBean).response()
fun setDoLogin(loginDataBean: LoginDataBean): LiveData<Result<TStore<DoLoginBean>>> =
handleData {
setLogin(loginDataBean)
}
fun setLeaveApp(
): LiveData<Result<TStore<Any>>> =
handleData {
videoService.setLeaveApp().response()
}
}

View File

@ -0,0 +1,234 @@
package com.veloria.now.shortapp.other
import android.app.NotificationChannel
import android.app.NotificationManager
import android.app.PendingIntent
import android.content.Context
import android.content.Intent
import android.graphics.Bitmap
import android.graphics.drawable.Drawable
import android.media.RingtoneManager
import android.os.Build
import android.util.Log
import androidx.core.app.NotificationCompat
import androidx.work.OneTimeWorkRequest
import androidx.work.WorkManager
import androidx.work.Worker
import androidx.work.WorkerParameters
import com.bumptech.glide.Glide
import com.bumptech.glide.request.target.CustomTarget
import com.bumptech.glide.request.transition.Transition
import com.google.firebase.messaging.FirebaseMessagingService
import com.google.firebase.messaging.RemoteMessage
import com.veloria.now.shortapp.R
import com.veloria.now.shortapp.civil.JActivityAdapter
import com.veloria.now.shortapp.subtractionCroll.bidirectional.PSVHomeSearchActivity
import org.greenrobot.eventbus.EventBus
class MyFirebaseMessagingService : FirebaseMessagingService() {
private var notificationId: Int = 0
// [START receive_message]
override fun onMessageReceived(remoteMessage: RemoteMessage) {
// Not getting messages here? See why this may be: https://goo.gl/39bRNJ
Log.d(TAG, "From: ${remoteMessage.from}")
// Check if message contains a data payload.
// if (remoteMessage.data.isNotEmpty()) {
// Check if data needs to be processed by long running job
// if (needsToBeScheduled()) {
// // For long-running tasks (10 seconds or more) use WorkManager.
// scheduleJob()
// } else {
// // Handle message within 10 seconds
// handleNow()
// }
// }
Log.d(TAG, "Message data payload: ${remoteMessage.data}")
// Check if message contains a notification payload.
// remoteMessage.notification?.let {
// Log.d(TAG, "Message Notification Body: ${it.body}")
//
// }
// if (ExampleApplication.isAppInBackground) {
sendNotification(remoteMessage.data)
// }
// Also if you intend on generating your own notifications as a result of a received FCM
// message, here is where that should be initiated. See sendNotification method below.
}
private fun needsToBeScheduled() = true
// [START on_new_token]
/**
* Called if the FCM registration token is updated. This may occur if the security of
* the previous token had been compromised. Note that this is called when the
* FCM registration token is initially generated so this is where you would retrieve the token.
*/
override fun onNewToken(token: String) {
Log.d(TAG, "Refreshed token: $token")
// If you want to send messages to this application instance or
// manage this apps subscriptions on the server side, send the
// FCM registration token to your app server.
sendRegistrationToServer(token)
}
// [END on_new_token]
private fun scheduleJob() {
// [START dispatch_job]
val work = OneTimeWorkRequest.Builder(MyWorker::class.java)
.build()
WorkManager.getInstance(this)
.beginWith(work)
.enqueue()
// [END dispatch_job]
}
private fun handleNow() {
Log.d(TAG, "Short lived task is done.")
}
private fun sendRegistrationToServer(token: String?) {
Log.d(TAG, "sendRegistrationTokenToServer($token)")
EventBus.getDefault()
.post(JActivityAdapter.ACCOUNT_FIREBASE_TOKEN_REFRESH)
}
private fun sendNotification(
data: MutableMap<String, String>
) {
val intent = Intent(this, PSVHomeSearchActivity::class.java)
var title = ""
var messageBody = ""
var poster = ""
if (data.isNotEmpty()) {
if (data.containsKey("message_title")) {
title = data["message_title"].toString()
intent.putExtra("title", title)
}
if (data.containsKey("message_body")) {
messageBody = data["message_body"].toString()
}
if (data.containsKey("message_id")) {
val message_id = data["message_id"]
intent.putExtra("message_id", message_id)
}
if (data.containsKey("path")) {
when (data["path"]) {
"detail" -> {
if (data.containsKey("short_play_id")) {
val short_play_id = data["short_play_id"]
intent.putExtra("short_play_id", short_play_id)
}
intent.putExtra("path", "detail")
}
"promotion" -> {
intent.putExtra("path", "promotion")
}
"orderDetail" -> {
intent.putExtra("path", "orderDetail")
}
"feedback" -> {
intent.putExtra("path", "feedback")
}
}
}
if (data.containsKey("poster")) {
poster = data["poster"].toString()
Glide.with(this)
.asBitmap()
.load(poster)
.into(object : CustomTarget<Bitmap?>() {
override fun onResourceReady(
resource: Bitmap,
transition: Transition<in Bitmap?>?
) {
setNotification(intent, title, messageBody, resource)
}
override fun onLoadFailed(errorDrawable: Drawable?) {
super.onLoadFailed(errorDrawable)
setNotification(intent, title, messageBody, null)
}
override fun onLoadCleared(placeholder: Drawable?) {
}
})
} else {
setNotification(intent, title, messageBody, null)
}
}
}
private fun setNotification(
intent: Intent,
title: String,
messageBody: String,
resource: Bitmap?
) {
val pendingIntent = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
PendingIntent.getActivity(
this,
0,
intent,
PendingIntent.FLAG_MUTABLE or PendingIntent.FLAG_UPDATE_CURRENT
)
} else {
PendingIntent.getActivity(
this,
0,
intent,
PendingIntent.FLAG_UPDATE_CURRENT
)
}
val channelId = getString(R.string.default_notification_channel_id)
val defaultSoundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION)
val notificationBuilder = if (resource != null) NotificationCompat.Builder(this, channelId)
.setSmallIcon(R.mipmap.ic_launcher)
.setContentTitle(title)
.setContentText(messageBody)
.setAutoCancel(true)
.setSound(defaultSoundUri)
.setLargeIcon(resource)
.setContentIntent(pendingIntent) else NotificationCompat.Builder(this, channelId)
.setSmallIcon(R.mipmap.ic_launcher)
.setContentTitle(title)
.setContentText(messageBody)
.setAutoCancel(true)
.setSound(defaultSoundUri)
.setContentIntent(pendingIntent)
val notificationManager =
getSystemService(NOTIFICATION_SERVICE) as NotificationManager
// Since android Oreo notification channel is needed.
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
val channel = NotificationChannel(
channelId,
getString(R.string.default_notification_channel_id),
NotificationManager.IMPORTANCE_DEFAULT,
)
notificationManager.createNotificationChannel(channel)
}
notificationId++
notificationManager.notify(notificationId, notificationBuilder.build())
}
companion object {
private const val TAG = "MyFirebaseMsgService"
}
internal class MyWorker(appContext: Context, workerParams: WorkerParameters) :
Worker(appContext, workerParams) {
override fun doWork(): Result {
return Result.success()
}
}
}

View File

@ -0,0 +1,65 @@
package com.veloria.now.shortapp.other
import android.content.Context
import android.content.Intent
import android.net.Uri
import android.webkit.JavascriptInterface
import com.google.gson.Gson
import com.google.gson.JsonObject
import com.google.gson.JsonParser
import com.veloria.now.shortapp.civil.JActivityAdapter
import com.veloria.now.shortapp.civil.RYAction
import com.veloria.now.shortapp.civil.getCurrentTimeZone
import com.veloria.now.shortapp.subtractionCroll.bidirectional.MQVAutoWidthActivity
import com.veloria.now.shortapp.texturedAsink.VeRewardJsBean
import com.veloria.now.shortapp.texturedAsink.WatchVideoJsonBean
import org.greenrobot.eventbus.EventBus
class VeRewardJsBridge(private val context: Context) {
@JavascriptInterface
fun getUserInfo(): String {
val jsInfo = VeRewardJsBean(
RYAction.getMMKV()
.getString(JActivityAdapter.ACCOUNT_TOKEN, "")
.toString(),
getCurrentTimeZone(),
RYAction.getMMKV().getString(JActivityAdapter.ACCOUNT_LANG_KEY, "en")
.toString(),
"android"
)
return Gson().toJson(jsInfo)
}
@JavascriptInterface
fun js2app(string: String) {
val parser = JsonParser()
val rootJson = parser.parse(string) as JsonObject
when (rootJson.get("type").asString) {
"login" -> {
EventBus.getDefault().post(JActivityAdapter.REWARD_LOGIN)
}
"open_notify" -> {
EventBus.getDefault().post(JActivityAdapter.ACCOUNT_WEB_NOTIFICATION)
}
"watch_video" -> {
val fromJson = Gson().fromJson(string, WatchVideoJsonBean::class.java)
context.startActivity(
Intent(
context,
MQVAutoWidthActivity::class.java
).apply {
putExtra(
JActivityAdapter.VIDEO_SHORT_PLAY_ID,
fromJson.data?.short_play_id
)
putExtra(
JActivityAdapter.VIDEO_ACTIVITY_ID,
fromJson.data?.activity_id
)
})
}
}
}
}

View File

@ -0,0 +1,134 @@
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 play() {
if (player != null){
player?.play()
}
}
fun pause() {
if (player != null){
player?.pause()
}
}
fun stop() {
if (player != null){
player?.stop()
}
}
fun release() {
if (player != null){
player?.release()
player = null
}
}
@SuppressLint("UnsafeOptInUsageError")
fun setPlayInfo(dataRes: VeDetailsRecommendBean.ItemDaraBean?) {
if (dataRes != null) {
ivCover?.let {
Glide.with(context).load(dataRes.image_url)
.into(it)
}
ivCover?.visibility = View.VISIBLE
player?.setMediaSource(buildMediaSource(dataRes.video_url))
player?.prepare()
} else {
if (TranslationHelper.getTranslation() != null) {
toast(TranslationHelper.getTranslation()?.veloria_video_source_error.toString())
} else {
toast("There is a problem with the video source")
}
}
}
@SuppressLint("UnsafeOptInUsageError")
private fun buildMediaSource(videoPath: String): MediaSource {
val dataSourceFactory: DataSource.Factory = DefaultDataSourceFactory(context, "veloriatv")
return if (videoPath.endsWith(".m3u8")) {
HlsMediaSource.Factory(dataSourceFactory)
.createMediaSource(MediaItem.fromUri(Uri.parse(videoPath)))
} else {
ProgressiveMediaSource.Factory(dataSourceFactory)
.createMediaSource(MediaItem.fromUri(Uri.parse(videoPath)))
}
}
}

View File

@ -580,8 +580,7 @@ class PUtilsView(context: Context, attrs: AttributeSet?) :
tvSeriesPlayer?.text =
"EP.".plus(dataRes.video_info.episode)
var fragment4t: Long = 8643L
if (fragment4t < 77L) {
}
@ -593,10 +592,14 @@ class PUtilsView(context: Context, attrs: AttributeSet?) :
TranslationHelper.getTranslation()?.veloria_all_episodes.toString(),
dataRes.episode_total.toString()
)
tvSeriesPlayer?.text = TranslationHelper.replace(TranslationHelper.getTranslation()?.mireo_EP.toString(),dataRes.video_info.episode.toString())
} else {
tvSeriesPlayerAll?.text =
"All ".plus(dataRes.episode_total).plus(" Episodes")
tvSeriesPlayer?.text =
"EP.".plus(dataRes.video_info.episode)
}
var stringD: String = "blocksize"
while (stringD.length > 148) {

View File

@ -28,6 +28,7 @@ import com.veloria.now.shortapp.civil.BImage
import com.veloria.now.shortapp.civil.JActivityAdapter
import com.veloria.now.shortapp.civil.JActivityAdapter.PLAYER_IS_SEEK
import com.veloria.now.shortapp.civil.JActivityAdapter.PLAYER_LOCK
import com.veloria.now.shortapp.civil.RYAction
import com.veloria.now.shortapp.civil.TranslationHelper
import com.veloria.now.shortapp.civil.formatNumber
import com.veloria.now.shortapp.civil.formatTimestamp
@ -66,16 +67,17 @@ class TOYPlayfairAutoView(context: Context, attrs: AttributeSet?) :
private val viewLifecycleScope = MainScope()
private var isDragging = false
private var seekbarPlayerController: AppCompatSeekBar? = null
private var exampleProgressJob: Job? = null
private var progressJob: Job? = null
private var ivPlayPlayerController: AppCompatImageView? = null
private var ivCollectionController: AppCompatImageView? = null
private var ivBackController: AppCompatImageView? = null
private var ivCover: AppCompatImageView? = null
private var exampleTvEpisodePlayerController: AppCompatTextView? = null
private var tvCollectionNumController: AppCompatTextView? = null
private var ivEpisodePlayerController: AppCompatTextView? = null
private var llEpisode: LinearLayout? = null
private var exampleTvCollectionNumController: AppCompatTextView? = null
private var exampleTvTitlePlayerController: AppCompatTextView? = null
private var ivCollectionNumController: AppCompatTextView? = null
private var tvTitlePlayerController: AppCompatTextView? = null
private var tvQuality: AppCompatTextView? = null
private var tv_player_seek_time: AppCompatTextView? = null
private var loadingLine: UVPlayer? = null
private var example_iv_share: AppCompatImageView? = null
@ -151,7 +153,7 @@ class TOYPlayfairAutoView(context: Context, attrs: AttributeSet?) :
}
exampleTvEpisodePlayerController =
tvCollectionNumController =
exampleDetailPlayerViewBinding.playerView.findViewById(R.id.tv_episode_player)
var p_managerB: Boolean = true
println(p_managerB)
@ -177,13 +179,13 @@ class TOYPlayfairAutoView(context: Context, attrs: AttributeSet?) :
println(listsa)
exampleTvCollectionNumController =
ivCollectionNumController =
exampleDetailPlayerViewBinding.playerView.findViewById(R.id.tv_collection_num)
var top6: Float = 827.0f
println(top6)
exampleTvTitlePlayerController =
tvTitlePlayerController =
exampleDetailPlayerViewBinding.playerView.findViewById(R.id.tv_player_title)
var logicN: MutableList<String> = mutableListOf<String>()
logicN.add("indefinitely")
@ -212,6 +214,8 @@ class TOYPlayfairAutoView(context: Context, attrs: AttributeSet?) :
example_iv_share =
exampleDetailPlayerViewBinding.playerView.findViewById(R.id.iv_share_controller)
tvQuality =
exampleDetailPlayerViewBinding.playerView.findViewById(R.id.tv_quality)
var interceptv: Long = 6461L
if (interceptv == 23L) {
}
@ -526,7 +530,7 @@ class TOYPlayfairAutoView(context: Context, attrs: AttributeSet?) :
}
exampleProgressJob?.cancel()
progressJob?.cancel()
var numE: Long = 5987L
if (numE <= 157L) {
}
@ -561,7 +565,7 @@ class TOYPlayfairAutoView(context: Context, attrs: AttributeSet?) :
}
exampleProgressJob = viewLifecycleScope.launch {
progressJob = viewLifecycleScope.launch {
var arrangementO: String = "audiogen"
if (arrangementO.length > 136) {
}
@ -779,14 +783,14 @@ class TOYPlayfairAutoView(context: Context, attrs: AttributeSet?) :
}
exampleProgressJob?.cancel()
progressJob?.cancel()
var unitb: Int = 3323
while (unitb > 110) {
break
}
exampleProgressJob = null
progressJob = null
var additionX: Long = 3766L
if (additionX > 11L) {
}
@ -1165,39 +1169,43 @@ class TOYPlayfairAutoView(context: Context, attrs: AttributeSet?) :
}
exampleTvTitlePlayerController?.text = shortVideo.name
tvTitlePlayerController?.text = shortVideo.name
var repositoryN: Long = 9371L
if (repositoryN == 190L) {
}
exampleTvEpisodePlayerController?.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(
TranslationHelper.getTranslation()?.veloria_all_episodes.toString(),
shortVideo.episode_total.toString()
)
tvCollectionNumController?.text = TranslationHelper.replace(TranslationHelper.getTranslation()?.mireo_EP.toString(),episode.episode.toString())
} else {
ivEpisodePlayerController?.text =
"All ".plus(shortVideo.episode_total).plus(" Episodes")
tvCollectionNumController?.text =
"EP.".plus(episode.episode)
}
var splashB: MutableMap<String, Float> = mutableMapOf<String, Float>()
splashB.put("dividor", 509.0f)
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 +1287,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 +1344,6 @@ class TOYPlayfairAutoView(context: Context, attrs: AttributeSet?) :
println(cagetoryU)
exampleProgressJob?.cancel()
progressJob?.cancel()
}
}

View File

@ -13,8 +13,8 @@ import androidx.annotation.RawRes
import androidx.annotation.StringRes
import androidx.core.content.ContextCompat
import com.veloria.now.shortapp.R
import com.veloria.now.shortapp.civil.TranslationHelper
import kotlin.math.min
import kotlin.math.max
class VSNotificationsDefault @JvmOverloads constructor(
@ -24,15 +24,17 @@ class VSNotificationsDefault @JvmOverloads constructor(
FrameLayout(context, attrs, defStyleAttr, defStyleRes) {
@Volatile
var traceTestPadding: Float = 9408.0f
@Volatile
private var movePlayfairMeasureArray: MutableList<Float> = mutableListOf<Float>()
@Volatile
var rewardsRightDelete_p0Index: Long = 2995L
@Volatile
var scannerBingeListener_idx: Long = 8377L
private var mainLayout: ViewGroup? = null
private var imageView: ImageView? = null
@ -45,7 +47,11 @@ private var movePlayfairMeasureArray: MutableList<Float> = mutableListOf<Float>
private var listener: OnRetryListener? = null
private fun cloudyDramaCancelFormatSink(smartNotifications: Long, imgFirst: Float, setupKeyboard: MutableList<Int>) :Long {
private fun cloudyDramaCancelFormatSink(
smartNotifications: Long,
imgFirst: Float,
setupKeyboard: MutableList<Int>
): Long {
var resJust = 4399L
var priceRetrofit: Int = 5523
println(priceRetrofit)
@ -74,14 +80,17 @@ println(likeInformation)
var collect6: Long = 4445L
if (collect6 >= 9L) {}
if (collect6 >= 9L) {
}
println(collect6)
mainLayout = LayoutInflater.from(context)
.inflate(R.layout.u_resource, this, false) as ViewGroup
var with_aK: Boolean = false
while (!with_aK) { break }
while (!with_aK) {
break
}
imageView = mainLayout!!.findViewById(R.id.iv_icon)
@ -91,31 +100,44 @@ println(likeInformation)
networki.add(330.0)
networki.add(918.0)
networki.add(406.0)
if (networki.contains(8136.0)) {}
if (networki.contains(8136.0)) {
}
println(networki)
tvContent = mainLayout!!.findViewById(R.id.tvEmptyTitle)
var handleru: Boolean = true
while (handleru) { break }
while (handleru) {
break
}
tvMessage = mainLayout!!.findViewById(R.id.tvEmptyMessage)
var place1: Long = 4101L
while (place1 > 147L) { break }
while (place1 > 147L) {
break
}
retryView = mainLayout!!.findViewById(R.id.btnRetry)
var cloudj: Double = 9036.0
while (cloudj < 171.0) { break }
while (cloudj < 171.0) {
break
}
if (TranslationHelper.getTranslation() != null) {
tvContent?.text = TranslationHelper.getTranslation()?.veloria_no_data
tvMessage?.text = TranslationHelper.getTranslation()?.veloria_no_data_add
retryView?.text = TranslationHelper.getTranslation()?.veloria_try_again
}
retryView!!.setOnClickListener {
var free6: Boolean = true
var statey: Int = 4980
if (statey < 131) {}
if (statey < 131) {
}
println(statey)
@ -162,7 +184,9 @@ println(handshakeEach)
var draggingb: Double = 154.0
while (draggingb > 96.0) { break }
while (draggingb > 96.0) {
break
}
println(draggingb)
@ -196,12 +220,14 @@ println(transcodeMrz)
var stylesG: Boolean = false
if (!stylesG) {}
if (!stylesG) {
}
if (mainLayout == null || !isShow()) {
var schemeP: String = "terminate"
if (schemeP.length > 0) {}
if (schemeP.length > 0) {
}
return
@ -259,7 +285,9 @@ println(alsasymboltableAdjectives)
var edit4: Double = 3986.0
while (edit4 < 76.0) { break }
while (edit4 < 76.0) {
break
}
setIcon(ContextCompat.getDrawable(context, id))
@ -294,7 +322,9 @@ println(rlottiecommonAwait)
var transparentc: String = "movepage"
while (transparentc.length > 194) { break }
while (transparentc.length > 194) {
break
}
return mainLayout != null && mainLayout?.visibility == VISIBLE
@ -313,7 +343,10 @@ private fun hailTopDispatchZoomAlsoLaunch(cloudDisplay: MutableMap<String,Boolea
seekIndex = 840.0f
ffprobeOwnersCreating.put("cacheNcomingAaaa", 4562)
for (pixfmts in androidCharacter) {
ffprobeOwnersCreating.put("mafq", if (pixfmts.value.matches(Regex("(-)?(^[0-9]+$)"))) pixfmts.value.toInt() else 27)
ffprobeOwnersCreating.put(
"mafq",
if (pixfmts.value.matches(Regex("(-)?(^[0-9]+$)"))) pixfmts.value.toInt() else 27
)
}
for (cert in 0..requestVideo.size - 1) {
@ -328,7 +361,8 @@ private fun hailTopDispatchZoomAlsoLaunch(cloudDisplay: MutableMap<String,Boolea
fun setAnimResource(@RawRes id: Int) {
var handleBadge:MutableMap<String,Int> = this.hailTopDispatchZoomAlsoLaunch(mutableMapOf<String,Boolean>())
var handleBadge: MutableMap<String, Int> =
this.hailTopDispatchZoomAlsoLaunch(mutableMapOf<String, Boolean>())
var handleBadge_len: Int = handleBadge.size
for (obj_u in handleBadge) {
@ -340,7 +374,8 @@ println(handleBadge)
var postY: Double = 547.0
if (postY < 93.0) {}
if (postY < 93.0) {
}
imageView?.apply {
@ -378,26 +413,31 @@ println(exportIfaddrs)
var min_l_: Double = 630.0
if (min_l_ >= 94.0) {}
if (min_l_ >= 94.0) {
}
if (mainLayout == null) {
var closel: Float = 3076.0f
while (closel >= 36.0f) { break }
while (closel >= 36.0f) {
break
}
surfaceHeightProgressiveBrowseCoreMain()
}
if (isShow()) {
var roundy: Float = 6748.0f
if (roundy < 100.0f) {}
if (roundy < 100.0f) {
}
return
}
retryView!!.visibility = INVISIBLE
var cut2: Int = 4701
if (cut2 <= 68) {}
if (cut2 <= 68) {
}
mainLayout!!.visibility = VISIBLE
@ -490,18 +530,24 @@ println(allpassSerialize)
utilsb.add(true)
utilsb.add(false)
utilsb.add(true)
while (utilsb.size > 199) { break }
while (utilsb.size > 199) {
break
}
println(utilsb)
this.listener = listener
var explorem: Int = 6157
while (explorem > 200) { break }
while (explorem > 200) {
break
}
if (isShow()) {
var clipG: Double = 7440.0
while (clipG > 58.0) { break }
while (clipG > 58.0) {
break
}
retryView!!.visibility = if (this.listener == null) INVISIBLE else VISIBLE
@ -541,7 +587,8 @@ println(modmContaining)
adapterX.put("sea", false)
adapterX.put("srp", false)
adapterX.put("jobq", true)
if (adapterX.get("g") != null) {}
if (adapterX.get("g") != null) {
}
println(adapterX)
@ -550,7 +597,9 @@ println(modmContaining)
window_o7.add(919L)
window_o7.add(651L)
window_o7.add(874L)
while (window_o7.size > 67) { break }
while (window_o7.size > 67) {
break
}
setImageDrawable(drawable)
@ -558,18 +607,24 @@ println(modmContaining)
}
private fun commitDriverBottom(bindingProfile: MutableMap<String,Long>, userHelp: Int, handlerBottom: MutableMap<String,Long>) :String {
private fun commitDriverBottom(
bindingProfile: MutableMap<String, Long>,
userHelp: Int,
handlerBottom: MutableMap<String, Long>
): String {
var latestDisplay = 4878L
var uploadHome = 1707.0f
println(uploadHome)
var giftBackground = true
var navigationbarHqdspIntle: String = "twopoint"
if (latestDisplay >= -128 && latestDisplay <= 128) {
var active_i:Int = min(1, kotlin.random.Random.nextInt(41)) % navigationbarHqdspIntle.length
var active_i: Int =
min(1, kotlin.random.Random.nextInt(41)) % navigationbarHqdspIntle.length
navigationbarHqdspIntle += latestDisplay.toString()
}
if (uploadHome >= -128 && uploadHome <= 128) {
var point_s:Int = min(1, kotlin.random.Random.nextInt(57)) % navigationbarHqdspIntle.length
var point_s: Int =
min(1, kotlin.random.Random.nextInt(57)) % navigationbarHqdspIntle.length
navigationbarHqdspIntle += uploadHome.toString()
}
if (giftBackground) {
@ -583,7 +638,8 @@ private fun commitDriverBottom(bindingProfile: MutableMap<String,Long>, userHelp
fun netWorkShow() {
var contextRingtone = this.commitDriverBottom(mutableMapOf<String,Long>(),834,mutableMapOf<String,Long>())
var contextRingtone =
this.commitDriverBottom(mutableMapOf<String, Long>(), 834, mutableMapOf<String, Long>())
var contextRingtone_len: Int = contextRingtone.length
println(contextRingtone)
@ -592,7 +648,9 @@ println(contextRingtone)
var renderersP: String = "tweaks"
while (renderersP.length > 166) { break }
while (renderersP.length > 166) {
break
}
this.traceTestPadding = 640.0f
@ -606,26 +664,32 @@ this.traceTestPadding = 640.0f
if (mainLayout == null) {
var c_managerf: Float = 5448.0f
while (c_managerf == 116.0f) { break }
while (c_managerf == 116.0f) {
break
}
surfaceHeightProgressiveBrowseCoreMain()
}
if (isShow()) {
var closeS: Int = 9872
while (closeS <= 115) { break }
while (closeS <= 115) {
break
}
return
}
setIcon(R.mipmap.button_banner)
var giftA: Double = 7976.0
if (giftA > 120.0) {}
if (giftA > 120.0) {
}
setHint("Network anomaly")
var saltE: Boolean = true
if (saltE) {}
if (saltE) {
}
retryView!!.visibility = if (listener == null) INVISIBLE else VISIBLE
@ -648,15 +712,18 @@ private fun seekClickSetupCheckNothing() :String {
mismatchesSerializableLookup += bodyloadLoading.get(0)
}
if (coinsRecord <= 128 && coinsRecord >= -128) {
var free_w = min(1, kotlin.random.Random.nextInt(52)) % mismatchesSerializableLookup.length
var free_w =
min(1, kotlin.random.Random.nextInt(52)) % mismatchesSerializableLookup.length
mismatchesSerializableLookup += coinsRecord.toString()
}
if (eventFfmpeg >= -128 && eventFfmpeg <= 128) {
var select_r:Int = min(1, kotlin.random.Random.nextInt(60)) % mismatchesSerializableLookup.length
var select_r: Int =
min(1, kotlin.random.Random.nextInt(60)) % mismatchesSerializableLookup.length
mismatchesSerializableLookup += eventFfmpeg.toString()
}
if (profileCamera >= -128 && profileCamera <= 128) {
var ffmpeg_q = min(1, kotlin.random.Random.nextInt(18)) % mismatchesSerializableLookup.length
var ffmpeg_q =
min(1, kotlin.random.Random.nextInt(18)) % mismatchesSerializableLookup.length
mismatchesSerializableLookup += profileCamera.toString()
}

View File

@ -15,6 +15,7 @@ import com.scwang.smart.refresh.layout.api.RefreshLayout
import com.scwang.smart.refresh.layout.listener.OnRefreshLoadMoreListener
import com.veloria.now.shortapp.R
import com.veloria.now.shortapp.civil.JActivityAdapter
import com.veloria.now.shortapp.civil.JActivityAdapter.CONSTANTS_QUALITY_REFRESH
import com.veloria.now.shortapp.civil.NOFfmpeg
import com.veloria.now.shortapp.civil.RYAction
import com.veloria.now.shortapp.civil.TranslationHelper
@ -324,8 +325,9 @@ class GColorsFragment : JItemServiceFragment<VpnInterceptorBinding, PWidthClient
isQualityRefresh = true
}
restoreRightKeyboardFirstProfileActivity()
}
}
@ -371,6 +373,17 @@ class GColorsFragment : JItemServiceFragment<VpnInterceptorBinding, PWidthClient
showComplete()
binding.viewPagerRecommend.visibility = View.VISIBLE
// if (revolution == "1080" && !RYAction.isVipTo()) {
// if (RYAction.isTouristTo()){
// RYAction.getMMKV()
// .putInt(JActivityAdapter.CONSTANTS_QUALITY, 540)
// }else {
// RYAction.getMMKV()
// .putInt(JActivityAdapter.CONSTANTS_QUALITY, 720)
// }
// revolution = RYAction.getMMKV().getInt(JActivityAdapter.CONSTANTS_QUALITY, 540).toString()
// }
viewModel.getExploreRecommends(currentPage, revolution)
} else {
var listv: MutableMap<String, String> = mutableMapOf<String, String>()

View File

@ -18,6 +18,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.JActivityAdapter.VIDEO_SHORT_PLAY_ID
import com.veloria.now.shortapp.civil.NOFfmpeg
import com.veloria.now.shortapp.civil.RYAction
@ -526,7 +527,7 @@ class NOEditRegisterFragment : JItemServiceFragment<QfAutoBinding, VDLRenderers>
this.buttonMeasureStandArr = mutableListOf<Boolean>()
StatusBarUtil.addStatusBarPadding(binding.textHome)
// StatusBarUtil.addStatusBarPadding(binding.textHome)
var coverP: String = "member"
if (coverP.length > 87) {
}
@ -544,7 +545,7 @@ class NOEditRegisterFragment : JItemServiceFragment<QfAutoBinding, VDLRenderers>
}
binding.constraint.visibility = View.GONE
binding.clRoot.visibility = View.GONE
var bolda: Int = 5532
if (bolda == 91) {
}
@ -586,6 +587,7 @@ class NOEditRegisterFragment : JItemServiceFragment<QfAutoBinding, VDLRenderers>
})
return
}
showComplete()
EventBus.getDefault().register(this)
var bbfdebaffdk: Boolean = true
if (!bbfdebaffdk) {
@ -594,17 +596,19 @@ class NOEditRegisterFragment : JItemServiceFragment<QfAutoBinding, VDLRenderers>
if (TranslationHelper.getTranslation() != null) {
binding.textHome.text =
TranslationHelper.getTranslation()?.veloria_addictive_short_await
binding.tvMenuBinge.text = TranslationHelper.getTranslation()?.veloria_worthy_picks
binding.tvMenuDrama.text = TranslationHelper.getTranslation()?.veloria_drama_champions
binding.tvMenuCategories.text =
TranslationHelper.getTranslation()?.veloria_select_categories
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)
binding.tvMenuBinge.text = getString(R.string.binge_worthy_picks)
binding.tvMenuDrama.text = getString(R.string.drama_champions)
binding.tvMenuCategories.text = getString(R.string.select_categories)
binding.tvMenuCategories1.text = getString(R.string.select_categories)
@ -623,7 +627,7 @@ class NOEditRegisterFragment : JItemServiceFragment<QfAutoBinding, VDLRenderers>
println(message6)
binding.constraint.visibility = View.VISIBLE
binding.clRoot.visibility = View.VISIBLE
var viewsL: Long = 2629L
while (viewsL > 95L) {
break
@ -1238,6 +1242,17 @@ class NOEditRegisterFragment : JItemServiceFragment<QfAutoBinding, VDLRenderers>
viewModel.userInfo.observe(this){
if (it?.data != null) {
RYAction.saveUserInfoBean(it.data)
if (!RYAction.isVipTo()) {
if (RYAction.isTouristTo()){
RYAction.getMMKV()
.putInt(JActivityAdapter.CONSTANTS_QUALITY, 540)
}else {
RYAction.getMMKV()
.putInt(JActivityAdapter.CONSTANTS_QUALITY, 720)
}
EventBus.getDefault().post(CONSTANTS_QUALITY_REFRESH)
}
}
}
@ -1473,7 +1488,7 @@ class NOEditRegisterFragment : JItemServiceFragment<QfAutoBinding, VDLRenderers>
}
println(infoO)
binding.tvMenuBinge.text = homeTotal.title
homeBingeAdapter?.submitList(homeTotal.list)
} else {
var register__9: Double = 7713.0
@ -1652,12 +1667,10 @@ class NOEditRegisterFragment : JItemServiceFragment<QfAutoBinding, VDLRenderers>
while (helpqb >= 138) {
break
}
val maxSize = appearanceBase.size - (appearanceBase.size % 3)
val dramaList = appearanceBase.take(maxSize)
val dramaArrayList = appearanceBase.take(maxSize)
homeDramaAdapter?.submitList(dramaArrayList)
homeDramaAdapter?.submitList(dramaList)
} else {
var loginm: String = "downmix"
while (loginm.length > 104) {

View File

@ -7,6 +7,17 @@ import android.view.View
import android.view.ViewGroup
import androidx.fragment.app.activityViewModels
import androidx.lifecycle.ViewModelProvider
import androidx.lifecycle.lifecycleScope
import com.android.billingclient.api.AcknowledgePurchaseParams
import com.android.billingclient.api.BillingClient
import com.android.billingclient.api.BillingClientStateListener
import com.android.billingclient.api.BillingFlowParams
import com.android.billingclient.api.BillingResult
import com.android.billingclient.api.ProductDetails
import com.android.billingclient.api.ProductDetailsResponseListener
import com.android.billingclient.api.Purchase
import com.android.billingclient.api.PurchasesUpdatedListener
import com.android.billingclient.api.QueryProductDetailsParams
import com.bumptech.glide.Glide
import com.bumptech.glide.load.engine.DiskCacheStrategy
import com.bumptech.glide.load.resource.bitmap.CircleCrop
@ -16,25 +27,32 @@ 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.RYAction
import com.veloria.now.shortapp.civil.TranslationHelper
import com.veloria.now.shortapp.civil.YFHome
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
import com.veloria.now.shortapp.subtractionCroll.bidirectional.coordinate.JService
import com.veloria.now.shortapp.texturedAsink.VeCreatePayOrderReqBean
import com.veloria.now.shortapp.texturedAsink.VePayBean
import com.veloria.now.shortapp.texturedAsink.VePaySettingsBean
import kotlinx.coroutines.launch
import org.greenrobot.eventbus.EventBus
import org.greenrobot.eventbus.Subscribe
import org.greenrobot.eventbus.ThreadMode
@ -190,9 +208,12 @@ class UColorsAvatarFragment : JItemServiceFragment<EvBodyloadHomeBinding, OMNorm
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,16 +221,18 @@ class UColorsAvatarFragment : JItemServiceFragment<EvBodyloadHomeBinding, OMNorm
binding.tvRewards.text = TranslationHelper.getTranslation()?.veloria_rewards
binding.tvRecord.text = TranslationHelper.getTranslation()?.veloria_order_record
binding.tvLanguage.text = TranslationHelper.getTranslation()?.veloria_language
binding.tvDeleteAccount.text = TranslationHelper.getTranslation()?.veloria_delete_account
binding.tvDeleteAccount.text =
TranslationHelper.getTranslation()?.veloria_delete_account
binding.tvPrivacyPolicy.text = TranslationHelper.getTranslation()?.veloria_my_privacy
binding.tvUserAgreement.text = TranslationHelper.getTranslation()?.veloria_my_agreement
binding.tvVisit.text = TranslationHelper.getTranslation()?.veloria_visit_website
binding.tvHelpCenter.text = TranslationHelper.getTranslation()?.veloria_my_feedback
binding.tvAboutUs.text = TranslationHelper.getTranslation()?.veloria_me_about
binding.tvFavorites.text = TranslationHelper.getTranslation()?.veloria_favorites
}
setPushUI()
setShowVipSlashDialog()
}
@ -225,14 +248,18 @@ class UColorsAvatarFragment : JItemServiceFragment<EvBodyloadHomeBinding, OMNorm
binding.tvLogin.text = "Log in"
}
binding.ivAvatar.setImageResource(R.mipmap.binge_banner)
// binding.ivAvatar.setImageResource(R.mipmap.binge_banner)
binding.ivAvatar.let {
Glide.with(this).load(R.mipmap.binge_banner).into(it)
}
binding.tvDeleteAccount.visibility = View.GONE
} else {
binding.tvName.text =
RYAction.getUserInfoBean()?.family_name.plus(RYAction.getUserInfoBean()?.giving_name)
RYAction.getUserInfoBean()?.family_name
binding.tvLogin.text = TranslationHelper.getTranslation()?.let { TranslationHelper.getTranslation()?.veloria_log_out } ?: "Log out"
binding.tvLogin.text = TranslationHelper.getTranslation()
?.let { TranslationHelper.getTranslation()?.veloria_log_out } ?: "Log out"
binding.ivAvatar.let {
Glide.with(this).load(RYAction.getUserInfoBean()?.avator).skipMemoryCache(true)
@ -284,6 +311,7 @@ class UColorsAvatarFragment : JItemServiceFragment<EvBodyloadHomeBinding, OMNorm
binding.tvVipName.text = "Join VIP"
binding.tvVipDes.text = getString(R.string.pagerCategoies)
}
}
}
@ -391,6 +419,17 @@ class UColorsAvatarFragment : JItemServiceFragment<EvBodyloadHomeBinding, OMNorm
setPushUI()
if (!RYAction.isVipTo()) {
if (RYAction.isTouristTo()) {
RYAction.getMMKV()
.putInt(JActivityAdapter.CONSTANTS_QUALITY, 540)
} else {
RYAction.getMMKV()
.putInt(JActivityAdapter.CONSTANTS_QUALITY, 720)
}
EventBus.getDefault().post(CONSTANTS_QUALITY_REFRESH)
}
}
hideLoading()
@ -405,19 +444,63 @@ class UColorsAvatarFragment : JItemServiceFragment<EvBodyloadHomeBinding, OMNorm
LoginManager.getInstance().logOut()
RYAction.getMMKV()
.putString(JActivityAdapter.ACCOUNT_TOKEN, it.data.token)
EventBus.getDefault()
.post(JActivityAdapter.HOME_LEAVE_APP)
EventBus.getDefault()
.post(JActivityAdapter.HOME_ENTER_THE_APP)
EventBus.getDefault()
.post(JActivityAdapter.HOME_USER_REFRESH)
// RYAction.getMMKV()
// .putInt(JActivityAdapter.CONSTANTS_QUALITY, 540)
EventBus.getDefault()
.post(JActivityAdapter.CONSTANTS_QUALITY_REFRESH)
EventBus.getDefault()
.post(JActivityAdapter.HOME_NAVIGATE_TO_HOME)
EventBus.getDefault()
.post(JActivityAdapter.HOME_ON_LINE)
}
}
viewModel.PaySettingsV3.observe(this) {
if (it?.data != null) {
if (it.data.list_sub_vip.isNotEmpty()) {
setVipSlashDialog(it.data.list_sub_vip)
it.data.list_sub_vip.let { it1 -> querySubVipProductDetails(it1) }
}
}
}
viewModel.createPayOrderData.observe(this) {
if (it?.data != null) {
order_code = it.data.order_code.toString()
vipData?.android_template_id?.let { it1 -> getProduct(it1) }
} else {
if (TranslationHelper.getTranslation() != null) {
toast(TranslationHelper.getTranslation()?.veloria_network.toString())
} else {
toast(getString(R.string.shapeSelected))
}
hideLoading()
}
}
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))
}
viewModel.getUserInfo()
vipSplashDialog?.dismiss()
} else {
payBeanReq?.let { it1 -> RYAction.saveOrder(it1) }
if (TranslationHelper.getTranslation() != null) {
toast(TranslationHelper.getTranslation()?.veloria_network.toString())
} else {
toast(getString(R.string.shapeSelected))
}
hideLoading()
}
}
binding.tvUserAgreement.setOnClickListener {
var fragmentsP: Long = 2747L
if (fragmentsP == 197L) {
@ -526,6 +609,16 @@ class UColorsAvatarFragment : JItemServiceFragment<EvBodyloadHomeBinding, OMNorm
}
}
binding.tvStore.setOnClickListener {
singleOnClick {
startActivity(
Intent(
requireContext(),
VeStoreActivity::class.java
)
)
}
}
binding.clVip.setOnClickListener {
singleOnClick {
var loggingY: MutableMap<String, String> = mutableMapOf<String, String>()
loggingY.put("trellis", "retried")
@ -633,6 +726,8 @@ class UColorsAvatarFragment : JItemServiceFragment<EvBodyloadHomeBinding, OMNorm
val dialog = LogoutDialog(requireContext()).apply {
setOnLogoutClickListener(object : LogoutDialog.LogoutOnClick {
override fun onLogoutAction() {
EventBus.getDefault()
.post(JActivityAdapter.HOME_LEAVE_APP)
viewModel.setLogout()
}
})
@ -735,9 +830,95 @@ class UColorsAvatarFragment : JItemServiceFragment<EvBodyloadHomeBinding, OMNorm
showLoading()
viewModel.getUserInfo()
setShowVipSlashDialog()
}
}
private var isVipSplash = false
fun setShowVipSlashDialog() {
// Fragment 可见
binding.root.postDelayed({
// if (!RYAction.isVipTo() && !isVipSplash) {
if (setShowVIPSlash() && !RYAction.isVipTo() && !isVipSplash) {
initPayData()
viewModel.getPaySettingsV3(0, 0)
}
}, 1000)
}
var vipSplashDialog: VipSplashDialog? = null
fun isFragmentVisible(): Boolean {
return isAdded &&
isResumed &&
!isHidden &&
view?.visibility == View.VISIBLE
}
private fun setVipSlashDialog(vipBeans: List<VePaySettingsBean.VipBean>) {
if (!isFragmentVisible()) {
return
}
vipSplashDialog = VipSplashDialog(requireContext(), vipBeans).apply {
setOnVipSplashOnClickListener(object :
VipSplashDialog.SetVipSplashOnClick {
override fun onVipSplash() {
startActivity(
Intent(
requireContext(),
VeStoreActivity::class.java
)
)
}
override fun onVipOnAdapterBuy(vipBean: VePaySettingsBean.VipBean) {
if (!isConnect) {
if (TranslationHelper.getTranslation() != null) {
toast(TranslationHelper.getTranslation()?.veloria_google_pay_error.toString())
} else {
toast(getString(R.string.ve_google_pay_error))
}
return
}
vipData = vipBean
showLoading()
viewModel.setCreatePayOrder(
VeCreatePayOrderReqBean(
vipData?.id.toString(),
"google",
0,
0
)
)
}
})
}
vipSplashDialog?.setOnDismissListener {
RYAction.getMMKV().putLong(
JActivityAdapter.ACCOUNT_DIALOG_TIME_VIP_SPLASH,
System.currentTimeMillis()
)
isVipSplash = false
billingClientMe?.endConnection()
billingClientMe = null
System.gc()
}
vipSplashDialog?.show()
vipSplashDialog?.setVipSplashOnClick
isVipSplash = true
}
override fun onDestroy() {
super.onDestroy()
payBeanReq = null
if (billingClientMe != null) {
billingClientMe?.endConnection()
billingClientMe = null
}
System.gc()
}
@Subscribe(threadMode = ThreadMode.MAIN)
fun onEvent(event: String) {
if (JActivityAdapter.HOME_USER_REFRESH == event || JActivityAdapter.HOME_REFRESH_ME == event) {
@ -746,4 +927,240 @@ class UColorsAvatarFragment : JItemServiceFragment<EvBodyloadHomeBinding, OMNorm
}
}
private var billingClientMe: BillingClient? = null
private var connectNum = 0
private var isConnect = false
private var vipData: VePaySettingsBean.VipBean? = null
private var order_code = ""
private var payBeanReq: VePayBean? = null
private fun initPayData() {
val purchasesUpdatedMeListener =
PurchasesUpdatedListener { billingResult, purchases ->
when (billingResult.responseCode) {
BillingClient.BillingResponseCode.OK -> {
for (purchase in purchases!!) {
if (purchase.purchaseState == Purchase.PurchaseState.PURCHASED) {
consumePurchaseSubMe(purchase)
}
}
}
BillingClient.BillingResponseCode.ITEM_ALREADY_OWNED -> {
queryAndConsumePurchases()
hideLoading()
}
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))
}
hideLoading()
}
else -> {
if (TranslationHelper.getTranslation() != null) {
toast(TranslationHelper.getTranslation()?.veloria_google_pay_error.toString())
} else {
toast(getString(R.string.ve_google_pay_error))
}
hideLoading()
}
}
}
billingClientMe = BillingClient.newBuilder(requireContext())
.setListener(purchasesUpdatedMeListener)
.enablePendingPurchases()
.build()
val stateMeListener: BillingClientStateListener = object : BillingClientStateListener {
override fun onBillingSetupFinished(billingResult: BillingResult) {
if (billingResult.responseCode == BillingClient.BillingResponseCode.OK) {
isConnect = true
}
}
override fun onBillingServiceDisconnected() {
if (connectNum < 5) {
connectNum++
isConnect = false
billingClientMe?.startConnection(this)
}
}
}
billingClientMe?.startConnection(stateMeListener)
}
private fun consumePurchaseSubMe(
purchase: Purchase
) {
if (billingClientMe?.isReady == true) {
if (!purchase.isAcknowledged) {
val acknowledgePurchaseParams =
AcknowledgePurchaseParams.newBuilder()
.setPurchaseToken(purchase.purchaseToken)
.build()
billingClientMe?.acknowledgePurchase(
acknowledgePurchaseParams
) {
val vePayBean = VePayBean(
order_code,
vipData?.id.toString(),
YFHome.getPackageName(),
vipData?.android_template_id.toString(),
purchase.purchaseToken,
purchase.orderId.toString(),
vipData?.price.toString()
)
payBeanReq = vePayBean
if (it.responseCode == BillingClient.BillingResponseCode.OK) {
lifecycleScope.launch {
viewModel.setGooglePaid(vePayBean)
}
} else {
RYAction.saveOrder(vePayBean)
lifecycleScope.launch {
toast(it.toString())
hideLoading()
}
}
}
} else {
if (TranslationHelper.getTranslation() != null) {
toast(TranslationHelper.getTranslation()?.veloria_google_pay_error.toString())
} else {
toast(getString(R.string.ve_google_pay_error))
}
hideLoading()
}
} else {
if (TranslationHelper.getTranslation() != null) {
toast(TranslationHelper.getTranslation()?.veloria_google_pay_error.toString())
} else {
toast(getString(R.string.ve_google_pay_error))
}
hideLoading()
}
}
private fun querySubVipProductDetails(listSubVip: List<VePaySettingsBean.VipBean>) {
val productDetailsResponseListener =
ProductDetailsResponseListener { billingResult, productDetailsList ->
if (billingResult.responseCode == BillingClient.BillingResponseCode.OK) {
val priceInfo = productDetailsList.mapNotNull { productDetails ->
productDetails.subscriptionOfferDetails?.get(0)?.pricingPhases?.pricingPhaseList?.get(
0
)?.let {
productDetails.productId to (it.formattedPrice to it.priceCurrencyCode)
}
}.toMap()
// 更新VIP列表的价格和货币代码
val updatedVipList = listSubVip.map { vip ->
priceInfo[vip.android_template_id]?.let { (price, currency) ->
vip.copy(price_google = price, currency_goolge = currency)
} ?: vip
}
binding.root.postDelayed({
vipSplashDialog?.setAdapterSubmitList(updatedVipList)
hideLoading()
}, 500)
} else {
hideLoading()
}
}
val productType: String = BillingClient.ProductType.SUBS
val inAppProductInfo = listSubVip.map {
QueryProductDetailsParams.Product.newBuilder()
.setProductId(it.android_template_id)
.setProductType(productType)
.build()
}
if (inAppProductInfo.isNotEmpty()) {
val productDetailsParams = QueryProductDetailsParams.newBuilder()
.setProductList(inAppProductInfo)
.build()
billingClientMe?.queryProductDetailsAsync(
productDetailsParams,
productDetailsResponseListener
)
} else {
hideLoading()
}
}
private fun getProduct(productId: String) {
val productDetailsResponseListener =
ProductDetailsResponseListener { billingResult, productDetailsList ->
if (productDetailsList.isNotEmpty()) {
setPay(productDetailsList[0])
} else {
lifecycleScope.launch {
toast(billingResult.toString())
hideLoading()
}
}
}
val productType: String =
BillingClient.ProductType.SUBS
val inAppProductInfo = ArrayList<QueryProductDetailsParams.Product>()
inAppProductInfo.add(
QueryProductDetailsParams.Product.newBuilder()
.setProductId(productId)
.setProductType(productType)
.build()
)
val productDetailsParams = QueryProductDetailsParams.newBuilder()
.setProductList(inAppProductInfo)
.build()
billingClientMe?.queryProductDetailsAsync(
productDetailsParams,
productDetailsResponseListener
)
}
private fun setPay(productDetailInfo: ProductDetails) {
if (productDetailInfo.subscriptionOfferDetails?.isNotEmpty() == true) {
val params = ArrayList<BillingFlowParams.ProductDetailsParams>()
productDetailInfo.subscriptionOfferDetails?.get(0)?.offerToken?.let {
BillingFlowParams.ProductDetailsParams.newBuilder()
.setProductDetails(productDetailInfo)
.setOfferToken(it)
.build()
}?.let {
params.add(
it
)
}
val billingFlowParams = BillingFlowParams.newBuilder()
.setObfuscatedProfileId(order_code)
.setObfuscatedAccountId(RYAction.getCustomId())
.setProductDetailsParamsList(params)
.build()
billingClientMe?.launchBillingFlow(requireActivity(), billingFlowParams)
}
}
private fun queryAndConsumePurchases() {
// 查询所有未消费的购买记录
billingClientMe?.queryPurchasesAsync(BillingClient.ProductType.INAPP) { billingResult, purchaseList ->
if (billingResult.responseCode == BillingClient.BillingResponseCode.OK) {
for (purchase in purchaseList) {
// consumePurchase(purchase)
}
}
}
}
}

View File

@ -398,6 +398,7 @@ class ZEpisodeFragment : JItemServiceFragment<QHeaderBinding, NNAndroid>(), NOFf
})
return
}
showComplete()
EventBus.getDefault().register(this)
var s_heightN: String = "uplink"

View File

@ -6,6 +6,11 @@ import com.veloria.now.shortapp.newsletter.SStringsHelp
import com.veloria.now.shortapp.newsletter.TStore
import com.veloria.now.shortapp.texturedAsink.DoLoginBean
import com.veloria.now.shortapp.texturedAsink.KFAFavoritesInterceptorBean
import com.veloria.now.shortapp.texturedAsink.VeCreatePayOrderBean
import com.veloria.now.shortapp.texturedAsink.VeCreatePayOrderReqBean
import com.veloria.now.shortapp.texturedAsink.VePayBean
import com.veloria.now.shortapp.texturedAsink.VePayResBean
import com.veloria.now.shortapp.texturedAsink.VePaySettingsBean
class OMNormalInstrumented : SStringsHelp() {
@ -35,4 +40,29 @@ class OMNormalInstrumented : SStringsHelp() {
repository.setLogout().observeForever { result ->
_logoutLiveData.value = result.getOrNull()
}
private val _paySettingsV3 = MutableLiveData<TStore<VePaySettingsBean>?>()
val PaySettingsV3: MutableLiveData<TStore<VePaySettingsBean>?> get() = _paySettingsV3
fun getPaySettingsV3(short_play_id: Int, short_play_video_id: Int) =
repository.getPaySettingsV3(short_play_id,short_play_video_id).observeForever { result ->
_paySettingsV3.value = result.getOrNull()
}
private val createPayOrderLiveData = MutableLiveData<TStore<VeCreatePayOrderBean>?>()
val createPayOrderData: MutableLiveData<TStore<VeCreatePayOrderBean>?> get() = createPayOrderLiveData
fun setCreatePayOrder(createOrderReq: VeCreatePayOrderReqBean) {
repository.setCreatePayOrder(createOrderReq).observeForever { result ->
createPayOrderLiveData.value = result.getOrNull()
}
}
private val googlePaidLiveData = MutableLiveData<TStore<VePayResBean>?>()
val googlePaidData: MutableLiveData<TStore<VePayResBean>?> get() = googlePaidLiveData
fun setGooglePaid(vePayBean: VePayBean?) {
repository.setGooglePaid(vePayBean).observeForever { result ->
googlePaidLiveData.value = result.getOrNull()
}
}
}

View File

@ -0,0 +1,65 @@
package com.veloria.now.shortapp.subtractionCroll.avcintraRelock
import android.annotation.SuppressLint
import android.app.Dialog
import android.content.Context
import android.graphics.Color
import android.graphics.drawable.ColorDrawable
import android.view.Gravity
import android.view.Window
import android.view.WindowManager
import androidx.appcompat.widget.AppCompatImageView
import androidx.appcompat.widget.AppCompatTextView
import com.veloria.now.shortapp.R
import com.veloria.now.shortapp.civil.JActivityAdapter
import com.veloria.now.shortapp.civil.TranslationHelper
import org.greenrobot.eventbus.EventBus
@SuppressLint("MissingInflatedId")
class NotificationsDialog(context: Context) : Dialog(context) {
var setNotificationOnClick: SetNotificationOnClick? = null
interface SetNotificationOnClick {
fun notificationOnClick()
}
init {
requestWindowFeature(Window.FEATURE_NO_TITLE)
setContentView(R.layout.dialog_notifications)
window?.apply {
setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
setLayout(
(context.resources.displayMetrics.widthPixels * 0.8).toInt(),
WindowManager.LayoutParams.WRAP_CONTENT
)
setGravity(Gravity.CENTER)
}
setCancelable(true)
val ivClose = findViewById<AppCompatImageView>(R.id.iv_close)
val tvGo = findViewById<AppCompatTextView>(R.id.tv_go)
val tvContent = findViewById<AppCompatTextView>(R.id.tv_content)
val tvTitle = findViewById<AppCompatTextView>(R.id.tv_title)
if (TranslationHelper.getTranslation() != null) {
tvTitle.text = TranslationHelper.getTranslation()?.veloria_open_notice_at_watch_video
tvContent.text = TranslationHelper.getTranslation()?.veloria_open_notice_alert_text
tvGo.text = TranslationHelper.getTranslation()?.veloria_allow
}
ivClose.setOnClickListener {
dismiss()
}
tvGo.setOnClickListener {
setNotificationOnClick?.notificationOnClick()
dismiss()
}
}
fun setOnNotificationClickListener(listener: SetNotificationOnClick) {
this.setNotificationOnClick = listener
}
}

View File

@ -94,6 +94,8 @@ class PlayerBuyDialogFragment : BottomSheetDialogFragment() {
if (TranslationHelper.getTranslation() != null) {
binding?.tvCoinsText?.text = TranslationHelper.getTranslation()?.veloria_your_coins
binding?.tvCoinTitle?.text = TranslationHelper.getTranslation()?.veloria_coin_buy_title
binding?.tvUnlockText?.text = TranslationHelper.getTranslation()?.veloria_unlock
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
binding?.tvTips?.text = Html.fromHtml(
TranslationHelper.getTranslation()?.veloria_store_tips
@ -111,6 +113,7 @@ class PlayerBuyDialogFragment : BottomSheetDialogFragment() {
initLoading()
binding?.tvCoins?.text = RYAction.getAllCoinTotal().toString()
binding?.tvUnlock?.text = parcelable?.coins?.toString()
binding?.ivCloseDialog?.setOnClickListener {
dismiss()
@ -218,6 +221,7 @@ class PlayerBuyDialogFragment : BottomSheetDialogFragment() {
singleOnClick {
if (!isConnect) {
if (TranslationHelper.getTranslation() != null) {
toast(TranslationHelper.getTranslation()?.veloria_google_pay_error.toString())
} else {
toast(getString(R.string.ve_google_pay_error))
}
@ -317,6 +321,7 @@ class PlayerBuyDialogFragment : BottomSheetDialogFragment() {
}
} else {
if (TranslationHelper.getTranslation() != null) {
toast(TranslationHelper.getTranslation()?.veloria_network.toString())
} else {
toast(getString(R.string.shapeSelected))
}
@ -326,12 +331,10 @@ 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))
}
if (null != payBeanReq) {
RYAction.removeOrder(payBeanReq)
}
EventBus.getDefault()
.post(JActivityAdapter.VIDEO_PAY_REFRESH)
dismiss()
@ -339,6 +342,7 @@ 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))
}
@ -364,8 +368,14 @@ class PlayerBuyDialogFragment : BottomSheetDialogFragment() {
}
}
BillingClient.BillingResponseCode.ITEM_ALREADY_OWNED -> {
queryAndConsumePurchases()
hideLoading()
}
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))
}
@ -374,6 +384,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))
}
@ -655,7 +666,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))
}
@ -663,6 +674,16 @@ class PlayerBuyDialogFragment : BottomSheetDialogFragment() {
}
}
private fun queryAndConsumePurchases() {
// 查询所有未消费的购买记录
billingClientData?.queryPurchasesAsync(BillingClient.ProductType.INAPP) { billingResult, purchaseList ->
if (billingResult.responseCode == BillingClient.BillingResponseCode.OK) {
for (purchase in purchaseList) {
consumePurchase(purchase)
}
}
}
}
override fun onDismiss(dialog: DialogInterface) {
payBeanReq = null

View File

@ -0,0 +1,95 @@
package com.veloria.now.shortapp.subtractionCroll.avcintraRelock
import android.app.Dialog
import android.content.Context
import android.content.Intent
import android.graphics.Color
import android.graphics.drawable.ColorDrawable
import android.net.Uri
import android.os.Build
import android.text.Html
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.civil.YFHome
import com.veloria.now.shortapp.texturedAsink.VersionControlBean
class VersionControlDialog(context: Context, versionControlBean: VersionControlBean) :
Dialog(context) {
init {
requestWindowFeature(Window.FEATURE_NO_TITLE)
setContentView(R.layout.dialog_version_control)
window?.apply {
setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
setLayout(
(context.resources.displayMetrics.widthPixels * 0.8).toInt(),
WindowManager.LayoutParams.WRAP_CONTENT
)
setGravity(Gravity.CENTER)
}
setCancelable(false)
val ivClose = findViewById<AppCompatImageView>(R.id.iv_close)
val tvVersion = findViewById<AppCompatTextView>(R.id.tv_version)
val tvNow = findViewById<AppCompatTextView>(R.id.tv_now)
val tvContent = findViewById<AppCompatTextView>(R.id.tv_content)
val tvTitle = findViewById<AppCompatTextView>(R.id.tv_title)
tvVersion.text = "v".plus(versionControlBean.version_name)
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
tvContent?.text = Html.fromHtml(
versionControlBean.description, Html.FROM_HTML_MODE_COMPACT
)
} else {
tvContent?.text = Html.fromHtml(
versionControlBean.description
)
}
if (TranslationHelper.getTranslation() != null) {
tvTitle.text = TranslationHelper.getTranslation()?.veloria_update_title
tvNow.text = TranslationHelper.getTranslation()?.veloria_update_now
}
ivClose.setOnClickListener {
dismiss()
}
tvNow.setOnClickListener {
setOpenGooglePlayStore(YFHome.getPackageName())
dismiss()
}
this.setOnDismissListener {
RYAction.getMMKV().putLong(
JActivityAdapter.ACCOUNT_VERSION_CONTROL_TIME,
System.currentTimeMillis()
)
}
}
private fun setOpenGooglePlayStore(packageName: String) {
try {
val intent = Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=$packageName"))
intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK
context.startActivity(intent)
} catch (e: Exception) {
val intent = Intent(
Intent.ACTION_VIEW,
Uri.parse("https://play.google.com/store/apps/details?id=$packageName")
)
intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK
context.startActivity(intent)
}
}
}

View File

@ -0,0 +1,64 @@
package com.veloria.now.shortapp.subtractionCroll.avcintraRelock
import android.annotation.SuppressLint
import android.app.Dialog
import android.content.Context
import android.graphics.Color
import android.graphics.drawable.ColorDrawable
import android.view.Gravity
import android.view.Window
import android.view.WindowManager
import androidx.appcompat.widget.AppCompatImageView
import androidx.appcompat.widget.AppCompatTextView
import com.veloria.now.shortapp.R
import com.veloria.now.shortapp.civil.JActivityAdapter
import com.veloria.now.shortapp.civil.TranslationHelper
import org.greenrobot.eventbus.EventBus
@SuppressLint("MissingInflatedId")
class VipActivateDialog(context: Context) : Dialog(context) {
init {
requestWindowFeature(Window.FEATURE_NO_TITLE)
setContentView(R.layout.dialog_vip_activate)
window?.apply {
setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
setLayout(
(context.resources.displayMetrics.widthPixels * 0.8).toInt(),
WindowManager.LayoutParams.WRAP_CONTENT
)
setGravity(Gravity.CENTER)
}
setCancelable(true)
val ivClose = findViewById<AppCompatImageView>(R.id.iv_close)
val tvCancel = findViewById<AppCompatTextView>(R.id.tv_cancel)
val tvGo = findViewById<AppCompatTextView>(R.id.tv_go)
val tvContent = findViewById<AppCompatTextView>(R.id.tv_content)
val tvTitle = findViewById<AppCompatTextView>(R.id.tv_title)
if (TranslationHelper.getTranslation() != null) {
tvTitle.text = TranslationHelper.getTranslation()?.veloria_vip_activate_title
tvContent.text = TranslationHelper.getTranslation()?.veloria_vip_activate_content
tvCancel.text = TranslationHelper.getTranslation()?.veloria_later
tvGo.text = TranslationHelper.getTranslation()?.veloria_go
}
ivClose.setOnClickListener {
dismiss()
}
tvCancel.setOnClickListener {
EventBus.getDefault()
.post(JActivityAdapter.VIDEO_START_PLAY)
dismiss()
}
tvGo.setOnClickListener {
EventBus.getDefault()
.post(JActivityAdapter.VIDEO_STOP_PLAY)
dismiss()
}
}
}

View File

@ -0,0 +1,141 @@
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 loginOnClick()
fun showActivateOnClick()
}
init {
requestWindowFeature(Window.FEATURE_NO_TITLE)
setContentView(R.layout.dialog_ve_quality)
window?.apply {
setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
setLayout(
(context.resources.displayMetrics.widthPixels * 0.95).toInt(),
WindowManager.LayoutParams.WRAP_CONTENT
)
setGravity(Gravity.BOTTOM)
}
setCancelable(true)
val tvQuality480 = findViewById<AppCompatTextView>(R.id.tv_quality_480)
val tvQuality720 = findViewById<AppCompatTextView>(R.id.tv_quality_720)
val tvQuality1080 = findViewById<AppCompatTextView>(R.id.tv_quality_1080)
val tvLoginTag = findViewById<AppCompatTextView>(R.id.tv_login_tag)
val tvVipTag = findViewById<AppCompatTextView>(R.id.tv_vip_tag)
if (TranslationHelper.getTranslation() != null) {
tvLoginTag.text = TranslationHelper.getTranslation()?.veloria_login
} else {
tvLoginTag.text = "Login"
}
val size = revolutionsBean.list?.size ?: 0
val int = RYAction.getMMKV().getInt(JActivityAdapter.CONSTANTS_QUALITY, 0)
if (size > 0 && null != revolutionsBean?.list?.get(0)) {
val revolutionData = revolutionsBean.list[0]
tvQuality480.text = revolutionData.value.toString().plus("p")
if (revolutionData.can_check) {
if (int == revolutionData.value) {
tvQuality480.setBackgroundResource(R.mipmap.iv_quality_bg_on)
} else {
tvQuality480.setBackgroundResource(R.mipmap.iv_quality_bg_off)
}
tvQuality480.setTextColor(Color.parseColor("#FFFFFF"))
tvQuality480.setOnClickListener {
if (int != revolutionData.value) {
setQualityBackOnClick?.qualityBackOnClick(revolutionData.value)
dismiss()
}
}
} else {
tvQuality480.setTextColor(Color.parseColor("#8B8B8B"))
tvQuality480.setBackgroundResource(R.mipmap.iv_quality_bg_off)
}
}
if (size > 1 && null != revolutionsBean?.list?.get(1)) {
val revolutionData = revolutionsBean.list[1]
tvQuality720.text = revolutionData.value.toString().plus("p")
if (revolutionData.can_check) {
if (int == revolutionData.value) {
tvQuality720.setBackgroundResource(R.mipmap.iv_quality_bg_on)
} else {
tvQuality720.setBackgroundResource(R.mipmap.iv_quality_bg_off)
}
tvQuality720.setTextColor(Color.parseColor("#FFFFFF"))
tvQuality720.setOnClickListener {
if (int != revolutionData.value) {
setQualityBackOnClick?.qualityBackOnClick(revolutionData.value)
dismiss()
}
}
} else {
tvQuality720.setTextColor(Color.parseColor("#8B8B8B"))
tvQuality720.setBackgroundResource(R.mipmap.iv_quality_bg_off)
tvQuality720.setOnClickListener {
// EventBus.getDefault().post(JActivityAdapter.VIDEO_PAUSE_PLAY)
setQualityBackOnClick?.loginOnClick()
dismiss()
}
}
}
if (size > 2 && null != revolutionsBean?.list?.get(2)) {
val revolutionData = revolutionsBean.list[2]
tvQuality1080.text = revolutionData.value.toString().plus("p")
if (revolutionData.can_check) {
if (int == revolutionData.value) {
tvQuality1080.setBackgroundResource(R.mipmap.iv_quality_bg_on)
} else {
tvQuality1080.setBackgroundResource(R.mipmap.iv_quality_bg_off)
}
tvQuality1080.setTextColor(Color.parseColor("#FFFFFF"))
tvQuality1080.setOnClickListener {
if (int != revolutionData.value) {
setQualityBackOnClick?.qualityBackOnClick(revolutionData.value)
dismiss()
}
}
} else {
tvQuality1080.setTextColor(Color.parseColor("#8B8B8B"))
tvQuality1080.setBackgroundResource(R.mipmap.iv_quality_bg_off)
tvQuality1080.setOnClickListener {
EventBus.getDefault().post(JActivityAdapter.VIDEO_PAUSE_PLAY)
setQualityBackOnClick?.showActivateOnClick()
dismiss()
}
}
}
}
fun setOnQualityBackOnClickListener(listener: SetQualityBackOnClick) {
this.setQualityBackOnClick = listener
}
}

View File

@ -0,0 +1,99 @@
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.View
import android.view.Window
import android.view.WindowManager
import android.widget.TextView
import androidx.appcompat.widget.AppCompatImageView
import androidx.appcompat.widget.AppCompatTextView
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import com.veloria.now.shortapp.R
import com.veloria.now.shortapp.civil.TranslationHelper
import com.veloria.now.shortapp.civil.singleOnClick
import com.veloria.now.shortapp.subtractionCroll.modificationsPretch.VeStoreCoinAdapter
import com.veloria.now.shortapp.subtractionCroll.modificationsPretch.VeVipSplashAdapter
import com.veloria.now.shortapp.texturedAsink.VePaySettingsBean
@SuppressLint("MissingInflatedId")
class VipSplashDialog(context: Context,vipBeans: List<VePaySettingsBean.VipBean>) : Dialog(context) {
var setVipSplashOnClick: SetVipSplashOnClick? = null
private var vipAdapter: VeVipSplashAdapter? = null
interface SetVipSplashOnClick {
fun onVipSplash()
fun onVipOnAdapterBuy(vipBean: VePaySettingsBean.VipBean)
}
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.TOP or Gravity.CENTER_HORIZONTAL)
}
setCancelable(true)
val ivClose = findViewById<AppCompatImageView>(R.id.iv_close)
val tvContent = findViewById<AppCompatTextView>(R.id.tv_content)
val tvTitle = findViewById<AppCompatTextView>(R.id.tv_title)
val recyclerView = findViewById<RecyclerView>(R.id.recyclerView)
if (TranslationHelper.getTranslation() != null) {
tvTitle.text = TranslationHelper.getTranslation()?.veloria_vip_splash_title
tvContent.text = TranslationHelper.getTranslation()?.veloria_vip_splash_content
} else {
tvTitle.text = "Unlock VIP Privileges!"
tvContent.text = "Enjoy ad-free streaming, early access, and exclusive content!"
}
recyclerView.layoutManager = LinearLayoutManager(context)
vipAdapter = VeVipSplashAdapter()
recyclerView.adapter = vipAdapter
vipAdapter?.submitList(vipBeans)
ivClose.setOnClickListener {
singleOnClick {
dismiss()
}
}
vipAdapter?.setOnItemClickListener { adapter, view, position ->
singleOnClick {
val data = adapter.getItem(position)
vipAdapter?.currentPosition = position
vipAdapter?.notifyDataSetChanged()
if (data != null) {
setVipSplashOnClick?.onVipOnAdapterBuy(data)
}
}
}
}
fun setOnVipSplashOnClickListener(listener: SetVipSplashOnClick) {
this.setVipSplashOnClick = listener
}
fun setAdapterSubmitList(data: List<VePaySettingsBean.VipBean>){
vipAdapter?.submitList(data)
}
}

View File

@ -151,6 +151,26 @@ class HLanguageActivity : AIXTextActivity<MqInstrumentedBinding, YCFddebcdbeeffc
this.testDetails_list = mutableListOf<Float>()
binding.ivBack.setOnClickListener {
var complete9: Long = 6360L
if (complete9 == 49L) {
}
var system2: Float = 1503.0f
finish()
}
if (TranslationHelper.getTranslation() != null){
binding.etSearch.hint = TranslationHelper.getTranslation()?.veloria_recersal_of_fate
binding.tvTitleRecent.text = TranslationHelper.getTranslation()?.veloria_recent_searches
binding.tvTitleRecommended.text = TranslationHelper.getTranslation()?.veloria_recommended
binding.tvTrendingTop.text = TranslationHelper.getTranslation()?.veloria_trending_top
binding.tvLatestTrends.text = TranslationHelper.getTranslation()?.veloria_latest_trends
binding.tvResultTitle.text = TranslationHelper.getTranslation()?.veloria_search_results
}
if (!NetworkUtils.isConnected()) {
var langR: Float = 4492.0f
@ -213,7 +233,7 @@ class HLanguageActivity : AIXTextActivity<MqInstrumentedBinding, YCFddebcdbeeffc
break
}
showComplete()
binding.clOne.visibility = View.VISIBLE
var displaye: Double = 49.0
if (displaye > 179.0) {
@ -223,15 +243,6 @@ class HLanguageActivity : AIXTextActivity<MqInstrumentedBinding, YCFddebcdbeeffc
binding.stateLayout.visibility = View.GONE
}
if (TranslationHelper.getTranslation() != null){
binding.etSearch.hint = TranslationHelper.getTranslation()?.veloria_recersal_of_fate
binding.tvTitleRecent.text = TranslationHelper.getTranslation()?.veloria_recent_searches
binding.tvTitleRecommended.text = TranslationHelper.getTranslation()?.veloria_recommended
binding.tvTrendingTop.text = TranslationHelper.getTranslation()?.veloria_trending_top
binding.tvLatestTrends.text = TranslationHelper.getTranslation()?.veloria_latest_trends
}
searchTrendAdapter = VXAgreement()
var buttonu: Int = 3389
if (buttonu < 189) {
@ -419,17 +430,6 @@ class HLanguageActivity : AIXTextActivity<MqInstrumentedBinding, YCFddebcdbeeffc
binding.ivBack.setOnClickListener {
var complete9: Long = 6360L
if (complete9 == 49L) {
}
var system2: Float = 1503.0f
finish()
}
binding.ivDelete.setOnClickListener {
var selectZ: Float = 4767.0f
while (selectZ < 108.0f) {

View File

@ -1,6 +1,7 @@
package com.veloria.now.shortapp.subtractionCroll.bidirectional
import android.annotation.SuppressLint
import android.content.Intent
import android.net.Uri
import android.os.Bundle
import android.view.View
@ -10,14 +11,9 @@ import androidx.activity.viewModels
import androidx.appcompat.widget.AppCompatImageView
import androidx.appcompat.widget.AppCompatTextView
import androidx.fragment.app.DialogFragment.STYLE_NO_FRAME
import androidx.lifecycle.lifecycleScope
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
@ -25,10 +21,18 @@ import androidx.recyclerview.widget.RecyclerView
import androidx.viewpager2.widget.ViewPager2
import com.blankj.utilcode.util.NetworkUtils
import com.bumptech.glide.Glide
import com.facebook.AccessToken
import com.facebook.CallbackManager
import com.facebook.CallbackManager.Factory.create
import com.facebook.FacebookCallback
import com.facebook.FacebookException
import com.facebook.GraphRequest
import com.facebook.login.LoginManager
import com.facebook.login.LoginResult
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
@ -40,25 +44,31 @@ import com.veloria.now.shortapp.civil.singleOnClick
import com.veloria.now.shortapp.civil.toast
import com.veloria.now.shortapp.databinding.JDetailsLayoutBinding
import com.veloria.now.shortapp.newsletter.AIXTextActivity
import com.veloria.now.shortapp.newsletter.XNBackground
import com.veloria.now.shortapp.rewards.TOYPlayfairAutoView
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.LoginDialog
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
import com.veloria.now.shortapp.texturedAsink.LServiceBean
import com.veloria.now.shortapp.texturedAsink.LoginDataBean
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 kotlinx.coroutines.launch
import com.zhpan.bannerview.constants.PageStyle.MULTI_PAGE_OVERLAP
import org.greenrobot.eventbus.EventBus
import org.greenrobot.eventbus.Subscribe
import org.greenrobot.eventbus.ThreadMode
import org.json.JSONObject
import kotlin.math.max
import kotlin.math.min
@ -174,11 +184,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
@ -243,6 +248,9 @@ class MQVAutoWidthActivity :
}
manifestAnyBuildGravityView()?.pause()
if (binding.layoutRecommend.root.visibility == View.VISIBLE) {
bannerAdapter?.getCurrentPlayerView()?.pause()
}
}, 300)
}
@ -453,6 +461,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()?.stop()
}, 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
}
}
@ -488,8 +532,6 @@ class MQVAutoWidthActivity :
if (h_viewf < 96) {
}
EventBus.getDefault().register(this)
var watchingB: Float = 8505.0f
if (watchingB > 46.0f) {
}
@ -519,12 +561,12 @@ class MQVAutoWidthActivity :
break
}
binding.ivBack.setOnClickListener { finish() }
if (!NetworkUtils.isConnected()) {
var lightf: Long = 4156L
binding.ivBack.visibility = View.VISIBLE
showErrorData(object : VSNotificationsDefault.OnRetryListener {
public fun spanLoveWhatBinge(): Boolean {
@ -556,6 +598,7 @@ class MQVAutoWidthActivity :
initView()
}
})
return
} else {
var playh: MutableList<Double> = mutableListOf<Double>()
@ -564,17 +607,29 @@ class MQVAutoWidthActivity :
playh.add(941.0)
if (playh.size > 20) {
}
binding.ivBack.visibility = View.GONE
showComplete()
var marqueeo: Float = 1740.0f
if (marqueeo < 162.0f) {
}
showLoading()
// if (revolution == "1080" && !RYAction.isVipTo()) {
// if (RYAction.isTouristTo()) {
// RYAction.getMMKV()
// .putInt(JActivityAdapter.CONSTANTS_QUALITY, 540)
// } else {
// RYAction.getMMKV()
// .putInt(JActivityAdapter.CONSTANTS_QUALITY, 720)
// }
// EventBus.getDefault().post(CONSTANTS_QUALITY_REFRESH)
// revolution =
// RYAction.getMMKV().getInt(JActivityAdapter.CONSTANTS_QUALITY, 540).toString()
// }
viewModel.getVideoPlayDetails(shortPlayId, 0, activityId, revolution)
}
EventBus.getDefault().register(this)
onBackPressedDispatcher.addCallback(this, object : OnBackPressedCallback(true) {
override fun handleOnBackPressed() {
@ -583,47 +638,12 @@ class MQVAutoWidthActivity :
}
}
})
builder = ExoPlayer.Builder(this, BImage(this))
.setRenderersFactory(DefaultRenderersFactory(this).setEnableDecoderFallback(true))
player = builder?.build()
binding.layoutRecommend.recommendPlayerView.player = player
ivCoverRecommendDetail =
binding.layoutRecommend.recommendPlayerView.findViewById(R.id.iv_cover_recommend_detail)
player?.addListener(object : Player.Listener {
override fun onPlaybackStateChanged(playbackState: Int) {
super.onPlaybackStateChanged(playbackState)
when (playbackState) {
Player.STATE_BUFFERING -> {
}
Player.STATE_READY -> {
player?.play()
ivCoverRecommendDetail?.visibility = View.INVISIBLE
}
Player.STATE_ENDED -> {
ivCoverRecommendDetail?.visibility = View.VISIBLE
}
Player.STATE_IDLE -> {
}
}
}
override fun onPlayerError(error: PlaybackException) {
super.onPlayerError(error)
ivCoverRecommendDetail?.visibility = View.VISIBLE
}
})
binding.layoutRecommend.ivCloseDialog.setOnClickListener {
finish()
}
showLoading()
var appendK: MutableMap<String, Float> = mutableMapOf<String, Float>()
appendK.put("decklink", 519.0f)
appendK.put("flattened", 285.0f)
@ -932,6 +952,10 @@ class MQVAutoWidthActivity :
manifestAnyBuildGravityView()?.play()
if (binding.layoutRecommend.root.visibility == View.VISIBLE) {
bannerAdapter?.getCurrentPlayerView()?.play()
}
} else {
var listso: String = "agate"
@ -1363,10 +1387,6 @@ class MQVAutoWidthActivity :
while (cagetoryb >= 19.0) {
break
}
player?.stop()
player?.release()
player = null
manifestAnyBuildGravityView()?.stop()
var circleA: Int = 8245
while (circleA >= 16) {
@ -1375,6 +1395,11 @@ class MQVAutoWidthActivity :
manifestAnyBuildGravityView()?.release()
if (::bannerAdapter.isInitialized) {
bannerAdapter?.getCurrentPlayerView()?.stop()
bannerAdapter?.getCurrentPlayerView()?.release()
}
}
recommendAdapter?.shortVideo = null
var mmkvi: Double = 540.0
@ -1618,7 +1643,7 @@ class MQVAutoWidthActivity :
}
println(startA)
binding.ivBack.visibility = View.GONE
showComplete()
var rights: Long = 9660L
if (rights > 16L) {
@ -1670,7 +1695,7 @@ class MQVAutoWidthActivity :
break
}
binding.ivBack.visibility = View.VISIBLE
showEmptyData()
}
}
@ -1903,26 +1928,33 @@ class MQVAutoWidthActivity :
}
viewModel.detailsRecommendLiveData.observe(this) {
hideLoading()
it?.data?.let {
setDetailsRecommendation(it)
} ?: finish()
hideLoading()
}
viewModel.userInfo.observe(this) {
it?.data?.let {
RYAction.saveUserInfoBean(it)
if (needRestart) {
if (TranslationHelper.getTranslation() != null) {
binding.layoutLock.tvBalance.text =
TranslationHelper.getTranslation()?.veloria_balance.plus(": ")
.plus(RYAction.getUserInfoBean()?.coin_left_total.toString())
.plus(TranslationHelper.getTranslation()?.veloria_coins)
.plus(" | ")
.plus(RYAction.getUserInfoBean()?.send_coin_left_total.toString())
.plus(" ")
.plus(TranslationHelper.getTranslation()?.veloria_bonus)
} else {
binding.layoutLock.tvBalance.text =
"Balance: ".plus(RYAction.getUserInfoBean()?.coin_left_total.toString())
.plus(" Coins | ")
.plus(RYAction.getUserInfoBean()?.send_coin_left_total.toString())
.plus(" Bonus")
if (RYAction.isVipTo()) {
revolution = "1080"
RYAction.getMMKV().putInt(JActivityAdapter.CONSTANTS_QUALITY, 1080)
}
detailRefresh()
}
}
@ -1967,6 +1999,102 @@ 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))
}
}
}
callbackManager = create()
LoginManager.getInstance().registerCallback(callbackManager,
object : FacebookCallback<LoginResult> {
override fun onSuccess(loginResult: LoginResult) {
val enableButtons = AccessToken.getCurrentAccessToken() != null
if (enableButtons) {
val mGraphRequest = GraphRequest.newMeRequest(
loginResult.accessToken
) { jsonObject, response ->
if (response!!.error != null) {
if (TranslationHelper.getTranslation() != null) {
toast(
"Facebook ".plus(TranslationHelper.getTranslation()?.veloria_login_exception)
.plus(".${response.error?.exception.toString()}")
)
} else {
toast("Facebook Error")
}
} else {
val id = jsonObject?.optString("id")
val name = jsonObject?.optString("name")
val object_pic: JSONObject? = jsonObject!!.optJSONObject("picture")
val object_data = object_pic?.optJSONObject("data")
val photo = object_data?.optString("url")
viewModel.setLeaveApp()
viewModel.setDoLogin(
LoginDataBean(
photo.toString(),
"",
name.toString(),
"",
"facebook",
id.toString()
)
)
}
}
val parameters = Bundle()
parameters.putString("fields", "id,name,email,picture")
mGraphRequest.parameters = parameters
mGraphRequest.executeAsync()
}
}
override fun onCancel() {
if (TranslationHelper.getTranslation() != null) {
toast("Facebook ".plus(TranslationHelper.getTranslation()?.veloria_login_cancel))
} else {
toast("Facebook Cancel")
}
}
override fun onError(exception: FacebookException) {
if (TranslationHelper.getTranslation() != null) {
toast(
"Facebook ".plus(TranslationHelper.getTranslation()?.veloria_login_exception)
.plus("n.$exception")
)
} else {
toast("Facebook Error")
}
}
})
viewModel.loginLiveData.observe(this) {
if (it?.data != null) {
if (TranslationHelper.getTranslation() != null) {
toast(TranslationHelper.getTranslation()?.veloria_succeed.toString())
}
RYAction.getMMKV()
.putString(JActivityAdapter.ACCOUNT_TOKEN, it.data.token)
EventBus.getDefault()
.post(JActivityAdapter.HOME_ENTER_THE_APP)
EventBus.getDefault()
.post(JActivityAdapter.HOME_ON_LINE)
EventBus.getDefault()
.post(JActivityAdapter.HOME_USER_REFRESH)
}
}
}
@ -1996,6 +2124,14 @@ class MQVAutoWidthActivity :
}
private fun showGoldShortageDialog(episode1: XAboutBean.Episode) {
if (!NetworkUtils.isConnected()) {
if (TranslationHelper.getTranslation() != null) {
toast(TranslationHelper.getTranslation()?.veloria_network.toString())
} else {
toast(XNBackground.instance.getString(R.string.shapeSelected))
}
return
}
val allCoin = RYAction.getAllCoinTotal()
if (allCoin >= episode1.coins) {
if (currentPosition > 0) {
@ -2073,21 +2209,34 @@ class MQVAutoWidthActivity :
return false
}
private lateinit var bannerAdapter: VeBannerRecommendAdapter
@SuppressLint("UnsafeOptInUsageError")
private fun setDetailsRecommendation(data: VeDetailsRecommendBean) {
if (data.list.isNotEmpty()) {
if (TranslationHelper.getTranslation() != null) {
binding.layoutRecommend.tvTitle.text =
TranslationHelper.getTranslation()?.veloria_detail_recommand_title
binding.layoutRecommend.tvWatchNow.text =
TranslationHelper.getTranslation()?.veloria_watch_now
}
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 +2249,34 @@ 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 +2301,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 +2312,63 @@ 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()
}
override fun loginOnClick() {
setLogin()
}
})
}
dialog.show()
dialog.setQualityBackOnClick
}
private fun setVipActivateDialog() {
val dialog = VipActivateDialog(this)
dialog.show()
}
private var callbackManager: CallbackManager? = null
fun setLogin() {
val dialog = LoginDialog(this).apply {
setOnLoginOnclickListener(object : LoginDialog.LoginOnClick {
override fun onLoginFacebook() {
onFacebook()
}
})
}
dialog.show()
dialog.loginOnclick
}
private fun onFacebook() {
singleOnClick {
LoginManager.getInstance()
.logInWithReadPermissions(this, arrayListOf("public_profile", "email"))
}
}
@Deprecated("Deprecated in Java")
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
callbackManager?.onActivityResult(requestCode, resultCode, data)
}
}

View File

@ -1,15 +1,21 @@
package com.veloria.now.shortapp.subtractionCroll.bidirectional
import android.Manifest
import android.app.Activity
import android.content.ClipData
import android.content.ClipboardManager
import android.content.Context
import android.content.Intent
import android.content.pm.PackageManager
import android.os.Build
import android.os.Bundle
import android.text.TextUtils
import android.util.Log
import android.view.KeyEvent
import android.view.View
import androidx.activity.result.contract.ActivityResultContracts
import androidx.activity.viewModels
import androidx.core.content.ContextCompat
import androidx.fragment.app.Fragment
import androidx.lifecycle.lifecycleScope
import com.blankj.utilcode.util.NetworkUtils
@ -22,12 +28,19 @@ 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.YFHome.getPackageVersionCode
import com.veloria.now.shortapp.civil.setShowNotifications
import com.veloria.now.shortapp.civil.shouldVersionControl
import com.veloria.now.shortapp.civil.singleOnClick
import com.veloria.now.shortapp.civil.toast
import com.veloria.now.shortapp.databinding.JsDramaFragmentBinding
@ -38,9 +51,18 @@ 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.avcintraRelock.VersionControlDialog
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 com.veloria.now.shortapp.texturedAsink.VersionControlBean
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.flow.debounce
import kotlinx.coroutines.flow.flow
import kotlinx.coroutines.flow.onEach
import kotlinx.coroutines.launch
import org.greenrobot.eventbus.EventBus
import org.greenrobot.eventbus.Subscribe
@ -67,6 +89,7 @@ class PSVHomeSearchActivity : AIXTextActivity<JsDramaFragmentBinding, JService>(
val viewModel: JService by viewModels()
private var callbackManager: CallbackManager? = null
private var scheduler: ScheduledExecutorService? = Executors.newSingleThreadScheduledExecutor()
private val scope = CoroutineScope(Dispatchers.Main)
private fun rawEventShowPositionLatest(): MutableList<Boolean> {
var responseRemove = true
@ -198,7 +221,7 @@ class PSVHomeSearchActivity : AIXTextActivity<JsDramaFragmentBinding, JService>(
it.data?.token?.let { it1 ->
RYAction.saveToken(it1)
EventBus.getDefault().post(JActivityAdapter.REFRESH_HOME)
EventBus.getDefault().post(JActivityAdapter.HOME_REFRESH_ME)
}
}
}
@ -238,11 +261,32 @@ class PSVHomeSearchActivity : AIXTextActivity<JsDramaFragmentBinding, JService>(
setAdjustToDetail()
}
}
viewModel.restorePaidData.observe(this) {
if (it != null) {
it.data?.order_code?.let { it1 -> RYAction.removeOrderString(it1) }
}
}
viewModel.onLineLiveData.observe(this) {
}
viewModel.versionControlData.observe(this) {
if (it != null) {
if (it.data?.version_code?.isNotEmpty() == true) {
val toInt = it.data.version_code.toInt()
if (shouldVersionControl() && toInt > getPackageVersionCode(this)) {
setVersionControlDialog(it.data)
}
}
}
}
}
fun setVersionControlDialog(versionControlBean: VersionControlBean) {
val dialog = VersionControlDialog(this, versionControlBean)
dialog.show()
}
private val items = listOf(
@ -454,7 +498,10 @@ class PSVHomeSearchActivity : AIXTextActivity<JsDramaFragmentBinding, JService>(
var episode0: Long = 1323L
if (episode0 > 52L) {
}
path = intent?.getStringExtra("path").toString()
short_play_id = intent?.getStringExtra("short_play_id").toString()
message_id = intent?.getStringExtra("message_id").toString()
title = intent?.getStringExtra("title").toString()
manifestShapeSinkExclusive()
@ -540,6 +587,39 @@ class PSVHomeSearchActivity : AIXTextActivity<JsDramaFragmentBinding, JService>(
}
}
})
JActivityAdapter.IS_HOME_SET_NOTIFICATIONS = VeNotificationHelper.isNotification(this)
viewModel.setUploadNoticeStatus(
VeUploadNotificationBean(
if (JActivityAdapter.IS_HOME_SET_NOTIFICATIONS) "1" else "0"
)
)
GoogleApiAvailability.getInstance().makeGooglePlayServicesAvailable(this)
.addOnCompleteListener {
if (it.isSuccessful) {
askNotificationPermission()
}
}
binding.root.postDelayed({ setNotificationTo() }, 700)
//处理失败订单
binding.root.postDelayed({
if (RYAction.getOrder().isNotEmpty()) {
val string = RYAction.getOrder()
scope.launch {
flow {
for (item in string) {
emit(item)
}
}.onEach { item ->
viewModel.setGooglePaid(item)
}.debounce(1000).collect {}
}
}
}, 3000)
viewModel.getVersionControl()
}
private fun stayPrimaryRecommendSearchToast(
@ -747,6 +827,18 @@ class PSVHomeSearchActivity : AIXTextActivity<JsDramaFragmentBinding, JService>(
binding.bottomNavBar.updateSelection(0)
playWhatHeavyPlatformEach(0)
}
if (JActivityAdapter.ACCOUNT_FIREBASE_TOKEN_REFRESH == event) {
getFirebaseMessaging()
}
if (JActivityAdapter.ACCOUNT_OUT_LOGIN == event) {
viewModel.loadData()
if (TranslationHelper.getTranslation() != null) {
toast(
TranslationHelper.getTranslation()?.veloria_network_error_1
?: getString(R.string.veloria_network_error_1)
)
}
}
}
private fun restartApplication(context: Context) {
@ -780,8 +872,21 @@ class PSVHomeSearchActivity : AIXTextActivity<JsDramaFragmentBinding, JService>(
@Deprecated("Deprecated in Java")
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.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)
}
}
private fun showHistoryDialog(data: VeHomeWatchBean) {
@ -845,7 +950,8 @@ class PSVHomeSearchActivity : AIXTextActivity<JsDramaFragmentBinding, JService>(
)
needSave = true
w2aSelfAttribution(clipContent)
RYAction.getMMKV().putString(JActivityAdapter.HOME_DDL_URL, "")
RYAction.getMMKV()
.putString(JActivityAdapter.HOME_DDL_URL, "")
}
}
}
@ -982,4 +1088,173 @@ class PSVHomeSearchActivity : AIXTextActivity<JsDramaFragmentBinding, JService>(
}
}
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()
viewModel.setUploadNoticeStatus(
VeUploadNotificationBean("1")
)
} else {
if (setShowNotifications()) {
setNotifications()
}
}
} else {
if (VeNotificationHelper.isNotification(this)) {
getFirebaseMessaging()
viewModel.setOpenNotify()
viewModel.setUploadNoticeStatus(
VeUploadNotificationBean("1")
)
} 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()
viewModel.setUploadNoticeStatus(
VeUploadNotificationBean("1")
)
} else {
VeNotificationHelper.setNotification(this)
}
}
private fun setNotificationTo() {
if (message_id.isNotBlank() && !message_id.contentEquals("null")) {
if ("0" != message_id) {
viewModel.setSendReport(message_id, title)
}
}
when (path) {
"detail" -> {
if (short_play_id.isNotEmpty() && "null" != short_play_id) {
try {
val toInt = short_play_id.toInt()
binding.root.postDelayed({
startActivity(Intent(
this, MQVAutoWidthActivity::class.java
).apply {
putExtra(
VIDEO_SHORT_PLAY_ID, toInt
)
})
}, 700)
} catch (e: Exception) {
e.printStackTrace()
}
}
}
"promotion" -> {
binding.root.postDelayed({
startActivity(
Intent(
this, VeRewardsActivity::class.java
)
)
}, 700)
}
"orderDetail" -> {
binding.root.postDelayed({
startActivity(
Intent(
this, VeMyWalletActivity::class.java
)
)
}, 700)
}
"feedback" -> {
binding.root.postDelayed({
if (message_id.isNotBlank() && message_id != "null") {
RYAction.getMMKV()
.putString(JActivityAdapter.FEEDBACK_DETAIL_ID, message_id)
startActivity(
Intent(
this, VeFeedbackDetailActivity::class.java
)
)
} else {
startActivity(
Intent(
this, VeFeedbackListActivity::class.java
)
)
}
}, 700)
}
}
}
private var path = ""
private var short_play_id = ""
private var message_id = ""
private var title = ""
override fun onNewIntent(intent: Intent?) {
super.onNewIntent(intent)
path = intent?.getStringExtra("path").toString()
short_play_id = intent?.getStringExtra("short_play_id").toString()
message_id = intent?.getStringExtra("message_id").toString()
title = intent?.getStringExtra("title").toString()
setNotificationTo()
}
}

View File

@ -2,24 +2,28 @@ package com.veloria.now.shortapp.subtractionCroll.bidirectional
import android.annotation.SuppressLint
import android.graphics.Bitmap
import android.view.View
import android.webkit.WebChromeClient
import android.webkit.WebResourceError
import android.webkit.WebResourceRequest
import android.webkit.WebSettings
import android.webkit.WebView
import android.webkit.WebViewClient
import com.blankj.utilcode.util.NetworkUtils
import com.veloria.now.shortapp.R
import com.veloria.now.shortapp.civil.JActivityAdapter
import com.veloria.now.shortapp.civil.NOFfmpeg
import com.veloria.now.shortapp.civil.TranslationHelper
import com.veloria.now.shortapp.civil.toast
import com.veloria.now.shortapp.databinding.IPlaceBinding
import com.veloria.now.shortapp.newsletter.AIXTextActivity
import com.veloria.now.shortapp.rewards.VSNotificationsDefault
import com.veloria.now.shortapp.subtractionCroll.bidirectional.coordinate.LXMService
import kotlin.math.max
import kotlin.math.min
class RBZLatestDeteleActivity : AIXTextActivity<IPlaceBinding, LXMService>() {
class RBZLatestDeteleActivity : AIXTextActivity<IPlaceBinding, LXMService>(), NOFfmpeg {
@Volatile
var centerTrendPaint_min: Double = 5869.0
@ -168,7 +172,6 @@ class RBZLatestDeteleActivity : AIXTextActivity<IPlaceBinding, LXMService>() {
println(messageL)
when (urlString) {
JActivityAdapter.WEB_VIEW_USER_AGREEMENT -> {
var modelE: Float = 6376.0f
@ -206,6 +209,20 @@ class RBZLatestDeteleActivity : AIXTextActivity<IPlaceBinding, LXMService>() {
binding.tvTitle.text = "Veloria"
}
}
if (!NetworkUtils.isConnected()) {
binding.webView.visibility = View.GONE
showErrorData(object : VSNotificationsDefault.OnRetryListener {
override fun onRetry(layout: VSNotificationsDefault) {
initView()
}
})
return
}
binding.webView.visibility = View.VISIBLE
showComplete()
showLoading()
var helpF: MutableMap<String, Long> = mutableMapOf<String, Long>()
helpF.put("texturedspenc", 528L)
@ -502,4 +519,7 @@ class RBZLatestDeteleActivity : AIXTextActivity<IPlaceBinding, LXMService>() {
}
override fun getViewBinding() = IPlaceBinding.inflate(layoutInflater)
override fun getStatusLayout(): VSNotificationsDefault? {
return binding.stateLayout
}
}

View File

@ -27,13 +27,14 @@ import androidx.lifecycle.lifecycleScope
import com.blankj.utilcode.util.PermissionUtils
import com.veloria.now.shortapp.R
import com.veloria.now.shortapp.civil.JActivityAdapter
import com.veloria.now.shortapp.civil.NOFfmpeg
import com.veloria.now.shortapp.civil.TranslationHelper
import com.veloria.now.shortapp.civil.singleOnClick
import com.veloria.now.shortapp.civil.toast
import com.veloria.now.shortapp.databinding.ActivityVeFeedbackBinding
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.rewards.VSNotificationsDefault
import com.veloria.now.shortapp.subtractionCroll.bidirectional.coordinate.VeFeedbackViewModel
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
@ -44,7 +45,8 @@ import org.greenrobot.eventbus.ThreadMode
import java.io.ByteArrayOutputStream
import java.io.InputStream
class VeFeedbackActivity : AIXTextActivity<ActivityVeFeedbackBinding, VeFeedbackViewModel>() {
class VeFeedbackActivity : AIXTextActivity<ActivityVeFeedbackBinding, VeFeedbackViewModel>(),
NOFfmpeg {
val viewModel: VeFeedbackViewModel by viewModels()
@ -138,7 +140,8 @@ class VeFeedbackActivity : AIXTextActivity<ActivityVeFeedbackBinding, VeFeedback
binding.webFeedback.webViewClient = object : WebViewClient() {
override fun onPageStarted(view: WebView?, url: String?, favicon: Bitmap?) {
super.onPageStarted(view, url, favicon)
showComplete()
binding.webFeedback.visibility = View.VISIBLE
}
override fun onPageFinished(view: WebView?, url: String?) {
@ -152,6 +155,14 @@ class VeFeedbackActivity : AIXTextActivity<ActivityVeFeedbackBinding, VeFeedback
error: WebResourceError?
) {
super.onReceivedError(view, request, error)
showErrorData(object : VSNotificationsDefault.OnRetryListener {
override fun onRetry(layout: VSNotificationsDefault) {
showLoading()
loadPageUrl(JActivityAdapter.FEEDBACK_URL_INDEX)
}
})
binding.webFeedback.visibility = View.INVISIBLE
if (TranslationHelper.getTranslation() != null) {
toast(TranslationHelper.getTranslation()?.veloria_network.toString())
} else {
@ -303,4 +314,8 @@ class VeFeedbackActivity : AIXTextActivity<ActivityVeFeedbackBinding, VeFeedback
EventBus.getDefault().unregister(this)
}
override fun getStatusLayout(): VSNotificationsDefault? {
return binding.stateLayout
}
}

View File

@ -12,6 +12,7 @@ import android.net.Uri
import android.os.Build
import android.util.Base64
import android.util.Log
import android.view.View
import android.webkit.JsPromptResult
import android.webkit.JsResult
import android.webkit.WebChromeClient
@ -27,6 +28,7 @@ import androidx.lifecycle.lifecycleScope
import com.blankj.utilcode.util.PermissionUtils
import com.veloria.now.shortapp.R
import com.veloria.now.shortapp.civil.JActivityAdapter
import com.veloria.now.shortapp.civil.NOFfmpeg
import com.veloria.now.shortapp.civil.RYAction
import com.veloria.now.shortapp.civil.TranslationHelper
import com.veloria.now.shortapp.civil.toast
@ -38,6 +40,7 @@ import com.veloria.now.shortapp.newsletter.XNBackground
import com.veloria.now.shortapp.other.BaseEventBusBean
import com.veloria.now.shortapp.other.FeedbackJsBridge
import com.veloria.now.shortapp.other.FeedbackJsBridgeDetail
import com.veloria.now.shortapp.rewards.VSNotificationsDefault
import com.veloria.now.shortapp.subtractionCroll.bidirectional.coordinate.VeFeedbackViewModel
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
@ -48,7 +51,8 @@ import org.greenrobot.eventbus.ThreadMode
import java.io.ByteArrayOutputStream
import java.io.InputStream
class VeFeedbackDetailActivity : AIXTextActivity<ActivityVeFeedbackDetailBinding, VeFeedbackViewModel>() {
class VeFeedbackDetailActivity : AIXTextActivity<ActivityVeFeedbackDetailBinding, VeFeedbackViewModel>() ,
NOFfmpeg {
val viewModel: VeFeedbackViewModel by viewModels()
@ -91,7 +95,8 @@ class VeFeedbackDetailActivity : AIXTextActivity<ActivityVeFeedbackDetailBinding
binding.webFeedbackDetail.webViewClient = object : WebViewClient() {
override fun onPageStarted(view: WebView?, url: String?, favicon: Bitmap?) {
super.onPageStarted(view, url, favicon)
showComplete()
binding.webFeedbackDetail.visibility = View.VISIBLE
}
override fun onPageFinished(view: WebView?, url: String?) {
@ -106,6 +111,14 @@ class VeFeedbackDetailActivity : AIXTextActivity<ActivityVeFeedbackDetailBinding
error: WebResourceError?
) {
super.onReceivedError(view, request, error)
showErrorData(object : VSNotificationsDefault.OnRetryListener {
override fun onRetry(layout: VSNotificationsDefault) {
showLoading()
loadPageUrl(JActivityAdapter.FEEDBACK_URL_DETAIL)
}
})
binding.webFeedbackDetail.visibility = View.INVISIBLE
if (TranslationHelper.getTranslation() != null){
toast(TranslationHelper.getTranslation()?.veloria_network.toString())
}else {
@ -251,4 +264,8 @@ class VeFeedbackDetailActivity : AIXTextActivity<ActivityVeFeedbackDetailBinding
EventBus.getDefault().unregister(this)
}
override fun getStatusLayout(): VSNotificationsDefault? {
return binding.stateLayout
}
}

View File

@ -4,6 +4,7 @@ import android.annotation.SuppressLint
import android.content.Intent
import android.graphics.Bitmap
import android.graphics.Color
import android.view.View
import android.webkit.WebChromeClient
import android.webkit.WebResourceError
import android.webkit.WebResourceRequest
@ -13,6 +14,7 @@ import android.webkit.WebViewClient
import androidx.activity.viewModels
import com.veloria.now.shortapp.R
import com.veloria.now.shortapp.civil.JActivityAdapter
import com.veloria.now.shortapp.civil.NOFfmpeg
import com.veloria.now.shortapp.civil.RYAction
import com.veloria.now.shortapp.civil.TranslationHelper
import com.veloria.now.shortapp.civil.toast
@ -21,13 +23,14 @@ import com.veloria.now.shortapp.newsletter.AIXTextActivity
import com.veloria.now.shortapp.newsletter.XNBackground
import com.veloria.now.shortapp.other.BaseEventBusBean
import com.veloria.now.shortapp.other.FeedbackJsBridge
import com.veloria.now.shortapp.rewards.VSNotificationsDefault
import com.veloria.now.shortapp.subtractionCroll.bidirectional.coordinate.VeFeedbackViewModel
import org.greenrobot.eventbus.EventBus
import org.greenrobot.eventbus.Subscribe
import org.greenrobot.eventbus.ThreadMode
class VeFeedbackListActivity :
AIXTextActivity<ActivityVeFeedbackListBinding, VeFeedbackViewModel>() {
AIXTextActivity<ActivityVeFeedbackListBinding, VeFeedbackViewModel>() , NOFfmpeg {
val viewModel: VeFeedbackViewModel by viewModels()
@ -67,7 +70,8 @@ class VeFeedbackListActivity :
binding.webFeedbackList.webViewClient = object : WebViewClient() {
override fun onPageStarted(view: WebView?, url: String?, favicon: Bitmap?) {
super.onPageStarted(view, url, favicon)
showComplete()
binding.webFeedbackList.visibility = View.VISIBLE
}
override fun onPageFinished(view: WebView?, url: String?) {
@ -82,6 +86,14 @@ class VeFeedbackListActivity :
error: WebResourceError?
) {
super.onReceivedError(view, request, error)
showErrorData(object : VSNotificationsDefault.OnRetryListener {
override fun onRetry(layout: VSNotificationsDefault) {
showLoading()
loadPageUrl(JActivityAdapter.FEEDBACK_URL_LIST)
}
})
binding.webFeedbackList.visibility = View.INVISIBLE
if (TranslationHelper.getTranslation() != null){
toast(TranslationHelper.getTranslation()?.veloria_network.toString())
}else {
@ -123,4 +135,8 @@ class VeFeedbackListActivity :
EventBus.getDefault().unregister(this)
}
override fun getStatusLayout(): VSNotificationsDefault? {
return binding.stateLayout
}
}

View File

@ -6,6 +6,7 @@ import androidx.appcompat.app.AppCompatDelegate
import androidx.core.os.LocaleListCompat
import androidx.lifecycle.lifecycleScope
import androidx.recyclerview.widget.LinearLayoutManager
import com.blankj.utilcode.util.NetworkUtils
import com.veloria.now.shortapp.civil.JActivityAdapter
import com.veloria.now.shortapp.civil.NOFfmpeg
import com.veloria.now.shortapp.civil.RYAction
@ -33,16 +34,28 @@ class VeLanguageActivity : AIXTextActivity<ActivityVeLanguageBinding, LanguageVi
override fun getViewBinding() = ActivityVeLanguageBinding.inflate(layoutInflater)
override fun initView() {
if (TranslationHelper.getTranslation() != null){
binding.tvTitle.text = TranslationHelper.getTranslation()?.veloria_language
}
binding.ivBack.setOnClickListener {
finish()
}
if (!NetworkUtils.isConnected()) {
showErrorData(object : VSNotificationsDefault.OnRetryListener {
override fun onRetry(layout: VSNotificationsDefault) {
initView()
}
})
return
}
showComplete()
val layoutManager =
LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false)
binding.recyclerView.layoutManager = layoutManager
mAdapter = LanguageAdapter()
binding.recyclerView.adapter = mAdapter
if (TranslationHelper.getTranslation() != null){
binding.tvTitle.text = TranslationHelper.getTranslation()?.veloria_language
}
showLoading()
viewModel.getLanguages()
@ -61,6 +74,7 @@ class VeLanguageActivity : AIXTextActivity<ActivityVeLanguageBinding, LanguageVi
viewModel.getTranslates(langKey)
}
}
}
override fun observeData() {
@ -85,8 +99,8 @@ class VeLanguageActivity : AIXTextActivity<ActivityVeLanguageBinding, LanguageVi
viewModel.translatesDataBean.observe(this) {
if (it?.data != null) {
RYAction.getMMKV()
.putString(JActivityAdapter.HOME_MAIN_VIDEO_INFO, "")
// RYAction.getMMKV()
// .putString(JActivityAdapter.HOME_MAIN_VIDEO_INFO, "")
lifecycleScope.launch {
withContext(Dispatchers.IO) {
TranslationHelper.saveTranslation(it.data.translates)

View File

@ -7,21 +7,24 @@ import android.widget.TextView
import androidx.activity.viewModels
import androidx.core.content.ContextCompat
import androidx.viewpager2.widget.ViewPager2
import com.blankj.utilcode.util.NetworkUtils
import com.google.android.material.tabs.TabLayout
import com.google.android.material.tabs.TabLayoutMediator
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.NOFfmpeg
import com.veloria.now.shortapp.civil.RYAction
import com.veloria.now.shortapp.civil.TranslationHelper
import com.veloria.now.shortapp.databinding.ActivityVeMyWalletBinding
import com.veloria.now.shortapp.newsletter.AIXTextActivity
import com.veloria.now.shortapp.other.NestedScrollHelper
import com.veloria.now.shortapp.rewards.VSNotificationsDefault
import com.veloria.now.shortapp.subtractionCroll.bidirectional.coordinate.VeMyWalletViewModel
import com.veloria.now.shortapp.subtractionCroll.modificationsPretch.VeMyWalletViewPagerAdapter
class VeMyWalletActivity : AIXTextActivity<ActivityVeMyWalletBinding, VeMyWalletViewModel>(),
OnRefreshLoadMoreListener {
OnRefreshLoadMoreListener , NOFfmpeg {
val viewModel: VeMyWalletViewModel by viewModels()
@ -41,9 +44,20 @@ class VeMyWalletActivity : AIXTextActivity<ActivityVeMyWalletBinding, VeMyWallet
binding.tvRechargeText.text = TranslationHelper.getTranslation()?.veloria_recharge
binding.tvDonateText.text = TranslationHelper.getTranslation()?.veloria_bonus
}
if (!NetworkUtils.isConnected()) {
binding.scrollView.visibility = View.GONE
showErrorData(object : VSNotificationsDefault.OnRetryListener {
override fun onRetry(layout: VSNotificationsDefault) {
initView()
}
})
return
}
showComplete()
binding.scrollView.visibility = View.VISIBLE
binding.tvTotal.text =
RYAction.getAllCoinTotal().toString()
binding.tvRecharge.text =
@ -175,5 +189,9 @@ class VeMyWalletActivity : AIXTextActivity<ActivityVeMyWalletBinding, VeMyWallet
viewModel.setLoadMoreAction(binding.viewPager.currentItem)
}
override fun getStatusLayout(): VSNotificationsDefault? {
return binding.stateLayout
}
}

View File

@ -1,8 +1,15 @@
package com.veloria.now.shortapp.subtractionCroll.bidirectional
import android.Manifest
import android.annotation.SuppressLint
import android.content.Intent
import android.content.pm.PackageManager
import android.graphics.Bitmap
import android.graphics.Color
import android.net.Uri
import android.os.Build
import android.os.Bundle
import android.util.Log
import android.view.View
import android.view.ViewGroup
import android.webkit.WebChromeClient
@ -11,25 +18,50 @@ import android.webkit.WebResourceRequest
import android.webkit.WebSettings
import android.webkit.WebView
import android.webkit.WebViewClient
import androidx.activity.result.contract.ActivityResultContracts
import androidx.activity.viewModels
import androidx.core.content.ContextCompat
import com.blankj.utilcode.util.NetworkUtils
import com.blankj.utilcode.util.NotificationUtils
import com.facebook.AccessToken
import com.facebook.CallbackManager
import com.facebook.CallbackManager.Factory.create
import com.facebook.FacebookCallback
import com.facebook.FacebookException
import com.facebook.GraphRequest
import com.facebook.login.LoginManager
import com.facebook.login.LoginResult
import com.google.android.gms.tasks.OnCompleteListener
import com.google.firebase.messaging.FirebaseMessaging
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.NOFfmpeg
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.YFHome
import com.veloria.now.shortapp.civil.singleOnClick
import com.veloria.now.shortapp.civil.toast
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.avcintraRelock.LoginDialog
import com.veloria.now.shortapp.subtractionCroll.bidirectional.coordinate.VeFeedbackViewModel
import com.veloria.now.shortapp.texturedAsink.LoginDataBean
import com.veloria.now.shortapp.texturedAsink.VeUploadNotificationBean
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import org.greenrobot.eventbus.EventBus
import org.greenrobot.eventbus.Subscribe
import org.greenrobot.eventbus.ThreadMode
import org.json.JSONObject
import java.util.concurrent.Executors
import java.util.concurrent.ScheduledExecutorService
class VeRewardsActivity : AIXTextActivity<ActivityVeRewardsBinding, VeFeedbackViewModel>(),
OnRefreshLoadMoreListener, NOFfmpeg {
@ -41,20 +73,18 @@ class VeRewardsActivity : AIXTextActivity<ActivityVeRewardsBinding, VeFeedbackVi
override fun initView() {
EventBus.getDefault().register(this)
if (TranslationHelper.getTranslation() != null){
binding.tvTitle.text = TranslationHelper.getTranslation()?.veloria_rewards
}
binding.ivBack.setOnClickListener { finish() }
binding.refresh.setOnRefreshLoadMoreListener(this)
binding.refresh.setEnableLoadMore(false)
binding.webRewards.setBackgroundColor(Color.TRANSPARENT)
// ivLeft?.setOnClickListener {
// singleClick {
// DialogUtils.showStoreHint(requireContext())
// }
// }
setWebView()
loadingData()
initLogin()
}
fun loadingData() {
@ -82,6 +112,31 @@ class VeRewardsActivity : AIXTextActivity<ActivityVeRewardsBinding, VeFeedbackVi
override fun observeData() {
viewModel.loginLiveData.observe(this) {
if (it?.data != null) {
if (TranslationHelper.getTranslation() != null) {
toast(TranslationHelper.getTranslation()?.veloria_succeed.toString())
}else {
toast("Succeed")
}
RYAction.getMMKV()
.putString(JActivityAdapter.ACCOUNT_TOKEN, it.data.token)
EventBus.getDefault()
.post(JActivityAdapter.HOME_ENTER_THE_APP)
EventBus.getDefault()
.post(JActivityAdapter.HOME_ON_LINE)
EventBus.getDefault()
.post(JActivityAdapter.HOME_USER_REFRESH)
loadingData()
}
}
viewModel.openNotifyLiveData.observe(this){
if (it?.data != null) {
}
}
}
@ -132,14 +187,22 @@ class VeRewardsActivity : AIXTextActivity<ActivityVeRewardsBinding, VeFeedbackVi
webSettings.builtInZoomControls = true
webSettings.displayZoomControls = false
binding.webRewards.addJavascriptInterface(
FeedbackJsBridge(this),
VeRewardJsBridge(this),
"AndroidInterface"
)
}
@Subscribe(threadMode = ThreadMode.MAIN)
fun onEvent(event: String) {
if (JActivityAdapter.HOME_LOGIN == event) {
finish()
}
if (JActivityAdapter.ACCOUNT_WEB_NOTIFICATION == event) {
askNotificationPermission()
}
if (JActivityAdapter.REWARD_LOGIN == event) {
setLogin()
}
}
override fun onDestroy() {
@ -161,4 +224,177 @@ class VeRewardsActivity : AIXTextActivity<ActivityVeRewardsBinding, VeFeedbackVi
return binding.stateLayout
}
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()
loadingData()
} else {
requestPermissionLauncher.launch(Manifest.permission.POST_NOTIFICATIONS)
}
} else {
if (VeNotificationHelper.isNotification(this)) {
getFirebaseMessaging()
viewModel.setOpenNotify()
loadingData()
} else {
VeNotificationHelper.setNotification(this)
}
}
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.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()
}
loadingData()
}else {
callbackManager?.onActivityResult(requestCode, resultCode, data)
}
}
private val requestPermissionLauncher = registerForActivityResult(
ActivityResultContracts.RequestPermission(),
) { isGranted: Boolean ->
JActivityAdapter.IS_HOME_SET_NOTIFICATIONS = isGranted
if (isGranted) {
getFirebaseMessaging()
viewModel.setOpenNotify()
loadingData()
} else {
openAppNotificationSettings()
}
}
private fun openAppNotificationSettings() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
val intent = Intent()
intent.action = "android.settings.APP_NOTIFICATION_SETTINGS"
intent.putExtra(
"android.provider.extra.APP_PACKAGE",
YFHome.getPackageName()
)
startActivity(intent)
} else {
val intent = Intent()
intent.action = "android.settings.APPLICATION_DETAILS_SETTINGS"
intent.data =
Uri.fromParts("package", YFHome.getPackageName(), null)
startActivity(intent)
}
}
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 var callbackManager: CallbackManager? = null
fun setLogin() {
val dialog = LoginDialog(this).apply {
setOnLoginOnclickListener(object : LoginDialog.LoginOnClick {
override fun onLoginFacebook() {
onFacebook()
}
})
}
dialog.show()
dialog.loginOnclick
}
private fun onFacebook() {
singleOnClick {
LoginManager.getInstance()
.logInWithReadPermissions(this, arrayListOf("public_profile", "email"))
}
}
fun initLogin(){
callbackManager = create()
LoginManager.getInstance().registerCallback(callbackManager,
object : FacebookCallback<LoginResult> {
override fun onSuccess(loginResult: LoginResult) {
val enableButtons = AccessToken.getCurrentAccessToken() != null
if (enableButtons) {
val mGraphRequest = GraphRequest.newMeRequest(
loginResult.accessToken
) { jsonObject, response ->
if (response!!.error != null) {
if (TranslationHelper.getTranslation() != null) {
toast(
"Facebook ".plus(TranslationHelper.getTranslation()?.veloria_login_exception)
.plus(".${response.error?.exception.toString()}")
)
} else {
toast("Facebook Error")
}
} else {
val id = jsonObject?.optString("id")
val name = jsonObject?.optString("name")
val object_pic: JSONObject? = jsonObject!!.optJSONObject("picture")
val object_data = object_pic?.optJSONObject("data")
val photo = object_data?.optString("url")
viewModel.setLeaveApp()
viewModel.setDoLogin(
LoginDataBean(
photo.toString(),
"",
name.toString(),
"",
"facebook",
id.toString()
)
)
}
}
val parameters = Bundle()
parameters.putString("fields", "id,name,email,picture")
mGraphRequest.parameters = parameters
mGraphRequest.executeAsync()
}
}
override fun onCancel() {
if (TranslationHelper.getTranslation() != null) {
toast("Facebook ".plus(TranslationHelper.getTranslation()?.veloria_login_cancel))
} else {
toast("Facebook Cancel")
}
}
override fun onError(exception: FacebookException) {
if (TranslationHelper.getTranslation() != null) {
toast(
"Facebook ".plus(TranslationHelper.getTranslation()?.veloria_login_exception)
.plus("n.$exception")
)
} else {
toast("Facebook Error")
}
}
})
}
}

View File

@ -21,7 +21,9 @@ import com.android.billingclient.api.ProductDetailsResponseListener
import com.android.billingclient.api.Purchase
import com.android.billingclient.api.PurchasesUpdatedListener
import com.android.billingclient.api.QueryProductDetailsParams
import com.blankj.utilcode.util.NetworkUtils
import com.veloria.now.shortapp.R
import com.veloria.now.shortapp.civil.NOFfmpeg
import com.veloria.now.shortapp.civil.RYAction
import com.veloria.now.shortapp.civil.TranslationHelper
import com.veloria.now.shortapp.civil.YFHome
@ -29,6 +31,7 @@ import com.veloria.now.shortapp.civil.singleOnClick
import com.veloria.now.shortapp.civil.toast
import com.veloria.now.shortapp.databinding.ActivityVeStoreBinding
import com.veloria.now.shortapp.newsletter.AIXTextActivity
import com.veloria.now.shortapp.rewards.VSNotificationsDefault
import com.veloria.now.shortapp.subtractionCroll.bidirectional.coordinate.VeStoreViewModel
import com.veloria.now.shortapp.subtractionCroll.modificationsPretch.VeStoreCoinAdapter
import com.veloria.now.shortapp.subtractionCroll.modificationsPretch.VeStoreCoinBigAdapter
@ -36,9 +39,14 @@ import com.veloria.now.shortapp.subtractionCroll.modificationsPretch.VeStoreVipA
import com.veloria.now.shortapp.texturedAsink.VeCreatePayOrderReqBean
import com.veloria.now.shortapp.texturedAsink.VePayBean
import com.veloria.now.shortapp.texturedAsink.VePaySettingsBean
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.flow.debounce
import kotlinx.coroutines.flow.flow
import kotlinx.coroutines.flow.onEach
import kotlinx.coroutines.launch
class VeStoreActivity : AIXTextActivity<ActivityVeStoreBinding, VeStoreViewModel>() {
class VeStoreActivity : AIXTextActivity<ActivityVeStoreBinding, VeStoreViewModel>() , NOFfmpeg {
val viewModel: VeStoreViewModel by viewModels()
@ -52,8 +60,6 @@ class VeStoreActivity : AIXTextActivity<ActivityVeStoreBinding, VeStoreViewModel
private var vipData: VePaySettingsBean.VipBean? = null
private var coinsData: VePaySettingsBean.CoinsBean? = null
private var coinsBigData: VePaySettingsBean.CoinsBean? = null
// private var bannerAdapter: VeBannerVipPayAdapter? = null
private var payBeanReq: VePayBean? = null
private var billingClientData: BillingClient? = null
@ -62,10 +68,14 @@ class VeStoreActivity : AIXTextActivity<ActivityVeStoreBinding, VeStoreViewModel
private var isBuy = false
private var purchaseData: Purchase? = null
private val scope = CoroutineScope(Dispatchers.Main)
override fun initView() {
if (TranslationHelper.getTranslation() != null) {
binding.tvTitle.text = TranslationHelper.getTranslation()?.veloria_store
binding.tvCoinTitle.text = TranslationHelper.getTranslation()?.veloria_coin_buy_title
binding.tvRestore.text = TranslationHelper.getTranslation()?.veloria_restore
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
binding.tvTips.text = Html.fromHtml(
TranslationHelper.getTranslation()?.veloria_store_tips
@ -79,13 +89,23 @@ class VeStoreActivity : AIXTextActivity<ActivityVeStoreBinding, VeStoreViewModel
)
}
}
showLoading()
binding.ivBack.setOnClickListener {
finish()
}
if (!NetworkUtils.isConnected()) {
binding.scrollView.visibility = View.GONE
showErrorData(object : VSNotificationsDefault.OnRetryListener {
override fun onRetry(layout: VSNotificationsDefault) {
initView()
}
})
return
}
showComplete()
binding.scrollView.visibility = View.VISIBLE
showLoading()
vipAdapter = VeStoreVipAdapter()
binding.recyclerVip.layoutManager = LinearLayoutManager(this)
@ -122,7 +142,6 @@ class VeStoreActivity : AIXTextActivity<ActivityVeStoreBinding, VeStoreViewModel
}
})
viewModel.getPaySettingsV3(0, 0)
vipAdapter?.setOnItemClickListener { adapter, view, position ->
@ -164,15 +183,42 @@ class VeStoreActivity : AIXTextActivity<ActivityVeStoreBinding, VeStoreViewModel
setOnPayNowClick()
}
binding.tvRestore.setOnClickListener{
singleOnClick {
if (RYAction.getOrder().isNotEmpty()
) {
showLoading()
val string = RYAction.getOrder()
scope.launch {
flow {
for (item in string) {
emit(item)
}
}
.onEach { item ->
viewModel.setRestorePaid(item)
}
.debounce(500)
.collect {}
}
} else {
if (TranslationHelper.getTranslation() != null){
TranslationHelper.getTranslation()?.veloria_no_restore?.let { it1 -> toast(it1) }
}else {
toast("No orders to restore")
}
}
}
}
initPayData()
}
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))
}
@ -208,6 +254,7 @@ class VeStoreActivity : AIXTextActivity<ActivityVeStoreBinding, VeStoreViewModel
}
}
override fun observeData() {
viewModel.PaySettingsV3.observe(this) {
if (it?.data != null) {
@ -248,7 +295,6 @@ class VeStoreActivity : AIXTextActivity<ActivityVeStoreBinding, VeStoreViewModel
binding.tvCoinTitle.visibility = View.GONE
}
}
hideLoading()
}
viewModel.createPayOrderData.observe(this) {
@ -263,6 +309,7 @@ class VeStoreActivity : AIXTextActivity<ActivityVeStoreBinding, VeStoreViewModel
}
} else {
if (TranslationHelper.getTranslation() != null) {
toast(TranslationHelper.getTranslation()?.veloria_network.toString())
} else {
toast(getString(R.string.shapeSelected))
}
@ -273,6 +320,7 @@ class VeStoreActivity : AIXTextActivity<ActivityVeStoreBinding, VeStoreViewModel
viewModel.googlePaidData.observe(this) {
if (it?.data != null) {
if (TranslationHelper.getTranslation() != null) {
toast(TranslationHelper.getTranslation()?.veloria_google_pay_success.toString())
} else {
toast(getString(R.string.ve_google_pay_success))
}
@ -281,12 +329,12 @@ class VeStoreActivity : AIXTextActivity<ActivityVeStoreBinding, VeStoreViewModel
} else {
payBeanReq?.let { it1 -> RYAction.saveOrder(it1) }
if (TranslationHelper.getTranslation() != null) {
toast(TranslationHelper.getTranslation()?.veloria_network.toString())
} else {
toast(getString(R.string.shapeSelected))
}
hideLoading()
}
}
viewModel.userInfo.observe(this) {
if (it?.data != null) {
@ -294,7 +342,30 @@ class VeStoreActivity : AIXTextActivity<ActivityVeStoreBinding, VeStoreViewModel
}
hideLoading()
}
viewModel.restorePaidData.observe(this){
if (it != null) {
it.data?.order_code?.let { it1 -> RYAction.removeOrderString(it1) }
if (RYAction.getOrder().size == 0) {
if (TranslationHelper.getTranslation() != null) {
toast(TranslationHelper.getTranslation()?.veloria_google_pay_success.toString())
} else {
toast(getString(R.string.ve_google_pay_success))
}
viewModel.getUserInfo()
isBuy = true
}
}else {
if (TranslationHelper.getTranslation() != null) {
toast(TranslationHelper.getTranslation()?.veloria_network.toString())
} else {
toast(getString(R.string.shapeSelected))
}
hideLoading()
}
}
}
private fun initPayData() {
val purchasesUpdatedListener =
@ -312,8 +383,14 @@ class VeStoreActivity : AIXTextActivity<ActivityVeStoreBinding, VeStoreViewModel
}
}
BillingClient.BillingResponseCode.ITEM_ALREADY_OWNED -> {
queryAndConsumePurchases()
hideLoading()
}
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))
}
@ -322,6 +399,7 @@ class VeStoreActivity : AIXTextActivity<ActivityVeStoreBinding, VeStoreViewModel
else -> {
if (TranslationHelper.getTranslation() != null) {
toast(TranslationHelper.getTranslation()?.veloria_google_pay_error.toString())
} else {
toast(getString(R.string.ve_google_pay_error))
}
@ -578,7 +656,7 @@ class VeStoreActivity : AIXTextActivity<ActivityVeStoreBinding, VeStoreViewModel
billingClientData?.consumeAsync(consumeParams, responseListener)
} else {
if (TranslationHelper.getTranslation() != null) {
// toast(TranslationHelper.getTranslation()?.mireo_g_pay_error.toString())
toast(TranslationHelper.getTranslation()?.veloria_google_pay_error.toString())
} else {
toast(getString(R.string.ve_google_pay_error))
}
@ -611,6 +689,18 @@ class VeStoreActivity : AIXTextActivity<ActivityVeStoreBinding, VeStoreViewModel
}
}
private fun queryAndConsumePurchases() {
// 查询所有未消费的购买记录
billingClientData?.queryPurchasesAsync(BillingClient.ProductType.INAPP) { billingResult, purchaseList ->
if (billingResult.responseCode == BillingClient.BillingResponseCode.OK) {
for (purchase in purchaseList) {
consumePurchase(purchase)
}
}
}
}
override fun onDestroy() {
super.onDestroy()
payBeanReq = null
@ -619,4 +709,8 @@ class VeStoreActivity : AIXTextActivity<ActivityVeStoreBinding, VeStoreViewModel
System.gc()
}
override fun getStatusLayout(): VSNotificationsDefault? {
return binding.stateLayout
}
}

View File

@ -8,7 +8,12 @@ import com.veloria.now.shortapp.newsletter.TStore
import com.veloria.now.shortapp.texturedAsink.DoLoginBean
import com.veloria.now.shortapp.texturedAsink.LoginDataBean
import com.veloria.now.shortapp.texturedAsink.SManifestBean
import com.veloria.now.shortapp.texturedAsink.VePayBean
import com.veloria.now.shortapp.texturedAsink.VePayResBean
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.VersionControlBean
class JService : SStringsHelp() {
@ -105,4 +110,51 @@ class JService : SStringsHelp() {
}
}
private val _notificationLiveData = MutableLiveData<TStore<VeUploadNotificationDataBean>?>()
val notificationLiveData: MutableLiveData<TStore<VeUploadNotificationDataBean>?> get() = _notificationLiveData
fun setUploadNoticeStatus(veUploadNotificationBean: VeUploadNotificationBean) {
repository.setUploadNoticeStatus(veUploadNotificationBean)
.observeForever { result ->
_notificationLiveData.value = result.getOrNull()
}
}
private val firebaseTokenLiveData = MutableLiveData<TStore<Any>?>()
fun setFirebaseToken(
fcm_token: String
) {
repository.setFirebaseToken(fcm_token).observeForever { result ->
firebaseTokenLiveData.value = result.getOrNull()
}
}
private val _openNotifyLiveData = MutableLiveData<TStore<Any>?>()
val openNotifyLiveData: MutableLiveData<TStore<Any>?> get() = _openNotifyLiveData
fun setOpenNotify() {
repository.setOpenNotify().observeForever { result ->
_openNotifyLiveData.value = result.getOrNull()
}
}
fun setSendReport(message_id: String, title: String) {
repository.setSendReport(message_id, title).observeForever {}
}
private val restorePaidLiveData = MutableLiveData<TStore<VePayResBean>?>()
val restorePaidData: MutableLiveData<TStore<VePayResBean>?> get() = restorePaidLiveData
fun setGooglePaid(vePayBean: VePayBean?) {
repository.setGooglePaid(vePayBean).observeForever { result ->
restorePaidLiveData.value = result.getOrNull()
}
}
private val _versionControlLiveData = MutableLiveData<TStore<VersionControlBean>?>()
val versionControlData: MutableLiveData<TStore<VersionControlBean>?> get() = _versionControlLiveData
fun getVersionControl() {
repository.getVersionControl().observeForever { result ->
_versionControlLiveData.value = result.getOrNull()
}
}
}

View File

@ -6,9 +6,12 @@ import com.veloria.now.shortapp.newsletter.SStringsHelp
import com.veloria.now.shortapp.texturedAsink.PURLockBean
import com.veloria.now.shortapp.texturedAsink.XAboutBean
import com.veloria.now.shortapp.highbits.qscaleqlog.PDeteleResource
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.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 +102,25 @@ private var moreSecond_sum: Int = 6970
_userInfo.value = result.getOrNull()
}
private val qualityLiveData = MutableLiveData<TStore<VeRevolutionsBean>?>()
val qualityData: MutableLiveData<TStore<VeRevolutionsBean>?> get() = qualityLiveData
fun getQualityData() {
repository.getQualityData()
.observeForever { result ->
qualityLiveData.value = result.getOrNull()
}
}
fun setLeaveApp() {
repository.setLeaveApp().observeForever {}
}
private val _loginLiveData = MutableLiveData<TStore<DoLoginBean>?>()
val loginLiveData: MutableLiveData<TStore<DoLoginBean>?> get() = _loginLiveData
fun setDoLogin(loginDataBean: LoginDataBean) {
repository.setDoLogin(loginDataBean).observeForever { result ->
_loginLiveData.value = result.getOrNull()
}
}
}

View File

@ -4,7 +4,11 @@ import androidx.lifecycle.MutableLiveData
import com.veloria.now.shortapp.highbits.qscaleqlog.ANotifications
import com.veloria.now.shortapp.newsletter.SStringsHelp
import com.veloria.now.shortapp.newsletter.TStore
import com.veloria.now.shortapp.texturedAsink.DoLoginBean
import com.veloria.now.shortapp.texturedAsink.LoginDataBean
import com.veloria.now.shortapp.texturedAsink.VeNoticeNumBean
import com.veloria.now.shortapp.texturedAsink.VeUploadNotificationBean
import com.veloria.now.shortapp.texturedAsink.VeUploadNotificationDataBean
class VeFeedbackViewModel : SStringsHelp() {
@ -19,4 +23,42 @@ class VeFeedbackViewModel : SStringsHelp() {
_noticeNumLiveData.value = result.getOrNull()
}
}
private val _notificationLiveData = MutableLiveData<TStore<VeUploadNotificationDataBean>?>()
val notificationLiveData: MutableLiveData<TStore<VeUploadNotificationDataBean>?> get() = _notificationLiveData
fun setUploadNoticeStatus(veUploadNotificationBean: VeUploadNotificationBean) {
repository.setUploadNoticeStatus(veUploadNotificationBean)
.observeForever { result ->
_notificationLiveData.value = result.getOrNull()
}
}
private val firebaseTokenLiveData = MutableLiveData<TStore<Any>?>()
fun setFirebaseToken(
fcm_token: String
) {
repository.setFirebaseToken(fcm_token).observeForever { result ->
firebaseTokenLiveData.value = result.getOrNull()
}
}
private val _openNotifyLiveData = MutableLiveData<TStore<Any>?>()
val openNotifyLiveData: MutableLiveData<TStore<Any>?> get() = _openNotifyLiveData
fun setOpenNotify() {
repository.setOpenNotify().observeForever { result ->
_openNotifyLiveData.value = result.getOrNull()
}
}
fun setLeaveApp() {
repository.setLeaveApp().observeForever {}
}
private val _loginLiveData = MutableLiveData<TStore<DoLoginBean>?>()
val loginLiveData: MutableLiveData<TStore<DoLoginBean>?> get() = _loginLiveData
fun setDoLogin(loginDataBean: LoginDataBean) {
repository.setDoLogin(loginDataBean).observeForever { result ->
_loginLiveData.value = result.getOrNull()
}
}
}

View File

@ -8,6 +8,7 @@ import com.veloria.now.shortapp.texturedAsink.KFAFavoritesInterceptorBean
import com.veloria.now.shortapp.texturedAsink.VeCreatePayOrderBean
import com.veloria.now.shortapp.texturedAsink.VeCreatePayOrderReqBean
import com.veloria.now.shortapp.texturedAsink.VePayBean
import com.veloria.now.shortapp.texturedAsink.VePayResBean
import com.veloria.now.shortapp.texturedAsink.VePaySettingsBean
@ -48,8 +49,8 @@ class VeStoreViewModel : SStringsHelp() {
}
}
private val googlePaidLiveData = MutableLiveData<TStore<VePayBean>?>()
val googlePaidData: MutableLiveData<TStore<VePayBean>?> get() = googlePaidLiveData
private val googlePaidLiveData = MutableLiveData<TStore<VePayResBean>?>()
val googlePaidData: MutableLiveData<TStore<VePayResBean>?> get() = googlePaidLiveData
fun setGooglePaid(vePayBean: VePayBean?) {
repository.setGooglePaid(vePayBean).observeForever { result ->
googlePaidLiveData.value = result.getOrNull()
@ -62,4 +63,13 @@ class VeStoreViewModel : SStringsHelp() {
repository.getUserInfo().observeForever { result ->
_userInfo.value = result.getOrNull()
}
private val restorePaidLiveData = MutableLiveData<TStore<VePayResBean>?>()
val restorePaidData: MutableLiveData<TStore<VePayResBean>?> get() = restorePaidLiveData
fun setRestorePaid(vePayBean: VePayBean?) {
repository.setGooglePaid(vePayBean).observeForever { result ->
restorePaidLiveData.value = result.getOrNull()
}
}
}

View File

@ -7,23 +7,22 @@ import androidx.recyclerview.widget.RecyclerView
import com.bumptech.glide.Glide
import com.chad.library.adapter4.BaseQuickAdapter
import com.veloria.now.shortapp.R
import com.veloria.now.shortapp.civil.TranslationHelper
import com.veloria.now.shortapp.civil.getTimeAgoDetailed
import com.veloria.now.shortapp.databinding.IDisplayTrendsBinding
import com.veloria.now.shortapp.newsletter.XNBackground
import com.veloria.now.shortapp.texturedAsink.TMainExtractionBean
import com.veloria.now.shortapp.databinding.IDisplayTrendsBinding
import com.veloria.now.shortapp.civil.getTimeAgoDetailed
import kotlin.math.min
import kotlin.math.max
class GFFavorites :
BaseQuickAdapter<TMainExtractionBean.DataListBean, GFFavorites.VH>() {
@Volatile
var default_0mTabBingeSum: Long = 3471L
@Volatile
var freeRetrofitMark: Int = 5934
var collectionOnClick: CollectionOnClick? = null
@ -39,7 +38,10 @@ class GFFavorites :
) : RecyclerView.ViewHolder(binding.root)
private fun playDramaAppendModeForeverTest(lifecycleHttp: MutableList<Long>, secondsStarted: MutableMap<String,Double>) :MutableMap<String,Float> {
private fun playDramaAppendModeForeverTest(
lifecycleHttp: MutableList<Long>,
secondsStarted: MutableMap<String, Double>
): MutableMap<String, Float> {
var durationFailure: MutableList<Boolean> = mutableListOf<Boolean>()
var setupMin__6: MutableList<Long> = mutableListOf<Long>()
var toastCurrent: MutableMap<String, Boolean> = mutableMapOf<String, Boolean>()
@ -58,7 +60,8 @@ private fun playDramaAppendModeForeverTest(lifecycleHttp: MutableList<Long>, sec
override fun onCreateViewHolder(context: Context, parent: ViewGroup, viewType: Int): VH {
var scheduling_r = mutableListOf<Long>()
var elisionUnhighlight = this.playDramaAppendModeForeverTest(scheduling_r,mutableMapOf<String,Double>())
var elisionUnhighlight =
this.playDramaAppendModeForeverTest(scheduling_r, mutableMapOf<String, Double>())
var elisionUnhighlight_len: Int = elisionUnhighlight.size
for (object_i in elisionUnhighlight) {
@ -70,7 +73,8 @@ println(elisionUnhighlight)
var dashboardI: String = "rscc"
if (dashboardI.length > 171) {}
if (dashboardI.length > 171) {
}
println(dashboardI)
@ -112,7 +116,8 @@ println(splittingSigning)
var loading6: Int = 1947
if (loading6 > 87) {}
if (loading6 > 87) {
}
this.default_0mTabBingeSum = 9956L
@ -130,37 +135,57 @@ this.default_0mTabBingeSum = 9956L
.error(R.mipmap.collection_trending_recommend)
.into(holder.binding.ivImage2)
var factoryu: Int = 4239
if (factoryu > 62) {}
if (factoryu > 62) {
}
holder.binding.tvName2.text = item.name
var progressJ: Long = 3354L
while (progressJ >= 27L) { break }
while (progressJ >= 27L) {
break
}
if (TranslationHelper.getTranslation() != null) {
holder.binding.tvSeries.text = TranslationHelper.replace(
TranslationHelper.getTranslation()?.mireo_EP.toString(),
item.current_episode
)
holder.binding.tvSeriesAll.text = "/".plus(
TranslationHelper.replace(
TranslationHelper.getTranslation()?.veloria_all_episodes.toString(),
item.episode_total.toString()
)
)
} else {
holder.binding.tvSeries.text =
"EP.".plus(item.current_episode)
var uploadp:Int = 6616
while (uploadp >= 157) { break }
holder.binding.tvSeriesAll.text = "/EP.".plus(item.episode_total)
}
var uploadp: Int = 6616
while (uploadp >= 157) {
break
}
var indexJ: Long = 6061L
if (indexJ > 169L) {}
if (indexJ > 169L) {
}
if (item.is_collect == 1) {
var login_: Float = 4781.0f
while (login_ >= 30.0f) { break }
while (login_ >= 30.0f) {
break
}
holder.binding.ivCollection.setImageResource(R.mipmap.detele_rewards_episode)
} else {
var tabA: Float = 2603.0f
if (tabA <= 39.0f) {}
if (tabA <= 39.0f) {
}
holder.binding.ivCollection.setImageResource(R.mipmap.episode_utils)
@ -168,10 +193,11 @@ this.default_0mTabBingeSum = 9956L
if (!item.updated_at.isNullOrEmpty()) {
var outV: Float = 6386.0f
if (outV == 10.0f) {}
if (outV == 10.0f) {
}
holder.binding.tvTime.text = getTimeAgoDetailed(item.updated_at)
holder.binding.tvTime.text = item.updated_at
}
holder.binding.ivCollection.setOnClickListener {

View File

@ -1,62 +1,53 @@
package com.veloria.now.shortapp.subtractionCroll.modificationsPretch
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.appcompat.widget.AppCompatImageView
import androidx.appcompat.widget.AppCompatTextView
import androidx.cardview.widget.CardView
import androidx.recyclerview.widget.RecyclerView
import com.bumptech.glide.Glide
import com.veloria.now.shortapp.R
import com.veloria.now.shortapp.newsletter.XNBackground
import com.veloria.now.shortapp.rewards.BannerPlayerView
import com.veloria.now.shortapp.texturedAsink.VeDetailsRecommendBean
import com.youth.banner.adapter.BannerAdapter
import com.zhpan.bannerview.BaseBannerAdapter
import com.zhpan.bannerview.BaseViewHolder
class VeBannerRecommendAdapter(items: List<VeDetailsRecommendBean.ItemDaraBean?>?) :
BannerAdapter<VeDetailsRecommendBean.ItemDaraBean, VeBannerRecommendAdapter.BannerViewHolder>(
items
) {
class VeBannerRecommendAdapter :
BaseBannerAdapter<VeDetailsRecommendBean.ItemDaraBean>() {
var currentPlayingPosition = 0
override fun onCreateHolder(parent: ViewGroup, viewType: Int): BannerViewHolder {
val view: View = LayoutInflater.from(parent.context)
.inflate(R.layout.item_ve_banner_recommend, parent, false)
view.layoutParams = ViewGroup.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.MATCH_PARENT
)
return BannerViewHolder(view)
private var currentBannerPlayerView: BannerPlayerView? = null
fun getCurrentPlayerView(): BannerPlayerView? {
return currentBannerPlayerView
}
override fun onBindView(
holder: BannerViewHolder?,
override fun bindData(
holder: BaseViewHolder<VeDetailsRecommendBean.ItemDaraBean>?,
data: VeDetailsRecommendBean.ItemDaraBean?,
position: Int,
size: Int
pageSize: Int
) {
val imageView =
holder?.view?.findViewById<AppCompatImageView>(R.id.ic_icon_banner)
holder?.findViewById<AppCompatImageView>(R.id.ic_icon_banner)
if (imageView != null) {
Glide.with(holder.view.context!!)
Glide.with(XNBackground.instance)
.load(data?.image_url)
.placeholder(R.mipmap.collection_trending_recommend)
.into(imageView)
}
val tvName =
holder?.view?.findViewById<AppCompatTextView>(R.id.tv_name)
tvName?.text = data?.name
val cardView =
holder?.view?.findViewById<CardView>(R.id.cardView)
if (position == currentPlayingPosition) {
cardView?.visibility = View.INVISIBLE
} else {
cardView?.visibility = View.VISIBLE
}
holder?.findViewById<AppCompatTextView>(R.id.tv_name)
val tvRevenge =
holder?.view?.findViewById<AppCompatTextView>(R.id.tv_revenge)
holder?.findViewById<AppCompatTextView>(R.id.tv_revenge)
val tvRevenge1 =
holder?.view?.findViewById<AppCompatTextView>(R.id.tv_revenge_1)
holder?.findViewById<AppCompatTextView>(R.id.tv_revenge_1)
tvName?.text = data?.name
val bannerPlayerView = holder?.findViewById<BannerPlayerView>(R.id.banner_player)
if (position == currentPlayingPosition) {
imageView?.visibility = View.INVISIBLE
bannerPlayerView?.setPlayInfo(data)
currentBannerPlayerView = bannerPlayerView
tvName?.visibility = View.VISIBLE
tvRevenge?.visibility = View.GONE
tvRevenge1?.visibility = View.GONE
@ -68,10 +59,19 @@ class VeBannerRecommendAdapter(items: List<VeDetailsRecommendBean.ItemDaraBean?>
tvRevenge1?.visibility = View.VISIBLE
}
}
} else {
imageView?.visibility = View.VISIBLE
bannerPlayerView?.stop()
tvName?.visibility = View.GONE
tvRevenge?.visibility = View.GONE
tvRevenge1?.visibility = View.GONE
}
inner class BannerViewHolder(var view: View) : RecyclerView.ViewHolder(
view
)
}
override fun getLayoutId(viewType: Int): Int {
return R.layout.item_ve_banner_recommend;
}
}

View File

@ -30,7 +30,11 @@ class VeCustomerBuyRecordAdapter :
item: VeCustomerBuyRecordsBean.DataBean?
) {
if (null != item) {
if (TranslationHelper.getTranslation()!=null){
holder.binding.tvBalance.text = TranslationHelper.replace(TranslationHelper.getTranslation()?.mireo_EP.toString(),item.episode.toString()).plus(" ").plus(item.name)
}else{
holder.binding.tvBalance.text = "EP.".plus(item.episode).plus(" ").plus(item.name)
}
holder.binding.tvName.text = TranslationHelper.getTranslation()
?.let { TranslationHelper.getTranslation()?.veloria_purchase_single_episode }
?: "Purchase Single Episode"

View File

@ -7,6 +7,7 @@ import android.view.ViewGroup
import androidx.recyclerview.widget.RecyclerView
import com.chad.library.adapter4.BaseQuickAdapter
import com.veloria.now.shortapp.R
import com.veloria.now.shortapp.civil.TranslationHelper
import com.veloria.now.shortapp.databinding.ItemVeStoreCoinBinding
import com.veloria.now.shortapp.texturedAsink.VePaySettingsBean
import kotlin.math.floor
@ -36,7 +37,15 @@ class VeStoreCoinAdapter :
holder.binding.tvCoins.text = "+".plus(item.coins.toString())
holder.binding.tvPrice.text = item.price_google
if (item.send_coins > 0) {
if (TranslationHelper.getTranslation() != null) {
holder.binding.tvBonus.text = TranslationHelper.replace(
TranslationHelper.getTranslation()?.veloria_bonus_count_text.toString(),
item.send_coins.toString()
)
} else {
holder.binding.tvBonus.text = "+".plus(item.send_coins).plus(" Bonus")
}
} else {
holder.binding.tvBonus.text = ""
}

View File

@ -7,6 +7,7 @@ import android.view.ViewGroup
import androidx.recyclerview.widget.RecyclerView
import com.chad.library.adapter4.BaseQuickAdapter
import com.veloria.now.shortapp.R
import com.veloria.now.shortapp.civil.TranslationHelper
import com.veloria.now.shortapp.databinding.ItemVeStoreCoinBigBinding
import com.veloria.now.shortapp.texturedAsink.VePaySettingsBean
import kotlin.math.floor
@ -36,7 +37,14 @@ class VeStoreCoinBigAdapter :
holder.binding.tvCoins.text = "+".plus(item.coins.toString())
holder.binding.tvPrice.text = item.price_google
if (item.send_coins > 0) {
if (TranslationHelper.getTranslation() != null) {
holder.binding.tvBonus.text = TranslationHelper.replace(
TranslationHelper.getTranslation()?.veloria_bonus_count_text.toString(),
item.send_coins.toString()
)
} else {
holder.binding.tvBonus.text = "+".plus(item.send_coins).plus(" Bonus")
}
} else {
holder.binding.tvBonus.text = ""
}

View File

@ -36,9 +36,11 @@ class VeStoreVipAdapter :
if (null != item) {
holder.binding.tvDay.text = item.brief
holder.binding.tvMoney.text = item.price_google
holder.binding.tvMoneyDay.text = "/".plus(item.vip_type_key)
holder.binding.tvMoneyDay.text = "/".plus(item.short_type)
holder.binding.tvDescription.text = item.description
holder.binding.tvInfo.text = item.auto_sub
if (TranslationHelper.getTranslation() != null) {
holder.binding.tvInfo.text = TranslationHelper.getTranslation()?.veloria_store_auto_renew
}
if ((item.send_coins ?: 0) > 0) {
holder.binding.tvExtra.text =
"+".plus(
@ -48,7 +50,7 @@ class VeStoreVipAdapter :
if (TranslationHelper.getTranslation() != null) {
holder.binding.tvExpire.text =
TranslationHelper.getTranslation()?.veloria_donate_expire?.let {
TranslationHelper.getTranslation()?.veloria_store_donate_coins_ios?.let {
TranslationHelper.replace(
it,
item.send_coin_ttl.toString()
@ -66,6 +68,7 @@ class VeStoreVipAdapter :
holder.binding.tvExpire.visibility = View.GONE
}
if (currentPosition == position) {
holder.binding.tvSelect.visibility = View.VISIBLE
} else {

View File

@ -0,0 +1,100 @@
package com.veloria.now.shortapp.subtractionCroll.modificationsPretch
import android.content.Context
import android.graphics.Color
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.recyclerview.widget.RecyclerView
import com.chad.library.adapter4.BaseQuickAdapter
import com.veloria.now.shortapp.R
import com.veloria.now.shortapp.civil.TranslationHelper
import com.veloria.now.shortapp.databinding.ItemVeStoreVipBinding
import com.veloria.now.shortapp.databinding.ItemVeVipSplashBinding
import com.veloria.now.shortapp.texturedAsink.VePaySettingsBean
class VeVipSplashAdapter :
BaseQuickAdapter<VePaySettingsBean.VipBean, VeVipSplashAdapter.VH>() {
var currentPosition = -1
class VH(
parent: ViewGroup,
val binding: ItemVeVipSplashBinding = ItemVeVipSplashBinding.inflate(
LayoutInflater.from(parent.context), parent, false
),
) : RecyclerView.ViewHolder(binding.root)
override fun onCreateViewHolder(context: Context, parent: ViewGroup, viewType: Int): VH {
return VH(parent)
}
override fun onBindViewHolder(
holder: VH,
position: Int,
item: VePaySettingsBean.VipBean?
) {
if (null != item) {
holder.binding.tvMoney.text = item.price_google
holder.binding.tvMoneyDay.text = "/".plus(item.short_type)
if ((item.send_coins ?: 0) > 0) {
holder.binding.tvExtra.text =
"+".plus(
TranslationHelper.getTranslation()
?.let { TranslationHelper.getTranslation()?.veloria_extra } ?: "Extra")
.plus(" ").plus(item.send_coins)
holder.binding.tvExtra.visibility = View.VISIBLE
} else {
holder.binding.tvExtra.visibility = View.GONE
}
if (position == 0){
holder.binding.tvHot.visibility = View.VISIBLE
}else {
holder.binding.tvHot.visibility = View.GONE
}
if (currentPosition == position) {
holder.binding.tvSelect.visibility = View.VISIBLE
} else {
holder.binding.tvSelect.visibility = View.GONE
}
when (item.vip_type_key) {
"month" -> {
holder.binding.root.setBackgroundResource(R.mipmap.iv_dialog_vip_splash_vip_1)
holder.binding.tvMoney.setTextColor(Color.parseColor("#414867"))
holder.binding.tvMoneyDay.setTextColor(Color.parseColor("#414867"))
holder.binding.tvExtra.setTextColor(Color.parseColor("#303962"))
holder.binding.tvExtra.setBackgroundResource(R.drawable.bg_store_vip_text_1)
}
"week" -> {
holder.binding.root.setBackgroundResource(R.mipmap.iv_dialog_vip_splash_vip_2)
holder.binding.tvMoney.setTextColor(Color.parseColor("#416767"))
holder.binding.tvMoneyDay.setTextColor(Color.parseColor("#416767"))
holder.binding.tvExtra.setTextColor(Color.parseColor("#416767"))
holder.binding.tvExtra.setBackgroundResource(R.drawable.bg_store_vip_text_2)
}
"quarter" -> {
holder.binding.root.setBackgroundResource(R.mipmap.iv_dialog_vip_splash_vip_3)
holder.binding.tvMoney.setTextColor(Color.parseColor("#5F1EB9"))
holder.binding.tvMoneyDay.setTextColor(Color.parseColor("#5F1EB9"))
holder.binding.tvExtra.setTextColor(Color.parseColor("#5F1EB9"))
holder.binding.tvExtra.setBackgroundResource(R.drawable.bg_store_vip_text_3)
}
"year" -> {
holder.binding.root.setBackgroundResource(R.mipmap.iv_dialog_vip_splash_vip_4)
holder.binding.tvMoney.setTextColor(Color.parseColor("#573D31"))
holder.binding.tvMoneyDay.setTextColor(Color.parseColor("#573D31"))
holder.binding.tvExtra.setTextColor(Color.parseColor("#573D31"))
holder.binding.tvExtra.setBackgroundResource(R.drawable.bg_store_vip_text_4)
}
}
}
}
}

View File

@ -0,0 +1,8 @@
package com.veloria.now.shortapp.texturedAsink
class VePayResBean(
val is_backhaul: Int,//1可以上传
val money: String,//回传价格
val order_code: String,
val status: String
)

View File

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

View File

@ -0,0 +1,8 @@
package com.veloria.now.shortapp.texturedAsink
class VeRewardJsBean (
val token: String,
val time_zone: String,
val lang: String,
val type: String
)

View File

@ -16,7 +16,38 @@ class VeTranslationBean(
)
data class Translation(
val veloria_update_title : String,
val veloria_update_now : String,
val veloria_no_restore : String,
val veloria_store_donate_coins_ios : String,
val veloria_coin_buy_title : String,
val mireo_EP : String,
val veloria_try_again : String,
val veloria_network_error_1 : String,
val veloria_search_results : String,
val veloria_watch_now : String,
val veloria_detail_recommand_title : String,
val veloria_bonus_count_text : String,
val veloria_donate_expire : String,
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,
@ -62,6 +93,7 @@ class VeTranslationBean(
val veloria_recersal_of_fate : String,
val veloria_extra : String,
val veloria_store_tips : String,
val veloria_unlock : String,
val veloria_your_coins : String,
val veloria_get_more_coins : String,
val veloria_buy_now : String,
@ -97,6 +129,7 @@ class VeTranslationBean(
val veloria_order_record : String,
val veloria_rewards : String,
val veloria_store : String,
val veloria_restore : String,
val veloria_wallet : String,
val veloria_bonus : String,
val veloria_coins : String,

View File

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

View File

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

View File

@ -0,0 +1,7 @@
package com.veloria.now.shortapp.texturedAsink
class VersionControlBean (
val description: String,
val version_code: String,
val version_name: String
)

View File

@ -0,0 +1,14 @@
package com.veloria.now.shortapp.texturedAsink
class WatchVideoJsonBean(
val data: Data?,
val is_complete: Boolean,
val is_show: Int,
val type: String
) {
data class Data(
val activity_id: Int,
val short_play_id: Int?
)
}

View File

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

View File

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

View File

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

View File

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#A3F0DE" />
<corners android:radius="@dimen/dp_15"/>
</shape>

View File

@ -57,13 +57,23 @@
tools:text="1" />
<WebView
android:id="@+id/web_feedback"
<com.veloria.now.shortapp.rewards.VSNotificationsDefault
android:id="@+id/stateLayout"
android:layout_width="match_parent"
android:layout_height="0dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/iv_back" />
app:layout_constraintTop_toBottomOf="@+id/iv_back"
>
<WebView
android:id="@+id/web_feedback"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
</com.veloria.now.shortapp.rewards.VSNotificationsDefault>
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@ -39,11 +39,18 @@
app:layout_constraintTop_toBottomOf="@+id/iv_back"
app:srlEnablePreviewInEditMode="false">
<com.veloria.now.shortapp.rewards.VSNotificationsDefault
android:id="@+id/stateLayout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<WebView
android:id="@+id/web_feedback_detail"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</com.veloria.now.shortapp.rewards.VSNotificationsDefault>
</com.scwang.smart.refresh.layout.SmartRefreshLayout>
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@ -39,10 +39,18 @@
app:layout_constraintTop_toBottomOf="@+id/iv_back"
app:srlEnablePreviewInEditMode="false">
<com.veloria.now.shortapp.rewards.VSNotificationsDefault
android:id="@+id/stateLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<WebView
android:id="@+id/web_feedback_list"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</com.veloria.now.shortapp.rewards.VSNotificationsDefault>
</com.scwang.smart.refresh.layout.SmartRefreshLayout>

View File

@ -29,15 +29,21 @@
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@+id/iv_back" />
<com.scwang.smart.refresh.layout.SmartRefreshLayout
android:id="@+id/refresh"
<com.veloria.now.shortapp.rewards.VSNotificationsDefault
android:id="@+id/stateLayout"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_marginBottom="@dimen/dp_10"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/iv_back">
<com.scwang.smart.refresh.layout.SmartRefreshLayout
android:id="@+id/refresh"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginBottom="@dimen/dp_10"
>
<androidx.core.widget.NestedScrollView
android:id="@+id/scrollView"
android:layout_width="match_parent"
@ -63,7 +69,7 @@
android:id="@+id/tv_total_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_5"
android:layout_marginStart="@dimen/dp_10"
android:layout_marginTop="@dimen/dp_5"
android:text="Total Coins"
android:textColor="@color/white"
@ -75,7 +81,7 @@
android:id="@+id/tv_total"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_5"
android:layout_marginStart="@dimen/dp_10"
android:layout_marginTop="@dimen/dp_8"
android:drawableStart="@mipmap/iv_coins"
android:drawablePadding="@dimen/dp_5"
@ -100,7 +106,7 @@
android:id="@+id/tv_recharge_text"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_5"
android:layout_marginStart="@dimen/dp_10"
android:layout_marginTop="@dimen/dp_18"
android:text="Recharge"
android:textColor="@color/white"
@ -112,7 +118,7 @@
android:id="@+id/tv_recharge"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_5"
android:layout_marginStart="@dimen/dp_10"
android:layout_marginTop="@dimen/dp_5"
android:layout_marginBottom="@dimen/dp_5"
android:text="0"
@ -205,4 +211,7 @@
</androidx.core.widget.NestedScrollView>
</com.scwang.smart.refresh.layout.SmartRefreshLayout>
</com.veloria.now.shortapp.rewards.VSNotificationsDefault>
</androidx.constraintlayout.widget.ConstraintLayout>

View File

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

View File

@ -21,18 +21,37 @@
android:layout_alignTop="@+id/iv_back"
android:layout_alignBottom="@+id/iv_back"
android:layout_centerHorizontal="true"
android:gravity="center"
android:singleLine="true"
android:text="Store"
android:gravity="center"
android:textColor="@color/white"
android:textSize="@dimen/sp_16" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_restore"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignTop="@+id/iv_back"
android:layout_alignBottom="@+id/iv_back"
android:layout_alignParentEnd="true"
android:layout_marginEnd="@dimen/dp_15"
android:gravity="center"
android:singleLine="true"
android:text="Restore"
android:textColor="@color/white"
android:textSize="@dimen/sp_14" />
<androidx.core.widget.NestedScrollView
<com.veloria.now.shortapp.rewards.VSNotificationsDefault
android:id="@+id/stateLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@+id/iv_back">
<androidx.core.widget.NestedScrollView
android:id="@+id/scrollView"
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="match_parent"
android:layout_height="match_parent"
@ -95,4 +114,6 @@
</androidx.core.widget.NestedScrollView>
</com.veloria.now.shortapp.rewards.VSNotificationsDefault>
</RelativeLayout>

View File

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

View File

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

View File

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

View File

@ -0,0 +1,125 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:background="@mipmap/playfair_selected_gradle">
<View
android:layout_width="0dp"
android:layout_height="0dp"
android:background="@drawable/ppi_auto_renderers"
app:layout_constraintBottom_toBottomOf="@+id/cl_one"
app:layout_constraintEnd_toEndOf="@+id/cl_one"
app:layout_constraintStart_toStartOf="@+id/cl_one"
app:layout_constraintTop_toTopOf="@+id/cl_one" />
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/cl_one"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@mipmap/checkbox_layout"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<androidx.appcompat.widget.AppCompatImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_10"
android:layout_marginTop="@dimen/dp_30"
android:src="@mipmap/iv_dialog_text_top"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_title"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_23"
android:layout_marginTop="@dimen/dp_36"
android:layout_marginEnd="@dimen/dp_135"
android:fontFamily="sans-serif-medium"
android:lineSpacingExtra="@dimen/dp_2"
android:maxLines="2"
android:ellipsize="end"
android:text="Discover a new version"
android:textColor="@color/avatarAdvert"
android:textSize="@dimen/sp_20"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_version"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_23"
android:layout_marginTop="@dimen/sp_12"
android:background="@drawable/bg_upload_version"
android:paddingHorizontal="@dimen/sp_8"
android:paddingVertical="@dimen/dp_3"
android:text="v2.0"
android:textColor="@color/black"
android:textSize="@dimen/sp_12"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/tv_title" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_content"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginHorizontal="@dimen/dp_23"
android:layout_marginTop="@dimen/dp_12"
android:minLines="4"
android:text="when you sign out, your watch history will not be synced to your account."
android:textColor="@color/avatarAdvert"
android:textSize="@dimen/sp_15"
app:layout_constraintBottom_toTopOf="@+id/tv_now"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@id/tv_version" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_now"
android:layout_width="match_parent"
android:layout_height="@dimen/dp_48"
android:layout_marginHorizontal="@dimen/dp_30"
android:layout_marginTop="@dimen/dp_15"
android:layout_marginBottom="@dimen/dp_30"
android:background="@drawable/mc_player"
android:gravity="center"
android:text="Update Now"
android:textColor="@color/white"
android:textSize="@dimen/sp_14"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tv_content" />
</androidx.constraintlayout.widget.ConstraintLayout>
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/iv_image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="-45dp"
android:src="@mipmap/iv_version_control_top"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="@+id/cl_one" />
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/iv_close"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_10"
android:padding="@dimen/dp_10"
android:src="@mipmap/factory_icon"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/cl_one" />
</androidx.constraintlayout.widget.ConstraintLayout>

View File

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

View File

@ -0,0 +1,83 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<View
android:id="@+id/v_bg"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignTop="@+id/iv_top"
android:layout_alignBottom="@+id/v_line"
android:layout_marginTop="@dimen/dp_75"
android:background="@mipmap/iv_dialog_vip_splash_bg" />
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/iv_top"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_marginTop="@dimen/dp_15"
android:background="@mipmap/iv_dialog_vip_splash_top" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/iv_top"
android:layout_marginHorizontal="@dimen/dp_20"
android:layout_marginTop="@dimen/dp_30"
android:fontFamily="sans-serif-medium"
android:lineSpacingExtra="@dimen/dp_2"
android:textStyle="bold"
android:gravity="center"
android:text="Unlock VIP Privileges!"
android:textColor="@color/white"
android:textSize="@dimen/sp_16" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_content"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/tv_title"
android:layout_marginHorizontal="@dimen/dp_20"
android:layout_marginTop="@dimen/dp_15"
android:ellipsize="end"
android:gravity="center"
android:minLines="2"
android:text="Enjoy ad-free streaming, early access, and exclusive content!"
android:textColor="#C5C5C5"
android:textSize="@dimen/sp_14" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recyclerView"
android:layout_width="@dimen/dp_240"
android:layout_height="wrap_content"
android:layout_below="@+id/tv_content"
android:layout_centerHorizontal="true"
android:layout_marginHorizontal="@dimen/dp_20"
android:layout_marginTop="@dimen/dp_15"
/>
<View
android:id="@+id/v_line"
android:layout_width="@dimen/dp_1"
android:layout_height="@dimen/dp_15"
android:layout_below="@+id/recyclerView"
/>
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/iv_close"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/v_line"
android:layout_centerHorizontal="true"
android:padding="@dimen/dp_10"
android:src="@mipmap/factory_icon" />
</RelativeLayout>

View File

@ -261,6 +261,9 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_10"
android:ellipsize="end"
android:maxWidth="@dimen/dp_60"
android:maxLines="2"
android:text="Donate"
android:textColor="@color/gradleLayout"
android:textSize="@dimen/sp_14"
@ -318,7 +321,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"
@ -332,12 +335,12 @@
android:id="@+id/tv_rewards"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/dp_20"
android:drawableTop="@mipmap/bold_wight_fddebcdbeeffcebdf"
android:gravity="center"
android:text="Rewards"
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,10 +395,10 @@
android:drawablePadding="@dimen/dp_8"
android:gravity="center_vertical"
android:paddingHorizontal="@dimen/dp_10"
android:visibility="gone"
android:text="@string/dimensImage"
android:textColor="@color/white"
android:textSize="@dimen/sp_14" />
android:textSize="@dimen/sp_14"
android:visibility="visible" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_delete_account"

View File

@ -14,13 +14,13 @@
android:src="@mipmap/right_dimens"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<ScrollView
android:orientation="vertical"
android:layout_height="0dp"
android:visibility="invisible"
android:layout_width="0dp"
android:background="#58AE3A">
</ScrollView>
android:layout_height="0dp"
android:background="#58AE3A"
android:orientation="vertical"
android:visibility="invisible"></ScrollView>
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_title"
@ -33,23 +33,32 @@ android:background="#58AE3A">
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@+id/iv_back" />
<LinearLayout
android:layout_height="210dp"
android:padding="53dp"
android:visibility="gone"
android:background="#1AB1B1"
android:layout_width="wrap_content"
android:orientation="vertical">
</LinearLayout>
android:layout_height="210dp"
android:background="#1AB1B1"
android:orientation="vertical"
android:padding="53dp"
android:visibility="gone"></LinearLayout>
<com.veloria.now.shortapp.rewards.VSNotificationsDefault
android:id="@+id/stateLayout"
android:layout_width="match_parent"
android:layout_height="0dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/iv_back">
<WebView
android:id="@+id/webView"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_height="match_parent"
android:layout_marginTop="@dimen/dp_5"
android:background="@color/transparent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toBottomOf="@+id/iv_back" />
</com.veloria.now.shortapp.rewards.VSNotificationsDefault>
</androidx.constraintlayout.widget.ConstraintLayout>

View File

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

View File

@ -14,7 +14,7 @@
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginStart="@dimen/dp_14"
android:layout_marginTop="@dimen/dp_20"
android:layout_marginTop="@dimen/dp_18"
android:gravity="center_horizontal"
android:text="Weekly VIP"
android:textColor="#647DA7"

View File

@ -0,0 +1,66 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="@dimen/dp_55"
android:layout_marginBottom="@dimen/dp_10"
android:background="@mipmap/iv_dialog_vip_splash_vip_1">
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_money"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_16"
android:text="0"
android:textColor="#416767"
android:textSize="@dimen/sp_22"
android:textStyle="bold" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_money_day"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_8"
android:layout_toEndOf="@+id/tv_money"
android:text="/month"
android:textColor="#416767"
android:textSize="@dimen/sp_12" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_extra"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/tv_money"
android:layout_marginStart="@dimen/dp_16"
android:drawableEnd="@mipmap/iv_coins_small"
android:paddingVertical="@dimen/dp_3"
android:paddingHorizontal="@dimen/dp_6"
android:background="@drawable/bg_store_vip_text_1"
android:drawablePadding="@dimen/dp_5"
android:text="+Extra 0"
android:textColor="#416767"
android:textSize="@dimen/sp_10" />
<ImageView
android:id="@+id/tv_hot"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_marginTop="@dimen/dp_4"
android:visibility="gone"
android:layout_marginEnd="@dimen/dp_4"
android:background="@mipmap/iv_store_vip_big_hot" />
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/tv_select"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_alignParentBottom="true"
android:background="@drawable/bg_coin_left"
android:gravity="center"
android:paddingHorizontal="@dimen/dp_5"
android:src="@mipmap/iv_yes"
android:visibility="invisible" />
</RelativeLayout>

View File

@ -1,6 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<com.veloria.now.shortapp.rewards.VSNotificationsDefault xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/stateLayout"
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@mipmap/playfair_selected_gradle">
@ -9,12 +8,17 @@
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.veloria.now.shortapp.rewards.VSNotificationsDefault
android:id="@+id/stateLayout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.viewpager2.widget.ViewPager2
android:id="@+id/viewPager_detail"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" />
</com.veloria.now.shortapp.rewards.VSNotificationsDefault>
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/iv_cover"
@ -25,16 +29,24 @@
<include
android:id="@+id/layout_lock"
layout="@layout/layout_ve_lock_episode"
/>
layout="@layout/layout_ve_lock_episode" />
<include
android:id="@+id/layout_recommend"
layout="@layout/layout_player_recommend"
/>
layout="@layout/layout_player_recommend" />
</androidx.constraintlayout.widget.ConstraintLayout>
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/iv_back"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_35"
android:padding="@dimen/dp_15"
android:src="@mipmap/right_dimens"
android:visibility="gone"
/>
</com.veloria.now.shortapp.rewards.VSNotificationsDefault>
</FrameLayout>

View File

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

View File

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

View File

@ -39,11 +39,42 @@
android:gravity="center_vertical"
android:text=""
android:textColor="#05CEA0"
app:drawableEndCompat="@mipmap/start_text"
app:layout_constraintBottom_toBottomOf="@+id/tv_coins_text"
app:layout_constraintStart_toEndOf="@+id/tv_coins_text"
app:layout_constraintTop_toTopOf="@+id/tv_coins_text" />
<androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="wrap_content"
android:layout_height="@dimen/dp_26"
android:layout_marginStart="@dimen/dp_15"
android:layout_marginTop="@dimen/dp_17"
android:layout_toRightOf="@+id/tv_coins"
android:background="@drawable/jru_categories_constants"
android:gravity="center"
android:orientation="horizontal"
android:paddingHorizontal="@dimen/dp_12">
<TextView
android:id="@+id/tv_unlock_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Unlock: "
android:textColor="@color/white" />
<TextView
android:id="@+id/tv_unlock"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:drawableEnd="@mipmap/iv_coins_small"
android:drawablePadding="@dimen/dp_3"
android:gravity="center"
android:text="0"
android:textColor="#05CEA0" />
</androidx.appcompat.widget.LinearLayoutCompat>
<androidx.core.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"

View File

@ -1,17 +1,24 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
<com.veloria.now.shortapp.rewards.VSNotificationsDefault xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/stateLayout"
android:background="@mipmap/playfair_selected_gradle">
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/cl_root"
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/text_home"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginTop="@dimen/dp_20"
android:layout_marginTop="@dimen/dp_60"
android:layout_marginEnd="8dp"
android:text="@string/home_addictive_shorts_await"
android:textAlignment="center"
@ -84,11 +91,6 @@
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/fl_search">
<com.veloria.now.shortapp.rewards.VSNotificationsDefault
android:id="@+id/stateLayout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.core.widget.NestedScrollView
android:id="@+id/scrollView"
android:layout_width="match_parent"
@ -365,7 +367,6 @@
</com.veloria.now.shortapp.rewards.VSNotificationsDefault>
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.core.widget.NestedScrollView>
</com.veloria.now.shortapp.rewards.VSNotificationsDefault>
</com.scwang.smart.refresh.layout.SmartRefreshLayout>
<androidx.constraintlayout.widget.ConstraintLayout
@ -411,5 +412,5 @@
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
</com.veloria.now.shortapp.rewards.VSNotificationsDefault>

View File

@ -46,6 +46,8 @@ android:orientation="vertical">
android:layout_height="wrap_content"
android:layout_below="@+id/tvEmptyTitle"
android:layout_centerHorizontal="true"
android:layout_marginHorizontal="@dimen/dp_15"
android:gravity="center"
android:layout_marginBottom="@dimen/dp_30"
android:text="Start exploring and add something!"
android:textColor="@color/white"

View File

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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 109 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 207 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.1 KiB

Some files were not shown because too many files have changed in this diff Show More