veloria three 6.25 commit

This commit is contained in:
yuyl 2025-06-25 09:42:04 +08:00
parent 28b91d8412
commit e1dd2d7497
123 changed files with 4804 additions and 2564 deletions

View File

@ -17,8 +17,8 @@ android {
applicationId = "com.veloria.now.shortapp" applicationId = "com.veloria.now.shortapp"
minSdk = 24 minSdk = 24
targetSdk = 34 targetSdk = 34
versionCode = 5 versionCode = 8
versionName = "1.0.4" versionName = "1.0.6"
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
} }
@ -105,7 +105,7 @@ dependencies {
// banner // banner
implementation(libs.banner) implementation(libs.banner)
implementation(libs.glide) implementation(libs.glide)
implementation("com.github.zhpanvip:bannerviewpager:3.5.12") implementation(libs.bannerviewpager)
//utils //utils
implementation(libs.greenrobot.eventbus) implementation(libs.greenrobot.eventbus)

View File

@ -318,3 +318,6 @@
-keep class com.google.android.gms.ads.** {public *;} -keep class com.google.android.gms.ads.** {public *;}
-keep class com.google.android.gms.appset.** { *; } -keep class com.google.android.gms.appset.** { *; }
-keep class com.google.android.gms.tasks.** { *; } -keep class com.google.android.gms.tasks.** { *; }
-keep class androidx.recyclerview.widget.**{*;}
-keep class androidx.viewpager2.widget.**{*;}

View File

@ -93,6 +93,7 @@ object JActivityAdapter {
const val HOME_USER_REFRESH = "HOME_USER_REFRESH" const val HOME_USER_REFRESH = "HOME_USER_REFRESH"
const val HOME_REFRESH_ME = "HOME_REFRESH_ME" const val HOME_REFRESH_ME = "HOME_REFRESH_ME"
const val HOME_LOGIN = "HOME_LOGIN" const val HOME_LOGIN = "HOME_LOGIN"
const val REWARD_LOGIN = "REWARD_LOGIN"
const val HOME_LEAVE_APP = "HOME_LEAVE_APP" const val HOME_LEAVE_APP = "HOME_LEAVE_APP"
const val HOME_ON_LINE = "HOME_ON_LINE" const val HOME_ON_LINE = "HOME_ON_LINE"
const val HOME_DDL_URL = "HOME_DDL_URL" const val HOME_DDL_URL = "HOME_DDL_URL"
@ -110,10 +111,14 @@ object JActivityAdapter {
const val ACCOUNT_DIALOG_TIME_VIP_SPLASH = "ACCOUNT_DIALOG_TIME_VIP_SPLASH" const val ACCOUNT_DIALOG_TIME_VIP_SPLASH = "ACCOUNT_DIALOG_TIME_VIP_SPLASH"
const val ONE_DAY_IN_MILLIS_VIP = 60 * 60 * 1000L 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 = const val ACCOUNT_DIALOG_TIME_NOTIFICATIONS =
"ACCOUNT_DIALOG_TIME_NOTIFICATIONS" "ACCOUNT_DIALOG_TIME_NOTIFICATIONS"
const val ONE_DAY_IN_MILLIS_DAY = 24 * 60 * 60 * 1000L const val ONE_DAY_IN_MILLIS_DAY = 24 * 60 * 60 * 1000L
const val ACCOUNT_FIREBASE_TOKEN_REFRESH = "ACCOUNT_FIREBASE_TOKEN_REFRESH" 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.os.Looper
import android.widget.Toast import android.widget.Toast
import androidx.annotation.RequiresApi import androidx.annotation.RequiresApi
import com.veloria.now.shortapp.civil.JActivityAdapter.ONE_DAY_IN_MILLIS_DAY
import com.veloria.now.shortapp.newsletter.XNBackground import com.veloria.now.shortapp.newsletter.XNBackground
import java.text.SimpleDateFormat import java.text.SimpleDateFormat
import java.time.Duration import java.time.Duration
@ -637,3 +638,10 @@ fun setShowNotifications(): Boolean {
return currentTime - lastTime > JActivityAdapter.ONE_DAY_IN_MILLIS_DAY 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,7 +474,7 @@ object RYAction {
fun saveOrder(payReq: VePayBean) { fun saveOrder(payReq: VePayBean) {
val list = getOrder() val list = getOrder()
if (!list.contains(payReq)) { if (!list.contains(payReq) && payReq.order_code.isNotEmpty()) {
list.add(payReq) list.add(payReq)
} }
val toJson = Gson().toJson(list) val toJson = Gson().toJson(list)

View File

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

View File

@ -30,6 +30,7 @@ import com.veloria.now.shortapp.texturedAsink.VeTranslationBean
import com.veloria.now.shortapp.texturedAsink.VeUploadNotificationBean import com.veloria.now.shortapp.texturedAsink.VeUploadNotificationBean
import com.veloria.now.shortapp.texturedAsink.VeUploadNotificationDataBean import com.veloria.now.shortapp.texturedAsink.VeUploadNotificationDataBean
import com.veloria.now.shortapp.texturedAsink.VeW2aSelfAttributionBean import com.veloria.now.shortapp.texturedAsink.VeW2aSelfAttributionBean
import com.veloria.now.shortapp.texturedAsink.VersionControlBean
import com.veloria.now.shortapp.texturedAsink.XAboutBean import com.veloria.now.shortapp.texturedAsink.XAboutBean
import retrofit2.Call import retrofit2.Call
import retrofit2.http.Body import retrofit2.http.Body
@ -112,7 +113,6 @@ interface BIFBase {
@GET("customer/info") @GET("customer/info")
fun getUserInfo(): Call<TStore<KFAFavoritesInterceptorBean>> fun getUserInfo(): Call<TStore<KFAFavoritesInterceptorBean>>
@POST("uploadHistorySeconds") @POST("uploadHistorySeconds")
fun getUploadHistorySeconds( fun getUploadHistorySeconds(
@Body uploadVideoHistoryBean: PURLockBean @Body uploadVideoHistoryBean: PURLockBean
@ -254,4 +254,7 @@ interface BIFBase {
@Field("title") title: String @Field("title") title: String
): Call<TStore<Any>> ): Call<TStore<Any>>
@GET("customer/versionControl")
fun getVersionControl(): Call<TStore<VersionControlBean>>
} }

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.DoLoginBean
import com.veloria.now.shortapp.texturedAsink.KFAFavoritesInterceptorBean import com.veloria.now.shortapp.texturedAsink.KFAFavoritesInterceptorBean
import com.veloria.now.shortapp.texturedAsink.LanguageBean 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.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.VeCustomerBuyRecordsBean
import com.veloria.now.shortapp.texturedAsink.VeCustomerOrderBean import com.veloria.now.shortapp.texturedAsink.VeCustomerOrderBean
import com.veloria.now.shortapp.texturedAsink.VeNoticeNumBean 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.VeRewardCoinsBean
import com.veloria.now.shortapp.texturedAsink.VeTranslationBean import com.veloria.now.shortapp.texturedAsink.VeTranslationBean
import com.veloria.now.shortapp.texturedAsink.VeUploadNotificationBean
import com.veloria.now.shortapp.texturedAsink.VeUploadNotificationDataBean
class ANotifications { class ANotifications {
@ -95,4 +103,60 @@ class ANotifications {
mainService.getData().response() 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

@ -19,6 +19,7 @@ import com.veloria.now.shortapp.texturedAsink.VePayResBean
import com.veloria.now.shortapp.texturedAsink.VeUploadNotificationBean import com.veloria.now.shortapp.texturedAsink.VeUploadNotificationBean
import com.veloria.now.shortapp.texturedAsink.VeUploadNotificationDataBean import com.veloria.now.shortapp.texturedAsink.VeUploadNotificationDataBean
import com.veloria.now.shortapp.texturedAsink.VeW2aSelfAttributionBean import com.veloria.now.shortapp.texturedAsink.VeW2aSelfAttributionBean
import com.veloria.now.shortapp.texturedAsink.VersionControlBean
class NMQRepositoryFfmpeg { class NMQRepositoryFfmpeg {
@ -194,4 +195,9 @@ class NMQRepositoryFfmpeg {
googlePaid(vePayBean) googlePaid(vePayBean)
} }
fun getVersionControl(
): LiveData<Result<TStore<VersionControlBean>>> =
handleData {
mainService.getVersionControl().response()
}
} }

View File

@ -8,7 +8,9 @@ import com.veloria.now.shortapp.texturedAsink.XAboutBean
import com.veloria.now.shortapp.highbits.QGift import com.veloria.now.shortapp.highbits.QGift
import com.veloria.now.shortapp.highbits.QGift.handleData import com.veloria.now.shortapp.highbits.QGift.handleData
import com.veloria.now.shortapp.highbits.QGift.response 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.KFAFavoritesInterceptorBean
import com.veloria.now.shortapp.texturedAsink.LoginDataBean
import com.veloria.now.shortapp.texturedAsink.VeBuyVideoBean import com.veloria.now.shortapp.texturedAsink.VeBuyVideoBean
import com.veloria.now.shortapp.texturedAsink.VeCreatePayOrderBean import com.veloria.now.shortapp.texturedAsink.VeCreatePayOrderBean
import com.veloria.now.shortapp.texturedAsink.VeCreatePayOrderReqBean import com.veloria.now.shortapp.texturedAsink.VeCreatePayOrderReqBean
@ -166,4 +168,17 @@ private var loginAdaptStr: String = "dlta"
.response() .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

@ -35,12 +35,12 @@ class VeRewardJsBridge(private val context: Context) {
val rootJson = parser.parse(string) as JsonObject val rootJson = parser.parse(string) as JsonObject
when (rootJson.get("type").asString) { when (rootJson.get("type").asString) {
"login" -> { "login" -> {
EventBus.getDefault().post(JActivityAdapter.HOME_LOGIN) EventBus.getDefault().post(JActivityAdapter.REWARD_LOGIN)
} }
// "open_notify" -> { "open_notify" -> {
// EventBus.getDefault().post(MsConstants.CONSTANTS_web_notification) EventBus.getDefault().post(JActivityAdapter.ACCOUNT_WEB_NOTIFICATION)
// } }
"watch_video" -> { "watch_video" -> {
val fromJson = Gson().fromJson(string, WatchVideoJsonBean::class.java) val fromJson = Gson().fromJson(string, WatchVideoJsonBean::class.java)

View File

@ -73,6 +73,18 @@ class BannerPlayerView(context: Context, attrs: AttributeSet?) :
} }
fun play() {
if (player != null){
player?.play()
}
}
fun pause() {
if (player != null){
player?.pause()
}
}
fun stop() { fun stop() {
if (player != null){ if (player != null){
player?.stop() player?.stop()

View File

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

View File

@ -1175,8 +1175,7 @@ class TOYPlayfairAutoView(context: Context, attrs: AttributeSet?) :
} }
tvCollectionNumController?.text =
"EP.".plus(episode.episode)
var y_widthv: Float = 508.0f var y_widthv: Float = 508.0f
if (y_widthv == 30.0f) { if (y_widthv == 30.0f) {
} }
@ -1190,9 +1189,12 @@ class TOYPlayfairAutoView(context: Context, attrs: AttributeSet?) :
TranslationHelper.getTranslation()?.veloria_all_episodes.toString(), TranslationHelper.getTranslation()?.veloria_all_episodes.toString(),
shortVideo.episode_total.toString() shortVideo.episode_total.toString()
) )
tvCollectionNumController?.text = TranslationHelper.replace(TranslationHelper.getTranslation()?.mireo_EP.toString(),episode.episode.toString())
} else { } else {
ivEpisodePlayerController?.text = ivEpisodePlayerController?.text =
"All ".plus(shortVideo.episode_total).plus(" Episodes") "All ".plus(shortVideo.episode_total).plus(" Episodes")
tvCollectionNumController?.text =
"EP.".plus(episode.episode)
} }
var splashB: MutableMap<String, Float> = mutableMapOf<String, Float>() var splashB: MutableMap<String, Float> = mutableMapOf<String, Float>()
splashB.put("dividor", 509.0f) splashB.put("dividor", 509.0f)

View File

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

View File

@ -325,6 +325,8 @@ class GColorsFragment : JItemServiceFragment<VpnInterceptorBinding, PWidthClient
isQualityRefresh = true isQualityRefresh = true
restoreRightKeyboardFirstProfileActivity()
} }
} }
@ -371,6 +373,17 @@ class GColorsFragment : JItemServiceFragment<VpnInterceptorBinding, PWidthClient
showComplete() showComplete()
binding.viewPagerRecommend.visibility = View.VISIBLE 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) viewModel.getExploreRecommends(currentPage, revolution)
} else { } else {
var listv: MutableMap<String, String> = mutableMapOf<String, String>() 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.scwang.smart.refresh.layout.listener.OnRefreshLoadMoreListener
import com.veloria.now.shortapp.R import com.veloria.now.shortapp.R
import com.veloria.now.shortapp.civil.JActivityAdapter 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.JActivityAdapter.VIDEO_SHORT_PLAY_ID
import com.veloria.now.shortapp.civil.NOFfmpeg import com.veloria.now.shortapp.civil.NOFfmpeg
import com.veloria.now.shortapp.civil.RYAction import com.veloria.now.shortapp.civil.RYAction
@ -544,7 +545,7 @@ class NOEditRegisterFragment : JItemServiceFragment<QfAutoBinding, VDLRenderers>
} }
binding.constraint.visibility = View.GONE binding.clRoot.visibility = View.GONE
var bolda: Int = 5532 var bolda: Int = 5532
if (bolda == 91) { if (bolda == 91) {
} }
@ -586,6 +587,7 @@ class NOEditRegisterFragment : JItemServiceFragment<QfAutoBinding, VDLRenderers>
}) })
return return
} }
showComplete()
EventBus.getDefault().register(this) EventBus.getDefault().register(this)
var bbfdebaffdk: Boolean = true var bbfdebaffdk: Boolean = true
if (!bbfdebaffdk) { if (!bbfdebaffdk) {
@ -594,7 +596,6 @@ class NOEditRegisterFragment : JItemServiceFragment<QfAutoBinding, VDLRenderers>
if (TranslationHelper.getTranslation() != null) { if (TranslationHelper.getTranslation() != null) {
binding.textHome.text = binding.textHome.text =
TranslationHelper.getTranslation()?.veloria_addictive_short_await TranslationHelper.getTranslation()?.veloria_addictive_short_await
binding.tvMenuBinge.text = TranslationHelper.getTranslation()?.veloria_worthy_picks
binding.tvMenuDrama.text = TranslationHelper.getTranslation()?.veloria_drama_champions binding.tvMenuDrama.text = TranslationHelper.getTranslation()?.veloria_drama_champions
binding.tvMenuCategories.text = binding.tvMenuCategories.text =
TranslationHelper.getTranslation()?.veloria_select_categories TranslationHelper.getTranslation()?.veloria_select_categories
@ -608,7 +609,6 @@ class NOEditRegisterFragment : JItemServiceFragment<QfAutoBinding, VDLRenderers>
} else { } else {
binding.textHome.text = getString(R.string.home_addictive_shorts_await) 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.tvMenuDrama.text = getString(R.string.drama_champions)
binding.tvMenuCategories.text = getString(R.string.select_categories) binding.tvMenuCategories.text = getString(R.string.select_categories)
binding.tvMenuCategories1.text = getString(R.string.select_categories) binding.tvMenuCategories1.text = getString(R.string.select_categories)
@ -627,7 +627,7 @@ class NOEditRegisterFragment : JItemServiceFragment<QfAutoBinding, VDLRenderers>
println(message6) println(message6)
binding.constraint.visibility = View.VISIBLE binding.clRoot.visibility = View.VISIBLE
var viewsL: Long = 2629L var viewsL: Long = 2629L
while (viewsL > 95L) { while (viewsL > 95L) {
break break
@ -1242,6 +1242,17 @@ class NOEditRegisterFragment : JItemServiceFragment<QfAutoBinding, VDLRenderers>
viewModel.userInfo.observe(this){ viewModel.userInfo.observe(this){
if (it?.data != null) { if (it?.data != null) {
RYAction.saveUserInfoBean(it.data) 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)
}
} }
} }
@ -1477,7 +1488,7 @@ class NOEditRegisterFragment : JItemServiceFragment<QfAutoBinding, VDLRenderers>
} }
println(infoO) println(infoO)
binding.tvMenuBinge.text = homeTotal.title
homeBingeAdapter?.submitList(homeTotal.list) homeBingeAdapter?.submitList(homeTotal.list)
} else { } else {
var register__9: Double = 7713.0 var register__9: Double = 7713.0
@ -1656,9 +1667,10 @@ class NOEditRegisterFragment : JItemServiceFragment<QfAutoBinding, VDLRenderers>
while (helpqb >= 138) { while (helpqb >= 138) {
break break
} }
val maxSize = appearanceBase.size - (appearanceBase.size % 3)
val dramaList = appearanceBase.take(maxSize)
homeDramaAdapter?.submitList(dramaList)
homeDramaAdapter?.submitList(appearanceBase)
} else { } else {
var loginm: String = "downmix" var loginm: String = "downmix"
while (loginm.length > 104) { while (loginm.length > 104) {

View File

@ -7,6 +7,17 @@ import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import androidx.fragment.app.activityViewModels import androidx.fragment.app.activityViewModels
import androidx.lifecycle.ViewModelProvider 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.Glide
import com.bumptech.glide.load.engine.DiskCacheStrategy import com.bumptech.glide.load.engine.DiskCacheStrategy
import com.bumptech.glide.load.resource.bitmap.CircleCrop import com.bumptech.glide.load.resource.bitmap.CircleCrop
@ -16,8 +27,10 @@ import com.scwang.smart.refresh.layout.api.RefreshLayout
import com.scwang.smart.refresh.layout.listener.OnRefreshLoadMoreListener import com.scwang.smart.refresh.layout.listener.OnRefreshLoadMoreListener
import com.veloria.now.shortapp.R import com.veloria.now.shortapp.R
import com.veloria.now.shortapp.civil.JActivityAdapter 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.RYAction
import com.veloria.now.shortapp.civil.TranslationHelper 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.setShowVIPSlash
import com.veloria.now.shortapp.civil.singleOnClick import com.veloria.now.shortapp.civil.singleOnClick
import com.veloria.now.shortapp.civil.timeToString import com.veloria.now.shortapp.civil.timeToString
@ -36,6 +49,10 @@ import com.veloria.now.shortapp.subtractionCroll.bidirectional.VeMyWalletActivit
import com.veloria.now.shortapp.subtractionCroll.bidirectional.VeRewardsActivity import com.veloria.now.shortapp.subtractionCroll.bidirectional.VeRewardsActivity
import com.veloria.now.shortapp.subtractionCroll.bidirectional.VeStoreActivity import com.veloria.now.shortapp.subtractionCroll.bidirectional.VeStoreActivity
import com.veloria.now.shortapp.subtractionCroll.bidirectional.coordinate.JService 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.EventBus
import org.greenrobot.eventbus.Subscribe import org.greenrobot.eventbus.Subscribe
import org.greenrobot.eventbus.ThreadMode import org.greenrobot.eventbus.ThreadMode
@ -215,7 +232,7 @@ class UColorsAvatarFragment : JItemServiceFragment<EvBodyloadHomeBinding, OMNorm
} }
setPushUI() setPushUI()
setShowVipSlashDialog()
} }
@ -239,7 +256,7 @@ class UColorsAvatarFragment : JItemServiceFragment<EvBodyloadHomeBinding, OMNorm
} else { } else {
binding.tvName.text = binding.tvName.text =
RYAction.getUserInfoBean()?.family_name.plus(RYAction.getUserInfoBean()?.giving_name) RYAction.getUserInfoBean()?.family_name
binding.tvLogin.text = TranslationHelper.getTranslation() binding.tvLogin.text = TranslationHelper.getTranslation()
?.let { TranslationHelper.getTranslation()?.veloria_log_out } ?: "Log out" ?.let { TranslationHelper.getTranslation()?.veloria_log_out } ?: "Log out"
@ -294,6 +311,7 @@ class UColorsAvatarFragment : JItemServiceFragment<EvBodyloadHomeBinding, OMNorm
binding.tvVipName.text = "Join VIP" binding.tvVipName.text = "Join VIP"
binding.tvVipDes.text = getString(R.string.pagerCategoies) binding.tvVipDes.text = getString(R.string.pagerCategoies)
} }
} }
} }
@ -401,6 +419,17 @@ class UColorsAvatarFragment : JItemServiceFragment<EvBodyloadHomeBinding, OMNorm
setPushUI() 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() hideLoading()
@ -415,21 +444,63 @@ class UColorsAvatarFragment : JItemServiceFragment<EvBodyloadHomeBinding, OMNorm
LoginManager.getInstance().logOut() LoginManager.getInstance().logOut()
RYAction.getMMKV() RYAction.getMMKV()
.putString(JActivityAdapter.ACCOUNT_TOKEN, it.data.token) .putString(JActivityAdapter.ACCOUNT_TOKEN, it.data.token)
EventBus.getDefault()
.post(JActivityAdapter.HOME_LEAVE_APP)
EventBus.getDefault() EventBus.getDefault()
.post(JActivityAdapter.HOME_ENTER_THE_APP) .post(JActivityAdapter.HOME_ENTER_THE_APP)
EventBus.getDefault() EventBus.getDefault()
.post(JActivityAdapter.HOME_USER_REFRESH) .post(JActivityAdapter.HOME_USER_REFRESH)
RYAction.getMMKV() // RYAction.getMMKV()
.putInt(JActivityAdapter.CONSTANTS_QUALITY, 540) // .putInt(JActivityAdapter.CONSTANTS_QUALITY, 540)
EventBus.getDefault()
.post(JActivityAdapter.CONSTANTS_QUALITY_REFRESH)
EventBus.getDefault() EventBus.getDefault()
.post(JActivityAdapter.HOME_NAVIGATE_TO_HOME) .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 { binding.tvUserAgreement.setOnClickListener {
var fragmentsP: Long = 2747L var fragmentsP: Long = 2747L
if (fragmentsP == 197L) { if (fragmentsP == 197L) {
@ -655,6 +726,8 @@ class UColorsAvatarFragment : JItemServiceFragment<EvBodyloadHomeBinding, OMNorm
val dialog = LogoutDialog(requireContext()).apply { val dialog = LogoutDialog(requireContext()).apply {
setOnLogoutClickListener(object : LogoutDialog.LogoutOnClick { setOnLogoutClickListener(object : LogoutDialog.LogoutOnClick {
override fun onLogoutAction() { override fun onLogoutAction() {
EventBus.getDefault()
.post(JActivityAdapter.HOME_LEAVE_APP)
viewModel.setLogout() viewModel.setLogout()
} }
}) })
@ -757,21 +830,37 @@ class UColorsAvatarFragment : JItemServiceFragment<EvBodyloadHomeBinding, OMNorm
showLoading() showLoading()
viewModel.getUserInfo() viewModel.getUserInfo()
setShowVipSlashDialog()
} }
} }
private var isVipSplash = false private var isVipSplash = false
override fun onResume() { fun setShowVipSlashDialog() {
super.onResume() // Fragment 可见
binding.root.postDelayed({ binding.root.postDelayed({
// if (!RYAction.isVipTo() && !isVipSplash) {
if (setShowVIPSlash() && !RYAction.isVipTo() && !isVipSplash) { if (setShowVIPSlash() && !RYAction.isVipTo() && !isVipSplash) {
setVipSlashDialog() initPayData()
viewModel.getPaySettingsV3(0, 0)
} }
}, 1000) }, 1000)
} }
private fun setVipSlashDialog() { var vipSplashDialog: VipSplashDialog? = null
val dialog = VipSplashDialog(requireContext()).apply {
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 : setOnVipSplashOnClickListener(object :
VipSplashDialog.SetVipSplashOnClick { VipSplashDialog.SetVipSplashOnClick {
override fun onVipSplash() { override fun onVipSplash() {
@ -781,27 +870,54 @@ class UColorsAvatarFragment : JItemServiceFragment<EvBodyloadHomeBinding, OMNorm
VeStoreActivity::class.java VeStoreActivity::class.java
) )
) )
RYAction.getMMKV().putLong(
JActivityAdapter.ACCOUNT_DIALOG_TIME_VIP_SPLASH,
System.currentTimeMillis()
)
isVipSplash = false
} }
override fun onVipDismiss() { override fun onVipOnAdapterBuy(vipBean: VePaySettingsBean.VipBean) {
RYAction.getMMKV().putLong( if (!isConnect) {
JActivityAdapter.ACCOUNT_DIALOG_TIME_VIP_SPLASH, if (TranslationHelper.getTranslation() != null) {
System.currentTimeMillis() 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
)
) )
isVipSplash = false
} }
}) })
} }
dialog.show() vipSplashDialog?.setOnDismissListener {
dialog.setVipSplashOnClick 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 isVipSplash = true
} }
override fun onDestroy() {
super.onDestroy()
payBeanReq = null
if (billingClientMe != null) {
billingClientMe?.endConnection()
billingClientMe = null
}
System.gc()
}
@Subscribe(threadMode = ThreadMode.MAIN) @Subscribe(threadMode = ThreadMode.MAIN)
fun onEvent(event: String) { fun onEvent(event: String) {
@ -811,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 return
} }
showComplete()
EventBus.getDefault().register(this) EventBus.getDefault().register(this)
var s_heightN: String = "uplink" 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.newsletter.TStore
import com.veloria.now.shortapp.texturedAsink.DoLoginBean import com.veloria.now.shortapp.texturedAsink.DoLoginBean
import com.veloria.now.shortapp.texturedAsink.KFAFavoritesInterceptorBean 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() { class OMNormalInstrumented : SStringsHelp() {
@ -35,4 +40,29 @@ class OMNormalInstrumented : SStringsHelp() {
repository.setLogout().observeForever { result -> repository.setLogout().observeForever { result ->
_logoutLiveData.value = result.getOrNull() _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

@ -33,16 +33,17 @@ import com.veloria.now.shortapp.civil.JActivityAdapter
import com.veloria.now.shortapp.civil.RYAction import com.veloria.now.shortapp.civil.RYAction
import com.veloria.now.shortapp.civil.TranslationHelper import com.veloria.now.shortapp.civil.TranslationHelper
import com.veloria.now.shortapp.civil.YFHome 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.civil.toast
import com.veloria.now.shortapp.databinding.LayoutVePlayerBuyDialogBinding import com.veloria.now.shortapp.databinding.LayoutVePlayerBuyDialogBinding
import com.veloria.now.shortapp.subtractionCroll.bidirectional.coordinate.VeStoreViewModel import com.veloria.now.shortapp.subtractionCroll.bidirectional.coordinate.VeStoreViewModel
import com.veloria.now.shortapp.subtractionCroll.modificationsPretch.VeBannerVipPayAdapter
import com.veloria.now.shortapp.subtractionCroll.modificationsPretch.VeStoreCoinAdapter import com.veloria.now.shortapp.subtractionCroll.modificationsPretch.VeStoreCoinAdapter
import com.veloria.now.shortapp.subtractionCroll.modificationsPretch.VeStoreCoinBigAdapter
import com.veloria.now.shortapp.subtractionCroll.modificationsPretch.VeStoreVipAdapter
import com.veloria.now.shortapp.texturedAsink.VeCreatePayOrderReqBean import com.veloria.now.shortapp.texturedAsink.VeCreatePayOrderReqBean
import com.veloria.now.shortapp.texturedAsink.VePayBean import com.veloria.now.shortapp.texturedAsink.VePayBean
import com.veloria.now.shortapp.texturedAsink.VePaySettingsBean import com.veloria.now.shortapp.texturedAsink.VePaySettingsBean
import com.veloria.now.shortapp.texturedAsink.XAboutBean import com.veloria.now.shortapp.texturedAsink.XAboutBean
import com.youth.banner.listener.OnPageChangeListener
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import org.greenrobot.eventbus.EventBus import org.greenrobot.eventbus.EventBus
@ -53,7 +54,8 @@ class PlayerBuyDialogFragment : BottomSheetDialogFragment() {
private val viewModel by lazy { ViewModelProvider(this)[VeStoreViewModel::class.java] } private val viewModel by lazy { ViewModelProvider(this)[VeStoreViewModel::class.java] }
private var coinAdapter: VeStoreCoinAdapter? = null private var coinAdapter: VeStoreCoinAdapter? = null
private var bannerAdapter: VeBannerVipPayAdapter? = null private var coinBigAdapter: VeStoreCoinBigAdapter? = null
private var vipAdapter: VeStoreVipAdapter? = null
private var promise_view_ad: Int? = -1 private var promise_view_ad: Int? = -1
private var connectNum = 0 private var connectNum = 0
private var short_play_id: Int? = 0 private var short_play_id: Int? = 0
@ -66,6 +68,7 @@ class PlayerBuyDialogFragment : BottomSheetDialogFragment() {
private var order_code = "" private var order_code = ""
private var vipData: VePaySettingsBean.VipBean? = null private var vipData: VePaySettingsBean.VipBean? = null
private var coinsData: VePaySettingsBean.CoinsBean? = null private var coinsData: VePaySettingsBean.CoinsBean? = null
private var coinsBigData: VePaySettingsBean.CoinsBean? = null
private var isBuy = false private var isBuy = false
private var purchaseData: Purchase? = null private var purchaseData: Purchase? = null
@ -91,7 +94,8 @@ class PlayerBuyDialogFragment : BottomSheetDialogFragment() {
if (TranslationHelper.getTranslation() != null) { if (TranslationHelper.getTranslation() != null) {
binding?.tvCoinsText?.text = TranslationHelper.getTranslation()?.veloria_your_coins 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) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
binding?.tvTips?.text = Html.fromHtml( binding?.tvTips?.text = Html.fromHtml(
TranslationHelper.getTranslation()?.veloria_store_tips TranslationHelper.getTranslation()?.veloria_store_tips
@ -104,18 +108,23 @@ class PlayerBuyDialogFragment : BottomSheetDialogFragment() {
?: getString(R.string.ve_store_tips_br) ?: getString(R.string.ve_store_tips_br)
) )
} }
} }
initLoading() initLoading()
binding?.tvCoins?.text = RYAction.getAllCoinTotal().toString() binding?.tvCoins?.text = RYAction.getAllCoinTotal().toString()
binding?.tvUnlock?.text = parcelable?.coins?.toString()
binding?.ivCloseDialog?.setOnClickListener { binding?.ivCloseDialog?.setOnClickListener {
dismiss() dismiss()
} }
vipAdapter = VeStoreVipAdapter()
binding?.recyclerVip?.layoutManager = LinearLayoutManager(requireContext())
binding?.recyclerVip?.adapter = vipAdapter
coinAdapter = VeStoreCoinAdapter() coinAdapter = VeStoreCoinAdapter()
binding?.recyclerCoin?.layoutManager = binding?.recyclerCoin?.layoutManager = GridLayoutManager(requireContext(), 3)
LinearLayoutManager(context, LinearLayoutManager.HORIZONTAL, false)
binding?.recyclerCoin?.adapter = coinAdapter binding?.recyclerCoin?.adapter = coinAdapter
binding?.recyclerCoin?.addItemDecoration(object : RecyclerView.ItemDecoration() { binding?.recyclerCoin?.addItemDecoration(object : RecyclerView.ItemDecoration() {
override fun getItemOffsets( override fun getItemOffsets(
@ -124,43 +133,70 @@ class PlayerBuyDialogFragment : BottomSheetDialogFragment() {
parent: RecyclerView, parent: RecyclerView,
state: RecyclerView.State state: RecyclerView.State
) { ) {
outRect.right = resources.getDimension(R.dimen.dp_10).toInt() outRect.left = resources.getDimension(R.dimen.dp_5).toInt()
outRect.right = resources.getDimension(R.dimen.dp_5).toInt()
outRect.bottom = resources.getDimension(R.dimen.dp_10).toInt() outRect.bottom = resources.getDimension(R.dimen.dp_10).toInt()
} }
}) })
coinBigAdapter = VeStoreCoinBigAdapter()
binding?.recyclerCoinBig?.layoutManager = GridLayoutManager(requireContext(), 2)
binding?.recyclerCoinBig?.adapter = coinBigAdapter
binding?.recyclerCoinBig?.addItemDecoration(object : RecyclerView.ItemDecoration() {
override fun getItemOffsets(
outRect: Rect,
view: View,
parent: RecyclerView,
state: RecyclerView.State
) {
outRect.left = resources.getDimension(R.dimen.dp_5).toInt()
outRect.right = resources.getDimension(R.dimen.dp_5).toInt()
outRect.bottom = resources.getDimension(R.dimen.dp_10).toInt()
}
})
showLoading() showLoading()
viewModel.getPaySettingsV3(0, 0) viewModel.getPaySettingsV3(0, 0)
coinAdapter?.setOnItemClickListener { adapter, view, position -> vipAdapter?.setOnItemClickListener { adapter, view, position ->
if (typeOnClick == 1) { if (typeOnClick != 1) {
if (bannerAdapter?.currentPosition!! >= 0) { coinAdapter?.currentPosition = -1
bannerAdapter?.notifyItemChanged(bannerAdapter?.currentPosition!!) coinAdapter?.notifyDataSetChanged()
coinBigAdapter?.currentPosition = -1
coinBigAdapter?.notifyDataSetChanged()
} }
bannerAdapter?.oldPosition = -1 typeOnClick = 1
bannerAdapter?.currentPosition = -1 vipAdapter?.currentPosition = position
vipAdapter?.notifyDataSetChanged()
setOnPayNowClick()
}
coinAdapter?.setOnItemClickListener { adapter, view, position ->
if (typeOnClick != 0) {
vipAdapter?.currentPosition = -1
vipAdapter?.notifyDataSetChanged()
coinBigAdapter?.currentPosition = -1
coinBigAdapter?.notifyDataSetChanged()
} }
typeOnClick = 0 typeOnClick = 0
coinAdapter?.currentPosition = position coinAdapter?.currentPosition = position
coinAdapter?.notifyDataSetChanged() coinAdapter?.notifyDataSetChanged()
coinsData = setOnPayNowClick()
coinAdapter!!.getItem(position) as VePaySettingsBean.CoinsBean
showLoading()
if (parcelable != null) {
short_play_id?.let {
VeCreatePayOrderReqBean(
coinsData?.id.toString(),
"google",
it,
parcelable!!.short_play_video_id
)
}?.let {
viewModel.setCreatePayOrder(
it
)
} }
coinBigAdapter?.setOnItemClickListener { adapter, view, position ->
if (typeOnClick != 2) {
vipAdapter?.currentPosition = -1
vipAdapter?.notifyDataSetChanged()
coinAdapter?.currentPosition = -1
coinAdapter?.notifyDataSetChanged()
} }
typeOnClick = 2
coinBigAdapter?.currentPosition = position
coinBigAdapter?.notifyDataSetChanged()
setOnPayNowClick()
} }
observeData() observeData()
@ -175,34 +211,45 @@ class PlayerBuyDialogFragment : BottomSheetDialogFragment() {
window?.setGravity(Gravity.BOTTOM) window?.setGravity(Gravity.BOTTOM)
val layoutParams = window?.attributes val layoutParams = window?.attributes
layoutParams?.width = WindowManager.LayoutParams.MATCH_PARENT layoutParams?.width = WindowManager.LayoutParams.MATCH_PARENT
layoutParams?.height = resources.getDimensionPixelSize(R.dimen.dp_600) layoutParams?.height = (requireActivity().resources.displayMetrics.heightPixels - requireActivity().resources.getDimension(R.dimen.dp_90)).toInt()
window?.attributes = layoutParams window?.attributes = layoutParams
return dialog return dialog
} }
private fun setBannerListener() {
binding?.bannerVip?.setOnBannerListener { data, position ->
if (typeOnClick == 0) {
coinAdapter?.currentPosition = -1
coinAdapter?.notifyDataSetChanged()
}
if (bannerAdapter?.currentPosition!! >= 0) {
bannerAdapter?.oldPosition = bannerAdapter?.currentPosition!!
}
typeOnClick = 1
bannerAdapter?.currentPosition = position
bannerAdapter?.notifyItemChanged(position)
if (bannerAdapter?.oldPosition!! >= 0) {
bannerAdapter?.notifyItemChanged(bannerAdapter?.oldPosition!!)
}
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))
}
return@singleOnClick
}
if (typeOnClick == 0) {
coinsData =
coinAdapter?.getItem(coinAdapter!!.currentPosition) as VePaySettingsBean.CoinsBean
} else if (typeOnClick == 1) {
vipData = vipData =
bannerAdapter?.getData(bannerAdapter!!.currentPosition) as VePaySettingsBean.VipBean vipAdapter?.getItem(vipAdapter!!.currentPosition) as VePaySettingsBean.VipBean
} else {
coinsBigData =
coinBigAdapter?.getItem(coinBigAdapter!!.currentPosition) as VePaySettingsBean.CoinsBean
}
showLoading() showLoading()
var idStr = ""
if (typeOnClick == 0) {
idStr = coinsData?.id.toString()
} else if (typeOnClick == 1) {
idStr = vipData?.id.toString()
} else {
idStr = coinsBigData?.id.toString()
}
if (parcelable != null) { if (parcelable != null) {
short_play_id?.let { short_play_id?.let {
VeCreatePayOrderReqBean( VeCreatePayOrderReqBean(
vipData?.id.toString(), idStr,
"google", "google",
it, it,
parcelable!!.short_play_video_id parcelable!!.short_play_video_id
@ -213,84 +260,48 @@ class PlayerBuyDialogFragment : BottomSheetDialogFragment() {
) )
} }
} }
} }
binding?.bannerVip?.addOnPageChangeListener(object : OnPageChangeListener {
override fun onPageScrolled(
position: Int,
positionOffset: Float,
positionOffsetPixels: Int
) {
}
override fun onPageSelected(position: Int) {
val data = bannerAdapter?.getData(position)
data?.let { setVipContentText(it) }
}
override fun onPageScrollStateChanged(state: Int) {
}
})
val itemData = bannerAdapter?.getData(0)
itemData?.let { setVipContentText(it) }
}
private fun setVipContentText(data: VePaySettingsBean.VipBean){
if (TranslationHelper.getTranslation() != null) {
var oneDate = ""
when (data?.vip_type_key) {
"week" -> {
oneDate = TranslationHelper.getTranslation()?.veloria_week.toString()
}
"month" -> {
oneDate = TranslationHelper.getTranslation()?.veloria_month.toString()
}
"quarter" -> {
oneDate = TranslationHelper.getTranslation()?.veloria_quarter.toString()
}
"year" -> {
oneDate = TranslationHelper.getTranslation()?.veloria_year.toString()
}
}
val vipContent1 = TranslationHelper.replaces(
TranslationHelper.getTranslation()?.veloria_unlimited_access_to.toString(),
oneDate,data.send_coin_ttl.toString()
)
binding?.tvBuyHint?.text =
Html.fromHtml(vipContent1, Html.FROM_HTML_MODE_LEGACY)
} else {
val vipContent1 = TranslationHelper.replaces(getString(R.string.unlimited_access_to_all_series_for_1_br),data?.vip_type_key.toString(),data.send_coin_ttl.toString())
binding?.tvBuyHint?.text =
Html.fromHtml(vipContent1, Html.FROM_HTML_MODE_LEGACY)
}
} }
fun observeData() { fun observeData() {
viewModel.PaySettingsV3.observe(this) { viewModel.PaySettingsV3.observe(this) {
if (it?.data != null) { if (it?.data != null) {
coinAdapter?.submitList(it.data.list_coins) if (it.data.list_sub_vip.isNotEmpty()) {
bannerAdapter = vipAdapter?.submitList(it.data.list_sub_vip)
VeBannerVipPayAdapter(it.data.list_sub_vip) binding?.recyclerVip?.visibility = View.VISIBLE
binding?.bannerVip?.setBannerGalleryEffect(
resources.getDimension(R.dimen.dp_5).toInt(),
resources.getDimension(R.dimen.dp_5).toInt()
)
binding?.bannerVip?.setAdapter(bannerAdapter)
setBannerListener()
it.data.list_sub_vip.let { it1 -> querySubVipProductDetails(it1) } it.data.list_sub_vip.let { it1 -> querySubVipProductDetails(it1) }
it.data.list_coins.let { it1 -> queryInAppCoinsProductDetails(it1) }
} else {
binding?.recyclerVip?.visibility = View.GONE
}
if (it.data.list_coins.isNotEmpty()) {
val small = it.data.list_coins.filter { coins -> coins.size == "small" }
val big = it.data.list_coins.filter { coins -> coins.size == "big" }
if (small.isNotEmpty()) {
coinAdapter?.submitList(small)
binding?.recyclerCoin?.visibility = View.VISIBLE
} else {
binding?.recyclerCoin?.visibility = View.GONE
}
if (big.isNotEmpty()) {
coinBigAdapter?.submitList(big)
binding?.recyclerCoinBig?.visibility = View.VISIBLE
} else {
binding?.recyclerCoinBig?.visibility = View.GONE
}
if (small?.isNotEmpty() == true) {
small?.let { it1 -> queryInAppCoinsProductDetails(it1, "small") }
}
if (big?.isNotEmpty() == true) {
big?.let { it1 -> queryInAppCoinsProductDetails(it1, "big") }
}
binding?.tvCoinTitle?.visibility = View.VISIBLE
} else {
binding?.recyclerCoin?.visibility = View.GONE
binding?.recyclerCoinBig?.visibility = View.GONE
binding?.tvCoinTitle?.visibility = View.GONE
}
} }
binding?.root?.postDelayed({ binding?.root?.postDelayed({
@ -303,8 +314,10 @@ class PlayerBuyDialogFragment : BottomSheetDialogFragment() {
order_code = it.data.order_code.toString() order_code = it.data.order_code.toString()
if (typeOnClick == 0) { if (typeOnClick == 0) {
coinsData?.android_template_id?.let { it1 -> getProduct(it1) } coinsData?.android_template_id?.let { it1 -> getProduct(it1) }
} else { } else if (typeOnClick == 1) {
vipData?.android_template_id?.let { it1 -> getProduct(it1) } vipData?.android_template_id?.let { it1 -> getProduct(it1) }
} else {
coinsBigData?.android_template_id?.let { it1 -> getProduct(it1) }
} }
} else { } else {
if (TranslationHelper.getTranslation() != null) { if (TranslationHelper.getTranslation() != null) {
@ -335,7 +348,6 @@ class PlayerBuyDialogFragment : BottomSheetDialogFragment() {
} }
} }
hideLoading() hideLoading()
} }
} }
@ -347,15 +359,20 @@ class PlayerBuyDialogFragment : BottomSheetDialogFragment() {
BillingClient.BillingResponseCode.OK -> { BillingClient.BillingResponseCode.OK -> {
for (purchase in purchases!!) { for (purchase in purchases!!) {
if (purchase.purchaseState == Purchase.PurchaseState.PURCHASED) { if (purchase.purchaseState == Purchase.PurchaseState.PURCHASED) {
if (typeOnClick == 0) { if (typeOnClick == 1) {
consumePurchase(purchase)
} else {
consumePurchaseSub(purchase) consumePurchaseSub(purchase)
} else {
consumePurchase(purchase)
} }
} }
} }
} }
BillingClient.BillingResponseCode.ITEM_ALREADY_OWNED -> {
queryAndConsumePurchases()
hideLoading()
}
BillingClient.BillingResponseCode.USER_CANCELED -> { BillingClient.BillingResponseCode.USER_CANCELED -> {
if (TranslationHelper.getTranslation() != null) { if (TranslationHelper.getTranslation() != null) {
toast(TranslationHelper.getTranslation()?.veloria_google_pay_canceled.toString()) toast(TranslationHelper.getTranslation()?.veloria_google_pay_canceled.toString())
@ -459,7 +476,7 @@ class PlayerBuyDialogFragment : BottomSheetDialogFragment() {
} }
binding?.root?.postDelayed({ binding?.root?.postDelayed({
bannerAdapter?.setDatas(updatedVipList) vipAdapter?.submitList(updatedVipList)
hideLoading() hideLoading()
}, 500) }, 500)
} else { } else {
@ -489,7 +506,8 @@ class PlayerBuyDialogFragment : BottomSheetDialogFragment() {
} }
private fun queryInAppCoinsProductDetails( private fun queryInAppCoinsProductDetails(
coinsList: List<VePaySettingsBean.CoinsBean> coinsList: List<VePaySettingsBean.CoinsBean>,
type: String
) { ) {
val productDetailsResponseListener = val productDetailsResponseListener =
ProductDetailsResponseListener { billingResult, productDetailsList -> ProductDetailsResponseListener { billingResult, productDetailsList ->
@ -508,7 +526,11 @@ class PlayerBuyDialogFragment : BottomSheetDialogFragment() {
} }
coinAdapter?.recyclerView?.postDelayed({ coinAdapter?.recyclerView?.postDelayed({
if (type == "small") {
coinAdapter?.submitList(updatedCoinsList) coinAdapter?.submitList(updatedCoinsList)
} else {
coinBigAdapter?.submitList(updatedCoinsList)
}
}, 500) }, 500)
} else { } else {
hideLoading() hideLoading()
@ -549,10 +571,10 @@ class PlayerBuyDialogFragment : BottomSheetDialogFragment() {
} }
} }
} }
val productType: String = if (typeOnClick == 0) { val productType: String = if (typeOnClick == 1) {
BillingClient.ProductType.INAPP
} else {
BillingClient.ProductType.SUBS BillingClient.ProductType.SUBS
} else {
BillingClient.ProductType.INAPP
} }
val inAppProductInfo = ArrayList<QueryProductDetailsParams.Product>() val inAppProductInfo = ArrayList<QueryProductDetailsParams.Product>()
@ -613,12 +635,12 @@ class PlayerBuyDialogFragment : BottomSheetDialogFragment() {
ConsumeResponseListener { billingResult, purchaseToken -> ConsumeResponseListener { billingResult, purchaseToken ->
val vePayBean = VePayBean( val vePayBean = VePayBean(
order_code, order_code,
if (typeOnClick == 0) coinsData?.id.toString() else vipData?.id.toString(), if (typeOnClick == 0) coinsData?.id.toString() else coinsBigData?.id.toString(),
YFHome.getPackageName(), YFHome.getPackageName(),
if (typeOnClick == 0) coinsData?.android_template_id.toString() else vipData?.android_template_id.toString(), if (typeOnClick == 0) coinsData?.android_template_id.toString() else coinsBigData?.android_template_id.toString(),
purchaseToken, purchaseToken,
purchaseData?.orderId.toString(), purchaseData?.orderId.toString(),
if (typeOnClick == 0) coinsData?.price.toString() else vipData?.price.toString() if (typeOnClick == 0) coinsData?.price.toString() else coinsBigData?.price.toString()
) )
payBeanReq = vePayBean payBeanReq = vePayBean
if (billingResult.responseCode == BillingClient.BillingResponseCode.OK) { if (billingResult.responseCode == BillingClient.BillingResponseCode.OK) {
@ -652,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) { override fun onDismiss(dialog: DialogInterface) {
payBeanReq = null 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

@ -25,6 +25,7 @@ class VipQualityDialog(context: Context, revolutionsBean: VeRevolutionsBean) : D
interface SetQualityBackOnClick { interface SetQualityBackOnClick {
fun qualityBackOnClick(quality: Int) fun qualityBackOnClick(quality: Int)
fun loginOnClick()
fun showActivateOnClick() fun showActivateOnClick()
} }
@ -98,13 +99,8 @@ class VipQualityDialog(context: Context, revolutionsBean: VeRevolutionsBean) : D
tvQuality720.setTextColor(Color.parseColor("#8B8B8B")) tvQuality720.setTextColor(Color.parseColor("#8B8B8B"))
tvQuality720.setBackgroundResource(R.mipmap.iv_quality_bg_off) tvQuality720.setBackgroundResource(R.mipmap.iv_quality_bg_off)
tvQuality720.setOnClickListener { tvQuality720.setOnClickListener {
context.startActivity( // EventBus.getDefault().post(JActivityAdapter.VIDEO_PAUSE_PLAY)
Intent( setQualityBackOnClick?.loginOnClick()
context,
PSVHomeSearchActivity::class.java
)
)
EventBus.getDefault().post(JActivityAdapter.HOME_LOGIN)
dismiss() dismiss()
} }
} }

View File

@ -6,21 +6,29 @@ import android.content.Context
import android.graphics.Color import android.graphics.Color
import android.graphics.drawable.ColorDrawable import android.graphics.drawable.ColorDrawable
import android.view.Gravity import android.view.Gravity
import android.view.View
import android.view.Window import android.view.Window
import android.view.WindowManager import android.view.WindowManager
import android.widget.TextView
import androidx.appcompat.widget.AppCompatImageView import androidx.appcompat.widget.AppCompatImageView
import androidx.appcompat.widget.AppCompatTextView 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.R
import com.veloria.now.shortapp.civil.TranslationHelper import com.veloria.now.shortapp.civil.TranslationHelper
import com.veloria.now.shortapp.civil.singleOnClick 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") @SuppressLint("MissingInflatedId")
class VipSplashDialog(context: Context) : Dialog(context) { class VipSplashDialog(context: Context,vipBeans: List<VePaySettingsBean.VipBean>) : Dialog(context) {
var setVipSplashOnClick: SetVipSplashOnClick? = null var setVipSplashOnClick: SetVipSplashOnClick? = null
private var vipAdapter: VeVipSplashAdapter? = null
interface SetVipSplashOnClick { interface SetVipSplashOnClick {
fun onVipSplash() fun onVipSplash()
fun onVipDismiss() fun onVipOnAdapterBuy(vipBean: VePaySettingsBean.VipBean)
} }
init { init {
@ -33,43 +41,59 @@ class VipSplashDialog(context: Context) : Dialog(context) {
(context.resources.displayMetrics.widthPixels * 0.8).toInt(), (context.resources.displayMetrics.widthPixels * 0.8).toInt(),
WindowManager.LayoutParams.WRAP_CONTENT WindowManager.LayoutParams.WRAP_CONTENT
) )
setGravity(Gravity.CENTER) setGravity(Gravity.TOP or Gravity.CENTER_HORIZONTAL)
} }
setCancelable(true) setCancelable(true)
val ivClose = findViewById<AppCompatImageView>(R.id.iv_close) val ivClose = findViewById<AppCompatImageView>(R.id.iv_close)
val tvToStore = findViewById<AppCompatTextView>(R.id.tv_to_store)
val tvContent = findViewById<AppCompatTextView>(R.id.tv_content) val tvContent = findViewById<AppCompatTextView>(R.id.tv_content)
val tvTitle = findViewById<AppCompatTextView>(R.id.tv_title) val tvTitle = findViewById<AppCompatTextView>(R.id.tv_title)
val recyclerView = findViewById<RecyclerView>(R.id.recyclerView)
if (TranslationHelper.getTranslation() != null) { if (TranslationHelper.getTranslation() != null) {
tvTitle.text = TranslationHelper.getTranslation()?.veloria_vip_splash_title tvTitle.text = TranslationHelper.getTranslation()?.veloria_vip_splash_title
tvContent.text = TranslationHelper.getTranslation()?.veloria_vip_splash_content tvContent.text = TranslationHelper.getTranslation()?.veloria_vip_splash_content
tvToStore.text = TranslationHelper.getTranslation()?.veloria_vip_splash_onclick
} else { } else {
tvTitle.text = "Unlock VIP Privileges!" tvTitle.text = "Unlock VIP Privileges!"
tvContent.text = "Enjoy ad-free streaming, early access, and exclusive content!" tvContent.text = "Enjoy ad-free streaming, early access, and exclusive content!"
tvToStore.text = "Unlock VIP Benefits"
} }
recyclerView.layoutManager = LinearLayoutManager(context)
vipAdapter = VeVipSplashAdapter()
recyclerView.adapter = vipAdapter
vipAdapter?.submitList(vipBeans)
ivClose.setOnClickListener { ivClose.setOnClickListener {
singleOnClick { singleOnClick {
setVipSplashOnClick?.onVipDismiss()
dismiss() dismiss()
} }
} }
tvToStore.setOnClickListener {
vipAdapter?.setOnItemClickListener { adapter, view, position ->
singleOnClick { singleOnClick {
setVipSplashOnClick?.onVipSplash()
dismiss() val data = adapter.getItem(position)
vipAdapter?.currentPosition = position
vipAdapter?.notifyDataSetChanged()
if (data != null) {
setVipSplashOnClick?.onVipOnAdapterBuy(data)
} }
} }
} }
}
fun setOnVipSplashOnClickListener(listener: SetVipSplashOnClick) { fun setOnVipSplashOnClickListener(listener: SetVipSplashOnClick) {
this.setVipSplashOnClick = listener 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>() 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()) { if (!NetworkUtils.isConnected()) {
var langR: Float = 4492.0f var langR: Float = 4492.0f
@ -213,7 +233,7 @@ class HLanguageActivity : AIXTextActivity<MqInstrumentedBinding, YCFddebcdbeeffc
break break
} }
showComplete()
binding.clOne.visibility = View.VISIBLE binding.clOne.visibility = View.VISIBLE
var displaye: Double = 49.0 var displaye: Double = 49.0
if (displaye > 179.0) { if (displaye > 179.0) {
@ -223,15 +243,6 @@ class HLanguageActivity : AIXTextActivity<MqInstrumentedBinding, YCFddebcdbeeffc
binding.stateLayout.visibility = View.GONE 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() searchTrendAdapter = VXAgreement()
var buttonu: Int = 3389 var buttonu: Int = 3389
if (buttonu < 189) { 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 { binding.ivDelete.setOnClickListener {
var selectZ: Float = 4767.0f var selectZ: Float = 4767.0f
while (selectZ < 108.0f) { while (selectZ < 108.0f) {

View File

@ -1,6 +1,7 @@
package com.veloria.now.shortapp.subtractionCroll.bidirectional package com.veloria.now.shortapp.subtractionCroll.bidirectional
import android.annotation.SuppressLint import android.annotation.SuppressLint
import android.content.Intent
import android.net.Uri import android.net.Uri
import android.os.Bundle import android.os.Bundle
import android.view.View import android.view.View
@ -10,14 +11,9 @@ import androidx.activity.viewModels
import androidx.appcompat.widget.AppCompatImageView import androidx.appcompat.widget.AppCompatImageView
import androidx.appcompat.widget.AppCompatTextView import androidx.appcompat.widget.AppCompatTextView
import androidx.fragment.app.DialogFragment.STYLE_NO_FRAME import androidx.fragment.app.DialogFragment.STYLE_NO_FRAME
import androidx.lifecycle.lifecycleScope
import androidx.media3.common.MediaItem import androidx.media3.common.MediaItem
import androidx.media3.common.PlaybackException
import androidx.media3.common.Player
import androidx.media3.datasource.DataSource import androidx.media3.datasource.DataSource
import androidx.media3.datasource.DefaultDataSourceFactory 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.hls.HlsMediaSource
import androidx.media3.exoplayer.source.MediaSource import androidx.media3.exoplayer.source.MediaSource
import androidx.media3.exoplayer.source.ProgressiveMediaSource import androidx.media3.exoplayer.source.ProgressiveMediaSource
@ -25,9 +21,16 @@ import androidx.recyclerview.widget.RecyclerView
import androidx.viewpager2.widget.ViewPager2 import androidx.viewpager2.widget.ViewPager2
import com.blankj.utilcode.util.NetworkUtils import com.blankj.utilcode.util.NetworkUtils
import com.bumptech.glide.Glide 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.google.gson.Gson
import com.veloria.now.shortapp.R 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
import com.veloria.now.shortapp.civil.JActivityAdapter.CONSTANTS_QUALITY_REFRESH 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.PLAYER_DETAILS_CAN_PLAY
@ -41,10 +44,12 @@ import com.veloria.now.shortapp.civil.singleOnClick
import com.veloria.now.shortapp.civil.toast import com.veloria.now.shortapp.civil.toast
import com.veloria.now.shortapp.databinding.JDetailsLayoutBinding import com.veloria.now.shortapp.databinding.JDetailsLayoutBinding
import com.veloria.now.shortapp.newsletter.AIXTextActivity 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.TOYPlayfairAutoView
import com.veloria.now.shortapp.rewards.VSNotificationsDefault import com.veloria.now.shortapp.rewards.VSNotificationsDefault
import com.veloria.now.shortapp.subtractionCroll.avcintraRelock.DSPUnitVideoFragment import com.veloria.now.shortapp.subtractionCroll.avcintraRelock.DSPUnitVideoFragment
import com.veloria.now.shortapp.subtractionCroll.avcintraRelock.FYStatusAppveloria 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.PlayerBuyDialogFragment
import com.veloria.now.shortapp.subtractionCroll.avcintraRelock.VipActivateDialog import com.veloria.now.shortapp.subtractionCroll.avcintraRelock.VipActivateDialog
import com.veloria.now.shortapp.subtractionCroll.avcintraRelock.VipQualityDialog import com.veloria.now.shortapp.subtractionCroll.avcintraRelock.VipQualityDialog
@ -52,6 +57,7 @@ import com.veloria.now.shortapp.subtractionCroll.bidirectional.coordinate.UKBott
import com.veloria.now.shortapp.subtractionCroll.modificationsPretch.SUJustSmart import com.veloria.now.shortapp.subtractionCroll.modificationsPretch.SUJustSmart
import com.veloria.now.shortapp.subtractionCroll.modificationsPretch.VeBannerRecommendAdapter import com.veloria.now.shortapp.subtractionCroll.modificationsPretch.VeBannerRecommendAdapter
import com.veloria.now.shortapp.texturedAsink.LServiceBean 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.NBECenterBean
import com.veloria.now.shortapp.texturedAsink.PURLockBean import com.veloria.now.shortapp.texturedAsink.PURLockBean
import com.veloria.now.shortapp.texturedAsink.VeDetailsRecommendBean import com.veloria.now.shortapp.texturedAsink.VeDetailsRecommendBean
@ -59,10 +65,10 @@ import com.veloria.now.shortapp.texturedAsink.VePaySettingsBean
import com.veloria.now.shortapp.texturedAsink.VeRevolutionsBean import com.veloria.now.shortapp.texturedAsink.VeRevolutionsBean
import com.veloria.now.shortapp.texturedAsink.XAboutBean import com.veloria.now.shortapp.texturedAsink.XAboutBean
import com.zhpan.bannerview.constants.PageStyle.MULTI_PAGE_OVERLAP import com.zhpan.bannerview.constants.PageStyle.MULTI_PAGE_OVERLAP
import kotlinx.coroutines.launch
import org.greenrobot.eventbus.EventBus import org.greenrobot.eventbus.EventBus
import org.greenrobot.eventbus.Subscribe import org.greenrobot.eventbus.Subscribe
import org.greenrobot.eventbus.ThreadMode import org.greenrobot.eventbus.ThreadMode
import org.json.JSONObject
import kotlin.math.max import kotlin.math.max
import kotlin.math.min import kotlin.math.min
@ -242,6 +248,9 @@ class MQVAutoWidthActivity :
} }
manifestAnyBuildGravityView()?.pause() manifestAnyBuildGravityView()?.pause()
if (binding.layoutRecommend.root.visibility == View.VISIBLE) {
bannerAdapter?.getCurrentPlayerView()?.pause()
}
}, 300) }, 300)
} }
@ -467,7 +476,7 @@ class MQVAutoWidthActivity :
setPlayerBuyDialog(it) setPlayerBuyDialog(it)
} }
binding.root.postDelayed({ binding.root.postDelayed({
manifestAnyBuildGravityView()?.play() manifestAnyBuildGravityView()?.stop()
}, 500) }, 500)
} }
if (JActivityAdapter.CONSTANTS_QUALITY == event) { if (JActivityAdapter.CONSTANTS_QUALITY == event) {
@ -523,8 +532,6 @@ class MQVAutoWidthActivity :
if (h_viewf < 96) { if (h_viewf < 96) {
} }
EventBus.getDefault().register(this)
var watchingB: Float = 8505.0f var watchingB: Float = 8505.0f
if (watchingB > 46.0f) { if (watchingB > 46.0f) {
} }
@ -554,12 +561,12 @@ class MQVAutoWidthActivity :
break break
} }
binding.ivBack.setOnClickListener { finish() }
if (!NetworkUtils.isConnected()) { if (!NetworkUtils.isConnected()) {
var lightf: Long = 4156L var lightf: Long = 4156L
binding.ivBack.visibility = View.VISIBLE
showErrorData(object : VSNotificationsDefault.OnRetryListener { showErrorData(object : VSNotificationsDefault.OnRetryListener {
public fun spanLoveWhatBinge(): Boolean { public fun spanLoveWhatBinge(): Boolean {
@ -591,6 +598,7 @@ class MQVAutoWidthActivity :
initView() initView()
} }
}) })
return return
} else { } else {
var playh: MutableList<Double> = mutableListOf<Double>() var playh: MutableList<Double> = mutableListOf<Double>()
@ -599,17 +607,29 @@ class MQVAutoWidthActivity :
playh.add(941.0) playh.add(941.0)
if (playh.size > 20) { if (playh.size > 20) {
} }
binding.ivBack.visibility = View.GONE
showComplete() showComplete()
var marqueeo: Float = 1740.0f var marqueeo: Float = 1740.0f
if (marqueeo < 162.0f) { if (marqueeo < 162.0f) {
} }
// 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) viewModel.getVideoPlayDetails(shortPlayId, 0, activityId, revolution)
} }
EventBus.getDefault().register(this)
onBackPressedDispatcher.addCallback(this, object : OnBackPressedCallback(true) { onBackPressedDispatcher.addCallback(this, object : OnBackPressedCallback(true) {
override fun handleOnBackPressed() { override fun handleOnBackPressed() {
@ -932,6 +952,10 @@ class MQVAutoWidthActivity :
manifestAnyBuildGravityView()?.play() manifestAnyBuildGravityView()?.play()
if (binding.layoutRecommend.root.visibility == View.VISIBLE) {
bannerAdapter?.getCurrentPlayerView()?.play()
}
} else { } else {
var listso: String = "agate" var listso: String = "agate"
@ -1371,9 +1395,10 @@ class MQVAutoWidthActivity :
manifestAnyBuildGravityView()?.release() manifestAnyBuildGravityView()?.release()
if (::bannerAdapter.isInitialized) {
bannerAdapter.getCurrentPlayerView()?.stop() bannerAdapter?.getCurrentPlayerView()?.stop()
bannerAdapter.getCurrentPlayerView()?.release() bannerAdapter?.getCurrentPlayerView()?.release()
}
} }
recommendAdapter?.shortVideo = null recommendAdapter?.shortVideo = null
@ -1618,7 +1643,7 @@ class MQVAutoWidthActivity :
} }
println(startA) println(startA)
binding.ivBack.visibility = View.GONE
showComplete() showComplete()
var rights: Long = 9660L var rights: Long = 9660L
if (rights > 16L) { if (rights > 16L) {
@ -1670,7 +1695,7 @@ class MQVAutoWidthActivity :
break break
} }
binding.ivBack.visibility = View.VISIBLE
showEmptyData() showEmptyData()
} }
} }
@ -1913,15 +1938,23 @@ class MQVAutoWidthActivity :
it?.data?.let { it?.data?.let {
RYAction.saveUserInfoBean(it) RYAction.saveUserInfoBean(it)
if (needRestart) { 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 = binding.layoutLock.tvBalance.text =
"Balance: ".plus(RYAction.getUserInfoBean()?.coin_left_total.toString()) "Balance: ".plus(RYAction.getUserInfoBean()?.coin_left_total.toString())
.plus(" Coins | ") .plus(" Coins | ")
.plus(RYAction.getUserInfoBean()?.send_coin_left_total.toString()) .plus(RYAction.getUserInfoBean()?.send_coin_left_total.toString())
.plus(" Bonus") .plus(" Bonus")
if (RYAction.isVipTo()) {
revolution = "1080"
RYAction.getMMKV().putInt(JActivityAdapter.CONSTANTS_QUALITY, 1080)
} }
detailRefresh() detailRefresh()
} }
} }
@ -1979,6 +2012,89 @@ class MQVAutoWidthActivity :
} }
} }
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)
}
}
} }
@ -2008,6 +2124,14 @@ class MQVAutoWidthActivity :
} }
private fun showGoldShortageDialog(episode1: XAboutBean.Episode) { 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() val allCoin = RYAction.getAllCoinTotal()
if (allCoin >= episode1.coins) { if (allCoin >= episode1.coins) {
if (currentPosition > 0) { if (currentPosition > 0) {
@ -2090,6 +2214,13 @@ class MQVAutoWidthActivity :
@SuppressLint("UnsafeOptInUsageError") @SuppressLint("UnsafeOptInUsageError")
private fun setDetailsRecommendation(data: VeDetailsRecommendBean) { private fun setDetailsRecommendation(data: VeDetailsRecommendBean) {
if (data.list.isNotEmpty()) { 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 PLAYER_DETAILS_CAN_PLAY = false
binding.layoutRecommend.root.visibility = View.VISIBLE binding.layoutRecommend.root.visibility = View.VISIBLE
bannerAdapter = bannerAdapter =
@ -2137,7 +2268,8 @@ class MQVAutoWidthActivity :
}) })
binding.layoutRecommend.tvWatchNow.setOnClickListener { binding.layoutRecommend.tvWatchNow.setOnClickListener {
val data = binding.layoutRecommend.bannerRecommend.getData()[bannerPosition] as VeDetailsRecommendBean.ItemDaraBean val data =
binding.layoutRecommend.bannerRecommend.getData()[bannerPosition] as VeDetailsRecommendBean.ItemDaraBean
watchNow(data, data?.short_play_id) watchNow(data, data?.short_play_id)
} }
val data = data.list[0] val data = data.list[0]
@ -2196,6 +2328,10 @@ class MQVAutoWidthActivity :
setVipActivateDialog() setVipActivateDialog()
} }
override fun loginOnClick() {
setLogin()
}
}) })
} }
dialog.show() dialog.show()
@ -2207,4 +2343,32 @@ class MQVAutoWidthActivity :
dialog.show() 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

@ -38,7 +38,9 @@ import com.veloria.now.shortapp.civil.JActivityAdapter.VIDEO_SHORT_PLAY_ID
import com.veloria.now.shortapp.civil.RYAction import com.veloria.now.shortapp.civil.RYAction
import com.veloria.now.shortapp.civil.TranslationHelper import com.veloria.now.shortapp.civil.TranslationHelper
import com.veloria.now.shortapp.civil.VeNotificationHelper 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.setShowNotifications
import com.veloria.now.shortapp.civil.shouldVersionControl
import com.veloria.now.shortapp.civil.singleOnClick import com.veloria.now.shortapp.civil.singleOnClick
import com.veloria.now.shortapp.civil.toast import com.veloria.now.shortapp.civil.toast
import com.veloria.now.shortapp.databinding.JsDramaFragmentBinding import com.veloria.now.shortapp.databinding.JsDramaFragmentBinding
@ -50,10 +52,12 @@ import com.veloria.now.shortapp.subtractionCroll.adminSourceid.UColorsAvatarFrag
import com.veloria.now.shortapp.subtractionCroll.adminSourceid.YYLoginHistoryFragment import com.veloria.now.shortapp.subtractionCroll.adminSourceid.YYLoginHistoryFragment
import com.veloria.now.shortapp.subtractionCroll.avcintraRelock.LoginDialog import com.veloria.now.shortapp.subtractionCroll.avcintraRelock.LoginDialog
import com.veloria.now.shortapp.subtractionCroll.avcintraRelock.NotificationsDialog 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.subtractionCroll.bidirectional.coordinate.JService
import com.veloria.now.shortapp.texturedAsink.LoginDataBean import com.veloria.now.shortapp.texturedAsink.LoginDataBean
import com.veloria.now.shortapp.texturedAsink.VeHomeWatchBean import com.veloria.now.shortapp.texturedAsink.VeHomeWatchBean
import com.veloria.now.shortapp.texturedAsink.VeUploadNotificationBean import com.veloria.now.shortapp.texturedAsink.VeUploadNotificationBean
import com.veloria.now.shortapp.texturedAsink.VersionControlBean
import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.flow.debounce import kotlinx.coroutines.flow.debounce
@ -217,7 +221,7 @@ class PSVHomeSearchActivity : AIXTextActivity<JsDramaFragmentBinding, JService>(
it.data?.token?.let { it1 -> it.data?.token?.let { it1 ->
RYAction.saveToken(it1) RYAction.saveToken(it1)
EventBus.getDefault().post(JActivityAdapter.REFRESH_HOME) EventBus.getDefault().post(JActivityAdapter.HOME_REFRESH_ME)
} }
} }
} }
@ -249,12 +253,6 @@ class PSVHomeSearchActivity : AIXTextActivity<JsDramaFragmentBinding, JService>(
EventBus.getDefault() EventBus.getDefault()
.post(JActivityAdapter.HOME_USER_REFRESH) .post(JActivityAdapter.HOME_USER_REFRESH)
val revolution =
RYAction.getMMKV().getInt(JActivityAdapter.CONSTANTS_QUALITY, 540).toString()
if (revolution == "540") {
RYAction.getMMKV()
.putInt(JActivityAdapter.CONSTANTS_QUALITY, 720)
}
} }
} }
@ -272,6 +270,23 @@ class PSVHomeSearchActivity : AIXTextActivity<JsDramaFragmentBinding, JService>(
} }
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( private val items = listOf(
@ -573,7 +588,12 @@ 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) GoogleApiAvailability.getInstance().makeGooglePlayServicesAvailable(this)
.addOnCompleteListener { .addOnCompleteListener {
if (it.isSuccessful) { if (it.isSuccessful) {
@ -598,6 +618,8 @@ class PSVHomeSearchActivity : AIXTextActivity<JsDramaFragmentBinding, JService>(
} }
}, 3000) }, 3000)
viewModel.getVersionControl()
} }
private fun stayPrimaryRecommendSearchToast( private fun stayPrimaryRecommendSearchToast(
@ -808,6 +830,15 @@ class PSVHomeSearchActivity : AIXTextActivity<JsDramaFragmentBinding, JService>(
if (JActivityAdapter.ACCOUNT_FIREBASE_TOKEN_REFRESH == event) { if (JActivityAdapter.ACCOUNT_FIREBASE_TOKEN_REFRESH == event) {
getFirebaseMessaging() 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) { private fun restartApplication(context: Context) {
@ -1078,6 +1109,9 @@ class PSVHomeSearchActivity : AIXTextActivity<JsDramaFragmentBinding, JService>(
) { ) {
getFirebaseMessaging() getFirebaseMessaging()
viewModel.setOpenNotify() viewModel.setOpenNotify()
viewModel.setUploadNoticeStatus(
VeUploadNotificationBean("1")
)
} else { } else {
if (setShowNotifications()) { if (setShowNotifications()) {
setNotifications() setNotifications()
@ -1087,6 +1121,9 @@ class PSVHomeSearchActivity : AIXTextActivity<JsDramaFragmentBinding, JService>(
if (VeNotificationHelper.isNotification(this)) { if (VeNotificationHelper.isNotification(this)) {
getFirebaseMessaging() getFirebaseMessaging()
viewModel.setOpenNotify() viewModel.setOpenNotify()
viewModel.setUploadNoticeStatus(
VeUploadNotificationBean("1")
)
} else { } else {
if (setShowNotifications()) { if (setShowNotifications()) {
setNotifications() setNotifications()
@ -1129,6 +1166,9 @@ class PSVHomeSearchActivity : AIXTextActivity<JsDramaFragmentBinding, JService>(
if (isGranted) { if (isGranted) {
getFirebaseMessaging() getFirebaseMessaging()
viewModel.setOpenNotify() viewModel.setOpenNotify()
viewModel.setUploadNoticeStatus(
VeUploadNotificationBean("1")
)
} else { } else {
VeNotificationHelper.setNotification(this) VeNotificationHelper.setNotification(this)
} }

View File

@ -2,24 +2,28 @@ package com.veloria.now.shortapp.subtractionCroll.bidirectional
import android.annotation.SuppressLint import android.annotation.SuppressLint
import android.graphics.Bitmap import android.graphics.Bitmap
import android.view.View
import android.webkit.WebChromeClient import android.webkit.WebChromeClient
import android.webkit.WebResourceError import android.webkit.WebResourceError
import android.webkit.WebResourceRequest import android.webkit.WebResourceRequest
import android.webkit.WebSettings import android.webkit.WebSettings
import android.webkit.WebView import android.webkit.WebView
import android.webkit.WebViewClient import android.webkit.WebViewClient
import com.blankj.utilcode.util.NetworkUtils
import com.veloria.now.shortapp.R import com.veloria.now.shortapp.R
import com.veloria.now.shortapp.civil.JActivityAdapter 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.TranslationHelper
import com.veloria.now.shortapp.civil.toast import com.veloria.now.shortapp.civil.toast
import com.veloria.now.shortapp.databinding.IPlaceBinding import com.veloria.now.shortapp.databinding.IPlaceBinding
import com.veloria.now.shortapp.newsletter.AIXTextActivity import com.veloria.now.shortapp.newsletter.AIXTextActivity
import com.veloria.now.shortapp.rewards.VSNotificationsDefault
import com.veloria.now.shortapp.subtractionCroll.bidirectional.coordinate.LXMService import com.veloria.now.shortapp.subtractionCroll.bidirectional.coordinate.LXMService
import kotlin.math.max import kotlin.math.max
import kotlin.math.min import kotlin.math.min
class RBZLatestDeteleActivity : AIXTextActivity<IPlaceBinding, LXMService>() { class RBZLatestDeteleActivity : AIXTextActivity<IPlaceBinding, LXMService>(), NOFfmpeg {
@Volatile @Volatile
var centerTrendPaint_min: Double = 5869.0 var centerTrendPaint_min: Double = 5869.0
@ -168,7 +172,6 @@ class RBZLatestDeteleActivity : AIXTextActivity<IPlaceBinding, LXMService>() {
println(messageL) println(messageL)
when (urlString) { when (urlString) {
JActivityAdapter.WEB_VIEW_USER_AGREEMENT -> { JActivityAdapter.WEB_VIEW_USER_AGREEMENT -> {
var modelE: Float = 6376.0f var modelE: Float = 6376.0f
@ -206,6 +209,20 @@ class RBZLatestDeteleActivity : AIXTextActivity<IPlaceBinding, LXMService>() {
binding.tvTitle.text = "Veloria" 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() showLoading()
var helpF: MutableMap<String, Long> = mutableMapOf<String, Long>() var helpF: MutableMap<String, Long> = mutableMapOf<String, Long>()
helpF.put("texturedspenc", 528L) helpF.put("texturedspenc", 528L)
@ -502,4 +519,7 @@ class RBZLatestDeteleActivity : AIXTextActivity<IPlaceBinding, LXMService>() {
} }
override fun getViewBinding() = IPlaceBinding.inflate(layoutInflater) 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.blankj.utilcode.util.PermissionUtils
import com.veloria.now.shortapp.R import com.veloria.now.shortapp.R
import com.veloria.now.shortapp.civil.JActivityAdapter 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.TranslationHelper
import com.veloria.now.shortapp.civil.singleOnClick import com.veloria.now.shortapp.civil.singleOnClick
import com.veloria.now.shortapp.civil.toast import com.veloria.now.shortapp.civil.toast
import com.veloria.now.shortapp.databinding.ActivityVeFeedbackBinding import com.veloria.now.shortapp.databinding.ActivityVeFeedbackBinding
import com.veloria.now.shortapp.newsletter.AIXTextActivity 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.FeedbackJsBridge
import com.veloria.now.shortapp.rewards.VSNotificationsDefault
import com.veloria.now.shortapp.subtractionCroll.bidirectional.coordinate.VeFeedbackViewModel import com.veloria.now.shortapp.subtractionCroll.bidirectional.coordinate.VeFeedbackViewModel
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
@ -44,7 +45,8 @@ import org.greenrobot.eventbus.ThreadMode
import java.io.ByteArrayOutputStream import java.io.ByteArrayOutputStream
import java.io.InputStream import java.io.InputStream
class VeFeedbackActivity : AIXTextActivity<ActivityVeFeedbackBinding, VeFeedbackViewModel>() { class VeFeedbackActivity : AIXTextActivity<ActivityVeFeedbackBinding, VeFeedbackViewModel>(),
NOFfmpeg {
val viewModel: VeFeedbackViewModel by viewModels() val viewModel: VeFeedbackViewModel by viewModels()
@ -138,7 +140,8 @@ class VeFeedbackActivity : AIXTextActivity<ActivityVeFeedbackBinding, VeFeedback
binding.webFeedback.webViewClient = object : WebViewClient() { binding.webFeedback.webViewClient = object : WebViewClient() {
override fun onPageStarted(view: WebView?, url: String?, favicon: Bitmap?) { override fun onPageStarted(view: WebView?, url: String?, favicon: Bitmap?) {
super.onPageStarted(view, url, favicon) super.onPageStarted(view, url, favicon)
showComplete()
binding.webFeedback.visibility = View.VISIBLE
} }
override fun onPageFinished(view: WebView?, url: String?) { override fun onPageFinished(view: WebView?, url: String?) {
@ -152,6 +155,14 @@ class VeFeedbackActivity : AIXTextActivity<ActivityVeFeedbackBinding, VeFeedback
error: WebResourceError? error: WebResourceError?
) { ) {
super.onReceivedError(view, request, error) 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) { if (TranslationHelper.getTranslation() != null) {
toast(TranslationHelper.getTranslation()?.veloria_network.toString()) toast(TranslationHelper.getTranslation()?.veloria_network.toString())
} else { } else {
@ -303,4 +314,8 @@ class VeFeedbackActivity : AIXTextActivity<ActivityVeFeedbackBinding, VeFeedback
EventBus.getDefault().unregister(this) 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.os.Build
import android.util.Base64 import android.util.Base64
import android.util.Log import android.util.Log
import android.view.View
import android.webkit.JsPromptResult import android.webkit.JsPromptResult
import android.webkit.JsResult import android.webkit.JsResult
import android.webkit.WebChromeClient import android.webkit.WebChromeClient
@ -27,6 +28,7 @@ import androidx.lifecycle.lifecycleScope
import com.blankj.utilcode.util.PermissionUtils import com.blankj.utilcode.util.PermissionUtils
import com.veloria.now.shortapp.R import com.veloria.now.shortapp.R
import com.veloria.now.shortapp.civil.JActivityAdapter 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.RYAction
import com.veloria.now.shortapp.civil.TranslationHelper import com.veloria.now.shortapp.civil.TranslationHelper
import com.veloria.now.shortapp.civil.toast 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.BaseEventBusBean
import com.veloria.now.shortapp.other.FeedbackJsBridge import com.veloria.now.shortapp.other.FeedbackJsBridge
import com.veloria.now.shortapp.other.FeedbackJsBridgeDetail import com.veloria.now.shortapp.other.FeedbackJsBridgeDetail
import com.veloria.now.shortapp.rewards.VSNotificationsDefault
import com.veloria.now.shortapp.subtractionCroll.bidirectional.coordinate.VeFeedbackViewModel import com.veloria.now.shortapp.subtractionCroll.bidirectional.coordinate.VeFeedbackViewModel
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
@ -48,7 +51,8 @@ import org.greenrobot.eventbus.ThreadMode
import java.io.ByteArrayOutputStream import java.io.ByteArrayOutputStream
import java.io.InputStream import java.io.InputStream
class VeFeedbackDetailActivity : AIXTextActivity<ActivityVeFeedbackDetailBinding, VeFeedbackViewModel>() { class VeFeedbackDetailActivity : AIXTextActivity<ActivityVeFeedbackDetailBinding, VeFeedbackViewModel>() ,
NOFfmpeg {
val viewModel: VeFeedbackViewModel by viewModels() val viewModel: VeFeedbackViewModel by viewModels()
@ -91,7 +95,8 @@ class VeFeedbackDetailActivity : AIXTextActivity<ActivityVeFeedbackDetailBinding
binding.webFeedbackDetail.webViewClient = object : WebViewClient() { binding.webFeedbackDetail.webViewClient = object : WebViewClient() {
override fun onPageStarted(view: WebView?, url: String?, favicon: Bitmap?) { override fun onPageStarted(view: WebView?, url: String?, favicon: Bitmap?) {
super.onPageStarted(view, url, favicon) super.onPageStarted(view, url, favicon)
showComplete()
binding.webFeedbackDetail.visibility = View.VISIBLE
} }
override fun onPageFinished(view: WebView?, url: String?) { override fun onPageFinished(view: WebView?, url: String?) {
@ -106,6 +111,14 @@ class VeFeedbackDetailActivity : AIXTextActivity<ActivityVeFeedbackDetailBinding
error: WebResourceError? error: WebResourceError?
) { ) {
super.onReceivedError(view, request, error) 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){ if (TranslationHelper.getTranslation() != null){
toast(TranslationHelper.getTranslation()?.veloria_network.toString()) toast(TranslationHelper.getTranslation()?.veloria_network.toString())
}else { }else {
@ -251,4 +264,8 @@ class VeFeedbackDetailActivity : AIXTextActivity<ActivityVeFeedbackDetailBinding
EventBus.getDefault().unregister(this) 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.content.Intent
import android.graphics.Bitmap import android.graphics.Bitmap
import android.graphics.Color import android.graphics.Color
import android.view.View
import android.webkit.WebChromeClient import android.webkit.WebChromeClient
import android.webkit.WebResourceError import android.webkit.WebResourceError
import android.webkit.WebResourceRequest import android.webkit.WebResourceRequest
@ -13,6 +14,7 @@ import android.webkit.WebViewClient
import androidx.activity.viewModels import androidx.activity.viewModels
import com.veloria.now.shortapp.R import com.veloria.now.shortapp.R
import com.veloria.now.shortapp.civil.JActivityAdapter 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.RYAction
import com.veloria.now.shortapp.civil.TranslationHelper import com.veloria.now.shortapp.civil.TranslationHelper
import com.veloria.now.shortapp.civil.toast 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.newsletter.XNBackground
import com.veloria.now.shortapp.other.BaseEventBusBean import com.veloria.now.shortapp.other.BaseEventBusBean
import com.veloria.now.shortapp.other.FeedbackJsBridge import com.veloria.now.shortapp.other.FeedbackJsBridge
import com.veloria.now.shortapp.rewards.VSNotificationsDefault
import com.veloria.now.shortapp.subtractionCroll.bidirectional.coordinate.VeFeedbackViewModel import com.veloria.now.shortapp.subtractionCroll.bidirectional.coordinate.VeFeedbackViewModel
import org.greenrobot.eventbus.EventBus import org.greenrobot.eventbus.EventBus
import org.greenrobot.eventbus.Subscribe import org.greenrobot.eventbus.Subscribe
import org.greenrobot.eventbus.ThreadMode import org.greenrobot.eventbus.ThreadMode
class VeFeedbackListActivity : class VeFeedbackListActivity :
AIXTextActivity<ActivityVeFeedbackListBinding, VeFeedbackViewModel>() { AIXTextActivity<ActivityVeFeedbackListBinding, VeFeedbackViewModel>() , NOFfmpeg {
val viewModel: VeFeedbackViewModel by viewModels() val viewModel: VeFeedbackViewModel by viewModels()
@ -67,7 +70,8 @@ class VeFeedbackListActivity :
binding.webFeedbackList.webViewClient = object : WebViewClient() { binding.webFeedbackList.webViewClient = object : WebViewClient() {
override fun onPageStarted(view: WebView?, url: String?, favicon: Bitmap?) { override fun onPageStarted(view: WebView?, url: String?, favicon: Bitmap?) {
super.onPageStarted(view, url, favicon) super.onPageStarted(view, url, favicon)
showComplete()
binding.webFeedbackList.visibility = View.VISIBLE
} }
override fun onPageFinished(view: WebView?, url: String?) { override fun onPageFinished(view: WebView?, url: String?) {
@ -82,6 +86,14 @@ class VeFeedbackListActivity :
error: WebResourceError? error: WebResourceError?
) { ) {
super.onReceivedError(view, request, error) 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){ if (TranslationHelper.getTranslation() != null){
toast(TranslationHelper.getTranslation()?.veloria_network.toString()) toast(TranslationHelper.getTranslation()?.veloria_network.toString())
}else { }else {
@ -123,4 +135,8 @@ class VeFeedbackListActivity :
EventBus.getDefault().unregister(this) 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.core.os.LocaleListCompat
import androidx.lifecycle.lifecycleScope import androidx.lifecycle.lifecycleScope
import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.LinearLayoutManager
import com.blankj.utilcode.util.NetworkUtils
import com.veloria.now.shortapp.civil.JActivityAdapter import com.veloria.now.shortapp.civil.JActivityAdapter
import com.veloria.now.shortapp.civil.NOFfmpeg import com.veloria.now.shortapp.civil.NOFfmpeg
import com.veloria.now.shortapp.civil.RYAction import com.veloria.now.shortapp.civil.RYAction
@ -33,16 +34,28 @@ class VeLanguageActivity : AIXTextActivity<ActivityVeLanguageBinding, LanguageVi
override fun getViewBinding() = ActivityVeLanguageBinding.inflate(layoutInflater) override fun getViewBinding() = ActivityVeLanguageBinding.inflate(layoutInflater)
override fun initView() { 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 = val layoutManager =
LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false) LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false)
binding.recyclerView.layoutManager = layoutManager binding.recyclerView.layoutManager = layoutManager
mAdapter = LanguageAdapter() mAdapter = LanguageAdapter()
binding.recyclerView.adapter = mAdapter binding.recyclerView.adapter = mAdapter
if (TranslationHelper.getTranslation() != null){
binding.tvTitle.text = TranslationHelper.getTranslation()?.veloria_language
}
showLoading() showLoading()
viewModel.getLanguages() viewModel.getLanguages()
@ -61,6 +74,7 @@ class VeLanguageActivity : AIXTextActivity<ActivityVeLanguageBinding, LanguageVi
viewModel.getTranslates(langKey) viewModel.getTranslates(langKey)
} }
} }
} }
override fun observeData() { override fun observeData() {
@ -85,8 +99,8 @@ class VeLanguageActivity : AIXTextActivity<ActivityVeLanguageBinding, LanguageVi
viewModel.translatesDataBean.observe(this) { viewModel.translatesDataBean.observe(this) {
if (it?.data != null) { if (it?.data != null) {
RYAction.getMMKV() // RYAction.getMMKV()
.putString(JActivityAdapter.HOME_MAIN_VIDEO_INFO, "") // .putString(JActivityAdapter.HOME_MAIN_VIDEO_INFO, "")
lifecycleScope.launch { lifecycleScope.launch {
withContext(Dispatchers.IO) { withContext(Dispatchers.IO) {
TranslationHelper.saveTranslation(it.data.translates) TranslationHelper.saveTranslation(it.data.translates)

View File

@ -7,21 +7,24 @@ import android.widget.TextView
import androidx.activity.viewModels import androidx.activity.viewModels
import androidx.core.content.ContextCompat import androidx.core.content.ContextCompat
import androidx.viewpager2.widget.ViewPager2 import androidx.viewpager2.widget.ViewPager2
import com.blankj.utilcode.util.NetworkUtils
import com.google.android.material.tabs.TabLayout import com.google.android.material.tabs.TabLayout
import com.google.android.material.tabs.TabLayoutMediator import com.google.android.material.tabs.TabLayoutMediator
import com.scwang.smart.refresh.layout.api.RefreshLayout import com.scwang.smart.refresh.layout.api.RefreshLayout
import com.scwang.smart.refresh.layout.listener.OnRefreshLoadMoreListener import com.scwang.smart.refresh.layout.listener.OnRefreshLoadMoreListener
import com.veloria.now.shortapp.R 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.RYAction
import com.veloria.now.shortapp.civil.TranslationHelper import com.veloria.now.shortapp.civil.TranslationHelper
import com.veloria.now.shortapp.databinding.ActivityVeMyWalletBinding import com.veloria.now.shortapp.databinding.ActivityVeMyWalletBinding
import com.veloria.now.shortapp.newsletter.AIXTextActivity import com.veloria.now.shortapp.newsletter.AIXTextActivity
import com.veloria.now.shortapp.other.NestedScrollHelper 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.bidirectional.coordinate.VeMyWalletViewModel
import com.veloria.now.shortapp.subtractionCroll.modificationsPretch.VeMyWalletViewPagerAdapter import com.veloria.now.shortapp.subtractionCroll.modificationsPretch.VeMyWalletViewPagerAdapter
class VeMyWalletActivity : AIXTextActivity<ActivityVeMyWalletBinding, VeMyWalletViewModel>(), class VeMyWalletActivity : AIXTextActivity<ActivityVeMyWalletBinding, VeMyWalletViewModel>(),
OnRefreshLoadMoreListener { OnRefreshLoadMoreListener , NOFfmpeg {
val viewModel: VeMyWalletViewModel by viewModels() val viewModel: VeMyWalletViewModel by viewModels()
@ -41,9 +44,20 @@ class VeMyWalletActivity : AIXTextActivity<ActivityVeMyWalletBinding, VeMyWallet
binding.tvRechargeText.text = TranslationHelper.getTranslation()?.veloria_recharge binding.tvRechargeText.text = TranslationHelper.getTranslation()?.veloria_recharge
binding.tvDonateText.text = TranslationHelper.getTranslation()?.veloria_bonus 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 = binding.tvTotal.text =
RYAction.getAllCoinTotal().toString() RYAction.getAllCoinTotal().toString()
binding.tvRecharge.text = binding.tvRecharge.text =
@ -175,5 +189,9 @@ class VeMyWalletActivity : AIXTextActivity<ActivityVeMyWalletBinding, VeMyWallet
viewModel.setLoadMoreAction(binding.viewPager.currentItem) 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 package com.veloria.now.shortapp.subtractionCroll.bidirectional
import android.Manifest
import android.annotation.SuppressLint import android.annotation.SuppressLint
import android.content.Intent
import android.content.pm.PackageManager
import android.graphics.Bitmap import android.graphics.Bitmap
import android.graphics.Color 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.View
import android.view.ViewGroup import android.view.ViewGroup
import android.webkit.WebChromeClient import android.webkit.WebChromeClient
@ -11,14 +18,30 @@ import android.webkit.WebResourceRequest
import android.webkit.WebSettings import android.webkit.WebSettings
import android.webkit.WebView import android.webkit.WebView
import android.webkit.WebViewClient import android.webkit.WebViewClient
import androidx.activity.result.contract.ActivityResultContracts
import androidx.activity.viewModels import androidx.activity.viewModels
import androidx.core.content.ContextCompat
import com.blankj.utilcode.util.NetworkUtils 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.api.RefreshLayout
import com.scwang.smart.refresh.layout.listener.OnRefreshLoadMoreListener import com.scwang.smart.refresh.layout.listener.OnRefreshLoadMoreListener
import com.veloria.now.shortapp.R import com.veloria.now.shortapp.R
import com.veloria.now.shortapp.civil.JActivityAdapter import com.veloria.now.shortapp.civil.JActivityAdapter
import com.veloria.now.shortapp.civil.NOFfmpeg 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.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.singleOnClick
import com.veloria.now.shortapp.civil.toast import com.veloria.now.shortapp.civil.toast
import com.veloria.now.shortapp.databinding.ActivityVeRewardsBinding import com.veloria.now.shortapp.databinding.ActivityVeRewardsBinding
@ -27,10 +50,18 @@ import com.veloria.now.shortapp.newsletter.XNBackground
import com.veloria.now.shortapp.other.FeedbackJsBridge import com.veloria.now.shortapp.other.FeedbackJsBridge
import com.veloria.now.shortapp.other.VeRewardJsBridge import com.veloria.now.shortapp.other.VeRewardJsBridge
import com.veloria.now.shortapp.rewards.VSNotificationsDefault 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.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.EventBus
import org.greenrobot.eventbus.Subscribe import org.greenrobot.eventbus.Subscribe
import org.greenrobot.eventbus.ThreadMode import org.greenrobot.eventbus.ThreadMode
import org.json.JSONObject
import java.util.concurrent.Executors
import java.util.concurrent.ScheduledExecutorService
class VeRewardsActivity : AIXTextActivity<ActivityVeRewardsBinding, VeFeedbackViewModel>(), class VeRewardsActivity : AIXTextActivity<ActivityVeRewardsBinding, VeFeedbackViewModel>(),
OnRefreshLoadMoreListener, NOFfmpeg { OnRefreshLoadMoreListener, NOFfmpeg {
@ -53,6 +84,7 @@ class VeRewardsActivity : AIXTextActivity<ActivityVeRewardsBinding, VeFeedbackVi
setWebView() setWebView()
loadingData() loadingData()
initLogin()
} }
fun loadingData() { fun loadingData() {
@ -80,6 +112,31 @@ class VeRewardsActivity : AIXTextActivity<ActivityVeRewardsBinding, VeFeedbackVi
override fun observeData() { 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) {
}
}
} }
@ -140,6 +197,12 @@ class VeRewardsActivity : AIXTextActivity<ActivityVeRewardsBinding, VeFeedbackVi
if (JActivityAdapter.HOME_LOGIN == event) { if (JActivityAdapter.HOME_LOGIN == event) {
finish() finish()
} }
if (JActivityAdapter.ACCOUNT_WEB_NOTIFICATION == event) {
askNotificationPermission()
}
if (JActivityAdapter.REWARD_LOGIN == event) {
setLogin()
}
} }
override fun onDestroy() { override fun onDestroy() {
@ -161,4 +224,177 @@ class VeRewardsActivity : AIXTextActivity<ActivityVeRewardsBinding, VeFeedbackVi
return binding.stateLayout 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

@ -7,6 +7,7 @@ import android.view.View
import androidx.activity.viewModels import androidx.activity.viewModels
import androidx.lifecycle.lifecycleScope import androidx.lifecycle.lifecycleScope
import androidx.recyclerview.widget.GridLayoutManager import androidx.recyclerview.widget.GridLayoutManager
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
import com.android.billingclient.api.AcknowledgePurchaseParams import com.android.billingclient.api.AcknowledgePurchaseParams
import com.android.billingclient.api.BillingClient import com.android.billingclient.api.BillingClient
@ -20,7 +21,9 @@ import com.android.billingclient.api.ProductDetailsResponseListener
import com.android.billingclient.api.Purchase import com.android.billingclient.api.Purchase
import com.android.billingclient.api.PurchasesUpdatedListener import com.android.billingclient.api.PurchasesUpdatedListener
import com.android.billingclient.api.QueryProductDetailsParams import com.android.billingclient.api.QueryProductDetailsParams
import com.blankj.utilcode.util.NetworkUtils
import com.veloria.now.shortapp.R 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.RYAction
import com.veloria.now.shortapp.civil.TranslationHelper import com.veloria.now.shortapp.civil.TranslationHelper
import com.veloria.now.shortapp.civil.YFHome import com.veloria.now.shortapp.civil.YFHome
@ -28,27 +31,35 @@ import com.veloria.now.shortapp.civil.singleOnClick
import com.veloria.now.shortapp.civil.toast import com.veloria.now.shortapp.civil.toast
import com.veloria.now.shortapp.databinding.ActivityVeStoreBinding import com.veloria.now.shortapp.databinding.ActivityVeStoreBinding
import com.veloria.now.shortapp.newsletter.AIXTextActivity 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.bidirectional.coordinate.VeStoreViewModel
import com.veloria.now.shortapp.subtractionCroll.modificationsPretch.VeBannerVipPayAdapter
import com.veloria.now.shortapp.subtractionCroll.modificationsPretch.VeStoreCoinAdapter import com.veloria.now.shortapp.subtractionCroll.modificationsPretch.VeStoreCoinAdapter
import com.veloria.now.shortapp.subtractionCroll.modificationsPretch.VeStoreCoinBigAdapter
import com.veloria.now.shortapp.subtractionCroll.modificationsPretch.VeStoreVipAdapter
import com.veloria.now.shortapp.texturedAsink.VeCreatePayOrderReqBean import com.veloria.now.shortapp.texturedAsink.VeCreatePayOrderReqBean
import com.veloria.now.shortapp.texturedAsink.VePayBean import com.veloria.now.shortapp.texturedAsink.VePayBean
import com.veloria.now.shortapp.texturedAsink.VePaySettingsBean import com.veloria.now.shortapp.texturedAsink.VePaySettingsBean
import com.youth.banner.listener.OnPageChangeListener 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 kotlinx.coroutines.launch
class VeStoreActivity : AIXTextActivity<ActivityVeStoreBinding, VeStoreViewModel>() { class VeStoreActivity : AIXTextActivity<ActivityVeStoreBinding, VeStoreViewModel>() , NOFfmpeg {
val viewModel: VeStoreViewModel by viewModels() val viewModel: VeStoreViewModel by viewModels()
override fun getViewBinding() = ActivityVeStoreBinding.inflate(layoutInflater) override fun getViewBinding() = ActivityVeStoreBinding.inflate(layoutInflater)
private var coinAdapter: VeStoreCoinAdapter? = null private var coinAdapter: VeStoreCoinAdapter? = null
private var bannerAdapter: VeBannerVipPayAdapter? = null private var coinBigAdapter: VeStoreCoinBigAdapter? = null
private var vipAdapter: VeStoreVipAdapter? = null
private var typeOnClick = 0 private var typeOnClick = 0
private var isConnect = false private var isConnect = false
private var vipData: VePaySettingsBean.VipBean? = null private var vipData: VePaySettingsBean.VipBean? = null
private var coinsData: VePaySettingsBean.CoinsBean? = null private var coinsData: VePaySettingsBean.CoinsBean? = null
private var coinsBigData: VePaySettingsBean.CoinsBean? = null
private var payBeanReq: VePayBean? = null private var payBeanReq: VePayBean? = null
private var billingClientData: BillingClient? = null private var billingClientData: BillingClient? = null
@ -57,21 +68,14 @@ class VeStoreActivity : AIXTextActivity<ActivityVeStoreBinding, VeStoreViewModel
private var isBuy = false private var isBuy = false
private var purchaseData: Purchase? = null private var purchaseData: Purchase? = null
private val scope = CoroutineScope(Dispatchers.Main)
override fun initView() { override fun initView() {
if (TranslationHelper.getTranslation() != null) { if (TranslationHelper.getTranslation() != null) {
binding.tvTitle1.text = TranslationHelper.getTranslation()?.veloria_limited_time_offer binding.tvTitle.text = TranslationHelper.getTranslation()?.veloria_store
binding.tvTitle2.text = TranslationHelper.getTranslation()?.veloria_recharge_unlock_more binding.tvCoinTitle.text = TranslationHelper.getTranslation()?.veloria_coin_buy_title
binding.tvTab2.text = TranslationHelper.getTranslation()?.veloria_coins binding.tvRestore.text = TranslationHelper.getTranslation()?.veloria_restore
binding.tvVipText.text = TranslationHelper.getTranslation()?.veloria_membership_benefits
binding.tvVipContent1.text = TranslationHelper.getTranslation()?.veloria_store_no_ads
binding.tvVipContent2.text =
TranslationHelper.getTranslation()?.veloria_store_donate_coins
binding.tvVipContent3.text =
TranslationHelper.getTranslation()?.veloria_store_auto_renew
binding.tvMoreCoin.text = TranslationHelper.getTranslation()?.veloria_get_more_coins
binding.tvCoinText.text = TranslationHelper.getTranslation()?.veloria_your_coins
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
binding.tvTips.text = Html.fromHtml( binding.tvTips.text = Html.fromHtml(
TranslationHelper.getTranslation()?.veloria_store_tips TranslationHelper.getTranslation()?.veloria_store_tips
@ -85,27 +89,27 @@ class VeStoreActivity : AIXTextActivity<ActivityVeStoreBinding, VeStoreViewModel
) )
} }
} }
showLoading()
binding.tvCoin.text = RYAction.getAllCoinTotal().toString()
binding.ivBack.setOnClickListener { binding.ivBack.setOnClickListener {
finish() finish()
} }
binding.tvTab1.setOnClickListener {
binding.tvTab1.setBackgroundResource(R.mipmap.iv_store_tab_left)
binding.tvTab2.setBackgroundResource(R.drawable.bg_transparent)
binding.clOne.visibility = View.GONE
binding.clTwo.visibility = View.VISIBLE
}
binding.tvTab2.setOnClickListener {
binding.tvTab1.setBackgroundResource(R.drawable.bg_transparent)
binding.tvTab2.setBackgroundResource(R.mipmap.iv_store_tab_right)
binding.clOne.visibility = View.VISIBLE
binding.clTwo.visibility = View.GONE
}
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)
binding.recyclerVip.adapter = vipAdapter
coinAdapter = VeStoreCoinAdapter() coinAdapter = VeStoreCoinAdapter()
binding.recyclerCoin.layoutManager = GridLayoutManager(this, 3) binding.recyclerCoin.layoutManager = GridLayoutManager(this, 3)
@ -122,16 +126,43 @@ class VeStoreActivity : AIXTextActivity<ActivityVeStoreBinding, VeStoreViewModel
outRect.bottom = resources.getDimension(R.dimen.dp_10).toInt() outRect.bottom = resources.getDimension(R.dimen.dp_10).toInt()
} }
}) })
coinBigAdapter = VeStoreCoinBigAdapter()
binding.recyclerCoinBig.layoutManager = GridLayoutManager(this, 2)
binding.recyclerCoinBig.adapter = coinBigAdapter
binding.recyclerCoinBig.addItemDecoration(object : RecyclerView.ItemDecoration() {
override fun getItemOffsets(
outRect: Rect,
view: View,
parent: RecyclerView,
state: RecyclerView.State
) {
outRect.left = resources.getDimension(R.dimen.dp_5).toInt()
outRect.right = resources.getDimension(R.dimen.dp_5).toInt()
outRect.bottom = resources.getDimension(R.dimen.dp_10).toInt()
}
})
viewModel.getPaySettingsV3(0, 0) viewModel.getPaySettingsV3(0, 0)
coinAdapter?.setOnItemClickListener { adapter, view, position -> vipAdapter?.setOnItemClickListener { adapter, view, position ->
if (typeOnClick == 1) { if (typeOnClick != 1) {
if (bannerAdapter?.currentPosition!! >= 0) { coinAdapter?.currentPosition = -1
bannerAdapter?.notifyItemChanged(bannerAdapter?.currentPosition!!) coinAdapter?.notifyDataSetChanged()
coinBigAdapter?.currentPosition = -1
coinBigAdapter?.notifyDataSetChanged()
} }
bannerAdapter?.oldPosition = -1 typeOnClick = 1
bannerAdapter?.currentPosition = -1 vipAdapter?.currentPosition = position
vipAdapter?.notifyDataSetChanged()
setOnPayNowClick()
}
coinAdapter?.setOnItemClickListener { adapter, view, position ->
if (typeOnClick != 0) {
vipAdapter?.currentPosition = -1
vipAdapter?.notifyDataSetChanged()
coinBigAdapter?.currentPosition = -1
coinBigAdapter?.notifyDataSetChanged()
} }
typeOnClick = 0 typeOnClick = 0
coinAdapter?.currentPosition = position coinAdapter?.currentPosition = position
@ -139,50 +170,48 @@ class VeStoreActivity : AIXTextActivity<ActivityVeStoreBinding, VeStoreViewModel
setOnPayNowClick() setOnPayNowClick()
} }
coinBigAdapter?.setOnItemClickListener { adapter, view, position ->
initPayData() if (typeOnClick != 2) {
} vipAdapter?.currentPosition = -1
vipAdapter?.notifyDataSetChanged()
private fun setBannerListener() {
binding.bannerVip.setOnBannerListener { data, position ->
if (typeOnClick == 0) {
coinAdapter?.currentPosition = -1 coinAdapter?.currentPosition = -1
coinAdapter?.notifyDataSetChanged() coinAdapter?.notifyDataSetChanged()
} }
if (bannerAdapter?.currentPosition!! >= 0) { typeOnClick = 2
bannerAdapter?.oldPosition = bannerAdapter?.currentPosition!! coinBigAdapter?.currentPosition = position
} coinBigAdapter?.notifyDataSetChanged()
typeOnClick = 1
bannerAdapter?.currentPosition = position
bannerAdapter?.notifyItemChanged(position)
if (bannerAdapter?.oldPosition!! >= 0) {
bannerAdapter?.notifyItemChanged(bannerAdapter?.oldPosition!!)
}
setOnPayNowClick() setOnPayNowClick()
} }
binding.tvRestore.setOnClickListener{
binding.bannerVip.addOnPageChangeListener(object : OnPageChangeListener { singleOnClick {
override fun onPageScrolled( if (RYAction.getOrder().isNotEmpty()
position: Int,
positionOffset: Float,
positionOffsetPixels: Int
) { ) {
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")
}
}
}
} }
override fun onPageSelected(position: Int) { initPayData()
val data = bannerAdapter?.getData(position)
data?.let { setVipContentText(it) }
}
override fun onPageScrollStateChanged(state: Int) {
}
})
val itemData = bannerAdapter?.getData(0)
itemData?.let { setVipContentText(it) }
} }
fun setOnPayNowClick() { fun setOnPayNowClick() {
@ -197,15 +226,26 @@ class VeStoreActivity : AIXTextActivity<ActivityVeStoreBinding, VeStoreViewModel
} }
if (typeOnClick == 0) { if (typeOnClick == 0) {
coinsData = coinsData =
coinAdapter!!.getItem(coinAdapter!!.currentPosition) as VePaySettingsBean.CoinsBean coinAdapter?.getItem(coinAdapter!!.currentPosition) as VePaySettingsBean.CoinsBean
} else { } else if (typeOnClick == 1) {
vipData = vipData =
bannerAdapter?.getData(bannerAdapter!!.currentPosition) as VePaySettingsBean.VipBean vipAdapter?.getItem(vipAdapter!!.currentPosition) as VePaySettingsBean.VipBean
} else {
coinsBigData =
coinBigAdapter?.getItem(coinBigAdapter!!.currentPosition) as VePaySettingsBean.CoinsBean
} }
showLoading() showLoading()
var idStr = ""
if (typeOnClick == 0) {
idStr = coinsData?.id.toString()
} else if (typeOnClick == 1) {
idStr = vipData?.id.toString()
} else {
idStr = coinsBigData?.id.toString()
}
viewModel.setCreatePayOrder( viewModel.setCreatePayOrder(
VeCreatePayOrderReqBean( VeCreatePayOrderReqBean(
if (typeOnClick == 0) coinsData?.id.toString() else vipData?.id.toString(), idStr,
"google", "google",
0, 0,
0 0
@ -218,21 +258,43 @@ class VeStoreActivity : AIXTextActivity<ActivityVeStoreBinding, VeStoreViewModel
override fun observeData() { override fun observeData() {
viewModel.PaySettingsV3.observe(this) { viewModel.PaySettingsV3.observe(this) {
if (it?.data != null) { if (it?.data != null) {
coinAdapter?.submitList(it.data.list_coins) if (it.data.list_sub_vip.isNotEmpty()) {
vipAdapter?.submitList(it.data.list_sub_vip)
bannerAdapter = binding.recyclerVip.visibility = View.VISIBLE
VeBannerVipPayAdapter(it.data.list_sub_vip)
binding.bannerVip.setBannerGalleryEffect(
resources.getDimension(R.dimen.dp_5).toInt(),
resources.getDimension(R.dimen.dp_5).toInt()
)
binding.bannerVip.setAdapter(bannerAdapter)
setBannerListener()
it.data.list_sub_vip.let { it1 -> querySubVipProductDetails(it1) } it.data.list_sub_vip.let { it1 -> querySubVipProductDetails(it1) }
it.data.list_coins.let { it1 -> queryInAppCoinsProductDetails(it1) }
}
} else {
binding.recyclerVip.visibility = View.GONE
}
if (it.data.list_coins.isNotEmpty()) {
val small = it.data.list_coins.filter { coins -> coins.size == "small" }
val big = it.data.list_coins.filter { coins -> coins.size == "big" }
if (small.isNotEmpty()) {
coinAdapter?.submitList(small)
binding.recyclerCoin.visibility = View.VISIBLE
} else {
binding.recyclerCoin.visibility = View.GONE
}
if (big.isNotEmpty()) {
coinBigAdapter?.submitList(big)
binding.recyclerCoinBig.visibility = View.VISIBLE
} else {
binding.recyclerCoinBig.visibility = View.GONE
}
if (small?.isNotEmpty() == true) {
small?.let { it1 -> queryInAppCoinsProductDetails(it1, "small") }
}
if (big?.isNotEmpty() == true) {
big?.let { it1 -> queryInAppCoinsProductDetails(it1, "big") }
}
binding.tvCoinTitle.visibility = View.VISIBLE
} else {
binding.recyclerCoin.visibility = View.GONE
binding.recyclerCoinBig.visibility = View.GONE
binding.tvCoinTitle.visibility = View.GONE
}
}
hideLoading() hideLoading()
} }
viewModel.createPayOrderData.observe(this) { viewModel.createPayOrderData.observe(this) {
@ -240,8 +302,10 @@ class VeStoreActivity : AIXTextActivity<ActivityVeStoreBinding, VeStoreViewModel
order_code = it.data.order_code.toString() order_code = it.data.order_code.toString()
if (typeOnClick == 0) { if (typeOnClick == 0) {
coinsData?.android_template_id?.let { it1 -> getProduct(it1) } coinsData?.android_template_id?.let { it1 -> getProduct(it1) }
} else { } else if (typeOnClick == 1) {
vipData?.android_template_id?.let { it1 -> getProduct(it1) } vipData?.android_template_id?.let { it1 -> getProduct(it1) }
} else {
coinsBigData?.android_template_id?.let { it1 -> getProduct(it1) }
} }
} else { } else {
if (TranslationHelper.getTranslation() != null) { if (TranslationHelper.getTranslation() != null) {
@ -271,66 +335,37 @@ class VeStoreActivity : AIXTextActivity<ActivityVeStoreBinding, VeStoreViewModel
} }
hideLoading() hideLoading()
} }
} }
viewModel.userInfo.observe(this) { viewModel.userInfo.observe(this) {
if (it?.data != null) { if (it?.data != null) {
RYAction.saveUserInfoBean(it.data) RYAction.saveUserInfoBean(it.data)
binding.tvCoin.text = RYAction.getAllCoinTotal().toString() }
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() hideLoading()
} }
} }
private fun setVipContentText(data: VePaySettingsBean.VipBean) {
if (TranslationHelper.getTranslation() != null) {
var oneDate = ""
when (data?.vip_type_key) {
"week" -> {
oneDate = TranslationHelper.getTranslation()?.veloria_week.toString()
} }
"month" -> {
oneDate = TranslationHelper.getTranslation()?.veloria_month.toString()
}
"quarter" -> {
oneDate = TranslationHelper.getTranslation()?.veloria_quarter.toString()
}
"year" -> {
oneDate = TranslationHelper.getTranslation()?.veloria_year.toString()
}
}
val vipContent1 = TranslationHelper.replace(
TranslationHelper.getTranslation()?.veloria_store_no_ads.toString(),
"<font color='#05CEA0'>".plus(oneDate).plus("</font>")
)
binding.tvVipContent1.text =
Html.fromHtml(vipContent1, Html.FROM_HTML_MODE_LEGACY)
val vipContent2 = TranslationHelper.replace(
TranslationHelper.getTranslation()?.veloria_store_donate_coins.toString(),
data.send_coin_ttl.toString()
)
binding.tvVipContent2.text =
Html.fromHtml(vipContent2, Html.FROM_HTML_MODE_LEGACY)
} else {
val vipContent1 =
"Unlimited access to all series for <font color='#05CEA0'>1 ".plus(data?.vip_type_key)
.plus("</font> (No Ads)")
binding.tvVipContent1.text =
Html.fromHtml(vipContent1, Html.FROM_HTML_MODE_LEGACY)
val vipContent2 =
"The donate coins will expire in <font color='#05CEA0'>".plus(data.send_coin_ttl.toString())
.plus(" days</font>")
binding.tvVipContent2.text =
Html.fromHtml(vipContent2, Html.FROM_HTML_MODE_LEGACY)
}
}
private fun initPayData() { private fun initPayData() {
val purchasesUpdatedListener = val purchasesUpdatedListener =
@ -339,15 +374,20 @@ class VeStoreActivity : AIXTextActivity<ActivityVeStoreBinding, VeStoreViewModel
BillingClient.BillingResponseCode.OK -> { BillingClient.BillingResponseCode.OK -> {
for (purchase in purchases!!) { for (purchase in purchases!!) {
if (purchase.purchaseState == Purchase.PurchaseState.PURCHASED) { if (purchase.purchaseState == Purchase.PurchaseState.PURCHASED) {
if (typeOnClick == 0) { if (typeOnClick == 1) {
consumePurchase(purchase)
} else {
consumePurchaseSub(purchase) consumePurchaseSub(purchase)
} else {
consumePurchase(purchase)
} }
} }
} }
} }
BillingClient.BillingResponseCode.ITEM_ALREADY_OWNED -> {
queryAndConsumePurchases()
hideLoading()
}
BillingClient.BillingResponseCode.USER_CANCELED -> { BillingClient.BillingResponseCode.USER_CANCELED -> {
if (TranslationHelper.getTranslation() != null) { if (TranslationHelper.getTranslation() != null) {
toast(TranslationHelper.getTranslation()?.veloria_google_pay_canceled.toString()) toast(TranslationHelper.getTranslation()?.veloria_google_pay_canceled.toString())
@ -451,7 +491,7 @@ class VeStoreActivity : AIXTextActivity<ActivityVeStoreBinding, VeStoreViewModel
} }
binding.root.postDelayed({ binding.root.postDelayed({
bannerAdapter?.setDatas(updatedVipList) vipAdapter?.submitList(updatedVipList)
hideLoading() hideLoading()
}, 500) }, 500)
} else { } else {
@ -481,7 +521,8 @@ class VeStoreActivity : AIXTextActivity<ActivityVeStoreBinding, VeStoreViewModel
} }
private fun queryInAppCoinsProductDetails( private fun queryInAppCoinsProductDetails(
coinsList: List<VePaySettingsBean.CoinsBean> coinsList: List<VePaySettingsBean.CoinsBean>,
type: String
) { ) {
val productDetailsResponseListener = val productDetailsResponseListener =
ProductDetailsResponseListener { billingResult, productDetailsList -> ProductDetailsResponseListener { billingResult, productDetailsList ->
@ -500,7 +541,11 @@ class VeStoreActivity : AIXTextActivity<ActivityVeStoreBinding, VeStoreViewModel
} }
coinAdapter?.recyclerView?.postDelayed({ coinAdapter?.recyclerView?.postDelayed({
if (type == "small") {
coinAdapter?.submitList(updatedCoinsList) coinAdapter?.submitList(updatedCoinsList)
} else {
coinBigAdapter?.submitList(updatedCoinsList)
}
}, 500) }, 500)
} else { } else {
hideLoading() hideLoading()
@ -541,10 +586,10 @@ class VeStoreActivity : AIXTextActivity<ActivityVeStoreBinding, VeStoreViewModel
} }
} }
} }
val productType: String = if (typeOnClick == 0) { val productType: String = if (typeOnClick == 1) {
BillingClient.ProductType.INAPP
} else {
BillingClient.ProductType.SUBS BillingClient.ProductType.SUBS
} else {
BillingClient.ProductType.INAPP
} }
val inAppProductInfo = ArrayList<QueryProductDetailsParams.Product>() val inAppProductInfo = ArrayList<QueryProductDetailsParams.Product>()
@ -623,12 +668,12 @@ class VeStoreActivity : AIXTextActivity<ActivityVeStoreBinding, VeStoreViewModel
ConsumeResponseListener { billingResult, purchaseToken -> ConsumeResponseListener { billingResult, purchaseToken ->
val vePayBean = VePayBean( val vePayBean = VePayBean(
order_code, order_code,
if (typeOnClick == 0) coinsData?.id.toString() else vipData?.id.toString(), if (typeOnClick == 0) coinsData?.id.toString() else coinsBigData?.id.toString(),
YFHome.getPackageName(), YFHome.getPackageName(),
if (typeOnClick == 0) coinsData?.android_template_id.toString() else vipData?.android_template_id.toString(), if (typeOnClick == 0) coinsData?.android_template_id.toString() else coinsBigData?.android_template_id.toString(),
purchaseToken, purchaseToken,
purchaseData?.orderId.toString(), purchaseData?.orderId.toString(),
if (typeOnClick == 0) coinsData?.price.toString() else vipData?.price.toString() if (typeOnClick == 0) coinsData?.price.toString() else coinsBigData?.price.toString()
) )
payBeanReq = vePayBean payBeanReq = vePayBean
if (billingResult.responseCode == BillingClient.BillingResponseCode.OK) { if (billingResult.responseCode == BillingClient.BillingResponseCode.OK) {
@ -644,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() { override fun onDestroy() {
super.onDestroy() super.onDestroy()
payBeanReq = null payBeanReq = null
@ -652,4 +709,8 @@ class VeStoreActivity : AIXTextActivity<ActivityVeStoreBinding, VeStoreViewModel
System.gc() System.gc()
} }
override fun getStatusLayout(): VSNotificationsDefault? {
return binding.stateLayout
}
} }

View File

@ -13,6 +13,7 @@ import com.veloria.now.shortapp.texturedAsink.VePayResBean
import com.veloria.now.shortapp.texturedAsink.VeUploadNotificationBean import com.veloria.now.shortapp.texturedAsink.VeUploadNotificationBean
import com.veloria.now.shortapp.texturedAsink.VeUploadNotificationDataBean import com.veloria.now.shortapp.texturedAsink.VeUploadNotificationDataBean
import com.veloria.now.shortapp.texturedAsink.VeW2aSelfAttributionBean import com.veloria.now.shortapp.texturedAsink.VeW2aSelfAttributionBean
import com.veloria.now.shortapp.texturedAsink.VersionControlBean
class JService : SStringsHelp() { class JService : SStringsHelp() {
@ -147,4 +148,13 @@ class JService : SStringsHelp() {
} }
} }
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,7 +6,9 @@ import com.veloria.now.shortapp.newsletter.SStringsHelp
import com.veloria.now.shortapp.texturedAsink.PURLockBean import com.veloria.now.shortapp.texturedAsink.PURLockBean
import com.veloria.now.shortapp.texturedAsink.XAboutBean import com.veloria.now.shortapp.texturedAsink.XAboutBean
import com.veloria.now.shortapp.highbits.qscaleqlog.PDeteleResource 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.KFAFavoritesInterceptorBean
import com.veloria.now.shortapp.texturedAsink.LoginDataBean
import com.veloria.now.shortapp.texturedAsink.VeBuyVideoBean import com.veloria.now.shortapp.texturedAsink.VeBuyVideoBean
import com.veloria.now.shortapp.texturedAsink.VeDetailsRecommendBean import com.veloria.now.shortapp.texturedAsink.VeDetailsRecommendBean
import com.veloria.now.shortapp.texturedAsink.VeRevolutionsBean import com.veloria.now.shortapp.texturedAsink.VeRevolutionsBean
@ -109,4 +111,16 @@ private var moreSecond_sum: Int = 6970
} }
} }
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.highbits.qscaleqlog.ANotifications
import com.veloria.now.shortapp.newsletter.SStringsHelp import com.veloria.now.shortapp.newsletter.SStringsHelp
import com.veloria.now.shortapp.newsletter.TStore 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.VeNoticeNumBean
import com.veloria.now.shortapp.texturedAsink.VeUploadNotificationBean
import com.veloria.now.shortapp.texturedAsink.VeUploadNotificationDataBean
class VeFeedbackViewModel : SStringsHelp() { class VeFeedbackViewModel : SStringsHelp() {
@ -19,4 +23,42 @@ class VeFeedbackViewModel : SStringsHelp() {
_noticeNumLiveData.value = result.getOrNull() _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

@ -63,4 +63,13 @@ class VeStoreViewModel : SStringsHelp() {
repository.getUserInfo().observeForever { result -> repository.getUserInfo().observeForever { result ->
_userInfo.value = result.getOrNull() _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.bumptech.glide.Glide
import com.chad.library.adapter4.BaseQuickAdapter import com.chad.library.adapter4.BaseQuickAdapter
import com.veloria.now.shortapp.R 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.newsletter.XNBackground
import com.veloria.now.shortapp.texturedAsink.TMainExtractionBean 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 : class GFFavorites :
BaseQuickAdapter<TMainExtractionBean.DataListBean, GFFavorites.VH>() { BaseQuickAdapter<TMainExtractionBean.DataListBean, GFFavorites.VH>() {
@Volatile @Volatile
var default_0mTabBingeSum: Long = 3471L var default_0mTabBingeSum: Long = 3471L
@Volatile @Volatile
var freeRetrofitMark: Int = 5934 var freeRetrofitMark: Int = 5934
var collectionOnClick: CollectionOnClick? = null var collectionOnClick: CollectionOnClick? = null
@ -39,7 +38,10 @@ class GFFavorites :
) : RecyclerView.ViewHolder(binding.root) ) : 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 durationFailure: MutableList<Boolean> = mutableListOf<Boolean>()
var setupMin__6: MutableList<Long> = mutableListOf<Long>() var setupMin__6: MutableList<Long> = mutableListOf<Long>()
var toastCurrent: MutableMap<String, Boolean> = mutableMapOf<String, Boolean>() 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 { override fun onCreateViewHolder(context: Context, parent: ViewGroup, viewType: Int): VH {
var scheduling_r = mutableListOf<Long>() 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 var elisionUnhighlight_len: Int = elisionUnhighlight.size
for (object_i in elisionUnhighlight) { for (object_i in elisionUnhighlight) {
@ -70,7 +73,8 @@ println(elisionUnhighlight)
var dashboardI: String = "rscc" var dashboardI: String = "rscc"
if (dashboardI.length > 171) {} if (dashboardI.length > 171) {
}
println(dashboardI) println(dashboardI)
@ -112,7 +116,8 @@ println(splittingSigning)
var loading6: Int = 1947 var loading6: Int = 1947
if (loading6 > 87) {} if (loading6 > 87) {
}
this.default_0mTabBingeSum = 9956L this.default_0mTabBingeSum = 9956L
@ -130,37 +135,57 @@ this.default_0mTabBingeSum = 9956L
.error(R.mipmap.collection_trending_recommend) .error(R.mipmap.collection_trending_recommend)
.into(holder.binding.ivImage2) .into(holder.binding.ivImage2)
var factoryu: Int = 4239 var factoryu: Int = 4239
if (factoryu > 62) {} if (factoryu > 62) {
}
holder.binding.tvName2.text = item.name holder.binding.tvName2.text = item.name
var progressJ: Long = 3354L 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 = holder.binding.tvSeries.text =
"EP.".plus(item.current_episode) "EP.".plus(item.current_episode)
var uploadp:Int = 6616
while (uploadp >= 157) { break }
holder.binding.tvSeriesAll.text = "/EP.".plus(item.episode_total) holder.binding.tvSeriesAll.text = "/EP.".plus(item.episode_total)
}
var uploadp: Int = 6616
while (uploadp >= 157) {
break
}
var indexJ: Long = 6061L var indexJ: Long = 6061L
if (indexJ > 169L) {} if (indexJ > 169L) {
}
if (item.is_collect == 1) { if (item.is_collect == 1) {
var login_: Float = 4781.0f var login_: Float = 4781.0f
while (login_ >= 30.0f) { break } while (login_ >= 30.0f) {
break
}
holder.binding.ivCollection.setImageResource(R.mipmap.detele_rewards_episode) holder.binding.ivCollection.setImageResource(R.mipmap.detele_rewards_episode)
} else { } else {
var tabA: Float = 2603.0f var tabA: Float = 2603.0f
if (tabA <= 39.0f) {} if (tabA <= 39.0f) {
}
holder.binding.ivCollection.setImageResource(R.mipmap.episode_utils) holder.binding.ivCollection.setImageResource(R.mipmap.episode_utils)
@ -168,10 +193,11 @@ this.default_0mTabBingeSum = 9956L
if (!item.updated_at.isNullOrEmpty()) { if (!item.updated_at.isNullOrEmpty()) {
var outV: Float = 6386.0f 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 { holder.binding.ivCollection.setOnClickListener {

View File

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

View File

@ -7,6 +7,7 @@ import android.view.ViewGroup
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
import com.chad.library.adapter4.BaseQuickAdapter import com.chad.library.adapter4.BaseQuickAdapter
import com.veloria.now.shortapp.R 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.databinding.ItemVeStoreCoinBinding
import com.veloria.now.shortapp.texturedAsink.VePaySettingsBean import com.veloria.now.shortapp.texturedAsink.VePaySettingsBean
import kotlin.math.floor import kotlin.math.floor
@ -36,7 +37,15 @@ class VeStoreCoinAdapter :
holder.binding.tvCoins.text = "+".plus(item.coins.toString()) holder.binding.tvCoins.text = "+".plus(item.coins.toString())
holder.binding.tvPrice.text = item.price_google holder.binding.tvPrice.text = item.price_google
if (item.send_coins > 0) { 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") holder.binding.tvBonus.text = "+".plus(item.send_coins).plus(" Bonus")
}
} else { } else {
holder.binding.tvBonus.text = "" holder.binding.tvBonus.text = ""
} }
@ -53,7 +62,7 @@ class VeStoreCoinAdapter :
} else { } else {
holder.binding.tvSelect.visibility = View.GONE holder.binding.tvSelect.visibility = View.GONE
holder.binding.root.setBackgroundResource(R.drawable.bg_store_coin_bg) holder.binding.root.setBackgroundResource(R.mipmap.bg_store_coin_bg)
} }
val sendCoins = item?.send_coins?.toDouble() val sendCoins = item?.send_coins?.toDouble()
if (sendCoins != null) { if (sendCoins != null) {

View File

@ -0,0 +1,82 @@
package com.veloria.now.shortapp.subtractionCroll.modificationsPretch
import android.content.Context
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.recyclerview.widget.RecyclerView
import com.chad.library.adapter4.BaseQuickAdapter
import com.veloria.now.shortapp.R
import com.veloria.now.shortapp.civil.TranslationHelper
import com.veloria.now.shortapp.databinding.ItemVeStoreCoinBigBinding
import com.veloria.now.shortapp.texturedAsink.VePaySettingsBean
import kotlin.math.floor
class VeStoreCoinBigAdapter :
BaseQuickAdapter<VePaySettingsBean.CoinsBean, VeStoreCoinBigAdapter.VH>() {
var currentPosition = -1
class VH(
parent: ViewGroup,
val binding: ItemVeStoreCoinBigBinding = ItemVeStoreCoinBigBinding.inflate(
LayoutInflater.from(parent.context), parent, false
),
) : RecyclerView.ViewHolder(binding.root)
override fun onCreateViewHolder(context: Context, parent: ViewGroup, viewType: Int): VH {
return VH(parent)
}
override fun onBindViewHolder(
holder: VH,
position: Int,
item: VePaySettingsBean.CoinsBean?
) {
if (null != item) {
holder.binding.tvCoins.text = "+".plus(item.coins.toString())
holder.binding.tvPrice.text = item.price_google
if (item.send_coins > 0) {
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 = ""
}
if (item.corner_marker.isNotEmpty()) {
holder.binding.tvHot.visibility = View.VISIBLE
} else {
holder.binding.tvHot.visibility = View.INVISIBLE
}
if (currentPosition == position) {
holder.binding.tvSelect.visibility = View.VISIBLE
holder.binding.root.setBackgroundResource(R.drawable.bg_store_coin_on)
} else {
holder.binding.tvSelect.visibility = View.GONE
holder.binding.root.setBackgroundResource(R.drawable.bg_store_coin_off)
}
val sendCoins = item?.send_coins?.toDouble()
if (sendCoins != null) {
if (sendCoins > 0) {
val coins = item?.coins?.toDouble()
val let = coins?.let { sendCoins?.div(it) }
val times = let?.times(100)
if (times != null) {
val floor = floor(times).toInt()
holder.binding.tvCorner.text = "+".plus(floor).plus("%")
holder.binding.tvCorner.visibility = View.VISIBLE
}
} else {
holder.binding.tvCorner.visibility = View.INVISIBLE
}
}
}
}
}

View File

@ -36,15 +36,39 @@ class VeStoreVipAdapter :
if (null != item) { if (null != item) {
holder.binding.tvDay.text = item.brief holder.binding.tvDay.text = item.brief
holder.binding.tvMoney.text = item.price_google 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
if (TranslationHelper.getTranslation() != null) {
holder.binding.tvInfo.text = TranslationHelper.getTranslation()?.veloria_store_auto_renew
}
if ((item.send_coins ?: 0) > 0) { if ((item.send_coins ?: 0) > 0) {
holder.binding.tvExtra.text = holder.binding.tvExtra.text =
"+".plus(TranslationHelper.getTranslation()?.let { TranslationHelper.getTranslation()?.veloria_extra } ?: "Extra").plus(" ").plus(item.send_coins) "+".plus(
TranslationHelper.getTranslation()
?.let { TranslationHelper.getTranslation()?.veloria_extra } ?: "Extra")
.plus(" ").plus(item.send_coins)
if (TranslationHelper.getTranslation() != null) {
holder.binding.tvExpire.text =
TranslationHelper.getTranslation()?.veloria_store_donate_coins_ios?.let {
TranslationHelper.replace(
it,
item.send_coin_ttl.toString()
)
}
} else {
holder.binding.tvExpire.text =
"The donate coins will expire in ".plus(item.send_coin_ttl.toString())
.plus(" days")
}
holder.binding.tvExtra.visibility = View.VISIBLE holder.binding.tvExtra.visibility = View.VISIBLE
holder.binding.tvExpire.visibility = View.VISIBLE
} else { } else {
holder.binding.tvExtra.visibility = View.GONE holder.binding.tvExtra.visibility = View.GONE
holder.binding.tvExpire.visibility = View.GONE
} }
if (currentPosition == position) { if (currentPosition == position) {
holder.binding.tvSelect.visibility = View.VISIBLE holder.binding.tvSelect.visibility = View.VISIBLE
} else { } else {
@ -53,40 +77,56 @@ class VeStoreVipAdapter :
when (item.vip_type_key) { when (item.vip_type_key) {
"week" -> { "month" -> {
holder.binding.root.setBackgroundResource(R.mipmap.iv_store_vip_bg_1) holder.binding.root.setBackgroundResource(R.mipmap.iv_store_vip_bg_1)
holder.binding.tvDay.setTextColor(Color.parseColor("#647DA7"))
holder.binding.tvMoney.setTextColor(Color.parseColor("#647DA7"))
holder.binding.tvMoneyDay.setTextColor(Color.parseColor("#647DA7"))
holder.binding.tvExtra.setTextColor(Color.parseColor("#214170"))
holder.binding.tvExtra.setBackgroundResource(R.drawable.bg_store_vip_1)
holder.binding.tvDescription.setTextColor(Color.parseColor("#303962"))
holder.binding.tvDescription.setBackgroundResource(R.drawable.bg_store_vip_text_1)
holder.binding.tvInfo.setTextColor(Color.parseColor("#8790B7"))
holder.binding.tvExpire.setTextColor(Color.parseColor("#8790B7"))
}
"week" -> {
holder.binding.root.setBackgroundResource(R.mipmap.iv_store_vip_bg_2)
holder.binding.tvDay.setTextColor(Color.parseColor("#64A3A7")) holder.binding.tvDay.setTextColor(Color.parseColor("#64A3A7"))
holder.binding.tvMoney.setTextColor(Color.parseColor("#64A3A7")) holder.binding.tvMoney.setTextColor(Color.parseColor("#64A3A7"))
holder.binding.tvMoneyDay.setTextColor(Color.parseColor("#64A3A7")) holder.binding.tvMoneyDay.setTextColor(Color.parseColor("#64A3A7"))
holder.binding.tvExtra.setTextColor(Color.parseColor("#416767")) holder.binding.tvExtra.setTextColor(Color.parseColor("#16706A"))
holder.binding.tvExtra.setBackgroundResource(R.drawable.bg_store_vip_1)
}
"month" -> {
holder.binding.root.setBackgroundResource(R.mipmap.iv_store_vip_bg_2)
holder.binding.tvDay.setTextColor(Color.parseColor("#9C7565"))
holder.binding.tvMoney.setTextColor(Color.parseColor("#9C7565"))
holder.binding.tvMoneyDay.setTextColor(Color.parseColor("#9C7565"))
holder.binding.tvExtra.setTextColor(Color.parseColor("#573D31"))
holder.binding.tvExtra.setBackgroundResource(R.drawable.bg_store_vip_2) holder.binding.tvExtra.setBackgroundResource(R.drawable.bg_store_vip_2)
holder.binding.tvDescription.setTextColor(Color.parseColor("#416767"))
holder.binding.tvDescription.setBackgroundResource(R.drawable.bg_store_vip_text_2)
holder.binding.tvInfo.setTextColor(Color.parseColor("#8AAEA6"))
holder.binding.tvExpire.setTextColor(Color.parseColor("#8AAEA6"))
} }
"quarter" -> { "quarter" -> {
holder.binding.root.setBackgroundResource(R.mipmap.iv_store_vip_bg_3) holder.binding.root.setBackgroundResource(R.mipmap.iv_store_vip_bg_3)
holder.binding.tvDay.setTextColor(Color.parseColor("#647DA7")) holder.binding.tvDay.setTextColor(Color.parseColor("#7869FF"))
holder.binding.tvMoney.setTextColor(Color.parseColor("#647DA7")) holder.binding.tvMoney.setTextColor(Color.parseColor("#7869FF"))
holder.binding.tvMoneyDay.setTextColor(Color.parseColor("#647DA7")) holder.binding.tvMoneyDay.setTextColor(Color.parseColor("#7869FF"))
holder.binding.tvExtra.setTextColor(Color.parseColor("#303962")) holder.binding.tvExtra.setTextColor(Color.parseColor("#510087"))
holder.binding.tvExtra.setBackgroundResource(R.drawable.bg_store_vip_3) holder.binding.tvExtra.setBackgroundResource(R.drawable.bg_store_vip_3)
holder.binding.tvDescription.setTextColor(Color.parseColor("#5F1EB9"))
holder.binding.tvDescription.setBackgroundResource(R.drawable.bg_store_vip_text_3)
holder.binding.tvInfo.setTextColor(Color.parseColor("#A395D9"))
holder.binding.tvExpire.setTextColor(Color.parseColor("#A395D9"))
} }
"year" -> { "year" -> {
holder.binding.root.setBackgroundResource(R.mipmap.iv_store_vip_bg_4) holder.binding.root.setBackgroundResource(R.mipmap.iv_store_vip_bg_4)
holder.binding.tvDay.setTextColor(Color.parseColor("#9C6586")) holder.binding.tvDay.setTextColor(Color.parseColor("#573D31"))
holder.binding.tvMoney.setTextColor(Color.parseColor("#9C6586")) holder.binding.tvMoney.setTextColor(Color.parseColor("#573D31"))
holder.binding.tvMoneyDay.setTextColor(Color.parseColor("#9C6586")) holder.binding.tvMoneyDay.setTextColor(Color.parseColor("#573D31"))
holder.binding.tvExtra.setTextColor(Color.parseColor("#674162")) holder.binding.tvExtra.setTextColor(Color.parseColor("#683D00"))
holder.binding.tvExtra.setBackgroundResource(R.drawable.bg_store_vip_4) holder.binding.tvExtra.setBackgroundResource(R.drawable.bg_store_vip_4)
holder.binding.tvDescription.setTextColor(Color.parseColor("#573D31"))
holder.binding.tvDescription.setBackgroundResource(R.drawable.bg_store_vip_text_4)
holder.binding.tvInfo.setTextColor(Color.parseColor("#AC978D"))
holder.binding.tvExpire.setTextColor(Color.parseColor("#AC978D"))
} }
} }
} }

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

@ -16,6 +16,19 @@ class VeTranslationBean(
) )
data class Translation( 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_open_notice_at_watch_video : String,
val veloria_allow : String, val veloria_allow : String,
val veloria_open_notice_alert_text : String, val veloria_open_notice_alert_text : String,
@ -80,6 +93,7 @@ class VeTranslationBean(
val veloria_recersal_of_fate : String, val veloria_recersal_of_fate : String,
val veloria_extra : String, val veloria_extra : String,
val veloria_store_tips : String, val veloria_store_tips : String,
val veloria_unlock : String,
val veloria_your_coins : String, val veloria_your_coins : String,
val veloria_get_more_coins : String, val veloria_get_more_coins : String,
val veloria_buy_now : String, val veloria_buy_now : String,
@ -115,6 +129,7 @@ class VeTranslationBean(
val veloria_order_record : String, val veloria_order_record : String,
val veloria_rewards : String, val veloria_rewards : String,
val veloria_store : String, val veloria_store : String,
val veloria_restore : String,
val veloria_wallet : String, val veloria_wallet : String,
val veloria_bonus : String, val veloria_bonus : String,
val veloria_coins : String, val veloria_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,5 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#FF9500" />
<corners android:topRightRadius="@dimen/dp_8" android:bottomLeftRadius="@dimen/dp_8" />
</shape>

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="#FFBE55" />
<corners android:topLeftRadius="@dimen/dp_8" android:bottomRightRadius="@dimen/dp_8" />
</shape>

View File

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

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,5 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#3D05CEA0" />
<corners android:bottomRightRadius="@dimen/dp_8" android:bottomLeftRadius="@dimen/dp_8" />
</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="#E6A87A46" android:startColor="#E6FBF2C7" android:type="linear" />
<corners android:bottomLeftRadius="@dimen/dp_8"
android:bottomRightRadius="@dimen/dp_8"
/>
</shape>
</item>
</selector>

View File

@ -0,0 +1,9 @@
<?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="#80A87A46" android:startColor="#80FBF2C7" android:type="linear" />
<corners android:radius="@dimen/dp_8" />
</shape>
</item>
</selector>

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="#80A87A46" android:startColor="#80FBF2C7" android:type="linear" />
<corners android:radius="@dimen/dp_8" />
<stroke android:width="@dimen/dp_1" android:color="#FFBE55" />
</shape>
</item>
</selector>

View File

@ -2,8 +2,10 @@
<selector xmlns:android="http://schemas.android.com/apk/res/android"> <selector xmlns:android="http://schemas.android.com/apk/res/android">
<item> <item>
<shape android:shape="rectangle"> <shape android:shape="rectangle">
<gradient android:endColor="@color/transparent" android:startColor="#B2E7EA" android:type="linear" /> <gradient android:endColor="#7CA1D7" android:startColor="#ADCFFF" android:type="linear" />
<corners android:radius="@dimen/dp_6" /> <corners android:topLeftRadius="@dimen/dp_10"
android:bottomRightRadius="@dimen/dp_10"
/>
</shape> </shape>
</item> </item>
</selector> </selector>

View File

@ -2,8 +2,10 @@
<selector xmlns:android="http://schemas.android.com/apk/res/android"> <selector xmlns:android="http://schemas.android.com/apk/res/android">
<item> <item>
<shape android:shape="rectangle"> <shape android:shape="rectangle">
<gradient android:endColor="@color/transparent" android:startColor="#FFE6CE" android:type="linear" /> <gradient android:endColor="#7AD9D4" android:startColor="#BDFFFB" android:type="linear" />
<corners android:radius="@dimen/dp_6" /> <corners android:topLeftRadius="@dimen/dp_10"
android:bottomRightRadius="@dimen/dp_10"
/>
</shape> </shape>
</item> </item>
</selector> </selector>

View File

@ -2,8 +2,10 @@
<selector xmlns:android="http://schemas.android.com/apk/res/android"> <selector xmlns:android="http://schemas.android.com/apk/res/android">
<item> <item>
<shape android:shape="rectangle"> <shape android:shape="rectangle">
<gradient android:endColor="@color/transparent" android:startColor="#D6E5F9" android:type="linear" /> <gradient android:endColor="#975DFF" android:startColor="#DBC7FF" android:type="linear" />
<corners android:radius="@dimen/dp_6" /> <corners android:topLeftRadius="@dimen/dp_10"
android:bottomRightRadius="@dimen/dp_10"
/>
</shape> </shape>
</item> </item>
</selector> </selector>

View File

@ -2,8 +2,10 @@
<selector xmlns:android="http://schemas.android.com/apk/res/android"> <selector xmlns:android="http://schemas.android.com/apk/res/android">
<item> <item>
<shape android:shape="rectangle"> <shape android:shape="rectangle">
<gradient android:endColor="@color/transparent" android:startColor="#FFD8F5" android:type="linear" /> <gradient android:endColor="#A87A46" android:startColor="#FBF2C7" android:type="linear" />
<corners android:radius="@dimen/dp_6" /> <corners android:topLeftRadius="@dimen/dp_10"
android:bottomRightRadius="@dimen/dp_10"
/>
</shape> </shape>
</item> </item>
</selector> </selector>

View File

@ -0,0 +1,9 @@
<?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="@color/transparent" android:startColor="#D6E5F9" android:type="linear" />
<corners android:radius="@dimen/dp_10" />
</shape>
</item>
</selector>

View File

@ -0,0 +1,9 @@
<?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="@color/transparent" android:startColor="#B2E7EA" android:type="linear" />
<corners android:radius="@dimen/dp_10" />
</shape>
</item>
</selector>

View File

@ -0,0 +1,9 @@
<?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="@color/transparent" android:startColor="#CABCFF" android:type="linear" />
<corners android:radius="@dimen/dp_10" />
</shape>
</item>
</selector>

View File

@ -0,0 +1,9 @@
<?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="@color/transparent" android:startColor="#FFE6CE" android:type="linear" />
<corners android:radius="@dimen/dp_10" />
</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" /> tools:text="1" />
<WebView <com.veloria.now.shortapp.rewards.VSNotificationsDefault
android:id="@+id/web_feedback" android:id="@+id/stateLayout"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="0dp" android:layout_height="0dp"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="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> </androidx.constraintlayout.widget.ConstraintLayout>

View File

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

View File

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

View File

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

View File

@ -5,286 +5,115 @@
android:layout_height="match_parent" android:layout_height="match_parent"
android:background="@mipmap/playfair_selected_gradle"> android:background="@mipmap/playfair_selected_gradle">
<androidx.core.widget.NestedScrollView
<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" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
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: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" />
<com.veloria.now.shortapp.rewards.VSNotificationsDefault
android:id="@+id/stateLayout"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
> android:layout_below="@+id/iv_back">
<androidx.constraintlayout.widget.ConstraintLayout <androidx.core.widget.NestedScrollView
android:id="@+id/scrollView"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent"> android:layout_height="match_parent">
<androidx.appcompat.widget.AppCompatImageView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:scaleType="centerCrop"
android:src="@mipmap/iv_store_top"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_title_1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_160"
android:text="Limited Time Offer"
android:textColor="@color/white"
android:textSize="@dimen/sp_16"
android:textStyle="bold"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_title_2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_10"
android:text="Recharge &amp; Unlock More"
android:textColor="#CC05CEA0"
android:textSize="@dimen/sp_22"
android:textStyle="bold"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/tv_title_1" />
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="@dimen/dp_20"
android:background="@drawable/bg_store_bottom"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/tv_title_2">
<androidx.appcompat.widget.LinearLayoutCompat <androidx.appcompat.widget.LinearLayoutCompat
android:id="@+id/ll_tab"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="@dimen/dp_45"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_tab_1"
android:layout_width="0dp"
android:layout_height="match_parent" android:layout_height="match_parent"
android:layout_weight="1" android:orientation="vertical">
android:background="@mipmap/iv_store_tab_left"
android:gravity="center"
android:text="VIP"
android:textColor="@color/white"
android:textSize="@dimen/sp_15"
android:textStyle="bold" />
<androidx.appcompat.widget.AppCompatTextView <androidx.recyclerview.widget.RecyclerView
android:id="@+id/tv_tab_2" android:id="@+id/recycler_vip"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center"
android:text="Coins"
android:textColor="@color/utilsUtils"
android:textSize="@dimen/sp_15" />
</androidx.appcompat.widget.LinearLayoutCompat>
<FrameLayout
android:id="@+id/fl_tab"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/ll_tab">
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/cl_one"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingHorizontal="@dimen/dp_10"
android:paddingVertical="@dimen/dp_15"
android:visibility="gone">
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_more_coin"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_5"
android:drawableStart="@mipmap/start_text"
android:drawablePadding="@dimen/dp_5"
android:text="Get More Coins"
android:textColor="@color/white"
android:textSize="@dimen/sp_15"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" /> app:layout_constraintTop_toTopOf="parent" />
<androidx.appcompat.widget.AppCompatTextView <androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_coin" android:id="@+id/tv_coin_title"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/dp_5" android:layout_marginStart="@dimen/dp_15"
android:text="0" android:layout_marginTop="@dimen/dp_10"
android:textColor="@color/ve_be0069" android:text="Top Up | Indefinitely use"
android:textSize="@dimen/sp_13"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_coin_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/dp_5"
android:text="Your Coins:"
android:textColor="@color/white" android:textColor="@color/white"
android:textSize="@dimen/sp_13" android:textSize="@dimen/sp_13"
app:layout_constraintEnd_toStartOf="@+id/tv_coin" app:layout_constraintBottom_toTopOf="@+id/recycler_coin_big"
app:layout_constraintTop_toTopOf="parent" /> app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/recycler_vip" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recycler_coin_big"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginHorizontal="@dimen/dp_10"
android:layout_marginTop="@dimen/dp_10"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/tv_coin_title" />
<androidx.recyclerview.widget.RecyclerView <androidx.recyclerview.widget.RecyclerView
android:id="@+id/recycler_coin" android:id="@+id/recycler_coin"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_12" android:layout_marginHorizontal="@dimen/dp_10"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/tv_more_coin" />
</androidx.constraintlayout.widget.ConstraintLayout>
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/cl_two"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingVertical="@dimen/dp_15"
android:visibility="visible">
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_vip_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_5"
android:drawableStart="@mipmap/iv_store_vip"
android:drawablePadding="@dimen/dp_5"
android:paddingHorizontal="@dimen/dp_10"
android:text="Membership Benefits"
android:textColor="@color/white"
android:textSize="@dimen/sp_15"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_vip_content1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_15"
android:layout_marginEnd="@dimen/dp_5"
android:layout_marginTop="@dimen/dp_10" android:layout_marginTop="@dimen/dp_10"
android:layout_marginBottom="@dimen/dp_12"
android:background="@mipmap/iv_store_benefits_bg"
android:ellipsize="end"
android:gravity="center"
android:lineSpacingExtra="@dimen/dp_2"
android:maxLines="3"
android:minLines="3"
android:paddingHorizontal="@dimen/dp_5"
android:paddingBottom="@dimen/dp_15"
android:text="Unlimited access to all series for 1 week (No Ads)"
android:textColor="@color/white"
android:textSize="@dimen/sp_12"
app:drawableTopCompat="@mipmap/vertical_selected"
app:layout_constraintEnd_toStartOf="@+id/tv_vip_content2"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/tv_vip_text" /> app:layout_constraintTop_toBottomOf="@+id/recycler_coin_big" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_vip_content2"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginHorizontal="@dimen/dp_5"
android:layout_marginTop="@dimen/dp_10"
android:layout_marginBottom="@dimen/dp_12"
android:background="@mipmap/iv_store_benefits_bg"
android:ellipsize="end"
android:gravity="center"
android:lineSpacingExtra="@dimen/dp_2"
android:maxLines="3"
android:minLines="3"
android:paddingHorizontal="@dimen/dp_5"
android:paddingBottom="@dimen/dp_15"
android:text="The donate coins will expire in 8 days"
android:textColor="@color/white"
android:textSize="@dimen/sp_12"
app:drawableTopCompat="@mipmap/register___bbfdebaffd_coins"
app:layout_constraintEnd_toStartOf="@+id/tv_vip_content3"
app:layout_constraintStart_toEndOf="@+id/tv_vip_content1"
app:layout_constraintTop_toBottomOf="@+id/tv_vip_text" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_vip_content3"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/dp_15"
android:layout_marginStart="@dimen/dp_5"
android:layout_marginTop="@dimen/dp_10"
android:layout_marginBottom="@dimen/dp_12"
android:background="@mipmap/iv_store_benefits_bg"
android:ellipsize="end"
android:gravity="center"
android:lineSpacingExtra="@dimen/dp_2"
android:maxLines="3"
android:minLines="3"
android:paddingHorizontal="@dimen/dp_5"
android:paddingBottom="@dimen/dp_15"
android:text="Auto renew, cancel anytime"
android:textColor="@color/white"
android:textSize="@dimen/sp_12"
app:drawableTopCompat="@mipmap/styles_system"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/tv_vip_content2"
app:layout_constraintTop_toBottomOf="@+id/tv_vip_text" />
<com.youth.banner.Banner
android:id="@+id/banner_vip"
android:layout_width="match_parent"
android:layout_height="@dimen/dp_135"
android:layout_marginTop="@dimen/dp_12"
app:banner_auto_loop="false"
app:banner_infinite_loop="false"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/tv_vip_content1"
/>
</androidx.constraintlayout.widget.ConstraintLayout>
</FrameLayout>
<androidx.appcompat.widget.AppCompatTextView <androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_tips" android:id="@+id/tv_tips"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginHorizontal="@dimen/dp_15" android:layout_marginHorizontal="@dimen/dp_15"
android:paddingBottom="@dimen/dp_15" android:layout_marginTop="@dimen/dp_12"
android:layout_marginBottom="@dimen/dp_15"
android:lineSpacingExtra="@dimen/dp_2" android:lineSpacingExtra="@dimen/dp_2"
android:text="@string/ve_store_tips" android:text="@string/ve_store_tips"
android:textColor="@color/white50" android:textColor="@color/white50"
android:textSize="@dimen/sp_12" android:textSize="@dimen/sp_12"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/fl_tab" /> app:layout_constraintTop_toBottomOf="@+id/recycler_coin" />
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.appcompat.widget.LinearLayoutCompat>
</androidx.core.widget.NestedScrollView> </androidx.core.widget.NestedScrollView>
<androidx.appcompat.widget.AppCompatImageView </com.veloria.now.shortapp.rewards.VSNotificationsDefault>
android:id="@+id/iv_back"
android:layout_width="@dimen/dp_35"
android:layout_height="@dimen/dp_35"
android:layout_marginStart="@dimen/dp_10"
android:layout_marginTop="@dimen/dp_40"
android:padding="@dimen/dp_10"
android:src="@mipmap/right_dimens"
/>
</RelativeLayout> </RelativeLayout>

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

@ -2,7 +2,7 @@
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:gravity="center_vertical"> >
<View <View
@ -10,8 +10,8 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_alignTop="@+id/iv_top" android:layout_alignTop="@+id/iv_top"
android:layout_alignBottom="@+id/iv_vip" android:layout_alignBottom="@+id/v_line"
android:layout_marginTop="@dimen/dp_135" android:layout_marginTop="@dimen/dp_75"
android:background="@mipmap/iv_dialog_vip_splash_bg" /> android:background="@mipmap/iv_dialog_vip_splash_bg" />
@ -20,22 +20,21 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_centerHorizontal="true" android:layout_centerHorizontal="true"
android:layout_marginTop="@dimen/dp_15"
android:background="@mipmap/iv_dialog_vip_splash_top" /> android:background="@mipmap/iv_dialog_vip_splash_top" />
<androidx.appcompat.widget.AppCompatTextView <androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_title" android:id="@+id/tv_title"
android:layout_width="wrap_content" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_below="@+id/iv_top" android:layout_below="@+id/iv_top"
android:layout_centerHorizontal="true" android:layout_marginHorizontal="@dimen/dp_20"
android:layout_marginStart="@dimen/dp_20"
android:layout_marginTop="@dimen/dp_30" android:layout_marginTop="@dimen/dp_30"
android:layout_marginEnd="@dimen/dp_115"
android:fontFamily="sans-serif-medium" android:fontFamily="sans-serif-medium"
android:lineSpacingExtra="@dimen/dp_2" android:lineSpacingExtra="@dimen/dp_2"
android:singleLine="true"
android:textStyle="bold" android:textStyle="bold"
android:gravity="center"
android:text="Unlock VIP Privileges!" android:text="Unlock VIP Privileges!"
android:textColor="@color/white" android:textColor="@color/white"
android:textSize="@dimen/sp_16" /> android:textSize="@dimen/sp_16" />
@ -54,37 +53,29 @@
android:textColor="#C5C5C5" android:textColor="#C5C5C5"
android:textSize="@dimen/sp_14" /> android:textSize="@dimen/sp_14" />
<androidx.appcompat.widget.AppCompatImageView <androidx.recyclerview.widget.RecyclerView
android:id="@+id/iv_vip" android:id="@+id/recyclerView"
android:layout_width="wrap_content" android:layout_width="@dimen/dp_240"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_below="@+id/tv_content" android:layout_below="@+id/tv_content"
android:layout_centerHorizontal="true" android:layout_centerHorizontal="true"
android:layout_marginHorizontal="@dimen/dp_20" android:layout_marginHorizontal="@dimen/dp_20"
android:layout_marginTop="@dimen/dp_15" android:layout_marginTop="@dimen/dp_15"
android:paddingBottom="@dimen/dp_22" />
android:src="@mipmap/iv_dialog_vip_splash_vip" />
<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.AppCompatTextView
android:id="@+id/tv_to_store"
android:layout_width="match_parent"
android:layout_height="@dimen/dp_48"
android:layout_below="@+id/v_bg"
android:layout_marginHorizontal="@dimen/dp_30"
android:layout_marginTop="@dimen/dp_8"
android:layout_marginBottom="@dimen/dp_13"
android:background="@mipmap/iv_dialog_vip_splash_onclick_bg"
android:fontFamily="sans-serif-medium"
android:gravity="center"
android:text="Unlock VIP Benefits"
android:textColor="#005D48"
android:textSize="@dimen/sp_14" />
<androidx.appcompat.widget.AppCompatImageView <androidx.appcompat.widget.AppCompatImageView
android:id="@+id/iv_close" android:id="@+id/iv_close"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_below="@+id/tv_to_store" android:layout_below="@+id/v_line"
android:layout_centerHorizontal="true" android:layout_centerHorizontal="true"
android:padding="@dimen/dp_10" android:padding="@dimen/dp_10"
android:src="@mipmap/factory_icon" /> android:src="@mipmap/factory_icon" />

View File

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

View File

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

View File

@ -1,13 +1,11 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/ll_item" android:id="@+id/ll_item"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="@dimen/dp_108" android:layout_height="@dimen/dp_108"
android:background="@drawable/bg_store_coin_bg" android:background="@mipmap/bg_store_coin_bg"
android:orientation="vertical" android:orientation="vertical">
tools:background="@color/black">
<com.hjq.shape.view.ShapeTextView <com.hjq.shape.view.ShapeTextView
android:id="@+id/tv_hot" android:id="@+id/tv_hot"
@ -37,18 +35,17 @@
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" /> app:layout_constraintTop_toTopOf="parent" />
<TextView <TextView
android:id="@+id/tv_coins" android:id="@+id/tv_coins"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center_horizontal" android:layout_gravity="center_horizontal"
android:layout_marginTop="@dimen/dp_25" android:layout_marginTop="@dimen/dp_25"
android:drawableEnd="@mipmap/start_text"
android:drawablePadding="@dimen/dp_3"
android:fontFamily="sans-serif-medium" android:fontFamily="sans-serif-medium"
android:text="+500" android:text="+500"
android:textColor="@color/white" android:textColor="@color/white"
android:drawableEnd="@mipmap/start_text"
android:drawablePadding="@dimen/dp_3"
android:textSize="@dimen/sp_16" android:textSize="@dimen/sp_16"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
@ -68,16 +65,17 @@
<androidx.appcompat.widget.AppCompatTextView <androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_price" android:id="@+id/tv_price"
android:layout_width="wrap_content" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_10" android:background="@drawable/bg_store_coin_money_bottom"
android:gravity="center" android:gravity="center"
android:paddingVertical="@dimen/dp_5"
android:text="" android:text=""
android:textColor="@color/white" android:textColor="@color/white"
android:textSize="@dimen/sp_12" android:textSize="@dimen/sp_12"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent" />
app:layout_constraintTop_toBottomOf="@+id/tv_bonus" />
<androidx.appcompat.widget.AppCompatImageView <androidx.appcompat.widget.AppCompatImageView
android:id="@+id/tv_select" android:id="@+id/tv_select"

View File

@ -0,0 +1,93 @@
<?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"
android:id="@+id/ll_item"
android:layout_width="match_parent"
android:layout_height="@dimen/dp_108"
android:background="@drawable/bg_store_coin_off"
android:orientation="vertical">
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/tv_hot"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_2"
android:layout_marginTop="@dimen/dp_2"
android:src="@mipmap/iv_store_vip_big_hot"
android:visibility="invisible"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<com.hjq.shape.view.ShapeTextView
android:id="@+id/tv_corner"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/bg_coin_big_right"
android:paddingHorizontal="@dimen/dp_2"
android:paddingVertical="@dimen/dp_2"
android:text=""
android:textColor="@color/white"
android:textSize="@dimen/sp_10"
android:visibility="invisible"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/tv_coins"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="@dimen/dp_25"
android:drawableEnd="@mipmap/start_text"
android:drawablePadding="@dimen/dp_3"
android:fontFamily="sans-serif-medium"
android:text="+500"
android:textColor="@color/white"
android:textSize="@dimen/sp_16"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_bonus"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_5"
android:singleLine="true"
android:textColor="#FFC779"
android:textSize="@dimen/sp_12"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/tv_coins" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_price"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_10"
android:layout_marginHorizontal="@dimen/dp_1"
android:background="@drawable/bg_store_coin_money_bottom_big"
android:gravity="center"
android:paddingVertical="@dimen/dp_5"
android:text=""
android:textColor="#683D00"
android:textSize="@dimen/sp_12"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/tv_bonus" />
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/tv_select"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_10"
android:background="@drawable/bg_coin_left_big"
android:gravity="center"
android:paddingHorizontal="@dimen/dp_5"
android:src="@mipmap/iv_yes"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@ -1,57 +1,95 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/rl_layout" android:id="@+id/rl_layout"
android:layout_width="match_parent"
android:layout_height="@dimen/dp_135"
android:layout_marginHorizontal="@dimen/dp_15"
android:layout_marginBottom="@dimen/dp_10"
android:background="@mipmap/iv_store_vip_bg_1"> android:background="@mipmap/iv_store_vip_bg_1">
<TextView <androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_day" android:id="@+id/tv_day"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center_horizontal" android:layout_gravity="center_horizontal"
android:layout_marginStart="@dimen/dp_14" android:layout_marginStart="@dimen/dp_14"
android:layout_marginTop="@dimen/dp_32" android:layout_marginTop="@dimen/dp_18"
android:gravity="center_horizontal" android:gravity="center_horizontal"
android:text="Weekly VIP" android:text="Weekly VIP"
android:textColor="#64A3A7" android:textColor="#647DA7"
android:textSize="@dimen/sp_16" android:textSize="@dimen/sp_12" />
android:textStyle="bold" />
<TextView <androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_money" android:id="@+id/tv_money"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_below="@+id/tv_day" android:layout_below="@+id/tv_day"
android:layout_gravity="center_horizontal" android:layout_gravity="center_horizontal"
android:layout_marginStart="@dimen/dp_14" android:layout_marginStart="@dimen/dp_14"
android:layout_marginTop="@dimen/dp_5"
android:text="0" android:text="0"
android:textColor="#64A3A7" android:textColor="#647DA7"
android:textSize="@dimen/sp_22" android:textSize="@dimen/sp_32"
android:textStyle="bold" /> android:textStyle="bold" />
<TextView <androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_money_day" android:id="@+id/tv_money_day"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_alignBottom="@+id/tv_money" android:layout_alignBottom="@+id/tv_money"
android:layout_gravity="center_horizontal" android:layout_gravity="center_horizontal"
android:layout_marginBottom="@dimen/dp_3" android:layout_marginBottom="@dimen/dp_6"
android:layout_toEndOf="@+id/tv_money" android:layout_toEndOf="@+id/tv_money"
android:text="/Week" android:text="/Week"
android:textColor="#64A3A7" android:textColor="#647DA7"
android:textSize="@dimen/sp_14" /> android:textSize="@dimen/sp_16" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_description"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/tv_money"
android:layout_marginStart="@dimen/dp_14"
android:background="@drawable/bg_store_vip_text_1"
android:paddingHorizontal="@dimen/dp_7"
android:paddingVertical="@dimen/dp_3"
android:singleLine="true"
android:text="Unlimited access to all series for 1 week"
android:textColor="#303962"
android:textSize="@dimen/sp_10" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_info"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/tv_description"
android:layout_marginStart="@dimen/dp_14"
android:layout_marginTop="@dimen/dp_2"
android:layout_toStartOf="@+id/tv_extra"
android:singleLine="true"
android:text="Auto renew, cancel anytime"
android:textColor="#8790B7"
android:textSize="@dimen/sp_10" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_expire"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/tv_info"
android:layout_marginStart="@dimen/dp_14"
android:layout_marginTop="@dimen/dp_2"
android:layout_toStartOf="@+id/tv_extra"
android:singleLine="true"
android:text="The donate coins will expire in 8 days"
android:textColor="#8790B7"
android:textSize="@dimen/sp_10" />
<androidx.appcompat.widget.AppCompatTextView <androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_extra" android:id="@+id/tv_extra"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_below="@+id/tv_money_day" android:layout_alignParentEnd="true"
android:layout_marginStart="@dimen/dp_15" android:layout_alignParentBottom="true"
android:layout_marginTop="@dimen/dp_8"
android:layout_marginBottom="@dimen/dp_10"
android:background="@drawable/bg_store_vip_1" android:background="@drawable/bg_store_vip_1"
android:drawableEnd="@mipmap/start_text" android:drawableEnd="@mipmap/start_text"
android:drawablePadding="@dimen/dp_5" android:drawablePadding="@dimen/dp_5"
@ -59,14 +97,14 @@
android:paddingHorizontal="@dimen/dp_10" android:paddingHorizontal="@dimen/dp_10"
android:paddingVertical="@dimen/dp_3" android:paddingVertical="@dimen/dp_3"
android:text="+Extra 500" android:text="+Extra 500"
android:textColor="#416767" android:textColor="#214170"
android:textSize="@dimen/sp_12" /> android:textSize="@dimen/sp_12" />
<androidx.appcompat.widget.AppCompatImageView <androidx.appcompat.widget.AppCompatImageView
android:id="@+id/tv_select" android:id="@+id/tv_select"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_17" android:layout_marginTop="@dimen/dp_10"
android:background="@drawable/bg_coin_left" android:background="@drawable/bg_coin_left"
android:gravity="center" android:gravity="center"
android:paddingHorizontal="@dimen/dp_8" android:paddingHorizontal="@dimen/dp_8"

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"?> <?xml version="1.0" encoding="utf-8"?>
<com.veloria.now.shortapp.rewards.VSNotificationsDefault xmlns:android="http://schemas.android.com/apk/res/android" <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/stateLayout"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:background="@mipmap/playfair_selected_gradle"> android:background="@mipmap/playfair_selected_gradle">
@ -9,12 +8,17 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="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 <androidx.viewpager2.widget.ViewPager2
android:id="@+id/viewPager_detail" android:id="@+id/viewPager_detail"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:orientation="vertical" /> android:orientation="vertical" />
</com.veloria.now.shortapp.rewards.VSNotificationsDefault>
<androidx.appcompat.widget.AppCompatImageView <androidx.appcompat.widget.AppCompatImageView
android:id="@+id/iv_cover" android:id="@+id/iv_cover"
@ -25,16 +29,24 @@
<include <include
android:id="@+id/layout_lock" android:id="@+id/layout_lock"
layout="@layout/layout_ve_lock_episode" layout="@layout/layout_ve_lock_episode" />
/>
<include <include
android:id="@+id/layout_recommend" android:id="@+id/layout_recommend"
layout="@layout/layout_player_recommend" layout="@layout/layout_player_recommend" />
/>
</androidx.constraintlayout.widget.ConstraintLayout> </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

@ -1,20 +1,28 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<androidx.core.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android" <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:background="@mipmap/strings_layout"> android:background="@mipmap/strings_layout">
<androidx.constraintlayout.widget.ConstraintLayout <androidx.appcompat.widget.AppCompatImageView
android:layout_width="match_parent" android:id="@+id/iv_close_dialog"
android:layout_height="match_parent"> android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_marginTop="@dimen/dp_12"
android:layout_marginEnd="@dimen/dp_15"
android:padding="10dp"
android:src="@mipmap/banner_bean"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView <TextView
android:id="@+id/tv_coins_text" android:id="@+id/tv_coins_text"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_15" android:layout_marginStart="@dimen/dp_15"
android:layout_marginTop="@dimen/dp_42" android:layout_marginTop="@dimen/dp_20"
android:text="@string/your_coins" android:text="@string/your_coins"
android:textColor="@color/white" android:textColor="@color/white"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
@ -24,63 +32,96 @@
android:id="@+id/tv_coins" android:id="@+id/tv_coins"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_alignTop="@+id/tv_coins_text"
android:layout_marginStart="@dimen/dp_5" android:layout_marginStart="@dimen/dp_5"
android:layout_toRightOf="@+id/tv_coins_text"
android:drawablePadding="@dimen/dp_2" android:drawablePadding="@dimen/dp_2"
android:gravity="center_vertical" android:gravity="center_vertical"
android:text="" android:text=""
android:textColor="#05CEA0" android:textColor="#05CEA0"
app:drawableEndCompat="@mipmap/start_text"
app:layout_constraintBottom_toBottomOf="@+id/tv_coins_text" app:layout_constraintBottom_toBottomOf="@+id/tv_coins_text"
app:layout_constraintStart_toEndOf="@+id/tv_coins_text" app:layout_constraintStart_toEndOf="@+id/tv_coins_text"
app:layout_constraintTop_toTopOf="@+id/tv_coins_text" /> app:layout_constraintTop_toTopOf="@+id/tv_coins_text" />
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/iv_close_dialog" <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_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_alignParentEnd="true" android:text="Unlock: "
android:layout_marginTop="@dimen/dp_15" android:textColor="@color/white" />
android:layout_marginEnd="@dimen/dp_15"
android:padding="10dp"
android:src="@mipmap/banner_bean"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<com.youth.banner.Banner <TextView
android:id="@+id/banner_vip" 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_width="match_parent"
android:layout_height="@dimen/dp_135" android:layout_height="match_parent"
android:layout_marginTop="@dimen/dp_15" android:layout_below="@+id/iv_close_dialog"
app:banner_auto_loop="false" android:layout_marginTop="@dimen/dp_7">
app:banner_infinite_loop="false"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/tv_coins_text"
/>
<androidx.appcompat.widget.AppCompatTextView <androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/tv_buy_hint" android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recycler_vip"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginHorizontal="@dimen/dp_15"
android:layout_marginTop="@dimen/dp_10"
android:background="@drawable/bg_player_buy_hint"
android:lineSpacingExtra="@dimen/dp_5"
android:paddingHorizontal="@dimen/dp_15"
android:paddingVertical="@dimen/dp_10"
android:text="@string/unlimited_access_to_all_series_for_1"
android:textColor="@color/white80"
android:textSize="@dimen/sp_12"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/banner_vip" /> app:layout_constraintTop_toTopOf="parent" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_coin_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_15"
android:layout_marginTop="@dimen/dp_10"
android:text="Top Up | Indefinitely use"
android:textColor="@color/white"
android:textSize="@dimen/sp_13"
app:layout_constraintBottom_toTopOf="@+id/recycler_coin_big"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/recycler_vip" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recycler_coin_big"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginHorizontal="@dimen/dp_10"
android:layout_marginTop="@dimen/dp_10"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/tv_coin_title" />
<androidx.recyclerview.widget.RecyclerView <androidx.recyclerview.widget.RecyclerView
android:id="@+id/recycler_coin" android:id="@+id/recycler_coin"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_15" android:layout_marginHorizontal="@dimen/dp_10"
android:layout_marginTop="@dimen/dp_15" android:layout_marginTop="@dimen/dp_10"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/tv_buy_hint" /> app:layout_constraintTop_toBottomOf="@+id/recycler_coin_big" />
<androidx.appcompat.widget.AppCompatTextView <androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_tips" android:id="@+id/tv_tips"
@ -98,5 +139,7 @@
app:layout_constraintTop_toBottomOf="@+id/recycler_coin" /> app:layout_constraintTop_toBottomOf="@+id/recycler_coin" />
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>
</androidx.core.widget.NestedScrollView> </androidx.core.widget.NestedScrollView>
</RelativeLayout>

View File

@ -1,11 +1,18 @@
<?xml version="1.0" encoding="utf-8"?> <?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:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:id="@+id/stateLayout"
android:background="@mipmap/playfair_selected_gradle"> 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 <androidx.appcompat.widget.AppCompatTextView
android:id="@+id/text_home" android:id="@+id/text_home"
android:layout_width="match_parent" android:layout_width="match_parent"
@ -84,11 +91,6 @@
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/fl_search"> 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 <androidx.core.widget.NestedScrollView
android:id="@+id/scrollView" android:id="@+id/scrollView"
android:layout_width="match_parent" android:layout_width="match_parent"
@ -365,7 +367,6 @@
</com.veloria.now.shortapp.rewards.VSNotificationsDefault> </com.veloria.now.shortapp.rewards.VSNotificationsDefault>
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>
</androidx.core.widget.NestedScrollView> </androidx.core.widget.NestedScrollView>
</com.veloria.now.shortapp.rewards.VSNotificationsDefault>
</com.scwang.smart.refresh.layout.SmartRefreshLayout> </com.scwang.smart.refresh.layout.SmartRefreshLayout>
<androidx.constraintlayout.widget.ConstraintLayout <androidx.constraintlayout.widget.ConstraintLayout
@ -411,5 +412,5 @@
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>
</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_height="wrap_content"
android:layout_below="@+id/tvEmptyTitle" android:layout_below="@+id/tvEmptyTitle"
android:layout_centerHorizontal="true" android:layout_centerHorizontal="true"
android:layout_marginHorizontal="@dimen/dp_15"
android:gravity="center"
android:layout_marginBottom="@dimen/dp_30" android:layout_marginBottom="@dimen/dp_30"
android:text="Start exploring and add something!" android:text="Start exploring and add something!"
android:textColor="@color/white" android:textColor="@color/white"

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 24 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.

Before

Width:  |  Height:  |  Size: 109 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.

Before

Width:  |  Height:  |  Size: 166 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 545 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 104 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 133 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 87 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 95 KiB

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