Compare commits
128 Commits
release_1.
...
develop_yi
Author | SHA1 | Date | |
---|---|---|---|
![]() |
136b3133ce | ||
![]() |
015922bd90 | ||
![]() |
8aba5ebaa2 | ||
![]() |
db75f129ee | ||
![]() |
6cfc44285e | ||
![]() |
8b33e2536a | ||
![]() |
9d2c83ff6b | ||
![]() |
bf9fd90010 | ||
![]() |
521d351e92 | ||
![]() |
41cd821233 | ||
![]() |
670e305f60 | ||
![]() |
153898c1a1 | ||
![]() |
b463797df9 | ||
![]() |
bcd1e37115 | ||
![]() |
de48c6c071 | ||
![]() |
a9c87c7f76 | ||
![]() |
bae04574bf | ||
![]() |
718e4eb76d | ||
![]() |
4e6a5e0fa5 | ||
![]() |
3a84f71fcd | ||
![]() |
72a362f2a6 | ||
![]() |
f71b49bdcd | ||
![]() |
81310b7d9e | ||
![]() |
305fc47512 | ||
![]() |
237c98c38d | ||
![]() |
ef7603237d | ||
![]() |
0cc5d56f10 | ||
![]() |
9b27d3b395 | ||
![]() |
4feed5409d | ||
![]() |
66fcf3caae | ||
![]() |
74c7b2d3fe | ||
![]() |
b3151fda75 | ||
![]() |
3b7db71b86 | ||
![]() |
4a990a4d62 | ||
![]() |
e79c75fcbf | ||
![]() |
30ec9bcf03 | ||
![]() |
0f6e4f8699 | ||
![]() |
8a70c1bb32 | ||
![]() |
c37ecad328 | ||
![]() |
c0cbc8b62c | ||
![]() |
d73b530915 | ||
![]() |
4788605b46 | ||
![]() |
4f5134a7a1 | ||
![]() |
56d9d8f5da | ||
![]() |
bd6c421995 | ||
![]() |
b27df1cb89 | ||
![]() |
fdc7d338c1 | ||
![]() |
29ced00df8 | ||
![]() |
9591c3dc37 | ||
![]() |
5e57ff80ee | ||
![]() |
9ac9923e3a | ||
![]() |
710868591a | ||
![]() |
3b47be1bd5 | ||
![]() |
33f7c8a7fa | ||
![]() |
fa97defc82 | ||
![]() |
f96458c2ac | ||
![]() |
287222f7ad | ||
![]() |
151e5c11b1 | ||
![]() |
37b3c941e2 | ||
![]() |
1333250224 | ||
![]() |
9bd8136f92 | ||
![]() |
527340a357 | ||
![]() |
beb6c0a846 | ||
![]() |
b260d2e797 | ||
![]() |
81b1cf8124 | ||
![]() |
cbd92a2f10 | ||
![]() |
8f0d723fba | ||
![]() |
db6fdf3266 | ||
![]() |
0c1ba80a40 | ||
![]() |
a7da303a9c | ||
![]() |
3f37821830 | ||
![]() |
56f1ca9f55 | ||
![]() |
b9f130b89e | ||
![]() |
8f31292680 | ||
![]() |
b0d7fdd597 | ||
![]() |
42e26e7f0c | ||
![]() |
3ac10340d6 | ||
![]() |
a10471d1c2 | ||
![]() |
d47536cc13 | ||
![]() |
641c15a91e | ||
![]() |
f29dc93faa | ||
![]() |
42afa779db | ||
![]() |
d300ef179d | ||
![]() |
ecd6b8da81 | ||
![]() |
dec6e5e0c1 | ||
![]() |
18b680db70 | ||
![]() |
0fd330848c | ||
![]() |
d0d2418dbf | ||
![]() |
a129fb405e | ||
![]() |
91b006422c | ||
![]() |
d83dbe2337 | ||
![]() |
ce27034ca6 | ||
![]() |
340403fe0d | ||
![]() |
ac8dc50955 | ||
![]() |
32ef74df3a | ||
![]() |
e4cb690b68 | ||
![]() |
96de9e153c | ||
![]() |
35032c1f8e | ||
![]() |
3e1ab090aa | ||
![]() |
95aeda920a | ||
![]() |
60d6bbeae8 | ||
![]() |
0b339136cc | ||
![]() |
6e7743960c | ||
![]() |
7709020221 | ||
![]() |
b9d59e9477 | ||
![]() |
321fa1b9ea | ||
![]() |
ff746b5a11 | ||
![]() |
802383b9e8 | ||
![]() |
b41a2e0376 | ||
![]() |
732cea412c | ||
![]() |
52db404fc0 | ||
![]() |
2d954d21ef | ||
![]() |
b7eb1e66fa | ||
![]() |
6491efe708 | ||
![]() |
37ed8facf3 | ||
![]() |
6becbb6226 | ||
![]() |
ea19645fe8 | ||
![]() |
d48844dc14 | ||
![]() |
a939c29e3e | ||
![]() |
e55b4d7348 | ||
![]() |
583d5a139b | ||
![]() |
c7dd6ec61c | ||
![]() |
a58165213d | ||
![]() |
f21e117e7f | ||
![]() |
f9bd5b7a9f | ||
![]() |
b9251a89a5 | ||
![]() |
e81d75a8b8 | ||
![]() |
c691e5f570 |
0
app/aab-res-guard-mapping.txt
Normal file
0
app/aab-res-guard-mapping.txt
Normal file
@@ -1,92 +0,0 @@
|
||||
{
|
||||
"agcgw":{
|
||||
"backurl":"connect-drcn.hispace.hicloud.com",
|
||||
"url":"connect-drcn.dbankcloud.cn",
|
||||
"websocketbackurl":"connect-ws-drcn.hispace.dbankcloud.com",
|
||||
"websocketurl":"connect-ws-drcn.hispace.dbankcloud.cn"
|
||||
},
|
||||
"agcgw_all":{
|
||||
"CN":"connect-drcn.dbankcloud.cn",
|
||||
"CN_back":"connect-drcn.hispace.hicloud.com",
|
||||
"DE":"connect-dre.dbankcloud.cn",
|
||||
"DE_back":"connect-dre.hispace.hicloud.com",
|
||||
"RU":"connect-drru.hispace.dbankcloud.ru",
|
||||
"RU_back":"connect-drru.hispace.dbankcloud.cn",
|
||||
"SG":"connect-dra.dbankcloud.cn",
|
||||
"SG_back":"connect-dra.hispace.hicloud.com"
|
||||
},
|
||||
"websocketgw_all":{
|
||||
"CN":"connect-ws-drcn.hispace.dbankcloud.cn",
|
||||
"CN_back":"connect-ws-drcn.hispace.dbankcloud.com",
|
||||
"DE":"connect-ws-dre.hispace.dbankcloud.cn",
|
||||
"DE_back":"connect-ws-dre.hispace.dbankcloud.com",
|
||||
"RU":"connect-ws-drru.hispace.dbankcloud.ru",
|
||||
"RU_back":"connect-ws-drru.hispace.dbankcloud.cn",
|
||||
"SG":"connect-ws-dra.hispace.dbankcloud.cn",
|
||||
"SG_back":"connect-ws-dra.hispace.dbankcloud.com"
|
||||
},
|
||||
"client":{
|
||||
"cp_id":"890086000300337421",
|
||||
"product_id":"736430079244645870",
|
||||
"client_id":"458482081706542080",
|
||||
"client_secret":"3573E319CDA06E85137A91CF68CF90BA850A639BCA6655A5310B2BCD81BC7213",
|
||||
"project_id":"736430079244645870",
|
||||
"app_id":"102953045",
|
||||
"api_key":"DAEDAN1bqknzqRuvualUo98vO7U9uXBJtBZ0rNQHgSo03bXgkl98tD4sytVBCBB1Y7ha0NcY++dSp9JLsws9BzDN+/fS3v8J9We3nA==",
|
||||
"package_name":"cn.nnbc123.voice"
|
||||
},
|
||||
"oauth_client":{
|
||||
"client_id":"102953045",
|
||||
"client_type":1
|
||||
},
|
||||
"app_info":{
|
||||
"app_id":"102953045",
|
||||
"package_name":"cn.nnbc123.voice"
|
||||
},
|
||||
"service":{
|
||||
"analytics":{
|
||||
"collector_url":"datacollector-drcn.dt.hicloud.com,datacollector-drcn.dt.dbankcloud.cn",
|
||||
"collector_url_ru":"datacollector-drru.dt.dbankcloud.ru,datacollector-drru.dt.hicloud.com",
|
||||
"collector_url_sg":"datacollector-dra.dt.hicloud.com,datacollector-dra.dt.dbankcloud.cn",
|
||||
"collector_url_de":"datacollector-dre.dt.hicloud.com,datacollector-dre.dt.dbankcloud.cn",
|
||||
"collector_url_cn":"datacollector-drcn.dt.hicloud.com,datacollector-drcn.dt.dbankcloud.cn",
|
||||
"resource_id":"p1",
|
||||
"channel_id":""
|
||||
},
|
||||
"search":{
|
||||
"url":"https://search-drcn.cloud.huawei.com"
|
||||
},
|
||||
"cloudstorage":{
|
||||
"storage_url_sg_back":"https://agc-storage-dra.cloud.huawei.asia",
|
||||
"storage_url_ru_back":"https://agc-storage-drru.cloud.huawei.ru",
|
||||
"storage_url_ru":"https://agc-storage-drru.cloud.huawei.ru",
|
||||
"storage_url_de_back":"https://agc-storage-dre.cloud.huawei.eu",
|
||||
"storage_url_de":"https://ops-dre.agcstorage.link",
|
||||
"storage_url":"https://agc-storage-drcn.platform.dbankcloud.cn",
|
||||
"storage_url_sg":"https://ops-dra.agcstorage.link",
|
||||
"storage_url_cn_back":"https://agc-storage-drcn.cloud.huawei.com.cn",
|
||||
"storage_url_cn":"https://agc-storage-drcn.platform.dbankcloud.cn"
|
||||
},
|
||||
"ml":{
|
||||
"mlservice_url":"ml-api-drcn.ai.dbankcloud.com,ml-api-drcn.ai.dbankcloud.cn"
|
||||
}
|
||||
},
|
||||
"region":"CN",
|
||||
"configuration_version":"3.0",
|
||||
"appInfos":[
|
||||
{
|
||||
"package_name":"cn.nnbc123.voice",
|
||||
"client":{
|
||||
"app_id":"102953045"
|
||||
},
|
||||
"app_info":{
|
||||
"package_name":"cn.nnbc123.voice",
|
||||
"app_id":"102953045"
|
||||
},
|
||||
"oauth_client":{
|
||||
"client_type":1,
|
||||
"client_id":"102953045"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
240
app/build.gradle
240
app/build.gradle
@@ -1,19 +1,17 @@
|
||||
apply plugin: 'com.android.application'
|
||||
|
||||
apply plugin: 'com.android.application'
|
||||
apply plugin: 'kotlin-android'
|
||||
apply plugin: 'com.huawei.agconnect'
|
||||
apply plugin: 'com.tencent.vasdolly'
|
||||
apply from: '../mob.gradle'
|
||||
apply plugin: 'android-junk-code'
|
||||
|
||||
def onlyArm64 = Boolean.parseBoolean(only_arm64)
|
||||
apply plugin: 'com.google.gms.google-services'
|
||||
apply plugin: 'com.google.firebase.crashlytics'
|
||||
apply plugin: "com.bytedance.android.aabResGuard"
|
||||
apply plugin: "xml-class-guard"
|
||||
|
||||
android {
|
||||
compileSdkVersion COMPILE_SDK_VERSION.toInteger()
|
||||
|
||||
defaultConfig {
|
||||
applicationId "cn.nnbc123.voice"
|
||||
applicationId "app.yinm.chat"
|
||||
minSdkVersion MIN_SDK_VERSION.toInteger()
|
||||
targetSdkVersion TARGET_SDK_VERSION.toInteger()
|
||||
versionCode Integer.valueOf(version_code)
|
||||
@@ -21,18 +19,27 @@ android {
|
||||
|
||||
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
||||
multiDexEnabled true
|
||||
ndk {
|
||||
abiFilters 'armeabi-v7a', 'arm64-v8a'
|
||||
}
|
||||
// ndk {
|
||||
// abiFilters 'armeabi-v7a', 'arm64-v8a', 'x86'
|
||||
// }
|
||||
flavorDimensions 'default'
|
||||
}
|
||||
|
||||
splits {
|
||||
// splits {
|
||||
// abi {
|
||||
// enable true
|
||||
// reset()
|
||||
// include 'armeabi-v7a', 'arm64-v8a', 'x86'
|
||||
// universalApk true
|
||||
// }
|
||||
// }
|
||||
|
||||
bundle {
|
||||
density {
|
||||
enableSplit = true
|
||||
}
|
||||
abi {
|
||||
enable true
|
||||
reset()
|
||||
include 'armeabi-v7a', 'arm64-v8a'
|
||||
universalApk true
|
||||
enableSplit = true
|
||||
}
|
||||
}
|
||||
|
||||
@@ -50,7 +57,7 @@ android {
|
||||
if (abi == null) {
|
||||
abi = "universal"
|
||||
}
|
||||
outputFileName = "yinmeng_${buildType.name}_v${defaultConfig.versionName}_${abi}_${date}.apk"
|
||||
outputFileName = "yinm_${variant.flavorName}_${buildType.name}_v${defaultConfig.versionName}_${defaultConfig.versionCode}_${abi}_${date}.apk"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -76,23 +83,13 @@ android {
|
||||
signingConfigs {
|
||||
|
||||
v2 {
|
||||
storeFile file('../yinmeng.jks')
|
||||
storePassword "yinmeng2023"
|
||||
keyAlias "yinmeng"
|
||||
keyPassword "yinmeng2023"
|
||||
storeFile file('../yinm.jks')
|
||||
storePassword "yinm2023"
|
||||
keyAlias "yinm"
|
||||
keyPassword "yinm2023"
|
||||
v2SigningEnabled true
|
||||
v1SigningEnabled true
|
||||
}
|
||||
|
||||
v1 {
|
||||
storeFile file('../yinmeng.jks')
|
||||
storePassword "yinmeng2023"
|
||||
keyAlias "yinmeng"
|
||||
keyPassword "yinmeng2023"
|
||||
v2SigningEnabled false
|
||||
v1SigningEnabled true
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
sourceSets {
|
||||
@@ -147,8 +144,8 @@ android {
|
||||
|
||||
buildTypes {
|
||||
release {
|
||||
buildConfigField "String", "BASE_URL", "\"https://api.nnbc123.cn/\""
|
||||
buildConfigField "String", "WEB_URL", "\"https://h5.nnbc123.cn/\""
|
||||
buildConfigField "String", "BASE_URL", "\"https://api.yinm.chat/\""
|
||||
buildConfigField "String", "WEB_URL", "\"https://h5.yinm.chat/\""
|
||||
buildConfigField "String", "BASE_URL_DEBUG", "BASE_URL"
|
||||
buildConfigField "String", "BASE_URL_STAGING", "BASE_URL"
|
||||
buildConfigField "String", "BASE_URL_RELEASE", "BASE_URL"
|
||||
@@ -156,18 +153,26 @@ android {
|
||||
shrinkResources true
|
||||
signingConfig signingConfigs.v2
|
||||
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
|
||||
manifestPlaceholders = [CRASHLYTICS_COLLECTION_ENABLED: "true"]
|
||||
firebaseCrashlytics {
|
||||
mappingFileUploadEnabled false
|
||||
}
|
||||
}
|
||||
|
||||
debug {
|
||||
buildConfigField "String", "BASE_URL", "\"http://beta.api.nnbc123.cn/\""
|
||||
buildConfigField "String", "WEB_URL", "\"http://beta.api.nnbc123.cn\""
|
||||
buildConfigField "String", "BASE_URL", "\"http://beta.api.yinm.chat/\""
|
||||
buildConfigField "String", "WEB_URL", "\"http://beta.api.yinm.chat\""
|
||||
buildConfigField "String", "BASE_URL_DEBUG", "BASE_URL"
|
||||
buildConfigField "String", "BASE_URL_STAGING", "\"https://api.nnbc123.cn/\""
|
||||
buildConfigField "String", "BASE_URL_RELEASE", "\"https://api.nnbc123.cn/\""
|
||||
buildConfigField "String", "BASE_URL_STAGING", "\"https://api.yinm.chat/\""
|
||||
buildConfigField "String", "BASE_URL_RELEASE", "\"https://api.yinm.chat/\""
|
||||
minifyEnabled false
|
||||
shrinkResources false
|
||||
signingConfig signingConfigs.v2
|
||||
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
|
||||
firebaseCrashlytics {
|
||||
mappingFileUploadEnabled false
|
||||
}
|
||||
manifestPlaceholders = [CRASHLYTICS_COLLECTION_ENABLED: "false"]
|
||||
}
|
||||
}
|
||||
|
||||
@@ -182,6 +187,29 @@ android {
|
||||
|
||||
buildToolsVersion = '30.0.3'
|
||||
|
||||
productFlavors {
|
||||
official {
|
||||
ndk {
|
||||
abiFilters 'armeabi-v7a', 'arm64-v8a'
|
||||
}
|
||||
}
|
||||
google_yinm {
|
||||
ndk {
|
||||
abiFilters 'armeabi-v7a', 'arm64-v8a'
|
||||
}
|
||||
}
|
||||
mlq {
|
||||
ndk {
|
||||
abiFilters 'x86'
|
||||
}
|
||||
}
|
||||
}
|
||||
productFlavors.all { flavor ->
|
||||
flavor.manifestPlaceholders = [
|
||||
// 渠道
|
||||
CHANNEL_VALUE : name,
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -216,7 +244,6 @@ dependencies {
|
||||
api "com.ms-square:expandableTextView:0.1.4"
|
||||
api "com.jakewharton:butterknife:10.2.3"
|
||||
annotationProcessor "com.jakewharton:butterknife-compiler:10.2.3"
|
||||
implementation "com.llew.huawei:verifier:1.0.3"
|
||||
annotationProcessor 'androidx.annotation:annotation:1.2.0'
|
||||
|
||||
implementation 'io.github.h07000223:flycoTabLayout:3.0.0'
|
||||
@@ -247,65 +274,112 @@ dependencies {
|
||||
|
||||
implementation 'it.sephiroth.android.library.imagezoom:library:1.0.4'
|
||||
|
||||
// 易盾一键登录
|
||||
implementation 'io.github.yidun:quicklogin:3.1.5'
|
||||
|
||||
implementation 'com.github.fodroid:XRadioGroup:v1.5'
|
||||
//华为推送
|
||||
implementation 'com.huawei.hms:push:6.5.0.300'
|
||||
//魅族推送
|
||||
implementation 'com.meizu.flyme.internet:push-internal:4.1.0'
|
||||
//oppo推送需要
|
||||
implementation 'commons-codec:commons-codec:1.6'
|
||||
|
||||
api 'com.tencent.vasdolly:helper:3.0.3'
|
||||
// api 'com.tencent.vasdolly:helper:3.0.3'
|
||||
implementation "io.github.tencent:vap:2.0.24"
|
||||
|
||||
implementation 'com.github.mmin18:realtimeblurview:1.2.1'
|
||||
|
||||
implementation 'com.qiyukf.unicorn:unicorn:8.2.0'
|
||||
|
||||
implementation 'com.github.yalantis:ucrop:2.2.7'
|
||||
}
|
||||
|
||||
repositories {
|
||||
flatDir {
|
||||
dirs 'aliyun-libs', 'com.huawei.agconnect'
|
||||
}
|
||||
mavenCentral()
|
||||
|
||||
}
|
||||
|
||||
channel {
|
||||
//多渠道包的输出目录,默认为new File(project.buildDir,"channel")
|
||||
outputDir = new File(project.buildDir, "channelapk")
|
||||
//多渠道包的命名规则,默认为:${appName}-${versionName}-${versionCode}-${flavorName}-${buildType}-${buildTime}
|
||||
def only64 = onlyArm64 ? "-only64" : ""
|
||||
apkNameFormat = 'yinmeng-${buildType}only64-${flavorName}-v${versionName}-${buildTime}'.replace("only64", only64)
|
||||
//快速模式:生成渠道包时不进行校验(速度可以提升10倍以上,默认为false)
|
||||
fastMode = false
|
||||
//buildTime的时间格式,默认格式:yyyyMMdd-HHmmss
|
||||
buildTimeDateFormat = 'MMddHHmm'
|
||||
//低内存模式(仅针对V2签名,默认为false):只把签名块、中央目录和EOCD读取到内存,不把最大头的内容块读取到内存,在手机上合成APK时,可以使用该模式
|
||||
lowMemory = false
|
||||
}
|
||||
|
||||
android.applicationVariants.all { variant ->
|
||||
print("variant.name=" + variant.name)
|
||||
switch (variant.name) {//变体名称,如果没有设置productFlavors就是buildType名称,如果有设置productFlavors就是flavor+buildType,例如(freeRelease、proRelease)
|
||||
case "release":
|
||||
androidJunkCode.configMap.put(variant.name, {
|
||||
packageBase = "com.nnbc123.plugin.ui" //生成java类根包名
|
||||
packageCount = 30 //生成包数量
|
||||
activityCountPerPackage = 30 //每个包下生成Activity类数量
|
||||
excludeActivityJavaFile = false
|
||||
//是否排除生成Activity的Java文件,默认false(layout和写入AndroidManifest.xml还会执行),主要用于处理类似神策全埋点编译过慢问题
|
||||
otherCountPerPackage = 50 //每个包下生成其它类的数量
|
||||
methodCountPerClass = 20 //每个类下生成方法数量
|
||||
resPrefix = "mango_" //生成的layout、drawable、string等资源名前缀
|
||||
drawableCount = 300 //生成drawable资源数量
|
||||
stringCount = 300 //生成string数量
|
||||
})
|
||||
break
|
||||
if (variant.name.contains("release") || variant.name.contains("Release")) {
|
||||
androidJunkCode.configMap.put(variant.name, {
|
||||
packageBase = "app.yinm.a.u" //生成java类根包名
|
||||
packageCount = 30 //生成包数量
|
||||
activityCountPerPackage = 30 //每个包下生成Activity类数量
|
||||
excludeActivityJavaFile = false
|
||||
//是否排除生成Activity的Java文件,默认false(layout和写入AndroidManifest.xml还会执行),主要用于处理类似神策全埋点编译过慢问题
|
||||
otherCountPerPackage = 50 //每个包下生成其它类的数量
|
||||
methodCountPerClass = 20 //每个类下生成方法数量
|
||||
resPrefix = "ymc_" //生成的layout、drawable、string等资源名前缀
|
||||
drawableCount = 300 //生成drawable资源数量
|
||||
stringCount = 300 //生成string数量
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
aabResGuard {
|
||||
mappingFile = file("aab-res-guard-mapping.txt").toPath()
|
||||
// Mapping file used for incremental obfuscation
|
||||
whiteList = [ // White list rules
|
||||
// 魅力财富icon
|
||||
"*.R.drawable.charm_ic_*",
|
||||
"*.R.drawable.wealth_ic_*",
|
||||
// ----------
|
||||
"*.R.raw.*",
|
||||
"*.R.drawable.icon",
|
||||
//谷歌服务
|
||||
"*.R.string.default_web_client_id",
|
||||
"*.R.string.firebase_database_url",
|
||||
"*.R.string.gcm_defaultSenderId",
|
||||
"*.R.string.google_api_key",
|
||||
"*.R.string.google_app_id",
|
||||
"*.R.string.google_crash_reporting_api_key",
|
||||
"*.R.string.google_storage_bucket",
|
||||
"*.R.string.project_id",
|
||||
//所有涉及到 getResources().getIdentifier 对应的资源ID
|
||||
"*.R.array.a1",
|
||||
"*.R.string.s1",
|
||||
"*.R.mipmap.m1",
|
||||
"*.R.dimen.d1",
|
||||
"*.R.integer.int1",
|
||||
//Firebase Crashlytics
|
||||
"*.R.string.com.crashlytics.*",
|
||||
"*.R.bool.com.crashlytics.useFirebaseAppId",
|
||||
"*.R.string.com.crashlytics.useFirebaseAppId",
|
||||
"*.R.bool.com.crashlytics.CollectDeviceIdentifiers",
|
||||
"*.R.string.com.crashlytics.CollectDeviceIdentifiers",
|
||||
"*.R.bool.com.crashlytics.CollectUserIdentifiers",
|
||||
"*.R.string.com.crashlytics.CollectUserIdentifiers",
|
||||
"*.R.string.com.crashlytics.ApiEndpoint",
|
||||
"*.R.string.io.fabric.android.build_id",
|
||||
"*.R.string.com.crashlytics.android.build_id",
|
||||
"*.R.bool.com.crashlytics.RequireBuildId",
|
||||
"*.R.string.com.crashlytics.RequireBuildId",
|
||||
"*.R.bool.com.crashlytics.CollectCustomLogs",
|
||||
"*.R.string.com.crashlytics.CollectCustomLogs",
|
||||
"*.R.bool.com.crashlytics.Trace",
|
||||
"*.R.string.com.crashlytics.Trace",
|
||||
"*.R.string.com.crashlytics.CollectCustomKeys",
|
||||
"*.R.string.com.google.firebase.crashlytics.mapping_file_id",
|
||||
"*.R.string.com.google.firebase.crashlytics.unity_version"
|
||||
]
|
||||
obfuscatedBundleFileName = "yinm-google.aab" // Obfuscated file name, must end with '.aab'
|
||||
mergeDuplicatedRes = true // Whether to allow the merge of duplicate resources
|
||||
enableFilterFiles = false // Whether to allow filter files
|
||||
filterList = [ // file filter rules
|
||||
// "*/arm64-v8a/*",
|
||||
// "META-INF/*"
|
||||
]
|
||||
|
||||
enableFilterStrings = false // switch of filter strings
|
||||
unusedStringPath = file("unused.txt").toPath() // strings will be filtered in this file
|
||||
languageWhiteList = ["en", "zh"] // keep en,en-xx,zh,zh-xx etc. remove others.
|
||||
}
|
||||
|
||||
//以下均为非必须
|
||||
xmlClassGuard {
|
||||
findAabConstraintReferencedIds = true
|
||||
//用于增量混淆的 mapping 文件
|
||||
mappingFile = file("xml-class-mapping.txt")
|
||||
//更改manifest文件的package属性,即包名
|
||||
packageChange = ["com.nnbc123.app" : "app.yinm.app",
|
||||
"com.nnbc123.core" : "app.yinm.cc",
|
||||
"com.nnbc123.library": "app.yinm.ll"]
|
||||
|
||||
moveDir = []
|
||||
|
||||
generateObfuscateClassStartName = "ZZZZ"
|
||||
|
||||
randomObfuscatePackageNamePlaceholder = ["app.yinm.a.#", "app.yinm.a.a.#", "app.yinm.a.b.#", "app.yinm.a.c.#", "app.yinm.a.d.#", "app.yinm.a.e.#"]
|
||||
|
||||
randomObfuscateClassNamePlaceholder = ["#", "#1", "#2", "#3", "#4", "#5", "#6", "#7", "#8", "#9"]
|
||||
}
|
||||
|
29
app/google-services.json
Normal file
29
app/google-services.json
Normal file
@@ -0,0 +1,29 @@
|
||||
{
|
||||
"project_info": {
|
||||
"project_number": "414487219613",
|
||||
"project_id": "yinm-gp-a9649",
|
||||
"storage_bucket": "yinm-gp-a9649.appspot.com"
|
||||
},
|
||||
"client": [
|
||||
{
|
||||
"client_info": {
|
||||
"mobilesdk_app_id": "1:414487219613:android:cb64fc92ca04f431c13374",
|
||||
"android_client_info": {
|
||||
"package_name": "app.yinm.chat"
|
||||
}
|
||||
},
|
||||
"oauth_client": [],
|
||||
"api_key": [
|
||||
{
|
||||
"current_key": "AIzaSyC8Ekb0HRZzsNq8aBp2qs_97G6h76URl24"
|
||||
}
|
||||
],
|
||||
"services": {
|
||||
"appinvite_service": {
|
||||
"other_platform_oauth_client": []
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"configuration_version": "1"
|
||||
}
|
Binary file not shown.
Binary file not shown.
BIN
app/libs/SudMGP-v1.3.6.1181.aar
Normal file
BIN
app/libs/SudMGP-v1.3.6.1181.aar
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
79
app/proguard-rules.pro
vendored
79
app/proguard-rules.pro
vendored
@@ -30,6 +30,10 @@
|
||||
# 保留行号
|
||||
-keepattributes SourceFile,LineNumberTable
|
||||
|
||||
-obfuscationdictionary ./../dictionry.txt
|
||||
-classobfuscationdictionary ./../dictionry.txt
|
||||
-packageobfuscationdictionary ./../dictionry.txt
|
||||
|
||||
#-dontwarn #//dontwarn去掉警告
|
||||
#-dontskipnonpubliclibraryclassmembers
|
||||
#-keep public class * extends android.app.Fragment
|
||||
@@ -65,8 +69,18 @@
|
||||
public static final ** CREATOR;
|
||||
}
|
||||
|
||||
-keep class * implements java.io.Serializable {
|
||||
*;
|
||||
# 保留 Serializable 序列化的类不被混淆
|
||||
-keepnames class * implements java.io.Serializable
|
||||
-keepclassmembers class * implements java.io.Serializable {
|
||||
static final long serialVersionUID;
|
||||
private static final java.io.ObjectStreamField[] serialPersistentFields;
|
||||
!static !transient <fields>;
|
||||
!private <fields>;
|
||||
!private <methods>;
|
||||
private void writeObject(java.io.ObjectOutputStream);
|
||||
private void readObject(java.io.ObjectInputStream);
|
||||
java.lang.Object writeReplace();
|
||||
java.lang.Object readResolve();
|
||||
}
|
||||
##---------------Begin: proguard configuration for Gson ----------
|
||||
# Gson specific classes
|
||||
@@ -114,20 +128,8 @@
|
||||
-dontwarn com.netease.**
|
||||
-keep class com.netease.** {*;}
|
||||
|
||||
# Presenter 相关
|
||||
-keep class com.nnbc123.app.base.** { *; }
|
||||
-keep public class * extends com.nnbc123.app.base.BaseMvpPresenter
|
||||
-keep public class * extends com.nnbc123.library.base.factory.AbstractMvpPresenter
|
||||
|
||||
# 云信自定义 ViewHolder 配置
|
||||
-dontwarn com.nnbc123.app.ui.im.recent.holder.**
|
||||
-keep class com.nnbc123.app.ui.im.recent.holder.** {*;}
|
||||
-keep class com.nnbc123.app.ui.im.chat.** {*;}
|
||||
-keep class com.nnbc123.app.luckymoney.viewholder.** {*;}
|
||||
-keep class com.nnbc123.app.share.viewholder.** {*;}
|
||||
-keep class com.nnbc123.app.public_chat_hall.msg.viewholder.** {*;}
|
||||
-keep class com.nnbc123.app.module_hall.im.msgholder.** {*;}
|
||||
-keep class com.nnbc123.app.mentoring_relationship.viewholder.** {*;}
|
||||
-keep public class * extends com.netease.nim.uikit.common.ui.recyclerview.holder.RecyclerViewHolder {*;}
|
||||
-keep public class * extends com.netease.nim.uikit.business.session.viewholder.MsgViewHolderBase {*;}
|
||||
|
||||
@@ -168,16 +170,9 @@
|
||||
#-------------云信相关的混淆配置------------
|
||||
|
||||
|
||||
#-------------TakePhoto的混淆配置------------
|
||||
-keep class com.nnbc123.app.takephoto.** { *; }
|
||||
-dontwarn com.jph.takephoto.**
|
||||
|
||||
-keep class com.darsh.multipleimageselect.** { *; }
|
||||
-dontwarn com.darsh.multipleimageselect.**
|
||||
|
||||
-keep class com.soundcloud.android.crop.** { *; }
|
||||
-dontwarn com.soundcloud.android.crop.**
|
||||
|
||||
#-------------TakePhoto的混淆配置------------
|
||||
|
||||
|
||||
@@ -207,9 +202,6 @@
|
||||
<init>(...);
|
||||
}
|
||||
|
||||
-dontwarn com.nnbc123.app.bindadapter.**
|
||||
-keep class com.nnbc123.app.bindadapter.** {*;}
|
||||
|
||||
# Ping++ 混淆过滤
|
||||
-dontwarn com.pingplusplus.**
|
||||
-keep class com.pingplusplus.** {*;}
|
||||
@@ -237,10 +229,24 @@
|
||||
}
|
||||
|
||||
|
||||
# @Keep
|
||||
-keep,allowobfuscation @interface android.support.annotation.Keep
|
||||
-keep @android.support.annotation.Keep class *
|
||||
-keepclassmembers class * {
|
||||
@android.support.annotation.Keep *;
|
||||
}
|
||||
|
||||
-keep,allowobfuscation @interface androidx.annotation.Keep
|
||||
-keep @androidx.annotation.Keep class *
|
||||
-keepclassmembers class * {
|
||||
@androidx.annotation.Keep *;
|
||||
}
|
||||
|
||||
# TODO 网络加载 一些业务bean gson 时候混淆问题
|
||||
-keep class org.json.** {*;}
|
||||
-dontwarn com.nnbc123.core.**
|
||||
-keep class com.nnbc123.core.** {*;}
|
||||
-keep class **.bean.** {*;}
|
||||
-keep class **.result.** {*;}
|
||||
-keep class **.entity.** {*;}
|
||||
|
||||
|
||||
#百度统计
|
||||
@@ -313,10 +319,6 @@
|
||||
-keep class com.amap.api.fence.**{*;}
|
||||
-keep class com.autonavi.aps.amapapi.model.**{*;}
|
||||
|
||||
#暂时keep这个View排查华为oom问题
|
||||
-keep class com.nnbc123.app.avroom.widget.MicroView{*;}
|
||||
-keep class com.nnbc123.app.ui.widget.rollviewpager.RollPagerView{*;}
|
||||
|
||||
#linkedMe
|
||||
-keep class com.microquation.linkedme.android.** { *; }
|
||||
|
||||
@@ -333,7 +335,13 @@
|
||||
-dontwarn com.sdk.**
|
||||
-keep class com.sdk.** { *;}
|
||||
-keep class cn.com.chinatelecom.account.**{*;}
|
||||
-keep public class * extends android.view.View
|
||||
-keep public class * extends android.view.View {
|
||||
*** get*();
|
||||
void set*(***);
|
||||
public <init>(android.content.Context);
|
||||
public <init>(android.content.Context, android.util.AttributeSet);
|
||||
public <init>(android.content.Context, android.util.AttributeSet, int);
|
||||
}
|
||||
-keep class com.netease.nis.quicklogin.entity.**{*;}
|
||||
-keep class com.netease.nis.quicklogin.listener.**{*;}
|
||||
-keep class com.netease.nis.quicklogin.QuickLogin{
|
||||
@@ -373,8 +381,6 @@
|
||||
-dontwarn com.meizu.cloud.**
|
||||
-keep class com.meizu.cloud.** {*;}
|
||||
|
||||
-keep class com.nnbc123.app.ui.widget.AppBarLayoutBehavior {*;}
|
||||
|
||||
#ViewBinding使用的反射生成的对应Binding
|
||||
-keepclassmembers class * implements androidx.viewbinding.ViewBinding {
|
||||
public static ** inflate(***);
|
||||
@@ -450,7 +456,7 @@
|
||||
-keep class android.support.v8.renderscript.** { *; }
|
||||
-keep class androidx.renderscript.** { *; }
|
||||
|
||||
-keep class com.nnbc123.plugin.ui.**{*;}
|
||||
-keep class app.yinm.plugin.ui.**{*;}
|
||||
|
||||
-dontwarn com.qiyukf.**
|
||||
-keep class com.qiyukf.** {*;}
|
||||
@@ -461,3 +467,8 @@
|
||||
-keep class androidx.recyclerview.widget.** { *; }
|
||||
-keep class androidx.viewpager2.widget.** { *; }
|
||||
-keep class io.agora.**{*;}
|
||||
-keepattributes SourceFile,LineNumberTable # Keep file names and line numbers.
|
||||
-keep public class * extends java.lang.Exception # Optional: Keep custom exceptions.
|
||||
|
||||
-keep class com.google.android.exoplayer2.** {*;}
|
||||
-keep interface com.google.android.exoplayer2.**
|
||||
|
@@ -24,8 +24,15 @@
|
||||
<!-- 控制呼吸灯,振动器等,用于新消息提醒 -->
|
||||
<uses-permission android:name="android.permission.FLASHLIGHT" />
|
||||
<uses-permission android:name="android.permission.VIBRATE" /> <!-- 外置存储存取权限 -->
|
||||
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
|
||||
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <!-- 多媒体相关 -->
|
||||
<uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />
|
||||
<uses-permission android:name="android.permission.READ_MEDIA_AUDIO" />
|
||||
<uses-permission android:name="android.permission.READ_MEDIA_VIDEO" />
|
||||
<uses-permission
|
||||
android:name="android.permission.READ_EXTERNAL_STORAGE"
|
||||
android:maxSdkVersion="32" />
|
||||
<uses-permission
|
||||
android:name="android.permission.WRITE_EXTERNAL_STORAGE"
|
||||
android:maxSdkVersion="32" />
|
||||
<uses-permission android:name="android.permission.CAMERA" />
|
||||
<uses-permission android:name="android.permission.BLUETOOTH" />
|
||||
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
|
||||
@@ -67,13 +74,7 @@
|
||||
|
||||
<uses-permission android:name="${applicationId}.permission.C2D_MESSAGE" />
|
||||
<uses-permission android:name="android.permission.BLUETOOTH_SCAN"/>
|
||||
<!-- 适配安卓12&11获取当前已安装的所有应用列表-->
|
||||
<queries>
|
||||
<intent>
|
||||
<action android:name="android.intent.action.MAIN" />
|
||||
</intent>
|
||||
</queries>
|
||||
|
||||
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
|
||||
<application
|
||||
android:name="com.nnbc123.app.application.XChatApplication"
|
||||
android:allowBackup="false"
|
||||
@@ -86,6 +87,13 @@
|
||||
android:theme="@style/MyMaterialTheme"
|
||||
android:usesCleartextTraffic="true"
|
||||
tools:replace="android:name,android:allowBackup">
|
||||
<meta-data
|
||||
android:name="firebase_crashlytics_collection_enabled"
|
||||
android:value="${CRASHLYTICS_COLLECTION_ENABLED}" />
|
||||
<!-- 多渠道 -->
|
||||
<meta-data
|
||||
android:name="CHANNEL"
|
||||
android:value="${CHANNEL_VALUE}" />
|
||||
<!-- 刘海屏适配 begin -->
|
||||
<!-- 小米 -->
|
||||
<meta-data
|
||||
@@ -174,14 +182,7 @@
|
||||
<action android:name="com.heytap.mcs.action.RECEIVE_MCS_MESSAGE" />
|
||||
</intent-filter>
|
||||
</service>
|
||||
<service
|
||||
android:name="com.nnbc123.app.push.OppoPushService"
|
||||
android:exported="false"
|
||||
android:permission="com.coloros.mcs.permission.SEND_MCS_MESSAGE">
|
||||
<intent-filter>
|
||||
<action android:name="com.coloros.mcs.action.RECEIVE_MCS_MESSAGE" />
|
||||
</intent-filter>
|
||||
</service> <!-- 云信集成oppo推送 end -->
|
||||
<!-- 云信集成oppo推送 end -->
|
||||
<!-- 云信集成华为推送 start -->
|
||||
<service
|
||||
android:name="com.netease.nimlib.mixpush.hw.HWPushService"
|
||||
@@ -199,41 +200,6 @@
|
||||
android:authorities="${applicationId}.ipc.provider"
|
||||
android:exported="false"
|
||||
android:process=":core" /> <!-- 配置的service和receiver -->
|
||||
<service
|
||||
android:name="com.xiaomi.push.service.XMPushService"
|
||||
android:enabled="true"
|
||||
android:process=":mixpush" />
|
||||
<service
|
||||
android:name="com.xiaomi.push.service.XMJobService"
|
||||
android:enabled="true"
|
||||
android:exported="false"
|
||||
android:permission="android.permission.BIND_JOB_SERVICE"
|
||||
android:process=":mixpush" /> <!-- 注:此service必须在3.0.1版本以后(包括3.0.1版本)加入 -->
|
||||
<service
|
||||
android:name="com.xiaomi.mipush.sdk.PushMessageHandler"
|
||||
android:enabled="true"
|
||||
android:exported="false" />
|
||||
<service
|
||||
android:name="com.xiaomi.mipush.sdk.MessageHandleService"
|
||||
android:enabled="true" /> <!-- 注:此service必须在2.2.5版本以后(包括2.2.5版本)加入 -->
|
||||
<receiver
|
||||
android:name="com.xiaomi.push.service.receivers.NetworkStatusReceiver"
|
||||
android:exported="true"
|
||||
tools:node="remove">>
|
||||
<intent-filter>
|
||||
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
|
||||
|
||||
<category android:name="android.intent.category.DEFAULT" />
|
||||
</intent-filter>
|
||||
</receiver>
|
||||
<receiver
|
||||
android:name="com.xiaomi.push.service.receivers.PingReceiver"
|
||||
android:exported="false"
|
||||
android:process=":mixpush">
|
||||
<intent-filter>
|
||||
<action android:name="com.xiaomi.push.PING_TIMER" />
|
||||
</intent-filter>
|
||||
</receiver>
|
||||
<receiver
|
||||
android:name="com.netease.nimlib.mixpush.mi.MiPushReceiver"
|
||||
android:exported="true">
|
||||
@@ -243,27 +209,8 @@
|
||||
<action android:name="com.xiaomi.mipush.ERROR" />
|
||||
</intent-filter>
|
||||
</receiver>
|
||||
<receiver
|
||||
android:name="com.nnbc123.app.push.MiPushReceiver"
|
||||
android:exported="false">
|
||||
<intent-filter>
|
||||
<action android:name="com.xiaomi.mipush.RECEIVE_MESSAGE" />
|
||||
<action android:name="com.xiaomi.mipush.MESSAGE_ARRIVED" />
|
||||
<action android:name="com.xiaomi.mipush.ERROR" />
|
||||
</intent-filter>
|
||||
</receiver> <!-- 云信集成小米推送 end -->
|
||||
<!-- 云信集成小米推送 end -->
|
||||
<!-- 云信继承vivo推送 start -->
|
||||
<service
|
||||
android:name="com.vivo.push.sdk.service.CommandClientService"
|
||||
android:exported="true"
|
||||
android:permission="com.push.permission.UPSTAGESERVICE" />
|
||||
|
||||
<activity
|
||||
android:name="com.vivo.push.sdk.LinkProxyClientActivity"
|
||||
android:exported="false"
|
||||
android:screenOrientation="portrait"
|
||||
android:theme="@android:style/Theme.Translucent.NoTitleBar" />
|
||||
|
||||
<receiver
|
||||
android:name="com.netease.nimlib.mixpush.vivo.VivoPushReceiver"
|
||||
android:exported="false">
|
||||
@@ -274,24 +221,6 @@
|
||||
</intent-filter>
|
||||
</receiver>
|
||||
|
||||
<receiver
|
||||
android:name="com.qiyukf.nimlib.service.NimReceiver"
|
||||
android:exported="false"
|
||||
android:process=":core"
|
||||
tools:node="remove">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.BOOT_COMPLETED" />
|
||||
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
|
||||
</intent-filter>
|
||||
</receiver>
|
||||
|
||||
<service
|
||||
android:name="com.qiyukf.nimlib.job.NIMJobService"
|
||||
android:exported="true"
|
||||
android:permission="android.permission.BIND_JOB_SERVICE"
|
||||
android:process=":core"
|
||||
tools:node="remove" />
|
||||
|
||||
<meta-data
|
||||
android:name="com.vivo.push.api_key"
|
||||
android:value="8de0df98690ba00225b88313aaee754f" />
|
||||
@@ -317,16 +246,7 @@
|
||||
|
||||
<category android:name="${applicationId}" />
|
||||
</intent-filter>
|
||||
</receiver>
|
||||
<receiver
|
||||
android:name="com.nnbc123.app.push.MeizuPushReceiver"
|
||||
android:exported="false">
|
||||
<intent-filter>
|
||||
<action android:name="com.meizu.flyme.push.intent.MESSAGE" />
|
||||
<action android:name="com.meizu.flyme.push.intent.REGISTER.FEEDBACK" />
|
||||
<action android:name="com.meizu.flyme.push.intent.UNREGISTER.FEEDBACK" />
|
||||
</intent-filter>
|
||||
</receiver> <!-- 云信集成魅族推送 end -->
|
||||
</receiver><!-- 云信集成魅族推送 end -->
|
||||
<!-- 云信配置 end ##################################################### -->
|
||||
<!-- <!– 安卓保活配置 –> -->
|
||||
<!-- <service -->
|
||||
@@ -370,35 +290,6 @@
|
||||
android:resource="@xml/provider_paths" />
|
||||
</provider>
|
||||
|
||||
<activity
|
||||
android:name="com.nnbc123.app.push.HWPushMiddleActivity"
|
||||
android:exported="true">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.VIEW" />
|
||||
|
||||
<category android:name="android.intent.category.DEFAULT" />
|
||||
<category android:name="android.intent.category.BROWSABLE" />
|
||||
|
||||
<data
|
||||
android:host="com.huawei.codelabpush"
|
||||
android:path="/deeplink"
|
||||
android:scheme="yinmengpushscheme" />
|
||||
</intent-filter>
|
||||
</activity>
|
||||
<activity
|
||||
android:name="com.tencent.bugly.beta.ui.BetaActivity"
|
||||
android:configChanges="keyboardHidden|orientation|screenSize|locale"
|
||||
android:theme="@android:style/Theme.Translucent" />
|
||||
<activity
|
||||
android:name="com.nnbc123.core.pay.PaymentActivity"
|
||||
android:launchMode="singleTask"
|
||||
android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen" /> <!-- tinker配置 end ########################################################## -->
|
||||
<!-- 支付相关配置 -->
|
||||
<!-- 微信支付需要注册 -->
|
||||
<activity-alias
|
||||
android:name="${applicationId}.wxapi.WXPayEntryActivity"
|
||||
android:exported="true"
|
||||
android:targetActivity="com.nnbc123.core.pay.PaymentActivity" /> <!-- 支付相关配置 -->
|
||||
<!-- shareSDK配置 end ####################################################### -->
|
||||
<service
|
||||
android:name="com.nnbc123.app.service.DaemonService"
|
||||
@@ -426,8 +317,8 @@
|
||||
|
||||
<!-- 此处scheme值需要替换为后台设置中的scheme值 -->
|
||||
<data
|
||||
android:host="linkedme"
|
||||
android:scheme="yinmengnnbc" />
|
||||
android:host="main"
|
||||
android:scheme="yinmapp" />
|
||||
|
||||
<action android:name="android.intent.action.VIEW" />
|
||||
|
||||
@@ -473,7 +364,7 @@
|
||||
android:launchMode="singleTop"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name="com.nnbc123.app.UserGuideActivity"
|
||||
android:name="com.nnbc123.app.guide.UserGuideActivity"
|
||||
android:label="引导页"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
@@ -483,7 +374,7 @@
|
||||
android:name="com.nnbc123.app.ui.search.SearchUserActivity"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name="com.nnbc123.app.MainActivity"
|
||||
android:name="com.nnbc123.app.main.MainActivity"
|
||||
android:configChanges="orientation|keyboardHidden|screenSize"
|
||||
android:label="音萌"
|
||||
android:launchMode="singleTask"
|
||||
@@ -494,15 +385,7 @@
|
||||
android:screenOrientation="portrait"
|
||||
android:theme="@style/OnePixelActivity" />
|
||||
<activity
|
||||
android:name="com.nnbc123.app.MiddleActivity"
|
||||
android:noHistory="true"
|
||||
android:screenOrientation="portrait">
|
||||
<meta-data
|
||||
android:name="linkedme.sdk.auto_link_keys"
|
||||
android:value="linkedme" />
|
||||
</activity>
|
||||
<activity
|
||||
android:name="com.nnbc123.app.NimMiddleActivity"
|
||||
android:name="com.nnbc123.app.ui.im.NimMiddleActivity"
|
||||
android:noHistory="true"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
@@ -779,7 +662,7 @@
|
||||
android:screenOrientation="portrait"
|
||||
android:windowSoftInputMode="stateHidden|adjustResize" />
|
||||
<activity
|
||||
android:name="com.nnbc123.app.ErbanTakePhotoActivity"
|
||||
android:name="com.nnbc123.app.takephoto.app.ErbanTakePhotoActivity"
|
||||
android:screenOrientation="portrait"
|
||||
android:windowSoftInputMode="stateHidden|adjustResize" />
|
||||
<activity
|
||||
@@ -1177,7 +1060,7 @@
|
||||
android:name="com.nnbc123.app.shipantics.RadishRankingActivity"
|
||||
android:theme="@style/room_message_activity" />
|
||||
<activity
|
||||
android:name="com.nnbc123.app.home.activity.MoreRoomActivity"
|
||||
android:name="com.nnbc123.app.game_room.GameRoomActivity"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name="com.nnbc123.app.avroom.wishlist.WishListCreateActivity"
|
||||
@@ -1239,6 +1122,9 @@
|
||||
android:exported="false"
|
||||
android:screenOrientation="portrait"
|
||||
android:theme="@style/AppThemeUCrop" />
|
||||
<activity
|
||||
android:name=".ui.agent.AgentActivity"
|
||||
android:theme="@android:style/Theme.Translucent.NoTitleBar" />
|
||||
</application>
|
||||
|
||||
</manifest>
|
BIN
app/src/main/assets/svga/home_living_white.svga
Normal file
BIN
app/src/main/assets/svga/home_living_white.svga
Normal file
Binary file not shown.
BIN
app/src/main/assets/svga/home_voice_playing.svga
Normal file
BIN
app/src/main/assets/svga/home_voice_playing.svga
Normal file
Binary file not shown.
BIN
app/src/main/assets/svga/refresh_header.svga
Normal file
BIN
app/src/main/assets/svga/refresh_header.svga
Normal file
Binary file not shown.
BIN
app/src/main/assets/svga/user_in_live.svga
Normal file
BIN
app/src/main/assets/svga/user_in_live.svga
Normal file
Binary file not shown.
@@ -1,77 +0,0 @@
|
||||
package com.nnbc123.app;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.util.Log;
|
||||
|
||||
import com.microquation.linkedme.android.LinkedME;
|
||||
import com.microquation.linkedme.android.util.LinkProperties;
|
||||
import com.netease.nim.uikit.common.util.log.LogUtil;
|
||||
import com.nnbc123.app.base.BaseActivity;
|
||||
import com.nnbc123.core.linked.LinkedModel;
|
||||
import com.nnbc123.core.linked.bean.LinkedInfo;
|
||||
|
||||
import java.util.HashMap;
|
||||
|
||||
/**
|
||||
* Created by chenran on 2017/8/5.
|
||||
*/
|
||||
|
||||
public class MiddleActivity extends BaseActivity {
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
if (getIntent() != null) {
|
||||
//获取与深度链接相关的值
|
||||
LinkProperties linkProperties = getIntent().getParcelableExtra(LinkedME.LM_LINKPROPERTIES);
|
||||
if (linkProperties != null) {
|
||||
Log.i("LinkedME-Demo", "Channel " + linkProperties.getChannel());
|
||||
Log.i("LinkedME-Demo", "control params " + linkProperties.getControlParams());
|
||||
Log.i("LinkedME-Demo", "link(深度链接) " + linkProperties.getLMLink());
|
||||
Log.i("LinkedME-Demo", "是否为新安装 " + linkProperties.isLMNewUser());
|
||||
//获取自定义参数封装成的hashmap对象,参数键值对由集成方定义
|
||||
|
||||
HashMap<String, String> hashMap = linkProperties.getControlParams();
|
||||
LogUtil.print("linkedme", hashMap);
|
||||
//根据key获取传入的参数的值,该key关键字View可为任意值,由集成方规定,请与web端商议,一致即可
|
||||
LinkedInfo linkedInfo = new LinkedInfo();
|
||||
linkedInfo.setNewUser(linkProperties.isLMNewUser());
|
||||
String roomuid = hashMap.get("roomuid");
|
||||
String uid = hashMap.get("uid");
|
||||
String channel = hashMap.get("linkedmeChannel");
|
||||
String type = hashMap.get("type");
|
||||
String familyId = hashMap.get("familyId");
|
||||
String url = hashMap.get("url");
|
||||
String worldId = hashMap.get("worldId");
|
||||
String dynamicId = hashMap.get("dynamicId");
|
||||
String inviteCode = hashMap.get("inviteCode");
|
||||
if (roomuid != null) {
|
||||
linkedInfo.setRoomUid(roomuid);
|
||||
}
|
||||
if (uid != null) {
|
||||
linkedInfo.setUid(uid);
|
||||
}
|
||||
if (type != null) {
|
||||
linkedInfo.setType(type);
|
||||
}
|
||||
if (familyId != null) {
|
||||
linkedInfo.setFamilyId(familyId);
|
||||
}
|
||||
if (url != null) {
|
||||
linkedInfo.setUrl(url);
|
||||
}
|
||||
if (worldId != null) {
|
||||
linkedInfo.setWorldId(worldId);
|
||||
}
|
||||
if (dynamicId != null) {
|
||||
linkedInfo.setDynamicId(dynamicId);
|
||||
}
|
||||
|
||||
linkedInfo.setInviteCode(inviteCode);
|
||||
|
||||
LinkedModel.get().setLinkedInfo(linkedInfo);
|
||||
}
|
||||
}
|
||||
finish();
|
||||
}
|
||||
}
|
@@ -1,25 +1,15 @@
|
||||
package com.nnbc123.app.application;
|
||||
|
||||
import static com.nnbc123.xchat_android_constants.XChatConstants.HW_APP_ID;
|
||||
import static com.nnbc123.xchat_android_constants.XChatConstants.HW_CERTIFICATE_NAME;
|
||||
import static com.nnbc123.xchat_android_constants.XChatConstants.OPPO_APP_ID;
|
||||
import static com.nnbc123.xchat_android_constants.XChatConstants.OPPO_APP_KEY;
|
||||
import static com.nnbc123.xchat_android_constants.XChatConstants.OPPO_CERTIFICATE_NAME;
|
||||
import static com.nnbc123.xchat_android_constants.XChatConstants.OPPO_SECRET;
|
||||
import static com.nnbc123.xchat_android_constants.XChatConstants.VIVO_CERTIFICATE_NAME;
|
||||
import static com.nnbc123.xchat_android_constants.XChatConstants.XM_APP_ID;
|
||||
import static com.nnbc123.xchat_android_constants.XChatConstants.XM_APP_KEY;
|
||||
import static com.nnbc123.xchat_android_constants.XChatConstants.XM_CERTIFICATE_NAME;
|
||||
import static com.nnbc123.core.im.custom.bean.CustomAttachment.CUSTOM_MSG_HEADER_TYPE_OPEN_ROOM_NOTI;
|
||||
|
||||
import android.annotation.SuppressLint;
|
||||
import android.annotation.TargetApi;
|
||||
import android.app.Activity;
|
||||
import android.app.Application;
|
||||
import android.content.Context;
|
||||
import android.graphics.Color;
|
||||
import android.net.http.HttpResponseCache;
|
||||
import android.os.Build;
|
||||
import android.os.Environment;
|
||||
import android.provider.Settings;
|
||||
import android.text.TextUtils;
|
||||
import android.util.Log;
|
||||
@@ -28,14 +18,13 @@ import androidx.multidex.MultiDex;
|
||||
|
||||
import com.bumptech.glide.request.target.ViewTarget;
|
||||
import com.bytedance.hume.readapk.HumeSDK;
|
||||
import com.chu.utils.MetaDataUtils;
|
||||
import com.coorchice.library.utils.LogUtils;
|
||||
import com.facebook.stetho.Stetho;
|
||||
import com.heytap.msp.push.HeytapPushManager;
|
||||
import com.hjq.toast.ToastUtils;
|
||||
import com.huawei.hms.support.common.ActivityMgr;
|
||||
import com.llew.huawei.verifier.LoadedApkHuaWei;
|
||||
import com.microquation.linkedme.android.LinkedME;
|
||||
import com.mob.MobSDK;
|
||||
import com.mob.moblink.MobLink;
|
||||
import com.mob.moblink.RestoreSceneListener;
|
||||
import com.mob.moblink.Scene;
|
||||
import com.netease.nim.uikit.api.NimUIKit;
|
||||
import com.netease.nim.uikit.common.util.log.LogUtil;
|
||||
import com.netease.nimlib.sdk.NIMClient;
|
||||
@@ -48,7 +37,8 @@ import com.netease.nimlib.sdk.msg.MessageNotifierCustomization;
|
||||
import com.netease.nimlib.sdk.msg.constant.MsgTypeEnum;
|
||||
import com.netease.nimlib.sdk.msg.model.IMMessage;
|
||||
import com.netease.nimlib.sdk.util.NIMUtil;
|
||||
import com.nnbc123.app.qiyukefu.CustomerServerHelper;
|
||||
import com.nnbc123.app.ui.agent.AgentActivity;
|
||||
import com.nnbc123.core.interceptor.PathInterceptor;
|
||||
import com.nnbc123.library.common.application.BaseApp;
|
||||
import com.nnbc123.library.common.file.FileHelper;
|
||||
import com.nnbc123.library.utils.ResUtil;
|
||||
@@ -58,24 +48,16 @@ import com.orhanobut.logger.Logger;
|
||||
import com.scwang.smartrefresh.header.MaterialHeader;
|
||||
import com.scwang.smartrefresh.layout.SmartRefreshLayout;
|
||||
import com.scwang.smartrefresh.layout.footer.ClassicsFooter;
|
||||
import com.tencent.bugly.Bugly;
|
||||
import com.tencent.bugly.beta.Beta;
|
||||
import com.tencent.bugly.crashreport.CrashReport;
|
||||
import com.tencent.vasdolly.helper.ChannelReaderUtil;
|
||||
import com.umeng.analytics.MobclickAgent;
|
||||
import com.umeng.commonsdk.UMConfigure;
|
||||
import com.nnbc123.core.statistic.StatisticManager;
|
||||
import com.nnbc123.app.BuildConfig;
|
||||
import com.nnbc123.app.MainActivity;
|
||||
import com.nnbc123.app.MiddleActivity;
|
||||
import com.nnbc123.app.NimMiddleActivity;
|
||||
import com.nnbc123.app.ui.im.NimMiddleActivity;
|
||||
import com.nnbc123.app.R;
|
||||
import com.nnbc123.app.module_hall.HallDataManager;
|
||||
import com.nnbc123.app.other.activity.SplashActivity;
|
||||
import com.nnbc123.app.quick_pass.QuickPassLoginAct;
|
||||
import com.nnbc123.app.radish.wallet.RadishWalletManager;
|
||||
import com.nnbc123.app.utils.PushMessageHandler;
|
||||
import com.nnbc123.xchat_android_constants.XChatConstants;
|
||||
import com.nnbc123.core.Constants;
|
||||
import com.nnbc123.core.XChatConstants;
|
||||
import com.nnbc123.core.CoreConstants;
|
||||
import com.nnbc123.core.DemoCache;
|
||||
import com.nnbc123.core.Env;
|
||||
import com.nnbc123.core.UriProvider;
|
||||
@@ -98,7 +80,6 @@ import com.nnbc123.core.public_chat_hall.model.PublicChatHallModel;
|
||||
import com.nnbc123.core.radish.RadishModel;
|
||||
import com.nnbc123.core.radish.signin.bean.ImNotice;
|
||||
import com.nnbc123.core.room.face.DynamicFaceModel;
|
||||
import com.nnbc123.core.statistic.StatisticManager;
|
||||
import com.nnbc123.core.statistic.protocol.StatisticsProtocol;
|
||||
import com.nnbc123.core.user.UserModel;
|
||||
import com.nnbc123.core.user.event.NeedCompleteInfoEvent;
|
||||
@@ -213,12 +194,12 @@ public class XChatApplication extends BaseApp {
|
||||
// 初始化 sp
|
||||
long startTime = System.currentTimeMillis();
|
||||
|
||||
String channel = "";
|
||||
channel = ChannelReaderUtil.getChannel(instance);
|
||||
String channel;
|
||||
channel = MetaDataUtils.INSTANCE.getStringData(CoreConstants.CHANNEL_KEY, application);
|
||||
if (TextUtils.isEmpty(channel)) {
|
||||
channel = "official";
|
||||
channel = com.nnbc123.library.common.Constants.CHANNEL_DEF;
|
||||
}
|
||||
|
||||
Log.d("XChatApplication", "channel:" + channel);
|
||||
BasicConfig.INSTANCE.setOriginalChannel(channel);
|
||||
|
||||
//头条分包渠道
|
||||
@@ -228,11 +209,11 @@ public class XChatApplication extends BaseApp {
|
||||
channel = byteDanceChannel;
|
||||
}
|
||||
}
|
||||
Log.d("XChatApplication", "channel2:" + channel);
|
||||
BasicConfig.INSTANCE.setChannel(channel);
|
||||
|
||||
initEnv();
|
||||
|
||||
ActivityMgr.INST.init((Application) context);
|
||||
//延迟初始化云信
|
||||
NIMClient.init(context, null, options());
|
||||
|
||||
@@ -246,8 +227,6 @@ public class XChatApplication extends BaseApp {
|
||||
|
||||
ToastUtils.init(application);
|
||||
if (inMainProcess(context)) {
|
||||
HeytapPushManager.init(context, true);
|
||||
|
||||
DemoCache.saveLaunchCount();
|
||||
// 注册自定义推送消息处理,这个是可选项
|
||||
NIMPushClient.registerMixPushMessageHandler(new PushMessageHandler());
|
||||
@@ -276,37 +255,15 @@ public class XChatApplication extends BaseApp {
|
||||
ViewTarget.setTagId(R.id.tag_glide);
|
||||
|
||||
init(channel);
|
||||
initStetho(context);
|
||||
|
||||
if (!TextUtils.isEmpty(channel)) {
|
||||
CrashReport.setAppChannel(context, channel);
|
||||
}
|
||||
initBuglyUpdate();
|
||||
Bugly.init(context, BuildConfig.DEBUG ? XChatConstants.BUGLY_KEY_DEBUG : XChatConstants.BUGLY_KEY_RELEASE, BuildConfig.DEBUG);
|
||||
|
||||
//生命周期监听
|
||||
if (lifeManager == null) {
|
||||
lifeManager = new ActivityLifeManager();
|
||||
}
|
||||
registerActivityLifecycleCallback(lifeManager);
|
||||
dealHuaWeiCrash();
|
||||
initLinkedMe();
|
||||
LinkedME.getInstance().setImmediate(true);
|
||||
MobSDK.init(context);
|
||||
MobSDK.submitPolicyGrantResult(true);
|
||||
// 友盟统计初始化
|
||||
UMConfigure.init(context, XChatConstants.UMENG_APP_KEY,
|
||||
BasicConfig.INSTANCE.getChannel(), UMConfigure.DEVICE_TYPE_PHONE, null);
|
||||
// 选用MANUAL页面采集模式
|
||||
MobclickAgent.setPageCollectionMode(MobclickAgent.PageMode.MANUAL);
|
||||
// 支持在子进程中统计自定义事件
|
||||
UMConfigure.setProcessEvent(true);
|
||||
// 日志加密
|
||||
UMConfigure.setEncryptEnabled(true);
|
||||
// 集成测试
|
||||
UMConfigure.setLogEnabled(BuildConfig.DEBUG);
|
||||
} else {
|
||||
CustomerServerHelper.init(instance, null);
|
||||
}
|
||||
|
||||
LogUtils.d("init time = " + (System.currentTimeMillis() - startTime) + "ms");
|
||||
@@ -318,15 +275,21 @@ public class XChatApplication extends BaseApp {
|
||||
* 初始化linkedMe
|
||||
*/
|
||||
private static void initLinkedMe() {
|
||||
LinkedME.getInstance(instance, XChatConstants.LINKED_ME_KEY);
|
||||
if (isDebug()) {
|
||||
//设置debug模式下打印LinkedME日志
|
||||
LinkedME.getInstance().setDebug();
|
||||
}
|
||||
//初始时请设置为false
|
||||
LinkedME.getInstance().setImmediate(false);
|
||||
//设置处理跳转逻辑的中转页,MiddleActivity详见后续配置
|
||||
LinkedME.getInstance().setHandleActivity(MiddleActivity.class.getName());
|
||||
MobSDK.init(instance, "391a13e3d2f0f", "66c1b96ec3546d4df709154dc3069a7d");
|
||||
MobLink.setRestoreSceneListener(new RestoreSceneListener() {
|
||||
@Override
|
||||
public Class<? extends Activity> willRestoreScene(Scene scene) {
|
||||
return AgentActivity.class;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void completeRestore(Scene scene) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void notFoundScene(Scene scene) {
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private static void initEnv() {
|
||||
@@ -334,24 +297,12 @@ public class XChatApplication extends BaseApp {
|
||||
Env.initEnv(BuildConfig.BUILD_TYPE, BuildConfig.DEBUG);
|
||||
//切换生产坏境和测试环境 true/测试环境 false/生产环境
|
||||
BasicConfig.INSTANCE.setDebuggable(Env.isDebug());
|
||||
BasicConfig.INSTANCE.setRootDir(Constants.ERBAN_DIR_NAME);
|
||||
BasicConfig.INSTANCE.setLogDir(Constants.LOG_DIR);
|
||||
BasicConfig.INSTANCE.setConfigDir(Constants.CONFIG_DIR);
|
||||
BasicConfig.INSTANCE.setVoiceDir(Constants.VOICE_DIR);
|
||||
BasicConfig.INSTANCE.setCacheDir(Constants.CACHE_DIR);
|
||||
BasicConfig.INSTANCE.setImageDir(Constants.IMAGE_CACHE_DIR);
|
||||
}
|
||||
|
||||
|
||||
private static void dealHuaWeiCrash() {
|
||||
String brand = Build.BRAND;
|
||||
String manufacturer = Build.MANUFACTURER;
|
||||
if (!TextUtils.isEmpty(brand) && (
|
||||
"HUAWEI".toLowerCase().equals(brand.toLowerCase())
|
||||
|| "HONOR".toLowerCase().equals(brand.toLowerCase())
|
||||
|| "HUAWEI".equals(manufacturer))) {
|
||||
LoadedApkHuaWei.hookHuaWeiVerifier((Application) instance.getApplicationContext());
|
||||
}
|
||||
BasicConfig.INSTANCE.setRootDir(CoreConstants.ERBAN_DIR_NAME);
|
||||
BasicConfig.INSTANCE.setLogDir(CoreConstants.LOG_DIR);
|
||||
BasicConfig.INSTANCE.setConfigDir(CoreConstants.CONFIG_DIR);
|
||||
BasicConfig.INSTANCE.setVoiceDir(CoreConstants.VOICE_DIR);
|
||||
BasicConfig.INSTANCE.setCacheDir(CoreConstants.CACHE_DIR);
|
||||
BasicConfig.INSTANCE.setImageDir(CoreConstants.IMAGE_CACHE_DIR);
|
||||
}
|
||||
|
||||
@TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH)
|
||||
@@ -388,7 +339,7 @@ public class XChatApplication extends BaseApp {
|
||||
// 定制通知栏提醒文案(可选,如果不定制将采用SDK默认文案)
|
||||
options.messageNotifierCustomization = messageNotifierCustomization;
|
||||
|
||||
options.appKey = Constants.nimAppKey;
|
||||
options.appKey = CoreConstants.nimAppKey;
|
||||
options.shouldConsiderRevokedMessageUnreadCount = true;
|
||||
|
||||
// 配置保存图片,文件,log 等数据的目录
|
||||
@@ -414,21 +365,6 @@ public class XChatApplication extends BaseApp {
|
||||
DemoCache.setNotificationConfig(config);
|
||||
|
||||
MixPushConfig mixPushConfig = new MixPushConfig();
|
||||
//华为推送
|
||||
mixPushConfig.hwAppId = HW_APP_ID;
|
||||
mixPushConfig.hwCertificateName = HW_CERTIFICATE_NAME;
|
||||
//小米推送
|
||||
mixPushConfig.xmAppId = XM_APP_ID;
|
||||
mixPushConfig.xmAppKey = XM_APP_KEY;
|
||||
mixPushConfig.xmCertificateName = XM_CERTIFICATE_NAME;
|
||||
|
||||
//vivo推送
|
||||
mixPushConfig.vivoCertificateName = VIVO_CERTIFICATE_NAME;
|
||||
//oppo推送
|
||||
mixPushConfig.oppoAppId = OPPO_APP_ID;
|
||||
mixPushConfig.oppoAppKey = OPPO_APP_KEY;
|
||||
mixPushConfig.oppoAppSercet = OPPO_SECRET;
|
||||
mixPushConfig.oppoCertificateName = OPPO_CERTIFICATE_NAME;
|
||||
options.mixPushConfig = mixPushConfig;
|
||||
|
||||
return options;
|
||||
@@ -446,58 +382,6 @@ public class XChatApplication extends BaseApp {
|
||||
return packageName.equals(processName);
|
||||
}
|
||||
|
||||
/**
|
||||
* 初始化bugly版本升级
|
||||
*/
|
||||
private static void initBuglyUpdate() {
|
||||
/***** Beta高级设置 *****/
|
||||
/**
|
||||
* true表示app启动自动初始化升级模块;
|
||||
* false不会自动初始化;
|
||||
* 开发者如果担心sdk初始化影响app启动速度,可以设置为false,
|
||||
* 在后面某个时刻手动调用Beta.init(getApplicationContext(),false);
|
||||
*/
|
||||
// Beta.autoInit = true;
|
||||
/**
|
||||
* true表示初始化时自动检查升级;
|
||||
* false表示不会自动检查升级,需要手动调用Beta.checkUpgrade()方法;
|
||||
*/
|
||||
// Beta.autoCheckUpgrade = true;
|
||||
/**
|
||||
* 设置升级检查周期为60s(默认检查周期为0s),60s内SDK不重复向后台请求策略);
|
||||
*/
|
||||
// Beta.upgradeCheckPeriod = 60 * 1000;
|
||||
|
||||
/**
|
||||
* 设置启动延时为1s(默认延时3s),APP启动1s后初始化SDK,避免影响APP启动速度;
|
||||
*/
|
||||
Beta.initDelay = 6 * 1000;
|
||||
|
||||
/**
|
||||
* 设置sd卡的Download为更新资源保存目录;
|
||||
* 后续更新资源会保存在此目录,需要在manifest中添加WRITE_EXTERNAL_STORAGE权限;
|
||||
*/
|
||||
// Beta.storageDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS);
|
||||
|
||||
/**
|
||||
* 点击过确认的弹窗在APP下次启动自动检查更新时会再次显示;
|
||||
*/
|
||||
Beta.showInterruptedStrategy = true;
|
||||
|
||||
/**
|
||||
* 只允许在MainActivity上显示更新弹窗,其他activity上不显示弹窗;
|
||||
* 不设置会默认所有activity都可以显示弹窗;
|
||||
* 2021/6/22 增加登录页面也可以弹出,万一域名挂了还可以用bugly更新!!
|
||||
*/
|
||||
Beta.canShowUpgradeActs.add(MainActivity.class);
|
||||
Beta.canShowUpgradeActs.add(QuickPassLoginAct.class);
|
||||
/**
|
||||
* 自定义布局
|
||||
*/
|
||||
Beta.upgradeDialogLayoutId = R.layout.upgrade_dialog;//关键代码写这个布局添加自己想要的
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 初始化RxNet
|
||||
*
|
||||
@@ -521,6 +405,7 @@ public class XChatApplication extends BaseApp {
|
||||
RxNet.init(context)
|
||||
.debug(BuildConfig.DEBUG)
|
||||
.setBaseUrl(url)
|
||||
.addInterceptors(new PathInterceptor())
|
||||
.addInterceptors(new ParamsInterceptor(httpParams))
|
||||
.addInterceptors(new NoParamsInterceptor())//注意:拦截器的添加顺序,请求的拦截顺序
|
||||
.build();
|
||||
@@ -660,24 +545,9 @@ public class XChatApplication extends BaseApp {
|
||||
@Override
|
||||
public void onTerminate() {
|
||||
super.onTerminate();
|
||||
CrashReport.closeBugly();
|
||||
if (lifeManager != null) {
|
||||
unregisterActivityLifecycleCallbacks(lifeManager);
|
||||
}
|
||||
GlobalHandleManager.get().unInit();
|
||||
}
|
||||
|
||||
/**
|
||||
* 初始化Stetho(网络调试)
|
||||
*/
|
||||
private static void initStetho(Context context) {
|
||||
if (Env.isDebug()) {
|
||||
Stetho.initialize(
|
||||
Stetho.newInitializerBuilder(context)
|
||||
.enableDumpapp(Stetho.defaultDumperPluginsProvider(context))
|
||||
.enableWebKitInspector(Stetho.defaultInspectorModulesProvider(context))
|
||||
.build()
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -10,7 +10,7 @@ import androidx.recyclerview.widget.RecyclerView;
|
||||
import android.view.View;
|
||||
|
||||
import com.nnbc123.app.R;
|
||||
import com.nnbc123.app.UIHelper;
|
||||
import com.nnbc123.app.utils.UIHelper;
|
||||
import com.nnbc123.app.audio.adapter.MyVoiceListAdapter;
|
||||
import com.nnbc123.app.audio.helper.AudioPlayerHelper;
|
||||
import com.nnbc123.app.audio.presenter.MyVoicePresenter;
|
||||
|
@@ -20,7 +20,7 @@ import com.opensource.svgaplayer.SVGACallback;
|
||||
import com.opensource.svgaplayer.SVGAImageView;
|
||||
import com.trello.rxlifecycle3.android.ActivityEvent;
|
||||
import com.nnbc123.app.R;
|
||||
import com.nnbc123.app.UIHelper;
|
||||
import com.nnbc123.app.utils.UIHelper;
|
||||
import com.nnbc123.app.audio.helper.AudioPlayerHelper;
|
||||
import com.nnbc123.app.audio.helper.OnPlayListener;
|
||||
import com.nnbc123.app.audio.helper.OnRefreshListener;
|
||||
|
@@ -12,7 +12,7 @@ import com.chad.library.adapter.base.BaseViewHolder;
|
||||
import com.nnbc123.app.R;
|
||||
import com.nnbc123.app.audio.widget.VoiceLine;
|
||||
import com.nnbc123.core.audio.bean.UserVoiceInfo;
|
||||
import com.nnbc123.core.utils.StringUtils;
|
||||
import com.nnbc123.core.utils.CStringUtils;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
@@ -103,7 +103,7 @@ public class MyVoiceListAdapter extends BaseQuickAdapter<UserVoiceInfo, BaseView
|
||||
});
|
||||
// 点击播放声音/停止声音
|
||||
helper.voiceBarLayout.setOnClickListener(view -> {
|
||||
if (StringUtils.isEmpty(item.getVoiceUrl())) {
|
||||
if (CStringUtils.isEmpty(item.getVoiceUrl())) {
|
||||
return;
|
||||
}
|
||||
boolean isChange = helper.getAdapterPosition() != voiceClickPos;
|
||||
@@ -138,7 +138,7 @@ public class MyVoiceListAdapter extends BaseQuickAdapter<UserVoiceInfo, BaseView
|
||||
});
|
||||
// 点击播放声音/停止声音
|
||||
helper.voiceBarLayout.setOnClickListener(view -> {
|
||||
if (StringUtils.isEmpty(item.getVoiceUrl())) {
|
||||
if (CStringUtils.isEmpty(item.getVoiceUrl())) {
|
||||
return;
|
||||
}
|
||||
boolean isChange = helper.getAdapterPosition() != voiceClickPos;
|
||||
@@ -175,7 +175,7 @@ public class MyVoiceListAdapter extends BaseQuickAdapter<UserVoiceInfo, BaseView
|
||||
});
|
||||
// 点击播放声音/停止声音
|
||||
helper.voiceBarLayout.setOnClickListener(view -> {
|
||||
if (StringUtils.isEmpty(item.getVoiceUrl())) {
|
||||
if (CStringUtils.isEmpty(item.getVoiceUrl())) {
|
||||
return;
|
||||
}
|
||||
boolean isChange = helper.getAdapterPosition() != voiceClickPos;
|
||||
|
@@ -93,7 +93,7 @@ public class AudioPlayerHelper {
|
||||
|
||||
try {
|
||||
player.setDataSource(filePath);
|
||||
} catch (IOException e) {
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
preparing = true;
|
||||
@@ -122,6 +122,9 @@ public class AudioPlayerHelper {
|
||||
}
|
||||
|
||||
public void endPlay() {
|
||||
if (listener != null) {
|
||||
listener.onCompletion();
|
||||
}
|
||||
handler.removeMessages(WHAT_STATUS.COUNT_PLAY);
|
||||
if (player != null) {
|
||||
if (preparing) {
|
||||
|
@@ -11,7 +11,7 @@ import com.opensource.svgaplayer.SVGAParser;
|
||||
import com.opensource.svgaplayer.SVGAVideoEntity;
|
||||
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import io.reactivex.Single;
|
||||
import io.reactivex.SingleOnSubscribe;
|
||||
|
@@ -14,7 +14,7 @@ import android.widget.TextView;
|
||||
import com.coorchice.library.SuperTextView;
|
||||
import com.opensource.svgaplayer.SVGAImageView;
|
||||
import com.nnbc123.app.R;
|
||||
import com.nnbc123.app.UIHelper;
|
||||
import com.nnbc123.app.utils.UIHelper;
|
||||
import com.nnbc123.app.audio.VoiceMatchActivity;
|
||||
import com.nnbc123.app.audio.helper.OnPlayListener;
|
||||
import com.nnbc123.app.audio.helper.SvgaCacheManager;
|
||||
@@ -22,7 +22,7 @@ import com.nnbc123.app.audio.helper.VmSoundManager;
|
||||
import com.nnbc123.app.common.widget.CircleImageView;
|
||||
import com.nnbc123.app.ui.utils.ImageLoadUtils;
|
||||
import com.nnbc123.app.ui.widget.magicindicator.buildins.UIUtil;
|
||||
import com.nnbc123.xchat_android_constants.XChatConstants;
|
||||
import com.nnbc123.core.XChatConstants;
|
||||
import com.nnbc123.core.audio.bean.VoiceMatchInfo;
|
||||
import com.nnbc123.core.auth.AuthModel;
|
||||
import com.nnbc123.core.statistic.StatisticManager;
|
||||
|
@@ -10,7 +10,7 @@ import com.netease.nimlib.sdk.chatroom.model.ChatRoomMember;
|
||||
import com.netease.nimlib.sdk.chatroom.model.ChatRoomMessage;
|
||||
import com.orhanobut.logger.Logger;
|
||||
import com.nnbc123.app.R;
|
||||
import com.nnbc123.app.UIHelper;
|
||||
import com.nnbc123.app.utils.UIHelper;
|
||||
import com.nnbc123.app.avroom.widget.ViewItem;
|
||||
import com.nnbc123.app.common.widget.dialog.DialogManager;
|
||||
import com.nnbc123.app.public_chat_hall.widget.ShutUpDialog;
|
||||
|
@@ -72,7 +72,7 @@ import com.nnbc123.app.ui.widget.dialog.AllServiceGiftLevelTwoDialog;
|
||||
import com.nnbc123.app.ui.widget.dialog.MonsterDialog;
|
||||
import com.nnbc123.app.ui.widget.marqueeview.Utils;
|
||||
import com.nnbc123.app.utils.UserUtils;
|
||||
import com.nnbc123.core.Constants;
|
||||
import com.nnbc123.core.CoreConstants;
|
||||
import com.nnbc123.core.DemoCache;
|
||||
import com.nnbc123.core.auth.AuthModel;
|
||||
import com.nnbc123.core.auth.event.LogoutEvent;
|
||||
@@ -90,9 +90,9 @@ import com.nnbc123.core.module_hall.hall.HallModel;
|
||||
import com.nnbc123.core.module_hall.hall.bean.SuperAdminInfo;
|
||||
import com.nnbc123.core.monsterhunting.bean.MonsterHuntingResult;
|
||||
import com.nnbc123.core.monsterhunting.bean.MonsterInfo;
|
||||
import com.nnbc123.core.monsterhunting.bean.MonsterProtocol;
|
||||
import com.nnbc123.core.monsterhunting.bean.MonsterProtocolDataBean;
|
||||
import com.nnbc123.core.monsterhunting.manager.MonsterDataManager;
|
||||
import com.nnbc123.core.noble.AllServiceGiftProtocol;
|
||||
import com.nnbc123.core.noble.AllServiceGiftProtocolDataBean;
|
||||
import com.nnbc123.core.noble.NobleInfo;
|
||||
import com.nnbc123.core.noble.NobleResourceType;
|
||||
import com.nnbc123.core.noble.NobleUtil;
|
||||
@@ -116,7 +116,7 @@ import com.nnbc123.core.super_admin.util.SuperAdminUtil;
|
||||
import com.nnbc123.core.user.UserModel;
|
||||
import com.nnbc123.core.user.bean.UserInfo;
|
||||
import com.nnbc123.core.utils.LogUtils;
|
||||
import com.nnbc123.core.utils.StringUtils;
|
||||
import com.nnbc123.core.utils.CStringUtils;
|
||||
import com.nnbc123.library.base.factory.CreatePresenter;
|
||||
import com.nnbc123.library.rxbus.RxBus;
|
||||
import com.nnbc123.library.utils.JavaUtil;
|
||||
@@ -127,7 +127,6 @@ import com.opensource.svgaplayer.SVGAImageView;
|
||||
import com.opensource.svgaplayer.SVGAParser;
|
||||
import com.opensource.svgaplayer.SVGAVideoEntity;
|
||||
import com.orhanobut.logger.Logger;
|
||||
import com.tencent.bugly.crashreport.CrashReport;
|
||||
|
||||
import org.greenrobot.eventbus.EventBus;
|
||||
import org.greenrobot.eventbus.Subscribe;
|
||||
@@ -198,7 +197,7 @@ public class AVRoomActivity extends BaseMvpActivity<IAvRoomView, AvRoomPresenter
|
||||
|
||||
private GiftBroadcastObserver giftObserver;
|
||||
private Dialog giftDialog;
|
||||
private LinkedList<AllServiceGiftProtocol.DataBean> giftList;
|
||||
private LinkedList<AllServiceGiftProtocolDataBean> giftList;
|
||||
private boolean isResume = true;
|
||||
@Nullable
|
||||
private SingleRoomTipDialog singleRoomTipDialog;
|
||||
@@ -236,8 +235,8 @@ public class AVRoomActivity extends BaseMvpActivity<IAvRoomView, AvRoomPresenter
|
||||
return;
|
||||
}
|
||||
Intent intent = new Intent(context, AVRoomActivity.class);
|
||||
intent.putExtra(Constants.ROOM_INFO, (Parcelable) roomInfo);
|
||||
intent.putExtra(Constants.ROOM_UID, roomInfo.getUid());
|
||||
intent.putExtra(CoreConstants.ROOM_INFO, (Parcelable) roomInfo);
|
||||
intent.putExtra(CoreConstants.ROOM_UID, roomInfo.getUid());
|
||||
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||
context.startActivity(intent);
|
||||
StatisticManager.Instance().onEvent(StatisticsProtocol.EVENT_INTO_ROOM_CLICK, "进入房间");
|
||||
@@ -255,7 +254,7 @@ public class AVRoomActivity extends BaseMvpActivity<IAvRoomView, AvRoomPresenter
|
||||
return;
|
||||
}
|
||||
Intent intent = new Intent(context, AVRoomActivity.class);
|
||||
intent.putExtra(Constants.ROOM_UID, roomUid);
|
||||
intent.putExtra(CoreConstants.ROOM_UID, roomUid);
|
||||
intent.putExtra("fromType", fromType);
|
||||
if (!TextUtils.isEmpty(fromNick)) {
|
||||
intent.putExtra("fromNick", fromNick);
|
||||
@@ -277,7 +276,7 @@ public class AVRoomActivity extends BaseMvpActivity<IAvRoomView, AvRoomPresenter
|
||||
public static void setBackBg(Context context, RoomInfo roomInfo, SVGAImageView svgaRoomBg, String[] bgPicture) {
|
||||
if (roomInfo != null && svgaRoomBg != null) {
|
||||
if (roomInfo.getRoomBackground() != null) {
|
||||
if (!StringUtils.isBlank(roomInfo.getRoomBackground().getPicUrl())) {
|
||||
if (!CStringUtils.isBlank(roomInfo.getRoomBackground().getPicUrl())) {
|
||||
int resourceType = NobleUtil.getResourceType(roomInfo.getRoomBackground().getPicUrl());
|
||||
if (resourceType == NobleResourceType.URLS) {
|
||||
if (!roomInfo.getRoomBackground().getPicUrl().equals(bgPicture[0])) {
|
||||
@@ -291,7 +290,7 @@ public class AVRoomActivity extends BaseMvpActivity<IAvRoomView, AvRoomPresenter
|
||||
}
|
||||
}
|
||||
}
|
||||
} else if (!StringUtils.isBlank(roomInfo.getBackPic())) {
|
||||
} else if (!CStringUtils.isBlank(roomInfo.getBackPic())) {
|
||||
int resourceType = NobleUtil.getResourceType(roomInfo.getBackPic());
|
||||
if (resourceType == NobleResourceType.URLS) {
|
||||
if (!roomInfo.getBackPic().equals(bgPicture[0])) {
|
||||
@@ -405,11 +404,11 @@ public class AVRoomActivity extends BaseMvpActivity<IAvRoomView, AvRoomPresenter
|
||||
fromNick = intent.getStringExtra("fromNick");
|
||||
fromUid = intent.getStringExtra("fromUid");
|
||||
giftId = intent.getIntExtra("giftId", 0);
|
||||
mRoomInfo = intent.getParcelableExtra(Constants.ROOM_INFO);
|
||||
mRoomInfo = intent.getParcelableExtra(CoreConstants.ROOM_INFO);
|
||||
if (mRoomInfo != null) {
|
||||
roomUid = mRoomInfo.getRoomUid();
|
||||
} else {
|
||||
roomUid = intent.getLongExtra(Constants.ROOM_UID, 0);
|
||||
roomUid = intent.getLongExtra(CoreConstants.ROOM_UID, 0);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -549,7 +548,7 @@ public class AVRoomActivity extends BaseMvpActivity<IAvRoomView, AvRoomPresenter
|
||||
}
|
||||
break;
|
||||
case RoomEvent.MONSTER_STATUS_CHANGED:
|
||||
MonsterProtocol.DataBean dataBean = roomEvent.getMonsterStatusAttachment().getDataBean();
|
||||
MonsterProtocolDataBean dataBean = roomEvent.getMonsterStatusAttachment().getDataBean();
|
||||
Log.e(TAG, "onRoomEventReceive: monster status changed: " + dataBean);
|
||||
RoomInfo myRoomInfo = AvRoomDataManager.get().mCurrentRoomInfo;
|
||||
// 当前为房间页面并且当前房间为怪兽出现房间时才出现通知
|
||||
@@ -597,7 +596,7 @@ public class AVRoomActivity extends BaseMvpActivity<IAvRoomView, AvRoomPresenter
|
||||
// 当前为房间页面并且当前房间为怪兽出现房间时才出现通知
|
||||
if (UIUtils.isTopActivity(AVRoomActivity.this) && currentRoomInfo != null &&
|
||||
currentRoomInfo.getUid() == monsterHuntingResult.getMonster().getAppearRoomUid()) {
|
||||
MonsterProtocol.DataBean monsterInfo = monsterHuntingResult.getMonster();
|
||||
MonsterProtocolDataBean monsterInfo = monsterHuntingResult.getMonster();
|
||||
if (monsterDialog != null && monsterDialog.isShowing()) {
|
||||
monsterDialog.dismiss();
|
||||
}
|
||||
@@ -915,7 +914,7 @@ public class AVRoomActivity extends BaseMvpActivity<IAvRoomView, AvRoomPresenter
|
||||
}
|
||||
dismissLoadingDialog();
|
||||
} catch (Exception e) {
|
||||
CrashReport.postCatchedException(e);
|
||||
StatisticManager.Instance().logException(e);
|
||||
}
|
||||
EventBus.getDefault().unregister(this);
|
||||
super.onDestroy();
|
||||
@@ -1196,14 +1195,14 @@ public class AVRoomActivity extends BaseMvpActivity<IAvRoomView, AvRoomPresenter
|
||||
giftList = new LinkedList<>();
|
||||
}
|
||||
int second2 = baseProtocol.getSecond();
|
||||
AllServiceGiftProtocol.DataBean data = JSON.parseObject(String.valueOf(baseProtocol.getData()), AllServiceGiftProtocol.DataBean.class);
|
||||
AllServiceGiftProtocolDataBean data = JSON.parseObject(String.valueOf(baseProtocol.getData()), AllServiceGiftProtocolDataBean.class);
|
||||
if (data == null || data.getGiftUrl() == null || data.isCeremonyGift())
|
||||
return;
|
||||
giftList.add(data);
|
||||
if (second2 == CUSTOM_MSG_ALL_SERVICE_GIFT) {
|
||||
if (giftDialog != null && giftDialog.isShowing()) {
|
||||
// 如果当前以及有礼物弹窗在展示,则需要等到他 dismiss 后再显示下一个
|
||||
AllServiceGiftProtocol.DataBean dataBean = giftList.peekFirst();
|
||||
AllServiceGiftProtocolDataBean dataBean = giftList.peekFirst();
|
||||
if (dataBean != null) {
|
||||
return;
|
||||
} else {
|
||||
@@ -1241,7 +1240,7 @@ public class AVRoomActivity extends BaseMvpActivity<IAvRoomView, AvRoomPresenter
|
||||
giftDialog = generateAllServiceGiftDialog(this, giftList.peekFirst());
|
||||
giftDialog.setOnDismissListener(dialog -> {
|
||||
giftList.pollFirst();
|
||||
AllServiceGiftProtocol.DataBean dataBean = giftList.peekFirst();
|
||||
AllServiceGiftProtocolDataBean dataBean = giftList.peekFirst();
|
||||
if (dataBean != null) {
|
||||
if (isValid()) {
|
||||
showGiftDialog();
|
||||
@@ -1253,7 +1252,7 @@ public class AVRoomActivity extends BaseMvpActivity<IAvRoomView, AvRoomPresenter
|
||||
giftDialog.show();
|
||||
}
|
||||
|
||||
private AllServiceGiftDialog generateAllServiceGiftDialog(Context context, AllServiceGiftProtocol.DataBean dataBean) {
|
||||
private AllServiceGiftDialog generateAllServiceGiftDialog(Context context, AllServiceGiftProtocolDataBean dataBean) {
|
||||
switch (JavaUtil.str2int(dataBean.getLevelNum())) {
|
||||
default:
|
||||
case AllServiceGiftDialog.ALL_SERVICE_GIFT_LEVEL_1:
|
||||
|
@@ -21,7 +21,7 @@ import com.nnbc123.core.noble.NobleResourceType;
|
||||
import com.nnbc123.core.user.bean.UserInfo;
|
||||
import com.nnbc123.library.base.factory.CreatePresenter;
|
||||
import com.nnbc123.library.utils.ListUtils;
|
||||
import com.nnbc123.core.Constants;
|
||||
import com.nnbc123.core.CoreConstants;
|
||||
import com.nnbc123.core.room.bean.OnlineChatMember;
|
||||
import com.nnbc123.library.utils.SingleToastUtil;
|
||||
|
||||
@@ -41,13 +41,13 @@ public class RoomInviteActivity extends BaseMvpActivity<IRoomInviteView, RoomInv
|
||||
private SmartRefreshLayout mRefreshLayout;
|
||||
private RecyclerView mRecyclerView;
|
||||
|
||||
private int mPage = Constants.PAGE_START;
|
||||
private int mPage = CoreConstants.PAGE_START;
|
||||
private int micPosition;
|
||||
private boolean onlyManager;
|
||||
|
||||
public static void openActivity(FragmentActivity fragmentActivity, int micPosition,boolean onlyManager) {
|
||||
Intent intent = new Intent(fragmentActivity, RoomInviteActivity.class);
|
||||
intent.putExtra(Constants.KEY_POSITION, micPosition);
|
||||
intent.putExtra(CoreConstants.KEY_POSITION, micPosition);
|
||||
intent.putExtra("only_manager", onlyManager);
|
||||
fragmentActivity.startActivityForResult(intent, 200);
|
||||
}
|
||||
@@ -62,7 +62,7 @@ public class RoomInviteActivity extends BaseMvpActivity<IRoomInviteView, RoomInv
|
||||
initWhiteTitleBar(onlyManager ? "在线房主/管理员" : getString(R.string.title_online));
|
||||
Intent intent = getIntent();
|
||||
if (intent != null)
|
||||
micPosition = intent.getIntExtra(Constants.KEY_POSITION, Integer.MIN_VALUE);
|
||||
micPosition = intent.getIntExtra(CoreConstants.KEY_POSITION, Integer.MIN_VALUE);
|
||||
|
||||
mRoomInviteAdapter = new RoomInviteAdapter(this, this);
|
||||
mRecyclerView.setAdapter(mRoomInviteAdapter);
|
||||
@@ -96,7 +96,7 @@ public class RoomInviteActivity extends BaseMvpActivity<IRoomInviteView, RoomInv
|
||||
}
|
||||
|
||||
public void firstLoad() {
|
||||
mPage = Constants.PAGE_START;
|
||||
mPage = CoreConstants.PAGE_START;
|
||||
loadData(0);
|
||||
}
|
||||
|
||||
@@ -112,7 +112,7 @@ public class RoomInviteActivity extends BaseMvpActivity<IRoomInviteView, RoomInv
|
||||
@Override
|
||||
public void onRequestChatMemberByPageFail(String errorStr, int page) {
|
||||
mPage = page;
|
||||
if (mPage == Constants.PAGE_START) {
|
||||
if (mPage == CoreConstants.PAGE_START) {
|
||||
mRefreshLayout.finishRefresh(0);
|
||||
showNoData(getString(R.string.data_error));
|
||||
} else {
|
||||
@@ -128,7 +128,7 @@ public class RoomInviteActivity extends BaseMvpActivity<IRoomInviteView, RoomInv
|
||||
@Override
|
||||
public void onRequestMemberByPageSuccess(List<ChatRoomMember> memberList, int page) {
|
||||
mPage = page;
|
||||
if (mPage == Constants.PAGE_START) {
|
||||
if (mPage == CoreConstants.PAGE_START) {
|
||||
List<ChatRoomMember> chatRoomMemberList = mRoomInviteAdapter.getChatRoomMemberList();
|
||||
if (!ListUtils.isListEmpty(chatRoomMemberList))
|
||||
chatRoomMemberList.clear();
|
||||
@@ -174,7 +174,7 @@ public class RoomInviteActivity extends BaseMvpActivity<IRoomInviteView, RoomInv
|
||||
intent.putExtra("account", chatRoomMember.getAccount());
|
||||
String nick = chatRoomMember.getNick();
|
||||
intent.putExtra("nick", nick == null ? "" : nick);
|
||||
intent.putExtra(Constants.KEY_POSITION, micPosition);
|
||||
intent.putExtra(CoreConstants.KEY_POSITION, micPosition);
|
||||
setResult(100, intent);
|
||||
finish();
|
||||
}
|
||||
|
@@ -17,7 +17,8 @@ import android.widget.RelativeLayout;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.coorchice.library.SuperTextView;
|
||||
import com.netease.nim.uikit.common.util.string.StringUtil;
|
||||
import com.netease.nim.uikit.common.util.string.NimStringUtil;
|
||||
import com.nnbc123.core.utils.ktx.StringExtensionKt;
|
||||
import com.opensource.svgaplayer.SVGAImageView;
|
||||
import com.nnbc123.app.R;
|
||||
import com.nnbc123.app.common.widget.CircleImageView;
|
||||
@@ -39,7 +40,6 @@ import com.nnbc123.core.room.pk.bean.PKTeamInfo;
|
||||
import com.nnbc123.core.room.queue.bean.MicMemberInfo;
|
||||
import com.nnbc123.core.user.UserModel;
|
||||
import com.nnbc123.core.utils.ActivityUtil;
|
||||
import com.nnbc123.core.utils.StringExtensionKt;
|
||||
import com.nnbc123.library.utils.config.BasicConfig;
|
||||
|
||||
/**
|
||||
@@ -286,7 +286,7 @@ public abstract class BaseMicroViewAdapter extends RecyclerView.Adapter<Recycler
|
||||
}
|
||||
|
||||
protected void setSelectText(int index, String nick, int gender) {
|
||||
tvNick.setText(StringExtensionKt.subAndReplaceDot(StringUtil.removeBlanks(nick), 7));
|
||||
tvNick.setText(StringExtensionKt.subAndReplaceDot(NimStringUtil.removeBlanks(nick), 7));
|
||||
tvNick.setTextColor(context.getResources().getColor(R.color.white));
|
||||
|
||||
if (tvNumber != null) {
|
||||
|
@@ -15,7 +15,7 @@ import androidx.recyclerview.widget.RecyclerView
|
||||
import com.nnbc123.app.R
|
||||
import com.nnbc123.app.ui.utils.load
|
||||
import com.nnbc123.app.utils.UserUtils
|
||||
import com.nnbc123.core.Constants
|
||||
import com.nnbc123.core.CoreConstants
|
||||
import com.nnbc123.core.bean.RoomQueueInfo
|
||||
import com.nnbc123.core.manager.AvRoomDataManager
|
||||
import com.nnbc123.core.room.bean.RoomInfo
|
||||
@@ -74,7 +74,7 @@ class DatingMicroViewAdapter(context: Context?) : BaseMicroViewAdapter(context)
|
||||
super.bind(info, position)
|
||||
val roomInfo = AvRoomDataManager.get().mCurrentRoomInfo ?: return
|
||||
val roomMicInfo = info.mRoomMicInfo
|
||||
val manMicro = Constants.maleIndex.contains(position)
|
||||
val manMicro = CoreConstants.maleIndex.contains(position)
|
||||
val uid = UserUtils.getUserUid()
|
||||
if (roomMicInfo != null) {
|
||||
viewGenderBg.setBackgroundResource(if (manMicro) R.drawable.shape_circle_micro_man_bg else R.drawable.shape_circle_micro_woman_bg)
|
||||
|
@@ -5,7 +5,7 @@ import com.chad.library.adapter.base.BaseViewHolder
|
||||
import com.nnbc123.app.R
|
||||
import com.nnbc123.app.ui.utils.ImageLoadUtils
|
||||
import com.nnbc123.core.home.bean.HomeRoomInfo
|
||||
import com.nnbc123.core.utils.subAndReplaceDot
|
||||
import com.nnbc123.core.utils.ktx.subAndReplaceDot
|
||||
|
||||
class ExitRoomAdapter :
|
||||
BaseQuickAdapter<HomeRoomInfo, BaseViewHolder>(R.layout.item_exit_room) {
|
||||
|
@@ -28,16 +28,6 @@ public class InviteFriendListAdapter extends BaseQuickAdapter<PublicChatHallFrie
|
||||
this.context = context;
|
||||
}
|
||||
|
||||
private OnItemClickListener onItemClickListener;
|
||||
|
||||
public interface OnItemClickListener {
|
||||
void sendListener(UserInfo attentionInfo);
|
||||
}
|
||||
|
||||
public void setRylListener(OnItemClickListener onClickListener) {
|
||||
onItemClickListener = onClickListener;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void convert(BaseViewHolder helper, PublicChatHallFriendInfo pchFriendInfo) {
|
||||
if (pchFriendInfo == null) return;
|
||||
|
@@ -16,7 +16,7 @@ import com.nnbc123.app.ui.utils.ImageLoadUtils
|
||||
import com.nnbc123.core.bean.RoomQueueInfo
|
||||
import com.nnbc123.core.manager.AvRoomDataManager
|
||||
import com.nnbc123.core.praise.PraiseModel
|
||||
import com.nnbc123.core.utils.toast
|
||||
import com.nnbc123.core.utils.ktx.toast
|
||||
import com.nnbc123.library.utils.config.BasicConfig
|
||||
|
||||
|
||||
|
@@ -8,7 +8,7 @@ import android.widget.TextView;
|
||||
import com.chad.library.adapter.base.BaseQuickAdapter;
|
||||
import com.chad.library.adapter.base.BaseViewHolder;
|
||||
import com.nnbc123.app.R;
|
||||
import com.nnbc123.core.Constants;
|
||||
import com.nnbc123.core.CoreConstants;
|
||||
import com.nnbc123.core.bean.RoomQueueInfo;
|
||||
import com.nnbc123.core.manager.AvRoomDataManager;
|
||||
|
||||
@@ -78,7 +78,7 @@ public class UpMicAdapter extends BaseQuickAdapter<String, BaseViewHolder> {
|
||||
textView.setText(AvRoomDataManager.get().isDatingMode() ? "主持位" : "房主位");
|
||||
} else {
|
||||
if (AvRoomDataManager.get().isDatingMode()) {
|
||||
textView.setText(position + (Constants.maleIndex.contains(position - 1) ? "号男神位" : "号女神位"));
|
||||
textView.setText(position + (CoreConstants.maleIndex.contains(position - 1) ? "号男神位" : "号女神位"));
|
||||
} else {
|
||||
textView.setText(String.format(context.getResources().getString(R.string.which_mic_position), position));
|
||||
}
|
||||
|
@@ -26,7 +26,7 @@ import com.nnbc123.core.manager.AvRoomDataManager
|
||||
import com.nnbc123.core.room.anotherroompk.ShowGiftDialogEvent
|
||||
import com.nnbc123.core.room.anotherroompk.ShowUserInfoDialogEvent
|
||||
import com.nnbc123.core.utils.CurrentTimeUtils
|
||||
import com.nnbc123.core.utils.subAndReplaceDot
|
||||
import com.nnbc123.core.utils.ktx.subAndReplaceDot
|
||||
import com.nnbc123.library.rxbus.RxBus
|
||||
import com.nnbc123.library.utils.CommonUtils
|
||||
import io.reactivex.Observable
|
||||
|
@@ -15,10 +15,10 @@ import com.nnbc123.core.auth.AuthModel
|
||||
import com.nnbc123.core.manager.AvRoomDataManager
|
||||
import com.nnbc123.core.room.anotherroompk.RoomPKModel
|
||||
import com.nnbc123.core.room.anotherroompk.SimpleRoomInfo
|
||||
import com.nnbc123.core.utils.ifNotNullOrEmpty
|
||||
import com.nnbc123.core.utils.subAndReplaceDot
|
||||
import com.nnbc123.core.utils.toIntOrDef
|
||||
import com.nnbc123.core.utils.toast
|
||||
import com.nnbc123.core.utils.ktx.ifNotNullOrEmpty
|
||||
import com.nnbc123.core.utils.ktx.subAndReplaceDot
|
||||
import com.nnbc123.core.utils.ktx.toIntOrDef
|
||||
import com.nnbc123.core.utils.ktx.toast
|
||||
|
||||
class RoomPKCreateActivity : BaseViewBindingActivity<ActivityRoomPkCreateBinding>() {
|
||||
|
||||
|
@@ -16,7 +16,7 @@ import com.nnbc123.app.ui.utils.RVDelegate
|
||||
import com.nnbc123.core.manager.AvRoomDataManager
|
||||
import com.nnbc123.core.room.anotherroompk.RoomPKModel
|
||||
import com.nnbc123.core.room.anotherroompk.SimpleRoomInfo
|
||||
import com.nnbc123.core.utils.toast
|
||||
import com.nnbc123.core.utils.ktx.toast
|
||||
|
||||
class RoomPKSearchActivity : BaseViewBindingActivity<ActivityRoomPkSearchBinding>() {
|
||||
|
||||
|
@@ -5,7 +5,7 @@ import com.chad.library.adapter.base.BaseViewHolder
|
||||
import com.nnbc123.app.R
|
||||
import com.nnbc123.app.ui.utils.ImageLoadUtils
|
||||
import com.nnbc123.core.room.anotherroompk.SimpleRoomInfo
|
||||
import com.nnbc123.core.utils.subAndReplaceDot
|
||||
import com.nnbc123.core.utils.ktx.subAndReplaceDot
|
||||
|
||||
class RoomPKSearchAdapter :
|
||||
BaseQuickAdapter<SimpleRoomInfo, BaseViewHolder>(R.layout.item_room_pk_search) {
|
||||
|
@@ -9,7 +9,7 @@ import com.nnbc123.app.base.BaseDialog
|
||||
import com.nnbc123.app.databinding.DialogRoomPkFinishBinding
|
||||
import com.nnbc123.app.ui.utils.ImageLoadUtils
|
||||
import com.nnbc123.core.im.custom.bean.RoomPkBean
|
||||
import com.nnbc123.core.utils.subAndReplaceDot
|
||||
import com.nnbc123.core.utils.ktx.subAndReplaceDot
|
||||
|
||||
class RoomPkFinishDialog : BaseDialog<DialogRoomPkFinishBinding>() {
|
||||
|
||||
|
@@ -8,7 +8,7 @@ import com.nnbc123.app.base.BaseDialog
|
||||
import com.nnbc123.app.databinding.DialogRoomPkForceFinishBinding
|
||||
import com.nnbc123.app.ui.utils.ImageLoadUtils
|
||||
import com.nnbc123.core.im.custom.bean.RoomPkBean
|
||||
import com.nnbc123.core.utils.subAndReplaceDot
|
||||
import com.nnbc123.core.utils.ktx.subAndReplaceDot
|
||||
|
||||
class RoomPkForceFinishDialog : BaseDialog<DialogRoomPkForceFinishBinding>() {
|
||||
|
||||
|
@@ -8,9 +8,9 @@ import com.nnbc123.app.databinding.DialogRoomPkReceivedBinding
|
||||
import com.nnbc123.core.im.custom.bean.RoomPkBean
|
||||
import com.nnbc123.core.manager.AvRoomDataManager
|
||||
import com.nnbc123.core.room.anotherroompk.RoomPKModel
|
||||
import com.nnbc123.core.utils.ifNotNullOrEmpty
|
||||
import com.nnbc123.core.utils.subAndReplaceDot
|
||||
import com.nnbc123.core.utils.toast
|
||||
import com.nnbc123.core.utils.ktx.ifNotNullOrEmpty
|
||||
import com.nnbc123.core.utils.ktx.subAndReplaceDot
|
||||
import com.nnbc123.core.utils.ktx.toast
|
||||
import io.reactivex.Observable
|
||||
import io.reactivex.android.schedulers.AndroidSchedulers
|
||||
import io.reactivex.disposables.Disposable
|
||||
|
@@ -16,11 +16,11 @@ import androidx.fragment.app.viewModels
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import com.bumptech.glide.request.target.CustomTarget
|
||||
import com.bumptech.glide.request.transition.Transition
|
||||
import com.chuhai.utils.PathUtils
|
||||
import com.chu.utils.PathUtils
|
||||
import com.hjq.toast.ToastUtils
|
||||
import com.netease.nim.uikit.common.util.sys.ScreenUtil
|
||||
import com.netease.nim.uikit.support.glide.GlideApp
|
||||
import com.nnbc123.app.ErbanTakePhotoActivity.TakePhotoCallBack
|
||||
import com.nnbc123.app.takephoto.app.ErbanTakePhotoActivity.TakePhotoCallBack
|
||||
import com.nnbc123.app.R
|
||||
import com.nnbc123.app.application.XChatApplication
|
||||
import com.nnbc123.app.avroom.PrivilegeViewModel
|
||||
@@ -34,8 +34,8 @@ import com.nnbc123.app.ui.utils.ImageLoadUtils
|
||||
import com.nnbc123.app.ui.widget.dialog.CommonTipDialog
|
||||
import com.nnbc123.core.file.FileModel
|
||||
import com.nnbc123.core.privilege.bean.PrivilegeCardInfo
|
||||
import com.nnbc123.core.utils.Logger
|
||||
import com.nnbc123.core.utils.TextUtils
|
||||
import com.nnbc123.core.utils.CLogger
|
||||
import com.nnbc123.core.utils.CTextUtils
|
||||
import com.nnbc123.library.common.file.FileHelper
|
||||
import com.nnbc123.library.common.photo.PhotoProviderNew
|
||||
import com.nnbc123.library.common.support.PathHelper
|
||||
@@ -268,9 +268,9 @@ class CreatePrivilegeCardDialog : BaseDialog<DialogCreatePrivilegeCardBinding>()
|
||||
}
|
||||
|
||||
private fun checkEmpty(): Boolean {
|
||||
return (TextUtils.isEmptyText(binding.edName.text.toString()) || TextUtils.isEmptyText(
|
||||
return (CTextUtils.isEmptyText(binding.edName.text.toString()) || CTextUtils.isEmptyText(
|
||||
binding.edUseNumber.text.toString()
|
||||
) || TextUtils.isEmptyText(binding.edValid.text.toString()) || TextUtils.isEmptyText(binding.edId.text.toString()) || TextUtils.isEmptyText(
|
||||
) || CTextUtils.isEmptyText(binding.edValid.text.toString()) || CTextUtils.isEmptyText(binding.edId.text.toString()) || CTextUtils.isEmptyText(
|
||||
mUrl
|
||||
))
|
||||
}
|
||||
@@ -330,7 +330,7 @@ class CreatePrivilegeCardDialog : BaseDialog<DialogCreatePrivilegeCardBinding>()
|
||||
}
|
||||
if (sourceSize > 0) {
|
||||
//不能上传图片的最小文件大小
|
||||
Logger.debug(TAG, "sourceSize: $sourceSize")
|
||||
CLogger.debug(TAG, "sourceSize: $sourceSize")
|
||||
if (sourceSize < MIN_HEAD_PHOTO_SIZE) {
|
||||
ToastUtils.show(R.string.text_bitmap_too_small)
|
||||
return
|
||||
@@ -438,7 +438,7 @@ class CreatePrivilegeCardDialog : BaseDialog<DialogCreatePrivilegeCardBinding>()
|
||||
val outPath = getImageTempPath(path)
|
||||
lifecycleScope.launch {
|
||||
Log.d(TAG, "uploadVideo 开始保存封面 outPath:${outPath}")
|
||||
val saveResult = com.chuhai.utils.ImageUtils.save(
|
||||
val saveResult = com.chu.utils.ImageUtils.save(
|
||||
resource,
|
||||
outPath,
|
||||
Bitmap.CompressFormat.JPEG, false
|
||||
|
@@ -15,7 +15,7 @@ import com.nnbc123.app.ui.utils.RVDelegate
|
||||
import com.nnbc123.core.room.bean.RoomInfo
|
||||
import com.nnbc123.core.room.game.GameInfo
|
||||
import com.nnbc123.core.room.game.GameModel
|
||||
import com.nnbc123.core.utils.toast
|
||||
import com.nnbc123.core.utils.ktx.toast
|
||||
|
||||
class CreateRoomDialog : BaseDialog<DialogCreateRoomBinding>() {
|
||||
|
||||
|
@@ -19,14 +19,14 @@ import com.nnbc123.core.room.model.AvRoomModel
|
||||
import com.nnbc123.core.statistic.StatisticManager
|
||||
import com.nnbc123.core.statistic.protocol.StatisticsProtocol
|
||||
import com.nnbc123.app.R
|
||||
import com.nnbc123.app.UIHelper
|
||||
import com.nnbc123.app.utils.UIHelper
|
||||
import com.nnbc123.app.avroom.activity.AVRoomActivity
|
||||
import com.nnbc123.app.avroom.adapter.ExitRoomAdapter
|
||||
import com.nnbc123.app.avroom.presenter.HomePartyPresenter
|
||||
import com.nnbc123.app.common.widget.dialog.DialogManager.LambdaOkDialogListener
|
||||
import com.nnbc123.app.common.widget.dialog.DialogManager.OkCancelDialogListener
|
||||
import com.nnbc123.app.ui.utils.RVDelegate
|
||||
import com.nnbc123.xchat_android_constants.XChatConstants
|
||||
import com.nnbc123.core.XChatConstants
|
||||
import com.netease.nim.uikit.common.util.sys.ScreenUtil
|
||||
import io.reactivex.disposables.Disposable
|
||||
import org.greenrobot.eventbus.EventBus
|
||||
|
@@ -28,7 +28,7 @@ import com.nnbc123.app.home.helper.LoadPageDataHelper;
|
||||
import com.nnbc123.app.ui.widget.dialog.BaseDialog;
|
||||
import com.nnbc123.app.ui.widget.marqueeview.Utils;
|
||||
import com.nnbc123.app.ui.widget.recyclerview.decoration.ColorDecoration;
|
||||
import com.nnbc123.core.Constants;
|
||||
import com.nnbc123.core.CoreConstants;
|
||||
import com.nnbc123.core.auth.AuthModel;
|
||||
import com.nnbc123.core.bean.RoomQueueInfo;
|
||||
import com.nnbc123.core.manager.AvRoomDataManager;
|
||||
@@ -192,9 +192,9 @@ public class MicQueueDialog extends BaseDialog implements
|
||||
if (key == -1) continue;
|
||||
//相亲模式只能抱上对应的坑位
|
||||
if (AvRoomDataManager.get().isDatingMode()) {
|
||||
if (member.getGroupType() == GroupType.MALE && !Constants.maleIndex.contains(key))
|
||||
if (member.getGroupType() == GroupType.MALE && !CoreConstants.maleIndex.contains(key))
|
||||
continue;
|
||||
if (member.getGroupType() == GroupType.FEMALE && Constants.maleIndex.contains(key))
|
||||
if (member.getGroupType() == GroupType.FEMALE && CoreConstants.maleIndex.contains(key))
|
||||
continue;
|
||||
}
|
||||
RoomQueueInfo roomQueueInfo = AvRoomDataManager.get().mMicQueueMemberMap.get(key);
|
||||
@@ -425,7 +425,7 @@ public class MicQueueDialog extends BaseDialog implements
|
||||
public Single<List<QueuingMicMemeberInfo>> loadData(int curPage) {
|
||||
RoomInfo roomInfo = AvRoomDataManager.get().mCurrentRoomInfo;
|
||||
if (roomInfo != null) {
|
||||
return MicQueueModel.get().loadMicQueueList(roomInfo.getUid(), curPage, Constants.PAGE_SIZE)
|
||||
return MicQueueModel.get().loadMicQueueList(roomInfo.getUid(), curPage, CoreConstants.PAGE_SIZE)
|
||||
.flatMap(info -> {
|
||||
queueMicListInfo = info;
|
||||
AvRoomDataManager.get().myIsInQueue = info.getMyPos() >= 0;
|
||||
@@ -470,7 +470,7 @@ public class MicQueueDialog extends BaseDialog implements
|
||||
} else {
|
||||
showNoDataLayout();
|
||||
}
|
||||
loadPageDataHelper.setCurPage(Constants.PAGE_START + 1);
|
||||
loadPageDataHelper.setCurPage(CoreConstants.PAGE_START + 1);
|
||||
}
|
||||
|
||||
public void removeQueueMember(String account) {
|
||||
|
@@ -26,7 +26,7 @@ import com.nnbc123.app.ui.widget.dialog.BaseDialog;
|
||||
import com.nnbc123.app.ui.widget.dialog.CommonLoadingDialog;
|
||||
import com.nnbc123.app.ui.widget.marqueeview.Utils;
|
||||
import com.nnbc123.app.ui.widget.recyclerview.decoration.ColorDecoration;
|
||||
import com.nnbc123.core.Constants;
|
||||
import com.nnbc123.core.CoreConstants;
|
||||
import com.nnbc123.core.auth.AuthModel;
|
||||
import com.nnbc123.core.bean.RoomQueueInfo;
|
||||
import com.nnbc123.core.manager.AvRoomDataManager;
|
||||
@@ -215,7 +215,7 @@ public class PKMicQueueDialog extends BaseDialog implements
|
||||
if (roomInfo != null) {
|
||||
return PkModel.get().loadPKMicQueueList(
|
||||
curPage,
|
||||
Constants.PAGE_SIZE
|
||||
CoreConstants.PAGE_SIZE
|
||||
)
|
||||
.flatMap(info -> {
|
||||
queueMicListInfo = info;
|
||||
@@ -304,7 +304,7 @@ public class PKMicQueueDialog extends BaseDialog implements
|
||||
} else {
|
||||
showNoDataLayout();
|
||||
}
|
||||
loadPageDataHelper.setCurPage(Constants.PAGE_START + 1);
|
||||
loadPageDataHelper.setCurPage(CoreConstants.PAGE_START + 1);
|
||||
}
|
||||
|
||||
|
||||
|
@@ -16,7 +16,7 @@ import com.nnbc123.app.utils.SpannableBuilder
|
||||
import com.nnbc123.core.manager.AvRoomDataManager
|
||||
import com.nnbc123.core.room.bean.BroadcastInfo
|
||||
import com.nnbc123.core.room.model.AvRoomModel
|
||||
import com.nnbc123.core.utils.toast
|
||||
import com.nnbc123.core.utils.ktx.toast
|
||||
import com.nnbc123.library.utils.CommonUtils
|
||||
import com.nnbc123.library.utils.TextWatcherWrapper
|
||||
import io.reactivex.Observable
|
||||
|
@@ -8,52 +8,56 @@ import android.graphics.drawable.ColorDrawable
|
||||
import android.text.Spannable
|
||||
import android.text.SpannableStringBuilder
|
||||
import android.text.style.ForegroundColorSpan
|
||||
import android.util.Log
|
||||
import android.view.Gravity
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.WindowManager
|
||||
import android.widget.PopupWindow
|
||||
import android.widget.TextView
|
||||
import com.android.billingclient.api.BillingClient
|
||||
import com.android.billingclient.api.BillingResult
|
||||
import com.android.billingclient.api.ProductDetails
|
||||
import com.android.billingclient.api.Purchase
|
||||
import com.google.android.flexbox.AlignItems
|
||||
import com.google.android.flexbox.FlexboxLayoutManager
|
||||
import com.google.android.flexbox.JustifyContent
|
||||
import com.nnbc123.core.UriProvider
|
||||
import com.nnbc123.core.auth.AuthModel
|
||||
import com.nnbc123.core.pay.PayModel
|
||||
import com.nnbc123.core.pay.PaymentActivity
|
||||
import com.nnbc123.core.pay.bean.FirstChargeGoods
|
||||
import com.nnbc123.core.pay.bean.FirstChargeReward
|
||||
import com.nnbc123.core.pay.bean.PaymentResult
|
||||
import com.nnbc123.core.pay.event.FirstChargeEvent
|
||||
import com.nnbc123.core.pay.model.unionpay.UnionPayModel
|
||||
import com.nnbc123.core.statistic.StatisticManager
|
||||
import com.nnbc123.core.statistic.protocol.StatisticsProtocol
|
||||
import com.nnbc123.core.utils.toast
|
||||
import com.nnbc123.core.utils.ktx.toast
|
||||
import com.nnbc123.app.R
|
||||
import com.nnbc123.app.bank_card.activity.AddBankCardAgreementActivity
|
||||
import com.nnbc123.app.base.BaseViewBindingActivity
|
||||
import com.nnbc123.app.common.widget.dialog.DialogManager.AbsOkDialogListener
|
||||
import com.nnbc123.app.databinding.DialogFirstChargeBinding
|
||||
import com.nnbc123.app.ui.setting.ModifyPwdActivity
|
||||
import com.nnbc123.app.ui.utils.RVDelegate
|
||||
import com.nnbc123.app.ui.webview.CommonWebViewActivity
|
||||
import com.nnbc123.library.annatation.ActLayoutRes
|
||||
import com.nnbc123.library.utils.JavaUtil
|
||||
import com.nnbc123.library.utils.SingleToastUtil
|
||||
import com.netease.nim.uikit.common.util.sys.ScreenUtil
|
||||
import com.nnbc123.app.ui.pay.BillingManager
|
||||
import com.nnbc123.core.pay.bean.PayRecordId
|
||||
import com.nnbc123.core.utils.net.IgnoreException
|
||||
import com.nnbc123.library.common.Constants
|
||||
import com.nnbc123.library.utils.AppMetaDataUtil
|
||||
import org.greenrobot.eventbus.EventBus
|
||||
import org.greenrobot.eventbus.Subscribe
|
||||
import org.greenrobot.eventbus.ThreadMode
|
||||
|
||||
@ActLayoutRes(R.layout.dialog_first_charge)
|
||||
class FirstChargeDialog : BaseViewBindingActivity<DialogFirstChargeBinding>() {
|
||||
class FirstChargeDialog : BaseViewBindingActivity<DialogFirstChargeBinding>(),
|
||||
BillingManager.BillingUpdatesListener {
|
||||
|
||||
private val TAG = "FirstChargeDialog"
|
||||
private var goodsList: List<FirstChargeGoods>? = null
|
||||
|
||||
private var currGoods: FirstChargeGoods? = null
|
||||
private lateinit var rewardAdapter: RewardAdapter
|
||||
private lateinit var rvDelegate: RVDelegate<FirstChargeReward>
|
||||
private lateinit var helpPopupWindow: PopupWindow
|
||||
private var billingManager: BillingManager? = null
|
||||
|
||||
companion object {
|
||||
@JvmStatic
|
||||
@@ -99,8 +103,7 @@ class FirstChargeDialog : BaseViewBindingActivity<DialogFirstChargeBinding>() {
|
||||
binding.ivHelp.setOnClickListener { showHelpPopup() }
|
||||
binding.tvCharge.setOnClickListener {
|
||||
currGoods?.let {
|
||||
SelectPayTypeDialog.newInstance(it.chargeProdId, "¥${it.chargeMoney}")
|
||||
.show(this)
|
||||
buyProduct(it.productDetails)
|
||||
} ?: run {
|
||||
"请选择充值产品!".toast()
|
||||
}
|
||||
@@ -147,19 +150,24 @@ class FirstChargeDialog : BaseViewBindingActivity<DialogFirstChargeBinding>() {
|
||||
1 -> {
|
||||
binding.rbPlanB.visibility = View.GONE
|
||||
binding.rbPlanC.visibility = View.GONE
|
||||
binding.rbPlanA.text = "${goodsList[0].chargeMoney}元"
|
||||
binding.rbPlanA.text = "$${goodsList[0].chargeMoney}"
|
||||
}
|
||||
|
||||
2 -> {
|
||||
binding.rbPlanC.visibility = View.GONE
|
||||
binding.rbPlanA.text = "${goodsList[0].chargeMoney}元"
|
||||
binding.rbPlanB.text = "${goodsList[1].chargeMoney}元"
|
||||
binding.rbPlanA.text = "$${goodsList[0].chargeMoney}"
|
||||
binding.rbPlanB.text = "$${goodsList[1].chargeMoney}"
|
||||
}
|
||||
|
||||
3 -> {
|
||||
binding.rbPlanA.text = "${goodsList[0].chargeMoney}元"
|
||||
binding.rbPlanB.text = "${goodsList[1].chargeMoney}元"
|
||||
binding.rbPlanC.text = "${goodsList[2].chargeMoney}元"
|
||||
binding.rbPlanA.text = "$${goodsList[0].chargeMoney}"
|
||||
binding.rbPlanB.text = "$${goodsList[1].chargeMoney}"
|
||||
binding.rbPlanC.text = "$${goodsList[2].chargeMoney}"
|
||||
}
|
||||
}
|
||||
if (AppMetaDataUtil.getChannelID().equals(Constants.CHANNEL_GOOGLE)) {
|
||||
initBilling()
|
||||
}
|
||||
}
|
||||
|
||||
private fun updateCurrGoods(firstChargeGoods: FirstChargeGoods?) {
|
||||
@@ -217,43 +225,6 @@ class FirstChargeDialog : BaseViewBindingActivity<DialogFirstChargeBinding>() {
|
||||
if (resultCode != RESULT_OK) {
|
||||
return
|
||||
}
|
||||
//支付页面返回处理
|
||||
if (requestCode == PaymentActivity.REQUEST_CODE_PAY) {
|
||||
if (data != null && data.extras != null) {
|
||||
val paymentResult: PaymentResult? =
|
||||
data.getParcelableExtra(PaymentActivity.KEY_PAY_RESULT)
|
||||
if (paymentResult != null) {
|
||||
// 充值金额超过限定时,就必须先实名认证
|
||||
when (JavaUtil.str2int(paymentResult.code)) {
|
||||
PayModel.NOT_REAL_NAME_BEFORE_CHARGING -> dialogManager.showTipsDialog(
|
||||
getString(R.string.tips_need_to_certification),
|
||||
getString(R.string.go_to_certification),
|
||||
object : AbsOkDialogListener() {
|
||||
override fun onOk() {
|
||||
// 跳去实名认证页面
|
||||
CommonWebViewActivity.start(
|
||||
this@FirstChargeDialog,
|
||||
UriProvider.getTutuRealNamePage()
|
||||
)
|
||||
}
|
||||
})
|
||||
UnionPayModel.CODE_NEED_BIND_BANK_CARD_FIRST -> dialogManager.showTipsDialog(
|
||||
getString(R.string.tips_need_bind_bank_card_first),
|
||||
object : AbsOkDialogListener() {
|
||||
override fun onOk() {
|
||||
// 跳去添加银行卡页面
|
||||
AddBankCardAgreementActivity.start(this@FirstChargeDialog)
|
||||
}
|
||||
})
|
||||
else -> {
|
||||
toast(paymentResult.msg)
|
||||
//重新获取钱包信息
|
||||
PayModel.get().getWalletInfo(AuthModel.get().currentUid).subscribe()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (requestCode == BIND_CODE_GOLD) {
|
||||
ModifyPwdActivity.start(this, ModifyPwdActivity.FOGERT_PAY_PWD)
|
||||
}
|
||||
@@ -264,9 +235,114 @@ class FirstChargeDialog : BaseViewBindingActivity<DialogFirstChargeBinding>() {
|
||||
finish()
|
||||
}
|
||||
|
||||
override fun onResume() {
|
||||
super.onResume()
|
||||
if (billingManager?.isServiceConnected == true) {
|
||||
billingManager?.onQueryPurchases()
|
||||
}
|
||||
}
|
||||
|
||||
override fun onDestroy() {
|
||||
super.onDestroy()
|
||||
EventBus.getDefault().unregister(this)
|
||||
billingManager?.destroy()
|
||||
}
|
||||
|
||||
private fun initBilling() {
|
||||
billingManager = BillingManager(this, this)
|
||||
}
|
||||
|
||||
@SuppressLint("CheckResult")
|
||||
override fun onBillingClientSetupFinished() {
|
||||
Log.i(TAG, "onBillingClientSetupFinished")
|
||||
goodsList?.let { initProduceList(it) }
|
||||
}
|
||||
|
||||
private fun initProduceList(goodsList: List<FirstChargeGoods>) {
|
||||
val productKeys: MutableList<String> = ArrayList()
|
||||
for (bean in goodsList) {
|
||||
productKeys.add(bean.chargeProdId)
|
||||
}
|
||||
billingManager?.querySkuDetailsAsync(productKeys) { billingResult: BillingResult, productDetails: MutableList<ProductDetails> ->
|
||||
if (billingResult.responseCode != BillingClient.BillingResponseCode.OK) {
|
||||
Log.w(
|
||||
TAG,
|
||||
"Unsuccessful query for type: " + BillingClient.ProductType.INAPP + ". Error code: " + billingResult.responseCode
|
||||
)
|
||||
return@querySkuDetailsAsync
|
||||
}
|
||||
if (productDetails.isNotEmpty()) {
|
||||
for (chargeBean in goodsList) {
|
||||
for (skuDetails in productDetails) {
|
||||
if (skuDetails.productId == chargeBean.chargeProdId) {
|
||||
chargeBean.productDetails = skuDetails
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*商品更新回调*/
|
||||
@SuppressLint("CheckResult")
|
||||
override fun onPurchasesUpdated(purchases: List<Purchase>) {
|
||||
for (purchase in purchases) {
|
||||
if (purchase.purchaseState == Purchase.PurchaseState.PURCHASED &&
|
||||
purchase.accountIdentifiers != null
|
||||
) {
|
||||
PayModel.get().verifyOrder(
|
||||
purchase.accountIdentifiers!!.obfuscatedAccountId,
|
||||
purchase.products[0],
|
||||
purchase.packageName,
|
||||
purchase.purchaseToken
|
||||
)
|
||||
.compose(bindToLifecycle())
|
||||
.subscribe(
|
||||
{ token: String? ->
|
||||
//L.i("token=" + token);
|
||||
billingManager?.consumeAsync(token)
|
||||
}
|
||||
) { throwable: Throwable ->
|
||||
if (throwable !is IgnoreException) {
|
||||
SingleToastUtil.showToast(throwable.message)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Log.i(TAG, "onPurchasesUpdated")
|
||||
}
|
||||
|
||||
override fun onConsumeFinished(token: String?, result: Int) {
|
||||
|
||||
}
|
||||
|
||||
override fun onFailedHandle(result: Int) {
|
||||
|
||||
}
|
||||
|
||||
/*购买商品*/
|
||||
@SuppressLint("CheckResult")
|
||||
fun buyProduct(skuDetails: ProductDetails?) {
|
||||
if (skuDetails != null) {
|
||||
Log.d(TAG, "BuyProduct:" + skuDetails.productId)
|
||||
PayModel.get().placeOrder(skuDetails.productId)
|
||||
.compose(bindToLifecycle())
|
||||
.subscribe(
|
||||
{ recordId: PayRecordId ->
|
||||
billingManager?.initiatePurchaseFlow(
|
||||
skuDetails,
|
||||
recordId.recordId
|
||||
)
|
||||
}
|
||||
) { throwable: Throwable ->
|
||||
SingleToastUtil.showToast(
|
||||
throwable.message
|
||||
)
|
||||
}
|
||||
} else {
|
||||
Log.w(TAG, "skuDetails ==null")
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@@ -7,7 +7,7 @@ import com.chad.library.adapter.base.BaseViewHolder
|
||||
import com.nnbc123.app.R
|
||||
import com.nnbc123.core.pay.bean.FirstChargeReward
|
||||
import com.nnbc123.app.ui.utils.ImageLoadUtils
|
||||
import com.nnbc123.core.utils.TextUtils
|
||||
import com.nnbc123.core.utils.CTextUtils
|
||||
|
||||
class RewardAdapter(private val itemWidth: Int) :
|
||||
BaseQuickAdapter<FirstChargeReward, BaseViewHolder>(R.layout.item_first_charge_reward) {
|
||||
@@ -23,6 +23,6 @@ class RewardAdapter(private val itemWidth: Int) :
|
||||
)
|
||||
helper.setText(R.id.tv_name, item.showText)
|
||||
.setText(R.id.tv_time, item.showTime)
|
||||
.setGone(R.id.tv_time, !TextUtils.isEmptyText(item.showTime))
|
||||
.setGone(R.id.tv_time, !CTextUtils.isEmptyText(item.showTime))
|
||||
}
|
||||
}
|
@@ -9,14 +9,11 @@ import android.view.View
|
||||
import android.view.WindowManager
|
||||
import androidx.core.graphics.toColorInt
|
||||
import androidx.core.view.isVisible
|
||||
import com.nnbc123.core.Constants
|
||||
import com.nnbc123.core.pay.PayModel
|
||||
import com.nnbc123.core.pay.PaymentActivity
|
||||
import com.nnbc123.core.pay.bean.WalletInfo
|
||||
import com.nnbc123.app.R
|
||||
import com.nnbc123.app.base.BaseDialog
|
||||
import com.nnbc123.app.databinding.DialogSelectPayTypeBinding
|
||||
import com.nnbc123.app.ui.pay.ChargeActivity
|
||||
import com.nnbc123.app.utils.SpannableBuilder
|
||||
import com.nnbc123.library.annatation.ActLayoutRes
|
||||
import com.nnbc123.library.utils.FormatUtils
|
||||
@@ -29,7 +26,6 @@ import com.netease.nim.uikit.common.util.sys.ScreenUtil
|
||||
@ActLayoutRes(R.layout.dialog_select_pay_type)
|
||||
class SelectPayTypeDialog : BaseDialog<DialogSelectPayTypeBinding>() {
|
||||
|
||||
private val chargeProdId by lazy { requireArguments().getString("chargeProdId", "") }
|
||||
private val descText by lazy { requireArguments().getString("descText", "") }
|
||||
private val money by lazy { requireArguments().getInt("money", 0) }
|
||||
private val showDiamondCharge by lazy {
|
||||
@@ -38,22 +34,21 @@ class SelectPayTypeDialog : BaseDialog<DialogSelectPayTypeBinding>() {
|
||||
false
|
||||
)
|
||||
}
|
||||
private var removeView: View? = null
|
||||
|
||||
private var onDiamondChargeClick: (() -> Unit)? = null
|
||||
|
||||
private var onGoogleChargeClick: (() -> Unit)? = null
|
||||
|
||||
companion object {
|
||||
|
||||
@JvmStatic
|
||||
fun newInstance(
|
||||
chargeProdId: String,
|
||||
descText: String,
|
||||
showDiamondCharge: Boolean = false,
|
||||
money: Int = 0
|
||||
): SelectPayTypeDialog {
|
||||
return SelectPayTypeDialog().apply {
|
||||
arguments = Bundle().apply {
|
||||
putString("chargeProdId", chargeProdId)
|
||||
putString("descText", descText)
|
||||
putBoolean("showDiamondCharge", showDiamondCharge)
|
||||
putInt("money", money)
|
||||
@@ -62,12 +57,14 @@ class SelectPayTypeDialog : BaseDialog<DialogSelectPayTypeBinding>() {
|
||||
}
|
||||
}
|
||||
|
||||
private var payChannel = ""
|
||||
|
||||
fun setOnDiamondChargeClick(onDiamondChargeClick: (() -> Unit)) {
|
||||
this.onDiamondChargeClick = onDiamondChargeClick
|
||||
}
|
||||
|
||||
fun setOnGoogleChargeClick(onGoogleChargeClick: (() -> Unit)) {
|
||||
this.onGoogleChargeClick = onGoogleChargeClick
|
||||
}
|
||||
|
||||
override fun onStart() {
|
||||
width = WindowManager.LayoutParams.MATCH_PARENT
|
||||
gravity = Gravity.BOTTOM
|
||||
@@ -85,24 +82,12 @@ class SelectPayTypeDialog : BaseDialog<DialogSelectPayTypeBinding>() {
|
||||
it.printStackTrace()
|
||||
})
|
||||
binding.tvConfirm.setOnClickListener {
|
||||
if (payChannel.isEmpty()) {
|
||||
SingleToastUtil.showToast("数据初始化中,请稍后~")
|
||||
return@setOnClickListener
|
||||
}
|
||||
if (binding.rbAlipay.isChecked) {
|
||||
PaymentActivity.start(requireActivity(), Constants.CHARGE_ALIPAY, chargeProdId)
|
||||
} else if (binding.rbDiamond.isChecked) {
|
||||
if (binding.rbDiamond.isChecked) {
|
||||
onDiamondChargeClick?.invoke()
|
||||
} else {
|
||||
PaymentActivity.start(requireActivity(), Constants.CHARGE_WX, chargeProdId)
|
||||
}
|
||||
dismissAllowingStateLoss()
|
||||
}
|
||||
|
||||
binding.tvMore.setOnClickListener {
|
||||
removeView?.let {
|
||||
binding.rg.addView(it)
|
||||
binding.tvMore.visibility = View.GONE
|
||||
dismissAllowingStateLoss()
|
||||
} else if (binding.rbGoogle.isChecked) {
|
||||
onGoogleChargeClick?.invoke()
|
||||
dismissAllowingStateLoss()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -113,7 +98,7 @@ class SelectPayTypeDialog : BaseDialog<DialogSelectPayTypeBinding>() {
|
||||
if (showDiamondCharge) {
|
||||
binding.rg.setOnCheckedChangeListener { _, _ ->
|
||||
if (binding.rbDiamond.isChecked) {
|
||||
binding.tvDesc.text = "${money * 10}钻石"
|
||||
binding.tvDesc.text = "${money * 1000}钻石"
|
||||
} else {
|
||||
binding.tvDesc.text = descText
|
||||
}
|
||||
@@ -123,9 +108,6 @@ class SelectPayTypeDialog : BaseDialog<DialogSelectPayTypeBinding>() {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* defaultPay 1:默认支付宝,2:默认微信
|
||||
*/
|
||||
private fun setWalletData(walletInfo: WalletInfo) {
|
||||
binding.rg.visibility = View.VISIBLE
|
||||
var defaultDiamond = false
|
||||
@@ -146,36 +128,11 @@ class SelectPayTypeDialog : BaseDialog<DialogSelectPayTypeBinding>() {
|
||||
)
|
||||
)
|
||||
.build()
|
||||
defaultDiamond = money != 0 && money * 10 <= walletInfo.diamondNum
|
||||
defaultDiamond = money != 0 && money * 1000 <= walletInfo.diamondNum
|
||||
binding.rbDiamond.isChecked = defaultDiamond
|
||||
} else {
|
||||
binding.rbDiamond.isVisible = false
|
||||
}
|
||||
when (walletInfo.defaultPay) {
|
||||
ChargeActivity.ALI_PAY_CLOSE -> {
|
||||
payChannel = Constants.CHARGE_ALIPAY
|
||||
removeView = binding.rbAlipay
|
||||
binding.rg.removeView(binding.rbAlipay)
|
||||
binding.rbWechat.isChecked = !defaultDiamond
|
||||
binding.tvMore.visibility = View.VISIBLE
|
||||
}
|
||||
ChargeActivity.WX_PAY_CLOSE -> {
|
||||
payChannel = Constants.CHARGE_WX
|
||||
removeView = binding.rbWechat
|
||||
binding.rg.removeView(binding.rbWechat)
|
||||
binding.rbAlipay.isChecked = !defaultDiamond
|
||||
binding.tvMore.visibility = View.VISIBLE
|
||||
}
|
||||
ChargeActivity.WX_PAY_OPEN -> {
|
||||
payChannel = Constants.CHARGE_WX
|
||||
binding.rbWechat.isChecked = !defaultDiamond
|
||||
binding.rg.removeView(binding.rbAlipay)
|
||||
binding.rg.addView(binding.rbAlipay)
|
||||
}
|
||||
else -> {
|
||||
payChannel = Constants.CHARGE_ALIPAY
|
||||
binding.rbAlipay.isChecked = !defaultDiamond
|
||||
}
|
||||
}
|
||||
binding.rbGoogle.isChecked = !defaultDiamond
|
||||
}
|
||||
}
|
@@ -3,13 +3,16 @@ package com.nnbc123.app.avroom.fragment
|
||||
import android.Manifest
|
||||
import android.annotation.SuppressLint
|
||||
import android.app.Activity
|
||||
import android.content.Context
|
||||
import android.content.DialogInterface
|
||||
import android.content.Intent
|
||||
import android.content.pm.PackageManager
|
||||
import android.graphics.Color
|
||||
import android.graphics.drawable.Drawable
|
||||
import android.graphics.drawable.GradientDrawable
|
||||
import android.net.Uri
|
||||
import android.os.Bundle
|
||||
import android.provider.Settings
|
||||
import android.text.TextUtils
|
||||
import android.text.style.ForegroundColorSpan
|
||||
import android.view.*
|
||||
@@ -24,7 +27,7 @@ import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import com.chad.library.adapter.base.BaseQuickAdapter
|
||||
import com.chad.library.adapter.base.BaseViewHolder
|
||||
import com.nnbc123.core.Constants
|
||||
import com.nnbc123.core.CoreConstants
|
||||
import com.nnbc123.core.DemoCache
|
||||
import com.nnbc123.core.auth.AuthModel
|
||||
import com.nnbc123.core.bean.RoomMicInfo
|
||||
@@ -89,7 +92,6 @@ import com.nnbc123.app.music.widget.MusicPlayerView
|
||||
import com.nnbc123.app.room_chat.activity.RoomMsgActivity
|
||||
import com.nnbc123.app.treasure_box.widget.GoldBoxHelper
|
||||
import com.nnbc123.app.ui.utils.load
|
||||
import com.nnbc123.app.ui.utils.loadAvatar
|
||||
import com.nnbc123.app.ui.webview.DialogWebViewActivity
|
||||
import com.nnbc123.app.ui.widget.ButtonItem
|
||||
import com.nnbc123.app.ui.widget.GiftDialog
|
||||
@@ -104,7 +106,7 @@ import com.nnbc123.app.ui.widget.rollviewpager.adapter.StaticPagerAdapter
|
||||
import com.nnbc123.app.ui.widget.rollviewpager.hintview.ColorPointHintView
|
||||
import com.nnbc123.app.utils.KeyBoardUtils
|
||||
import com.nnbc123.app.utils.SpannableBuilder
|
||||
import com.nnbc123.xchat_android_constants.XChatConstants
|
||||
import com.nnbc123.core.XChatConstants
|
||||
import com.nnbc123.library.net.rxnet.utils.RxNetWorkUtils
|
||||
import com.nnbc123.library.rxbus.RxBus
|
||||
import com.nnbc123.library.utils.*
|
||||
@@ -115,6 +117,7 @@ import com.netease.nimlib.sdk.chatroom.ChatRoomMessageBuilder
|
||||
import com.netease.nimlib.sdk.chatroom.model.ChatRoomKickOutEvent
|
||||
import com.netease.nimlib.sdk.chatroom.model.ChatRoomMessage
|
||||
import com.nnbc123.app.avroom.hour_rank.RoomHourRankWidget
|
||||
import com.nnbc123.app.ui.widget.dialog.CommonTipDialog
|
||||
import com.orhanobut.logger.Logger
|
||||
import com.tbruyelle.rxpermissions2.RxPermissions
|
||||
import com.trello.rxlifecycle3.android.FragmentEvent
|
||||
@@ -451,7 +454,7 @@ open class BaseRoomFragment<V : IBaseRoomView?, P : BaseRoomPresenter<V>?> :
|
||||
override fun onNewIntent(intent: Intent) {
|
||||
super.onNewIntent(intent)
|
||||
// 释放公屏和麦上的所有信息信息和动画
|
||||
val roomUid = intent.getLongExtra(Constants.ROOM_UID, 0)
|
||||
val roomUid = intent.getLongExtra(CoreConstants.ROOM_UID, 0)
|
||||
if (roomUid != 0L && roomUid != AvRoomDataManager.get().mCurrentRoomInfo?.uid) {
|
||||
releaseView()
|
||||
}
|
||||
@@ -1073,7 +1076,7 @@ open class BaseRoomFragment<V : IBaseRoomView?, P : BaseRoomPresenter<V>?> :
|
||||
showToast(getString(R.string.tips_close_leave_mode_first))
|
||||
return
|
||||
}
|
||||
val micPosition = data.extras?.getInt(Constants.KEY_POSITION, Int.MIN_VALUE)
|
||||
val micPosition = data.extras?.getInt(CoreConstants.KEY_POSITION, Int.MIN_VALUE)
|
||||
if (micPosition == Int.MIN_VALUE) return
|
||||
|
||||
//抱人上麦
|
||||
@@ -1146,11 +1149,37 @@ open class BaseRoomFragment<V : IBaseRoomView?, P : BaseRoomPresenter<V>?> :
|
||||
if (result) {
|
||||
mvpPresenter?.upMicroPhone(micPosition, currentUid, b)
|
||||
} else {
|
||||
toast("请给予麦克风权限后再试!")
|
||||
showDeniedTips(
|
||||
requireContext(),
|
||||
ResUtil.getString(R.string.permission_denied_tips_mic)
|
||||
)
|
||||
}
|
||||
}, { throwable: Throwable? -> toast("发生一些异常,请稍后重试!") })
|
||||
}
|
||||
|
||||
private fun showDeniedTips(context: Context, message: String) {
|
||||
CommonTipDialog(context).apply {
|
||||
setTipMsg(message)
|
||||
setOkText("去设置")
|
||||
setOnActionListener(
|
||||
object : CommonTipDialog.OnActionListener {
|
||||
override fun onOk() {
|
||||
//同意跳到应用详情页面
|
||||
val packageUri =
|
||||
Uri.parse("package:${context.packageName}")
|
||||
val intent = Intent(
|
||||
Settings.ACTION_APPLICATION_DETAILS_SETTINGS,
|
||||
packageUri
|
||||
)
|
||||
(context as? Activity)?.startActivityForResult(
|
||||
intent, 0
|
||||
)
|
||||
}
|
||||
}
|
||||
)
|
||||
}.show()
|
||||
}
|
||||
|
||||
/**
|
||||
* 是否有麦克风权限
|
||||
*
|
||||
@@ -1355,7 +1384,7 @@ open class BaseRoomFragment<V : IBaseRoomView?, P : BaseRoomPresenter<V>?> :
|
||||
.subscribe { aBoolean: Boolean ->
|
||||
if (aBoolean) {
|
||||
AudioEngineManager.get().isMute = !AudioEngineManager.get().isMute
|
||||
AudioEngineManager.get().setRole(Constants.CLIENT_ROLE_BROADCASTER)
|
||||
AudioEngineManager.get().setRole(CoreConstants.CLIENT_ROLE_BROADCASTER)
|
||||
updateMicBtn()
|
||||
} else {
|
||||
toast("开启权限后才能开麦")
|
||||
@@ -1371,7 +1400,7 @@ open class BaseRoomFragment<V : IBaseRoomView?, P : BaseRoomPresenter<V>?> :
|
||||
"关闭麦克风"
|
||||
)
|
||||
} else if (AvRoomDataManager.get().isOnMic(myUid)) {
|
||||
AudioEngineManager.get().setRole(Constants.CLIENT_ROLE_BROADCASTER)
|
||||
AudioEngineManager.get().setRole(CoreConstants.CLIENT_ROLE_BROADCASTER)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -8,7 +8,7 @@ import com.nnbc123.core.room.bean.RoomInfo
|
||||
import com.nnbc123.core.room.event.SwitchRoomEvent
|
||||
import com.nnbc123.core.room.model.AvRoomModel
|
||||
import com.nnbc123.core.utils.CurrentTimeUtils
|
||||
import com.nnbc123.core.utils.StringUtils
|
||||
import com.nnbc123.core.utils.CStringUtils
|
||||
import io.reactivex.Single
|
||||
import io.reactivex.android.schedulers.AndroidSchedulers
|
||||
import io.reactivex.disposables.Disposable
|
||||
@@ -64,7 +64,7 @@ class FakeSingleRoomBackFragment : BaseViewBindingFragment<FragmentFakeSingleRoo
|
||||
jumpRoom(it)
|
||||
} else {
|
||||
preRoomInfo = it
|
||||
if (!StringUtils.isBlank(it.backPic)) {
|
||||
if (!CStringUtils.isBlank(it.backPic)) {
|
||||
AVRoomActivity.setBackBg(mContext, it, binding.svgaImageViewBg, bgPicture)
|
||||
}
|
||||
}
|
||||
|
@@ -9,7 +9,7 @@ import com.nnbc123.core.room.bean.RoomInfo
|
||||
import com.nnbc123.core.room.event.SwitchRoomEvent
|
||||
import com.nnbc123.core.room.model.AvRoomModel
|
||||
import com.nnbc123.core.utils.CurrentTimeUtils
|
||||
import com.nnbc123.core.utils.StringUtils
|
||||
import com.nnbc123.core.utils.CStringUtils
|
||||
import com.opensource.svgaplayer.SVGADrawable
|
||||
import com.opensource.svgaplayer.SVGAImageView
|
||||
import com.opensource.svgaplayer.SVGAParser
|
||||
@@ -55,7 +55,7 @@ class FakeSingleRoomFragment : BaseViewBindingFragment<FragmentFakeSingleRoomBin
|
||||
jumpRoom(it)
|
||||
} else {
|
||||
preRoomInfo = it
|
||||
if (!StringUtils.isBlank(it.backPic)) {
|
||||
if (!CStringUtils.isBlank(it.backPic)) {
|
||||
AVRoomActivity.setBackBg(mContext, it, binding.svgaImageViewBg, bgPicture)
|
||||
}
|
||||
}
|
||||
|
@@ -6,6 +6,7 @@ import android.view.View
|
||||
import androidx.core.view.isInvisible
|
||||
import androidx.core.view.isVisible
|
||||
import androidx.databinding.DataBindingUtil
|
||||
import com.gyf.immersionbar.ImmersionBar
|
||||
import com.nnbc123.app.R
|
||||
import com.nnbc123.app.avroom.adapter.GameMicroViewAdapter
|
||||
import com.nnbc123.app.avroom.adapter.GameMiniMicroViewAdapter
|
||||
@@ -58,6 +59,7 @@ class GameRoomFragment : BaseRoomFragment<IGameRoomView?, GameRoomPresenter?>(),
|
||||
override fun onFindViews() {
|
||||
super.onFindViews()
|
||||
gameBinding = DataBindingUtil.bind(mView)!!
|
||||
ImmersionBar.with(this).titleBarMarginTop(gameBinding.spaceTitleBar).init()
|
||||
gameBinding.lifecycleOwner = this
|
||||
gameBinding.click = this
|
||||
gameBinding.ktvModel = false
|
||||
@@ -169,22 +171,13 @@ class GameRoomFragment : BaseRoomFragment<IGameRoomView?, GameRoomPresenter?>(),
|
||||
|
||||
override fun onStart() {
|
||||
super.onStart()
|
||||
gameDelegate.onStart()
|
||||
}
|
||||
|
||||
override fun onResume() {
|
||||
super.onResume()
|
||||
gameDelegate.onResume()
|
||||
}
|
||||
|
||||
|
||||
override fun onPause() {
|
||||
super.onPause()
|
||||
gameDelegate.onPause()
|
||||
gameDelegate.onStart()
|
||||
}
|
||||
|
||||
override fun onStop() {
|
||||
super.onStop()
|
||||
gameDelegate.onPause()
|
||||
gameDelegate.onStop()
|
||||
}
|
||||
|
||||
|
@@ -6,14 +6,15 @@ import android.os.Bundle
|
||||
import android.view.Gravity
|
||||
import android.view.View
|
||||
import android.view.ViewConfiguration
|
||||
import android.widget.ImageView
|
||||
import androidx.core.content.ContextCompat
|
||||
import androidx.core.view.isVisible
|
||||
import androidx.databinding.DataBindingUtil
|
||||
import androidx.fragment.app.Fragment
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import cn.sharesdk.framework.Platform
|
||||
import com.chad.library.adapter.base.BaseQuickAdapter
|
||||
import com.netease.nim.uikit.common.util.string.StringUtil
|
||||
import com.gyf.immersionbar.ImmersionBar
|
||||
import com.netease.nim.uikit.common.util.string.NimStringUtil
|
||||
import com.netease.nimlib.sdk.chatroom.ChatRoomMessageBuilder
|
||||
import com.netease.nimlib.sdk.chatroom.model.ChatRoomMessage
|
||||
import com.netease.nimlib.sdk.msg.attachment.MsgAttachment
|
||||
@@ -53,6 +54,9 @@ import com.nnbc123.core.room.anotherroompk.ShowUserInfoDialogEvent
|
||||
import com.nnbc123.core.room.bean.RoomContributeDataInfo
|
||||
import com.nnbc123.core.room.bean.RoomContributeUserInfo
|
||||
import com.nnbc123.core.room.bean.RoomInfo
|
||||
import com.nnbc123.core.room.bean.RoomModeType
|
||||
import com.nnbc123.core.room.game.GameInfo
|
||||
import com.nnbc123.core.room.game.GameModel
|
||||
import com.nnbc123.core.room.model.RoomContributeListModel
|
||||
import com.nnbc123.core.room.queuing_mic.event.HasAnimationEffect
|
||||
import com.nnbc123.core.share.ShareModel
|
||||
@@ -119,6 +123,7 @@ class HomePartyFragment : BaseFragment(), View.OnClickListener, OnShareDialogIte
|
||||
|
||||
override fun onFindViews() {
|
||||
_binding = DataBindingUtil.bind(mView)
|
||||
ImmersionBar.with(this).titleBarMarginTop(binding.layoutTitleBar).init()
|
||||
setupRoomTitleMarquee()
|
||||
}
|
||||
|
||||
@@ -128,7 +133,7 @@ class HomePartyFragment : BaseFragment(), View.OnClickListener, OnShareDialogIte
|
||||
*/
|
||||
private fun setupRoomTitleMarquee() {
|
||||
try {
|
||||
val configuration = ViewConfiguration.get(context)
|
||||
val configuration = ViewConfiguration.get(requireContext())
|
||||
val claz: Class<*> = configuration.javaClass
|
||||
val field = claz.getDeclaredField("mFadingMarqueeEnabled")
|
||||
field.isAccessible = true
|
||||
@@ -240,16 +245,16 @@ class HomePartyFragment : BaseFragment(), View.OnClickListener, OnShareDialogIte
|
||||
}
|
||||
|
||||
//这里的2和4是服务端定义的错误状态 关闭排麦模式和关闭PK模式!
|
||||
private val isShowChangeGame: Boolean
|
||||
get() = false
|
||||
/* RoomInfo currentRoomInfo = AvRoomDataManager.get().mCurrentRoomInfo;
|
||||
private val isShowChangeGame: Boolean get() {
|
||||
val currentRoomInfo = AvRoomDataManager.get().mCurrentRoomInfo;
|
||||
return currentRoomInfo != null &&
|
||||
AvRoomDataManager.get().isRoomOwner() &&
|
||||
currentRoomInfo.getIsPermitRoom() != 1 &&
|
||||
currentRoomInfo.getType() != RoomInfo.ROOM_TYPE_SINGLE &&
|
||||
(currentRoomInfo.getRoomModeType() == RoomModeType.NORMAL_MODE ||
|
||||
currentRoomInfo.getRoomModeType() == 2 ||
|
||||
currentRoomInfo.getRoomModeType() == 4);*/
|
||||
currentRoomInfo.getRoomModeType() == 4)
|
||||
}
|
||||
|
||||
fun setRoomBg(roomInfo: RoomInfo?) {
|
||||
if (_binding == null) return
|
||||
@@ -355,7 +360,7 @@ class HomePartyFragment : BaseFragment(), View.OnClickListener, OnShareDialogIte
|
||||
binding.roomInfo = it
|
||||
updateHasAnimationEffect()
|
||||
binding.roomTitle.text = RegexUtil.getPrintableString(it.getTitle())
|
||||
if (!StringUtil.isEmpty(it.getRoomPwd())) {
|
||||
if (!NimStringUtil.isEmpty(it.getRoomPwd())) {
|
||||
binding.roomTitle.setCompoundDrawablesWithIntrinsicBounds(
|
||||
0, 0, R.drawable.icon_room_lock, 0
|
||||
)
|
||||
@@ -404,7 +409,7 @@ class HomePartyFragment : BaseFragment(), View.OnClickListener, OnShareDialogIte
|
||||
binding.roomTitle.text = RegexUtil.getPrintableString(currentRoomInfo.getTitle())
|
||||
}
|
||||
if (currentRoomInfo != null) {
|
||||
if (!StringUtil.isEmpty(currentRoomInfo.getRoomPwd())) {
|
||||
if (!NimStringUtil.isEmpty(currentRoomInfo.getRoomPwd())) {
|
||||
binding.roomTitle.setCompoundDrawablesWithIntrinsicBounds(
|
||||
null, null,
|
||||
resources.getDrawable(R.drawable.icon_room_lock), null
|
||||
@@ -421,6 +426,38 @@ class HomePartyFragment : BaseFragment(), View.OnClickListener, OnShareDialogIte
|
||||
setupFollowRoom()
|
||||
FOLLOW_ROOM_TYPE = if (AvRoomDataManager.get().isRoomFans) "2" else "1"
|
||||
setIdOnlineData()
|
||||
if (isShowChangeGame) {
|
||||
initRvGame()
|
||||
binding.layoutRankTop1.isVisible = false
|
||||
binding.layoutRankTop2.isVisible = false
|
||||
binding.llChangeGame.visibility = View.VISIBLE
|
||||
if (AvRoomDataManager.get().isOpenGame) {
|
||||
binding.tvCurrGame.text = it.mgName
|
||||
} else {
|
||||
binding.tvCurrGame.text = "扩列交友"
|
||||
}
|
||||
GameModel.getGameList()
|
||||
.compose(bindToLifecycle())
|
||||
.subscribe { gameInfos ->
|
||||
if (AvRoomDataManager.get().isOpenGame) {
|
||||
for (i in gameInfos.indices) {
|
||||
val gameInfo: GameInfo = gameInfos[i]
|
||||
if (gameInfo.mgId.toLongOrNull() == it.mgId) {
|
||||
gameInfos.removeAt(i)
|
||||
break
|
||||
}
|
||||
}
|
||||
val gameInfo = GameInfo()
|
||||
gameInfo.name = "扩列交友"
|
||||
gameInfos.add(gameInfo)
|
||||
}
|
||||
gameAdapter?.setNewData(gameInfos)
|
||||
}
|
||||
} else {
|
||||
binding.llChangeGame.setVisibility(View.GONE)
|
||||
binding.layoutRankTop1.isVisible = true
|
||||
binding.layoutRankTop2.isVisible = true
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -515,23 +552,7 @@ class HomePartyFragment : BaseFragment(), View.OnClickListener, OnShareDialogIte
|
||||
.compose(bindToLifecycle())
|
||||
.compose(RxHelper.handleBeanData())
|
||||
.subscribe { roomContributeDataInfo: RoomContributeDataInfo ->
|
||||
val rankings = roomContributeDataInfo.rankings
|
||||
updateRoomRanks(roomContributeDataInfo.rankings)
|
||||
var imageView: ImageView
|
||||
val avatarList = listOf(
|
||||
binding.ivRank0,
|
||||
binding.ivRank1,
|
||||
binding.ivRank2
|
||||
)
|
||||
for (i in avatarList.indices) {
|
||||
imageView = avatarList[i]
|
||||
if (rankings.size > i) {
|
||||
val info = rankings[i]
|
||||
imageView.loadAvatar(info.avatar)
|
||||
} else {
|
||||
imageView.setImageResource(R.drawable.default_avatar)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -8,6 +8,7 @@ import android.widget.ImageView;
|
||||
|
||||
import androidx.databinding.DataBindingUtil;
|
||||
|
||||
import com.gyf.immersionbar.ImmersionBar;
|
||||
import com.netease.nim.uikit.common.util.log.LogUtil;
|
||||
import com.nnbc123.app.R;
|
||||
import com.nnbc123.app.avroom.activity.AVRoomActivity;
|
||||
@@ -33,9 +34,8 @@ import com.nnbc123.app.common.widget.dialog.DialogManager;
|
||||
import com.nnbc123.app.databinding.FragmentAvRoomGameBinding;
|
||||
import com.nnbc123.app.ui.utils.ImageLoadKt;
|
||||
import com.nnbc123.app.ui.webview.DatingRuleWebViewActivity;
|
||||
import com.nnbc123.app.ui.webview.DialogWebViewActivity;
|
||||
import com.nnbc123.app.utils.UserUtils;
|
||||
import com.nnbc123.core.Constants;
|
||||
import com.nnbc123.core.CoreConstants;
|
||||
import com.nnbc123.core.UriProvider;
|
||||
import com.nnbc123.core.auth.AuthModel;
|
||||
import com.nnbc123.core.gift.GiftModel;
|
||||
@@ -133,6 +133,7 @@ public class HomePartyRoomFragment extends BaseRoomFragment<IHomePartyView, Home
|
||||
public void onFindViews() {
|
||||
super.onFindViews();
|
||||
gameBinding = DataBindingUtil.bind(mView);
|
||||
ImmersionBar.with(this).titleBarMarginTop(gameBinding.layoutRoot).init();
|
||||
gameBinding.setLifecycleOwner(this);
|
||||
gameBinding.setClick(this);
|
||||
gameBinding.setKtvModel(false);
|
||||
@@ -672,7 +673,7 @@ public class HomePartyRoomFragment extends BaseRoomFragment<IHomePartyView, Home
|
||||
}
|
||||
FaceInfo info = null;
|
||||
for (FaceInfo faceInfo : faceInfos) {
|
||||
if (faceInfo.getId() == Constants.DRAGON_BAR_ID) {
|
||||
if (faceInfo.getId() == CoreConstants.DRAGON_BAR_ID) {
|
||||
info = faceInfo;
|
||||
}
|
||||
}
|
||||
|
@@ -18,7 +18,7 @@ import com.nnbc123.app.avroom.presenter.HomePartyUserListPresenter;
|
||||
import com.nnbc123.app.avroom.view.IHomePartyUserListView;
|
||||
import com.nnbc123.app.base.BaseMvpFragment;
|
||||
import com.nnbc123.app.ui.widget.UserInfoDialog;
|
||||
import com.nnbc123.core.Constants;
|
||||
import com.nnbc123.core.CoreConstants;
|
||||
import com.nnbc123.core.manager.AvRoomDataManager;
|
||||
import com.nnbc123.core.room.bean.OnlineChatMember;
|
||||
import com.nnbc123.core.room.bean.RoomInfo;
|
||||
@@ -43,7 +43,7 @@ public class OnlineUserFragment extends BaseMvpFragment<IHomePartyUserListView,
|
||||
private SmartRefreshLayout mRefreshLayout;
|
||||
|
||||
private OnlineUserAdapter mOnlineUserAdapter;
|
||||
private int mPage = Constants.PAGE_START;
|
||||
private int mPage = CoreConstants.PAGE_START;
|
||||
private boolean isShowToUser = false;
|
||||
|
||||
@Override
|
||||
@@ -105,7 +105,7 @@ public class OnlineUserFragment extends BaseMvpFragment<IHomePartyUserListView,
|
||||
|
||||
|
||||
public void firstLoad() {
|
||||
mPage = Constants.PAGE_START;
|
||||
mPage = CoreConstants.PAGE_START;
|
||||
loadData(0);
|
||||
}
|
||||
|
||||
@@ -128,14 +128,14 @@ public class OnlineUserFragment extends BaseMvpFragment<IHomePartyUserListView,
|
||||
}
|
||||
}
|
||||
mOnlineUserAdapter.setNewData(chatRoomMemberList);
|
||||
if (mPage == Constants.PAGE_START) {
|
||||
if (mPage == CoreConstants.PAGE_START) {
|
||||
mRefreshLayout.finishRefresh();
|
||||
} else {
|
||||
mRefreshLayout.finishLoadmore(0);
|
||||
}
|
||||
mPage++;
|
||||
} else {
|
||||
if (mPage == Constants.PAGE_START) {
|
||||
if (mPage == CoreConstants.PAGE_START) {
|
||||
mRefreshLayout.finishRefresh();
|
||||
} else {
|
||||
mRefreshLayout.finishLoadmore(0);
|
||||
@@ -147,7 +147,7 @@ public class OnlineUserFragment extends BaseMvpFragment<IHomePartyUserListView,
|
||||
public void onRequestChatMemberByPageFail(String errorStr, int page) {
|
||||
Logger.i("获取到数据失败,page=" + page);
|
||||
mPage = page;
|
||||
if (mPage == Constants.PAGE_START) {
|
||||
if (mPage == CoreConstants.PAGE_START) {
|
||||
mRefreshLayout.finishRefresh();
|
||||
} else {
|
||||
mRefreshLayout.finishLoadmore(0);
|
||||
|
@@ -21,7 +21,7 @@ import com.nnbc123.app.databinding.FragmentPrivilegeCardBinding
|
||||
import com.nnbc123.app.ui.utils.RVDelegate
|
||||
import com.nnbc123.app.ui.widget.dialog.CommonTipDialog
|
||||
import com.nnbc123.core.privilege.bean.PrivilegeCardInfo
|
||||
import com.nnbc123.core.utils.TextUtils
|
||||
import com.nnbc123.core.utils.CTextUtils
|
||||
import com.zhihu.matisse.internal.entity.CustomItem
|
||||
import org.greenrobot.eventbus.EventBus
|
||||
import org.greenrobot.eventbus.Subscribe
|
||||
@@ -173,7 +173,7 @@ class PrivilegeCardFragment : BaseViewBindingFragment<FragmentPrivilegeCardBindi
|
||||
|
||||
override fun onResume() {
|
||||
super.onResume()
|
||||
if (isNeedLoad && (TextUtils.isEmptyText(type) || type == "0")) {
|
||||
if (isNeedLoad && (CTextUtils.isEmptyText(type) || type == "0")) {
|
||||
loadData(true)
|
||||
isNeedLoad = false
|
||||
}
|
||||
@@ -182,7 +182,7 @@ class PrivilegeCardFragment : BaseViewBindingFragment<FragmentPrivilegeCardBindi
|
||||
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||
fun privilegeCardEvent(event: PrivilegeCardEvent?) {
|
||||
isNeedLoad = true
|
||||
if (isResumed && isNeedLoad && (TextUtils.isEmptyText(type) || type == "0")) {
|
||||
if (isResumed && isNeedLoad && (CTextUtils.isEmptyText(type) || type == "0")) {
|
||||
loadData(true)
|
||||
isNeedLoad = false
|
||||
}
|
||||
|
@@ -20,7 +20,7 @@ import com.nnbc123.app.avroom.view.IRoomCharmRankingListView;
|
||||
import com.nnbc123.app.base.BaseMvpFragment;
|
||||
import com.nnbc123.app.ui.widget.GiftDialog;
|
||||
import com.nnbc123.app.ui.widget.UserInfoDialog;
|
||||
import com.nnbc123.core.Constants;
|
||||
import com.nnbc123.core.CoreConstants;
|
||||
import com.nnbc123.core.manager.AvRoomDataManager;
|
||||
import com.nnbc123.core.room.bean.RoomContributeUserInfo;
|
||||
import com.nnbc123.core.room.bean.RoomInfo;
|
||||
@@ -91,7 +91,7 @@ public class RoomCharmRankingListFragment extends BaseMvpFragment<IRoomCharmRank
|
||||
|
||||
public void firstLoad() {
|
||||
isLoadMore = false;
|
||||
page = Constants.PAGE_START;
|
||||
page = CoreConstants.PAGE_START;
|
||||
loadData();
|
||||
}
|
||||
|
||||
|
@@ -20,7 +20,7 @@ import com.nnbc123.core.room.bean.RoomRankMultiItem;
|
||||
import com.nnbc123.library.base.factory.CreatePresenter;
|
||||
import com.nnbc123.library.utils.ListUtils;
|
||||
import com.nnbc123.app.ui.widget.UserInfoDialog;
|
||||
import com.nnbc123.core.Constants;
|
||||
import com.nnbc123.core.CoreConstants;
|
||||
import com.nnbc123.core.room.bean.RoomContributeDataInfo;
|
||||
import com.nnbc123.core.room.bean.RoomContributeUserInfo;
|
||||
|
||||
@@ -113,7 +113,7 @@ public class RoomContributeFragment extends BaseMvpFragment<IRoomContributeListV
|
||||
}
|
||||
|
||||
public void firstLoad() {
|
||||
page = Constants.PAGE_START;
|
||||
page = CoreConstants.PAGE_START;
|
||||
loadData();
|
||||
}
|
||||
|
||||
@@ -145,7 +145,7 @@ public class RoomContributeFragment extends BaseMvpFragment<IRoomContributeListV
|
||||
public void getSingleRankingSuccess(RoomContributeDataInfo roomContributeDataInfo) {
|
||||
List<RoomContributeUserInfo> list = roomContributeDataInfo.getRankings();
|
||||
if (!ListUtils.isListEmpty(list)) {
|
||||
if (page == Constants.PAGE_START) {
|
||||
if (page == CoreConstants.PAGE_START) {
|
||||
dataInfoList = roomContributeDataInfo.getRankings();
|
||||
setContributeDataView(roomContributeDataInfo);
|
||||
mRefreshLayout.finishRefresh();
|
||||
@@ -156,7 +156,7 @@ public class RoomContributeFragment extends BaseMvpFragment<IRoomContributeListV
|
||||
}
|
||||
page++;
|
||||
} else {
|
||||
if (page == Constants.PAGE_START) {
|
||||
if (page == CoreConstants.PAGE_START) {
|
||||
dataInfoList = null;
|
||||
mRefreshLayout.finishRefresh();
|
||||
setContributeDataView(roomContributeDataInfo);
|
||||
@@ -188,7 +188,7 @@ public class RoomContributeFragment extends BaseMvpFragment<IRoomContributeListV
|
||||
|
||||
@Override
|
||||
public void getSingleRakingFail(int errorCode, String errorMsg) {
|
||||
if (page == Constants.PAGE_START) {
|
||||
if (page == CoreConstants.PAGE_START) {
|
||||
mRefreshLayout.finishRefresh();
|
||||
} else {
|
||||
mRefreshLayout.finishLoadmore(0);
|
||||
|
@@ -9,6 +9,7 @@ import androidx.core.view.isVisible
|
||||
import androidx.core.view.updateLayoutParams
|
||||
import androidx.databinding.DataBindingUtil
|
||||
import androidx.fragment.app.viewModels
|
||||
import com.gyf.immersionbar.ImmersionBar
|
||||
import com.netease.nim.uikit.common.util.sys.ScreenUtil
|
||||
import com.nnbc123.app.R
|
||||
import com.nnbc123.app.avroom.adapter.OnMicroItemClickListener
|
||||
@@ -42,7 +43,7 @@ import com.nnbc123.core.statistic.protocol.StatisticsProtocol
|
||||
import com.nnbc123.core.user.UserModel
|
||||
import com.nnbc123.core.user.bean.UserInfo
|
||||
import com.nnbc123.core.utils.CurrentTimeUtils
|
||||
import com.nnbc123.core.utils.toast
|
||||
import com.nnbc123.core.utils.ktx.toast
|
||||
import com.nnbc123.library.base.factory.CreatePresenter
|
||||
import com.nnbc123.library.utils.TimeUtils
|
||||
import com.trello.rxlifecycle3.android.FragmentEvent
|
||||
@@ -86,6 +87,7 @@ class SingleRoomFragment : BaseRoomFragment<ISingleRoomView?, SingleRoomPresente
|
||||
override fun onFindViews() {
|
||||
super.onFindViews()
|
||||
gameBinding = DataBindingUtil.bind(mView)!!
|
||||
ImmersionBar.with(this).titleBarMarginTop(gameBinding.spaceTitleBar).init()
|
||||
gameBinding.lifecycleOwner = this
|
||||
gameBinding.click = this
|
||||
}
|
||||
@@ -265,13 +267,13 @@ class SingleRoomFragment : BaseRoomFragment<ISingleRoomView?, SingleRoomPresente
|
||||
gameBinding.microView.bindAdapter(SingleRoomPKMicroViewAdapter(context))
|
||||
gameBinding.viewPkBoard.isVisible = true
|
||||
gameBinding.microView.updateLayoutParams<ConstraintLayout.LayoutParams> {
|
||||
topMargin = ScreenUtil.dip2px(140f)
|
||||
topMargin = ScreenUtil.dip2px(50f)
|
||||
}
|
||||
} else if (!AvRoomDataManager.get().isOpenAnotherPKMode && gameBinding.microView.adapter !is SingleAnchorMicroViewAdapter) {
|
||||
gameBinding.microView.bindAdapter(SingleAnchorMicroViewAdapter(context))
|
||||
gameBinding.viewPkBoard.isVisible = false
|
||||
gameBinding.microView.updateLayoutParams<ConstraintLayout.LayoutParams> {
|
||||
topMargin = ScreenUtil.dip2px(110f)
|
||||
topMargin = ScreenUtil.dip2px(10f)
|
||||
}
|
||||
} else {
|
||||
gameBinding.microView.adapter?.notifyDataSetChanged()
|
||||
|
@@ -8,8 +8,8 @@ import com.nnbc123.app.BuildConfig;
|
||||
|
||||
public class AppConfig {
|
||||
|
||||
protected static final String APP_ID = "1467745235064848385";
|
||||
protected static final String APP_KEY = "BvjLDpWol7OihaYeFebuepx1bZu6cxU5";
|
||||
protected static final String APP_ID = "1746741906623631362";
|
||||
protected static final String APP_KEY = "L5WQjy0Xg2fcN0DhIig78qt0cPCMnS9W";
|
||||
protected static boolean isTestEnv = BuildConfig.DEBUG;
|
||||
|
||||
}
|
||||
|
@@ -34,7 +34,7 @@ class GameDelegate(val activity: Activity, val container: FrameLayout, var mgId:
|
||||
private val TAG = "GameDelegate"
|
||||
private var APP_CODE = ""
|
||||
|
||||
private val mRoomID = AvRoomDataManager.get().roomUid.toString()
|
||||
private val mRoomID :String get() = AvRoomDataManager.get().roomUid.toString()
|
||||
private val mLanguage = "zh-CN" //语言
|
||||
|
||||
//调用游戏SDK的接口,成功加载游戏后可用:
|
||||
@@ -84,7 +84,10 @@ class GameDelegate(val activity: Activity, val container: FrameLayout, var mgId:
|
||||
}
|
||||
|
||||
fun updateGame(mgId: Long?) {
|
||||
if (mgId == null || mgId == 0L || mgId == mMGID || iSudFSTAPP == null) return
|
||||
if (mgId == null || mgId == 0L) return
|
||||
if (mgId == mMGID && iSudFSTAPP != null) {
|
||||
return
|
||||
}
|
||||
mMGID = mgId
|
||||
updateMyMicQueue(GameStatus.STATUS_NOT_JOIN)
|
||||
loadMG(activity, mUid, mRoomID, APP_CODE, mMGID, mLanguage)
|
||||
@@ -164,8 +167,11 @@ class GameDelegate(val activity: Activity, val container: FrameLayout, var mgId:
|
||||
language: String
|
||||
) {
|
||||
iSudFSTAPP?.destroyMG()
|
||||
SudMGP.getCfg().showLoadingGameBg = !isHideLoadingBg()
|
||||
iSudFSTAPP = SudMGP.loadMG(activity, userID, roomID, code, mgID, language, mISudFSMMG)
|
||||
addGameView(iSudFSTAPP!!.gameView)
|
||||
iSudFSTAPP?.apply {
|
||||
addGameView(gameView)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -226,6 +232,9 @@ class GameDelegate(val activity: Activity, val container: FrameLayout, var mgId:
|
||||
LogUtils.d(p0)
|
||||
}
|
||||
|
||||
override fun onGameLoadingProgress(p0: Int, p1: Int, p2: Int) {
|
||||
}
|
||||
|
||||
override fun onGameStarted() {
|
||||
}
|
||||
|
||||
@@ -285,7 +294,11 @@ class GameDelegate(val activity: Activity, val container: FrameLayout, var mgId:
|
||||
}
|
||||
|
||||
override fun onGetGameCfg(handle: ISudFSMStateHandle?, p1: String?) {
|
||||
handle?.success(gson.toJson(GameCfg()))
|
||||
val config = GameCfg()
|
||||
if (isHideGameBg()) {
|
||||
config.ui.game_bg.hide = true
|
||||
}
|
||||
handle?.success(gson.toJson(config))
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -313,9 +326,9 @@ class GameDelegate(val activity: Activity, val container: FrameLayout, var mgId:
|
||||
//游戏安全操作区域
|
||||
val viewGameRect = JSONObject()
|
||||
viewGameRect.put("left", 0)
|
||||
viewGameRect.put("top", ScreenUtil.dip2px(200f))
|
||||
viewGameRect.put("top", ScreenUtil.dip2px(180f))
|
||||
viewGameRect.put("right", 0)
|
||||
viewGameRect.put("bottom", ScreenUtil.dip2px(200f))
|
||||
viewGameRect.put("bottom", ScreenUtil.dip2px(150f))
|
||||
jsonObject.put("view_game_rect", viewGameRect)
|
||||
|
||||
//通知游戏
|
||||
@@ -655,6 +668,12 @@ class GameDelegate(val activity: Activity, val container: FrameLayout, var mgId:
|
||||
iSudFSTAPP?.destroyMG()
|
||||
}
|
||||
|
||||
private fun isHideLoadingBg(): Boolean {
|
||||
return mMGID == 1704460412809043970
|
||||
}
|
||||
private fun isHideGameBg(): Boolean {
|
||||
return mMGID == 1704460412809043970
|
||||
}
|
||||
}
|
||||
|
||||
internal interface AppLoginListener {
|
||||
|
@@ -28,7 +28,7 @@ import com.opensource.svgaplayer.SVGADynamicEntity;
|
||||
import com.nnbc123.app.R;
|
||||
import com.nnbc123.app.application.XChatApplication;
|
||||
|
||||
import static com.nnbc123.xchat_android_constants.XChatConstants.SELECT_ANIM_DURATION;
|
||||
import static com.nnbc123.core.XChatConstants.SELECT_ANIM_DURATION;
|
||||
|
||||
public class AnimHelper {
|
||||
|
||||
|
@@ -6,10 +6,10 @@ import android.view.LayoutInflater
|
||||
import android.view.animation.Animation
|
||||
import android.widget.FrameLayout
|
||||
import androidx.databinding.DataBindingUtil
|
||||
import com.chuhai.utils.ktx.getColorById
|
||||
import com.chuhai.utils.ktx.singleClick
|
||||
import com.chuhai.utils.log.ILog
|
||||
import com.chuhai.utils.spannable.SpannableTextBuilder
|
||||
import com.chu.utils.ktx.getColorById
|
||||
import com.chu.utils.ktx.singleClick
|
||||
import com.chu.utils.log.ILog
|
||||
import com.chu.utils.spannable.SpannableTextBuilder
|
||||
import com.nnbc123.app.R
|
||||
import com.nnbc123.app.databinding.RoomHourRankingWidgetBinding
|
||||
import com.nnbc123.app.ui.webview.DialogWebViewActivity
|
||||
|
@@ -3,40 +3,40 @@ package com.nnbc123.app.avroom.newuserchargegift
|
||||
import android.annotation.SuppressLint
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import android.util.Log
|
||||
import android.view.Gravity
|
||||
import android.view.View
|
||||
import android.view.WindowManager
|
||||
import androidx.core.view.isVisible
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import com.android.billingclient.api.BillingClient
|
||||
import com.android.billingclient.api.BillingResult
|
||||
import com.android.billingclient.api.ProductDetails
|
||||
import com.android.billingclient.api.Purchase
|
||||
import com.netease.nim.uikit.common.util.sys.ScreenUtil
|
||||
import com.netease.nim.uikit.common.util.sys.TimeUtil
|
||||
import com.trello.rxlifecycle3.android.ActivityEvent
|
||||
import com.nnbc123.app.R
|
||||
import com.nnbc123.app.avroom.firstcharge.SelectPayTypeDialog
|
||||
import com.nnbc123.app.bank_card.activity.AddBankCardAgreementActivity
|
||||
import com.nnbc123.app.base.BaseViewBindingActivity
|
||||
import com.nnbc123.app.common.widget.dialog.DialogManager.AbsOkDialogListener
|
||||
import com.nnbc123.app.databinding.DialogNewUserChargeGiftBinding
|
||||
import com.nnbc123.app.ui.pay.BillingManager
|
||||
import com.nnbc123.app.ui.setting.ModifyPwdActivity
|
||||
import com.nnbc123.app.ui.utils.RVDelegate
|
||||
import com.nnbc123.app.ui.webview.CommonWebViewActivity
|
||||
import com.nnbc123.core.UriProvider
|
||||
import com.nnbc123.core.auth.AuthModel
|
||||
import com.nnbc123.core.pay.PayModel
|
||||
import com.nnbc123.core.pay.PaymentActivity
|
||||
import com.nnbc123.core.pay.bean.FirstChargeGoods
|
||||
import com.nnbc123.core.pay.bean.FirstChargeReward
|
||||
import com.nnbc123.core.pay.bean.PaymentResult
|
||||
import com.nnbc123.core.pay.bean.PayRecordId
|
||||
import com.nnbc123.core.pay.event.NewUserChargeEvent
|
||||
import com.nnbc123.core.pay.model.unionpay.UnionPayModel
|
||||
import com.nnbc123.core.statistic.StatisticManager
|
||||
import com.nnbc123.core.statistic.protocol.StatisticsProtocol
|
||||
import com.nnbc123.core.user.UserModel
|
||||
import com.nnbc123.core.utils.CurrentTimeUtils
|
||||
import com.nnbc123.core.utils.toast
|
||||
import com.nnbc123.core.utils.net.IgnoreException
|
||||
import com.nnbc123.core.utils.ktx.toast
|
||||
import com.nnbc123.library.annatation.ActLayoutRes
|
||||
import com.nnbc123.library.utils.JavaUtil
|
||||
import com.nnbc123.library.common.Constants
|
||||
import com.nnbc123.library.utils.AppMetaDataUtil
|
||||
import com.nnbc123.library.utils.SingleToastUtil
|
||||
import io.reactivex.Observable
|
||||
import io.reactivex.android.schedulers.AndroidSchedulers
|
||||
@@ -46,13 +46,15 @@ import org.greenrobot.eventbus.ThreadMode
|
||||
import java.util.concurrent.TimeUnit
|
||||
|
||||
@ActLayoutRes(R.layout.dialog_new_user_charge_gift)
|
||||
class NewUserChargeGiftDialog : BaseViewBindingActivity<DialogNewUserChargeGiftBinding>() {
|
||||
class NewUserChargeGiftDialog : BaseViewBindingActivity<DialogNewUserChargeGiftBinding>(),
|
||||
BillingManager.BillingUpdatesListener {
|
||||
|
||||
private var goodsList: List<FirstChargeGoods>? = null
|
||||
private var currGoods: FirstChargeGoods? = null
|
||||
private lateinit var rewardAdapter: RewardAdapter
|
||||
private lateinit var rvDelegate: RVDelegate<FirstChargeReward>
|
||||
|
||||
private val TAG = "NewUserChargeGiftDialog"
|
||||
private var billingManager: BillingManager? = null
|
||||
companion object {
|
||||
@JvmStatic
|
||||
fun start(context: Context) {
|
||||
@@ -76,8 +78,7 @@ class NewUserChargeGiftDialog : BaseViewBindingActivity<DialogNewUserChargeGiftB
|
||||
|
||||
binding.tvCharge.setOnClickListener {
|
||||
currGoods?.let {
|
||||
SelectPayTypeDialog.newInstance(it.chargeProdId, "¥${it.chargeMoney}")
|
||||
.show(this)
|
||||
buyProduct(it.productDetails)
|
||||
StatisticManager.Instance()
|
||||
.onEvent(
|
||||
StatisticsProtocol.EVENT_NUGIFT_POP_CLICK,
|
||||
@@ -139,11 +140,14 @@ class NewUserChargeGiftDialog : BaseViewBindingActivity<DialogNewUserChargeGiftB
|
||||
button.isChecked = true
|
||||
}
|
||||
button.isVisible = true
|
||||
button.text = "${it.chargeMoney}元"
|
||||
button.text = "$${it.chargeMoney}"
|
||||
} ?: run {
|
||||
button.isVisible = false
|
||||
}
|
||||
}
|
||||
if (AppMetaDataUtil.getChannelID().equals(Constants.CHANNEL_GOOGLE)) {
|
||||
initBilling()
|
||||
}
|
||||
}
|
||||
|
||||
@SuppressLint("CheckResult", "SetTextI18n")
|
||||
@@ -186,43 +190,6 @@ class NewUserChargeGiftDialog : BaseViewBindingActivity<DialogNewUserChargeGiftB
|
||||
if (resultCode != RESULT_OK) {
|
||||
return
|
||||
}
|
||||
//支付页面返回处理
|
||||
if (requestCode == PaymentActivity.REQUEST_CODE_PAY) {
|
||||
if (data != null && data.extras != null) {
|
||||
val paymentResult: PaymentResult? =
|
||||
data.getParcelableExtra(PaymentActivity.KEY_PAY_RESULT)
|
||||
if (paymentResult != null) {
|
||||
// 充值金额超过限定时,就必须先实名认证
|
||||
when (JavaUtil.str2int(paymentResult.code)) {
|
||||
PayModel.NOT_REAL_NAME_BEFORE_CHARGING -> dialogManager.showTipsDialog(
|
||||
getString(R.string.tips_need_to_certification),
|
||||
getString(R.string.go_to_certification),
|
||||
object : AbsOkDialogListener() {
|
||||
override fun onOk() {
|
||||
// 跳去实名认证页面
|
||||
CommonWebViewActivity.start(
|
||||
this@NewUserChargeGiftDialog,
|
||||
UriProvider.getTutuRealNamePage()
|
||||
)
|
||||
}
|
||||
})
|
||||
UnionPayModel.CODE_NEED_BIND_BANK_CARD_FIRST -> dialogManager.showTipsDialog(
|
||||
getString(R.string.tips_need_bind_bank_card_first),
|
||||
object : AbsOkDialogListener() {
|
||||
override fun onOk() {
|
||||
// 跳去添加银行卡页面
|
||||
AddBankCardAgreementActivity.start(this@NewUserChargeGiftDialog)
|
||||
}
|
||||
})
|
||||
else -> {
|
||||
toast(paymentResult.msg)
|
||||
//重新获取钱包信息
|
||||
PayModel.get().getWalletInfo(AuthModel.get().currentUid).subscribe()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (requestCode == BIND_CODE_GOLD) {
|
||||
ModifyPwdActivity.start(this, ModifyPwdActivity.FOGERT_PAY_PWD)
|
||||
}
|
||||
@@ -233,9 +200,113 @@ class NewUserChargeGiftDialog : BaseViewBindingActivity<DialogNewUserChargeGiftB
|
||||
finish()
|
||||
}
|
||||
|
||||
override fun onResume() {
|
||||
super.onResume()
|
||||
if (billingManager?.isServiceConnected == true) {
|
||||
billingManager?.onQueryPurchases()
|
||||
}
|
||||
}
|
||||
|
||||
override fun onDestroy() {
|
||||
super.onDestroy()
|
||||
EventBus.getDefault().unregister(this)
|
||||
billingManager?.destroy()
|
||||
}
|
||||
|
||||
private fun initBilling() {
|
||||
billingManager = BillingManager(this, this)
|
||||
}
|
||||
|
||||
@SuppressLint("CheckResult")
|
||||
override fun onBillingClientSetupFinished() {
|
||||
Log.i(TAG, "onBillingClientSetupFinished")
|
||||
goodsList?.let { initProduceList(it) }
|
||||
}
|
||||
|
||||
private fun initProduceList(goodsList: List<FirstChargeGoods>) {
|
||||
val productKeys: MutableList<String> = ArrayList()
|
||||
for (bean in goodsList) {
|
||||
productKeys.add(bean.chargeProdId)
|
||||
}
|
||||
billingManager?.querySkuDetailsAsync(productKeys) { billingResult: BillingResult, productDetails: MutableList<ProductDetails> ->
|
||||
if (billingResult.responseCode != BillingClient.BillingResponseCode.OK) {
|
||||
Log.w(
|
||||
TAG,
|
||||
"Unsuccessful query for type: " + BillingClient.ProductType.INAPP + ". Error code: " + billingResult.responseCode
|
||||
)
|
||||
return@querySkuDetailsAsync
|
||||
}
|
||||
if (productDetails.isNotEmpty()) {
|
||||
for (chargeBean in goodsList) {
|
||||
for (skuDetails in productDetails) {
|
||||
if (skuDetails.productId == chargeBean.chargeProdId) {
|
||||
chargeBean.productDetails = skuDetails
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*商品更新回调*/
|
||||
@SuppressLint("CheckResult")
|
||||
override fun onPurchasesUpdated(purchases: List<Purchase>) {
|
||||
for (purchase in purchases) {
|
||||
if (purchase.purchaseState == Purchase.PurchaseState.PURCHASED &&
|
||||
purchase.accountIdentifiers != null
|
||||
) {
|
||||
PayModel.get().verifyOrder(
|
||||
purchase.accountIdentifiers!!.obfuscatedAccountId,
|
||||
purchase.products[0],
|
||||
purchase.packageName,
|
||||
purchase.purchaseToken
|
||||
)
|
||||
.compose(bindToLifecycle())
|
||||
.subscribe(
|
||||
{ token: String? ->
|
||||
//L.i("token=" + token);
|
||||
billingManager?.consumeAsync(token)
|
||||
}
|
||||
) { throwable: Throwable ->
|
||||
if (throwable !is IgnoreException) {
|
||||
SingleToastUtil.showToast(throwable.message)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Log.i(TAG, "onPurchasesUpdated")
|
||||
}
|
||||
|
||||
override fun onConsumeFinished(token: String?, result: Int) {
|
||||
|
||||
}
|
||||
|
||||
override fun onFailedHandle(result: Int) {
|
||||
|
||||
}
|
||||
|
||||
/*购买商品*/
|
||||
@SuppressLint("CheckResult")
|
||||
fun buyProduct(skuDetails: ProductDetails?) {
|
||||
if (skuDetails != null) {
|
||||
Log.d(TAG, "BuyProduct:" + skuDetails.productId)
|
||||
PayModel.get().placeOrder(skuDetails.productId)
|
||||
.compose(bindToLifecycle())
|
||||
.subscribe(
|
||||
{ recordId: PayRecordId ->
|
||||
billingManager?.initiatePurchaseFlow(
|
||||
skuDetails,
|
||||
recordId.recordId
|
||||
)
|
||||
}
|
||||
) { throwable: Throwable ->
|
||||
SingleToastUtil.showToast(
|
||||
throwable.message
|
||||
)
|
||||
}
|
||||
} else {
|
||||
Log.w(TAG, "skuDetails ==null")
|
||||
}
|
||||
}
|
||||
}
|
@@ -6,7 +6,7 @@ import com.chad.library.adapter.base.BaseViewHolder
|
||||
import com.nnbc123.app.R
|
||||
import com.nnbc123.app.ui.utils.load
|
||||
import com.nnbc123.core.pay.bean.FirstChargeReward
|
||||
import com.nnbc123.core.utils.TextUtils
|
||||
import com.nnbc123.core.utils.CTextUtils
|
||||
|
||||
class RewardAdapter :
|
||||
BaseQuickAdapter<FirstChargeReward, BaseViewHolder>(R.layout.item_new_user_charge_reward) {
|
||||
@@ -16,6 +16,6 @@ class RewardAdapter :
|
||||
|
||||
helper.setText(R.id.tv_name, item.showText)
|
||||
.setText(R.id.tv_time, "(${item.showTime})")
|
||||
.setGone(R.id.tv_time, !TextUtils.isEmptyText(item.showTime))
|
||||
.setGone(R.id.tv_time, !CTextUtils.isEmptyText(item.showTime))
|
||||
}
|
||||
}
|
@@ -21,7 +21,7 @@ import com.netease.nimlib.sdk.util.Entry;
|
||||
import com.nnbc123.app.avroom.activity.AVRoomActivity;
|
||||
import com.nnbc123.app.avroom.view.IAvRoomView;
|
||||
import com.nnbc123.app.base.BaseMvpPresenter;
|
||||
import com.nnbc123.core.Constants;
|
||||
import com.nnbc123.core.CoreConstants;
|
||||
import com.nnbc123.core.DemoCache;
|
||||
import com.nnbc123.core.auth.AuthModel;
|
||||
import com.nnbc123.core.bean.RoomMicInfo;
|
||||
@@ -292,7 +292,7 @@ public class AvRoomPresenter extends BaseMvpPresenter<IAvRoomView> {
|
||||
AvRoomDataManager.get().mCurrentRoomInfo.onlineNum = roomInfo.getOnlineUserCount();
|
||||
Map<String, Object> extension = roomInfo.getExtension();
|
||||
if (extension != null) {
|
||||
String roomInfoStr = (String) extension.get(Constants.KEY_CHAT_ROOM_INFO_ROOM);
|
||||
String roomInfoStr = (String) extension.get(CoreConstants.KEY_CHAT_ROOM_INFO_ROOM);
|
||||
if (!TextUtils.isEmpty(roomInfoStr)) {
|
||||
RoomInfo extRoomInfo = mGson.fromJson(roomInfoStr, RoomInfo.class);
|
||||
extRoomInfo.setRoomId(Long.parseLong(roomInfo.getRoomId()));
|
||||
@@ -302,7 +302,7 @@ public class AvRoomPresenter extends BaseMvpPresenter<IAvRoomView> {
|
||||
AvRoomDataManager.get().mCurrentRoomInfo = extRoomInfo;
|
||||
}
|
||||
//获取云信麦序相关信息
|
||||
String roomMicStr = (String) extension.get(Constants.KEY_CHAT_ROOM_INFO_MIC);
|
||||
String roomMicStr = (String) extension.get(CoreConstants.KEY_CHAT_ROOM_INFO_MIC);
|
||||
LogUtils.d(roomMicStr);
|
||||
if (!TextUtils.isEmpty(roomMicStr)) {
|
||||
//清除魅力值(重新进房会触发退房,已经清除过了)
|
||||
@@ -368,7 +368,7 @@ public class AvRoomPresenter extends BaseMvpPresenter<IAvRoomView> {
|
||||
if (AvRoomDataManager.get().isRoomInQueuingMicMode(data)) {
|
||||
//noinspection ResultOfMethodCallIgnored
|
||||
MicQueueModel.get()
|
||||
.loadMicQueueList(data.getUid(), 1, Constants.PAGE_SIZE)
|
||||
.loadMicQueueList(data.getUid(), 1, CoreConstants.PAGE_SIZE)
|
||||
.subscribe((respQueuingMicListInfo, throwable) -> {
|
||||
if (throwable == null) {
|
||||
List<QueuingMicMemeberInfo> queue = respQueuingMicListInfo.getQueue();
|
||||
|
@@ -12,7 +12,7 @@ import com.netease.nimlib.sdk.chatroom.model.ChatRoomMessage;
|
||||
import com.netease.nimlib.sdk.msg.constant.MsgTypeEnum;
|
||||
import com.nnbc123.app.avroom.view.IHomePartyView;
|
||||
import com.nnbc123.app.utils.UserUtils;
|
||||
import com.nnbc123.core.Constants;
|
||||
import com.nnbc123.core.CoreConstants;
|
||||
import com.nnbc123.core.auth.AuthModel;
|
||||
import com.nnbc123.core.bean.RoomQueueInfo;
|
||||
import com.nnbc123.core.im.custom.bean.CustomAttachment;
|
||||
@@ -143,7 +143,7 @@ public class HomePartyPresenter extends BaseRoomPresenter<IHomePartyView> {
|
||||
List<FaceReceiveInfo> faceReceiveInfos = new ArrayList<>();
|
||||
FaceReceiveInfo faceReceiveInfo = new FaceReceiveInfo();
|
||||
faceReceiveInfo.setNick(userInfo.getNick());
|
||||
faceReceiveInfo.setFaceId(Constants.DRAGON_BAR_ID);
|
||||
faceReceiveInfo.setFaceId(CoreConstants.DRAGON_BAR_ID);
|
||||
faceReceiveInfo.setUid(userInfo.getUid());
|
||||
|
||||
faceReceiveInfo.setResultIndexes(integers);
|
||||
|
@@ -3,7 +3,7 @@ package com.nnbc123.app.avroom.presenter;
|
||||
import com.nnbc123.app.avroom.view.IRecordForPKView;
|
||||
import com.nnbc123.app.base.BaseMvpPresenter;
|
||||
import com.nnbc123.app.home.helper.LoadPageDataHelper;
|
||||
import com.nnbc123.core.Constants;
|
||||
import com.nnbc123.core.CoreConstants;
|
||||
import com.nnbc123.core.manager.AvRoomDataManager;
|
||||
import com.nnbc123.core.room.bean.RoomInfo;
|
||||
import com.nnbc123.core.room.pk.bean.PKRecordInfo;
|
||||
@@ -39,7 +39,7 @@ public class RecordForPKPresenter extends BaseMvpPresenter<IRecordForPKView>
|
||||
return PkModel.get().loadPKRecordList(
|
||||
currentRoomInfo.getUid(),
|
||||
curPage,
|
||||
Constants.PAGE_SIZE
|
||||
CoreConstants.PAGE_SIZE
|
||||
)
|
||||
.flatMap(new Function<PKRecordListInfo, SingleSource<? extends List<PKRecordInfo>>>() {
|
||||
@Override
|
||||
|
@@ -4,7 +4,7 @@ import com.nnbc123.core.bean.RoomNewbieInfo;
|
||||
import com.nnbc123.app.base.BaseMvpPresenter;
|
||||
import com.nnbc123.app.module.IRoomNewbieView;
|
||||
import com.nnbc123.app.module.RoomNewbieModel;
|
||||
import com.nnbc123.core.Constants;
|
||||
import com.nnbc123.core.CoreConstants;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@@ -22,7 +22,7 @@ public class RoomNewbiePresenter extends BaseMvpPresenter<IRoomNewbieView> {
|
||||
page++;
|
||||
}
|
||||
|
||||
RoomNewbieModel.get().getRoomNewbieList(page, Constants.PAGE_SIZE)
|
||||
RoomNewbieModel.get().getRoomNewbieList(page, CoreConstants.PAGE_SIZE)
|
||||
.compose(bindToLifecycle()).subscribe(new SingleObserver<List<RoomNewbieInfo>>() {
|
||||
@Override
|
||||
public void onSubscribe(Disposable d) {
|
||||
|
@@ -7,7 +7,7 @@ import android.view.View;
|
||||
import com.coorchice.library.SuperTextView;
|
||||
import com.netease.nim.uikit.common.util.sys.ScreenUtil;
|
||||
import com.nnbc123.app.R;
|
||||
import com.nnbc123.app.UIHelper;
|
||||
import com.nnbc123.app.utils.UIHelper;
|
||||
import com.nnbc123.app.avroom.widget.MessageView;
|
||||
import com.nnbc123.app.base.list.BaseViewHolder;
|
||||
import com.nnbc123.app.base.list.CommonAdapter;
|
||||
|
@@ -11,7 +11,7 @@ import com.nnbc123.app.databinding.DialogRedPackageGoRoomBinding
|
||||
import com.nnbc123.app.ui.utils.ImageLoadUtils
|
||||
import com.nnbc123.core.manager.AvRoomDataManager
|
||||
import com.nnbc123.core.redpackage.RedPackageNotifyInfo
|
||||
import com.nnbc123.core.utils.subAndReplaceDot
|
||||
import com.nnbc123.core.utils.ktx.subAndReplaceDot
|
||||
import org.greenrobot.eventbus.EventBus
|
||||
|
||||
class RedPackageGoRoomDialog : BaseDialog<DialogRedPackageGoRoomBinding>() {
|
||||
|
@@ -11,7 +11,7 @@ import com.nnbc123.core.redpackage.RedEnvelopeItemVO
|
||||
import com.nnbc123.app.R
|
||||
import com.nnbc123.app.ui.utils.ImageLoadUtils
|
||||
import com.nnbc123.app.utils.UserUtils
|
||||
import com.nnbc123.core.utils.subAndReplaceDot
|
||||
import com.nnbc123.core.utils.ktx.subAndReplaceDot
|
||||
import java.text.SimpleDateFormat
|
||||
import java.util.*
|
||||
|
||||
|
@@ -100,11 +100,11 @@ class RedPackageOpenDialog : BaseDialog<DialogRedPackageOpenBinding>() {
|
||||
it.addListener(object : AnimatorListenerAdapter() {
|
||||
|
||||
var isCanceled = false
|
||||
override fun onAnimationCancel(animation: Animator?) {
|
||||
override fun onAnimationCancel(animation: Animator) {
|
||||
isCanceled = true
|
||||
}
|
||||
|
||||
override fun onAnimationEnd(animation: Animator?) {
|
||||
override fun onAnimationEnd(animation: Animator) {
|
||||
if (!isCanceled) {
|
||||
openRedPackage()
|
||||
}
|
||||
|
@@ -29,7 +29,7 @@ import com.nnbc123.core.redpackage.*
|
||||
import com.nnbc123.core.statistic.StatisticManager
|
||||
import com.nnbc123.core.statistic.protocol.StatisticsProtocol
|
||||
import com.nnbc123.core.user.UserModel
|
||||
import com.nnbc123.core.utils.toIntOrDef
|
||||
import com.nnbc123.core.utils.ktx.toIntOrDef
|
||||
import com.nnbc123.library.annatation.ActLayoutRes
|
||||
import com.nnbc123.library.utils.CommonUtils
|
||||
import com.nnbc123.library.utils.SingleToastUtil
|
||||
|
@@ -19,8 +19,8 @@ import com.nnbc123.core.im.custom.bean.RoomPkBean
|
||||
import com.nnbc123.core.manager.AvRoomDataManager
|
||||
import com.nnbc123.core.room.anotherroompk.SingleRoomPKModel
|
||||
import com.nnbc123.core.utils.CurrentTimeUtils
|
||||
import com.nnbc123.core.utils.subAndReplaceDot
|
||||
import com.nnbc123.core.utils.toast
|
||||
import com.nnbc123.core.utils.ktx.subAndReplaceDot
|
||||
import com.nnbc123.core.utils.ktx.toast
|
||||
import io.reactivex.Observable
|
||||
import io.reactivex.android.schedulers.AndroidSchedulers
|
||||
import io.reactivex.disposables.Disposable
|
||||
|
@@ -15,10 +15,10 @@ import com.nnbc123.core.auth.AuthModel
|
||||
import com.nnbc123.core.manager.AvRoomDataManager
|
||||
import com.nnbc123.core.room.anotherroompk.SingleRoomPKModel
|
||||
import com.nnbc123.core.room.anotherroompk.SimpleRoomInfo
|
||||
import com.nnbc123.core.utils.ifNotNullOrEmpty
|
||||
import com.nnbc123.core.utils.subAndReplaceDot
|
||||
import com.nnbc123.core.utils.toIntOrDef
|
||||
import com.nnbc123.core.utils.toast
|
||||
import com.nnbc123.core.utils.ktx.ifNotNullOrEmpty
|
||||
import com.nnbc123.core.utils.ktx.subAndReplaceDot
|
||||
import com.nnbc123.core.utils.ktx.toIntOrDef
|
||||
import com.nnbc123.core.utils.ktx.toast
|
||||
|
||||
class SingleRoomPKCreateActivity : BaseViewBindingActivity<ActivitySingleRoomPkCreateBinding>() {
|
||||
|
||||
|
@@ -8,7 +8,7 @@ import com.chad.library.adapter.base.BaseViewHolder
|
||||
import com.nnbc123.app.R
|
||||
import com.nnbc123.app.ui.utils.ImageLoadUtils
|
||||
import com.nnbc123.core.room.anotherroompk.SimpleRoomInfo
|
||||
import com.nnbc123.core.utils.subAndReplaceDot
|
||||
import com.nnbc123.core.utils.ktx.subAndReplaceDot
|
||||
|
||||
class SingleRoomPKSearchAdapter :
|
||||
BaseQuickAdapter<SimpleRoomInfo, BaseViewHolder>(R.layout.item_single_room_pk_search) {
|
||||
|
@@ -9,7 +9,7 @@ import com.nnbc123.app.base.BaseDialog
|
||||
import com.nnbc123.app.databinding.DialogSingleRoomPkFinishBinding
|
||||
import com.nnbc123.app.ui.utils.load
|
||||
import com.nnbc123.core.im.custom.bean.RoomPkBean
|
||||
import com.nnbc123.core.utils.subAndReplaceDot
|
||||
import com.nnbc123.core.utils.ktx.subAndReplaceDot
|
||||
import io.reactivex.Observable
|
||||
import io.reactivex.android.schedulers.AndroidSchedulers
|
||||
import java.util.concurrent.TimeUnit
|
||||
|
@@ -8,7 +8,7 @@ import com.nnbc123.app.base.BaseDialog
|
||||
import com.nnbc123.app.databinding.DialogSingleRoomPkForceFinishBinding
|
||||
import com.nnbc123.app.ui.utils.ImageLoadUtils
|
||||
import com.nnbc123.core.im.custom.bean.RoomPkBean
|
||||
import com.nnbc123.core.utils.subAndReplaceDot
|
||||
import com.nnbc123.core.utils.ktx.subAndReplaceDot
|
||||
|
||||
class SingleRoomPkForceFinishDialog : BaseDialog<DialogSingleRoomPkForceFinishBinding>() {
|
||||
|
||||
|
@@ -8,9 +8,9 @@ import com.nnbc123.app.databinding.DialogSingleRoomPkReceivedBinding
|
||||
import com.nnbc123.core.im.custom.bean.RoomPkBean
|
||||
import com.nnbc123.core.manager.AvRoomDataManager
|
||||
import com.nnbc123.core.room.anotherroompk.SingleRoomPKModel
|
||||
import com.nnbc123.core.utils.ifNotNullOrEmpty
|
||||
import com.nnbc123.core.utils.subAndReplaceDot
|
||||
import com.nnbc123.core.utils.toast
|
||||
import com.nnbc123.core.utils.ktx.ifNotNullOrEmpty
|
||||
import com.nnbc123.core.utils.ktx.subAndReplaceDot
|
||||
import com.nnbc123.core.utils.ktx.toast
|
||||
import io.reactivex.Observable
|
||||
import io.reactivex.android.schedulers.AndroidSchedulers
|
||||
import io.reactivex.disposables.Disposable
|
||||
|
@@ -1,7 +1,7 @@
|
||||
package com.nnbc123.app.avroom.singleroompk
|
||||
|
||||
import com.nnbc123.core.room.anotherroompk.SingleRoomPKModel
|
||||
import com.nnbc123.core.utils.toast
|
||||
import com.nnbc123.core.utils.ktx.toast
|
||||
import com.nnbc123.app.base.BaseDialog
|
||||
import com.nnbc123.app.databinding.DialogSingleRoomPkRuleBinding
|
||||
|
||||
|
@@ -6,7 +6,7 @@ import android.view.WindowManager
|
||||
import com.nnbc123.core.manager.AvRoomDataManager
|
||||
import com.nnbc123.core.room.anotherroompk.ShowPkMatchEvent
|
||||
import com.nnbc123.core.room.anotherroompk.SingleRoomPKModel
|
||||
import com.nnbc123.core.utils.toast
|
||||
import com.nnbc123.core.utils.ktx.toast
|
||||
import com.nnbc123.app.base.BaseDialog
|
||||
import com.nnbc123.app.databinding.DialogSingleRoomSelectTypeBinding
|
||||
import org.greenrobot.eventbus.EventBus
|
||||
|
@@ -33,7 +33,6 @@ import com.nnbc123.app.treasure_box.widget.GoldBoxHelper;
|
||||
import com.nnbc123.app.ui.utils.ImageLoadUtils;
|
||||
import com.nnbc123.app.vip.VipMainActivity;
|
||||
import com.nnbc123.core.DemoCache;
|
||||
import com.nnbc123.core.helper.ImHelperUtils;
|
||||
import com.nnbc123.core.manager.AvRoomDataManager;
|
||||
import com.nnbc123.core.manager.IMMessageManager;
|
||||
import com.nnbc123.core.pay.event.FirstChargeEvent;
|
||||
@@ -44,7 +43,7 @@ import com.nnbc123.core.statistic.protocol.StatisticsProtocol;
|
||||
import com.nnbc123.core.super_admin.util.SuperAdminUtil;
|
||||
import com.nnbc123.core.user.UserModel;
|
||||
import com.nnbc123.core.utils.SharedPreferenceUtils;
|
||||
import com.nnbc123.core.utils.StringExtensionKt;
|
||||
import com.nnbc123.core.utils.ktx.StringExtensionKt;
|
||||
import com.nnbc123.core.utils.net.RxHelper;
|
||||
import com.nnbc123.library.utils.ListUtils;
|
||||
|
||||
|
@@ -19,7 +19,7 @@ import android.widget.ImageView;
|
||||
import android.widget.RelativeLayout;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.netease.nim.uikit.common.util.string.StringUtil;
|
||||
import com.netease.nim.uikit.common.util.string.NimStringUtil;
|
||||
import com.opensource.svgaplayer.SVGACallback;
|
||||
import com.opensource.svgaplayer.SVGADrawable;
|
||||
import com.opensource.svgaplayer.SVGAImageView;
|
||||
@@ -47,7 +47,7 @@ import java.lang.ref.WeakReference;
|
||||
import java.net.MalformedURLException;
|
||||
import java.net.URL;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
/**
|
||||
* @author chenran
|
||||
@@ -181,7 +181,7 @@ public class GiftEffectView extends RelativeLayout implements SVGACallback {
|
||||
effectHandler.sendEmptyMessageDelayed(0, 6000);
|
||||
if (giftInfo.getOtherViewType() == 1 && !TextUtils.isEmpty(giftInfo.getViewUrl())) {
|
||||
drawVAPEffect(giftInfo.getViewUrl());
|
||||
} else if (giftInfo.isHasVggPic() && !StringUtil.isEmpty(giftInfo.getVggUrl())) {
|
||||
} else if (giftInfo.isHasVggPic() && !NimStringUtil.isEmpty(giftInfo.getVggUrl())) {
|
||||
try {
|
||||
drawSvgaEffect(giftInfo.getVggUrl());
|
||||
} catch (MalformedURLException e) {
|
||||
|
@@ -70,7 +70,7 @@ import java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.util.Random;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
|
||||
/**
|
||||
|
@@ -55,7 +55,7 @@ import com.netease.nimlib.sdk.msg.constant.MsgTypeEnum;
|
||||
import com.netease.nimlib.sdk.msg.constant.NotificationType;
|
||||
import com.netease.nimlib.sdk.msg.model.IMMessage;
|
||||
import com.nnbc123.app.R;
|
||||
import com.nnbc123.app.UIHelper;
|
||||
import com.nnbc123.app.utils.UIHelper;
|
||||
import com.nnbc123.app.avroom.activity.AVRoomActivity;
|
||||
import com.nnbc123.app.avroom.dialog.PKResultDialog;
|
||||
import com.nnbc123.app.common.widget.CustomAutoWidthImageSpan;
|
||||
@@ -135,7 +135,7 @@ import com.nnbc123.core.manager.AvRoomDataManager;
|
||||
import com.nnbc123.core.manager.IMNetEaseManager;
|
||||
import com.nnbc123.core.miniworld.bean.MiniWorldInWorldInfo;
|
||||
import com.nnbc123.core.monsterhunting.bean.MonsterHuntingResult;
|
||||
import com.nnbc123.core.monsterhunting.bean.MonsterProtocol;
|
||||
import com.nnbc123.core.monsterhunting.bean.MonsterProtocolDataBean;
|
||||
import com.nnbc123.core.noble.NobleInfo;
|
||||
import com.nnbc123.core.noble.NobleUtil;
|
||||
import com.nnbc123.core.praise.PraiseModel;
|
||||
@@ -169,7 +169,7 @@ import com.nnbc123.library.utils.JavaUtil;
|
||||
import com.nnbc123.library.utils.ListUtils;
|
||||
import com.nnbc123.library.utils.SingleToastUtil;
|
||||
import com.nnbc123.library.utils.SizeUtils;
|
||||
import com.nnbc123.xchat_android_constants.XChatConstants;
|
||||
import com.nnbc123.core.XChatConstants;
|
||||
import com.tongdaxing.erban.sadmin.utils.SaAttachmentToMsgUtil;
|
||||
|
||||
import org.greenrobot.eventbus.EventBus;
|
||||
@@ -870,7 +870,7 @@ public class MessageView extends FrameLayout {
|
||||
} else if (first == CustomAttachment.CUSTOM_MSG_HEADER_TYPE_MONSTER_HUNTING) {
|
||||
switch (second) {
|
||||
case CustomAttachment.CUSTOM_MSG_SUB_TYPE_MONSTER_HUNTING:
|
||||
MonsterProtocol.DataBean dataBean = ((MonsterStatusAttachment) attachment).getDataBean();
|
||||
MonsterProtocolDataBean dataBean = ((MonsterStatusAttachment) attachment).getDataBean();
|
||||
setMonsterNotifyMessage(tvContent, dataBean.getNotifyMessage());
|
||||
break;
|
||||
case CustomAttachment.CUSTOM_NOTI_SUB_GAME_RESULT:
|
||||
@@ -2968,7 +2968,7 @@ public class MessageView extends FrameLayout {
|
||||
} else if (attachment.getFirst() == CustomAttachment.CUSTOM_MSG_HEADER_TYPE_MONSTER_HUNTING) {
|
||||
switch (attachment.getSecond()) {
|
||||
case CustomAttachment.CUSTOM_MSG_SUB_TYPE_MONSTER_HUNTING:
|
||||
MonsterProtocol.DataBean dataBean = ((MonsterStatusAttachment) attachment).getDataBean();
|
||||
MonsterProtocolDataBean dataBean = ((MonsterStatusAttachment) attachment).getDataBean();
|
||||
RoomInfo mCurrentRoomInfo = AvRoomDataManager.get().mCurrentRoomInfo;
|
||||
if (!Objects.equals(mCurrentRoomInfo.getUid(), dataBean.getAppearRoomUid())) {
|
||||
AVRoomActivity.start(getContext(), dataBean.getAppearRoomUid());
|
||||
|
@@ -12,6 +12,7 @@ import android.view.View;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.LinearLayout;
|
||||
|
||||
import androidx.annotation.Keep;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
@@ -53,6 +54,7 @@ import io.reactivex.disposables.Disposable;
|
||||
* @author xiaoyu
|
||||
* @date 2017/12/20
|
||||
*/
|
||||
@Keep
|
||||
public class MicroView extends LinearLayout implements View.OnLayoutChangeListener {
|
||||
private static final String TAG = "MicroView";
|
||||
public RecyclerView recyclerView;
|
||||
|
@@ -10,14 +10,14 @@ import android.net.Uri
|
||||
import android.view.ViewGroup
|
||||
import android.widget.FrameLayout
|
||||
import androidx.core.view.isVisible
|
||||
import com.chuhai.core.player.PlaybackState
|
||||
import com.chuhai.core.player.PlayerListener
|
||||
import com.chuhai.core.player.exo.ExoMediaItem
|
||||
import com.chuhai.core.player.exo.ExoPlayer
|
||||
import com.chuhai.utils.ICleared
|
||||
import com.chuhai.utils.ktx.dp
|
||||
import com.chuhai.utils.ktx.roundCorner
|
||||
import com.chuhai.utils.log.ILog
|
||||
import com.chu.core.player.PlaybackState
|
||||
import com.chu.core.player.PlayerListener
|
||||
import com.chu.core.player.exo.ExoMediaItem
|
||||
import com.chu.core.player.exo.ExoPlayer
|
||||
import com.chu.utils.ICleared
|
||||
import com.chu.utils.ktx.dp
|
||||
import com.chu.utils.ktx.roundCorner
|
||||
import com.chu.utils.log.ILog
|
||||
import com.google.android.exoplayer2.ui.AspectRatioFrameLayout
|
||||
import com.nnbc123.app.ui.widget.magicindicator.buildins.UIUtil
|
||||
import com.nnbc123.core.im.custom.bean.RoomPrivilegeAttachment
|
||||
@@ -122,6 +122,9 @@ class PrivilegeCardEngine(
|
||||
loopQueue()
|
||||
}
|
||||
}
|
||||
else ->{
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -39,7 +39,7 @@ import com.nnbc123.app.ui.widget.SimpleAnimListener
|
||||
import com.nnbc123.app.ui.widget.drawgift.DrawGiftPlayHelper
|
||||
import com.nnbc123.app.utils.MsgBuilder
|
||||
import com.nnbc123.app.utils.SpannableBuilder
|
||||
import com.nnbc123.xchat_android_constants.XChatConstants
|
||||
import com.nnbc123.core.XChatConstants
|
||||
import com.nnbc123.core.auth.AuthModel
|
||||
import com.nnbc123.core.decoration.car.bean.CarInfo
|
||||
import com.nnbc123.core.im.custom.bean.*
|
||||
@@ -50,8 +50,8 @@ import com.nnbc123.core.room.bean.DatingNotifyInfo
|
||||
import com.nnbc123.core.super_admin.util.SuperAdminUtil
|
||||
import com.nnbc123.core.user.UserModel
|
||||
import com.nnbc123.core.user.bean.UserInfo
|
||||
import com.nnbc123.core.utils.sub
|
||||
import com.nnbc123.core.utils.subAndReplaceDot
|
||||
import com.nnbc123.core.utils.ktx.sub
|
||||
import com.nnbc123.core.utils.ktx.subAndReplaceDot
|
||||
import com.nnbc123.library.utils.ListUtils
|
||||
import com.opensource.svgaplayer.*
|
||||
import io.reactivex.Observable
|
||||
|
@@ -11,7 +11,7 @@ import com.nnbc123.core.room.wishlist.WishCreateItemInfo
|
||||
import com.nnbc123.app.R
|
||||
import com.nnbc123.app.base.BaseDialog
|
||||
import com.nnbc123.app.databinding.DialogWishListCreateBinding
|
||||
import com.nnbc123.core.utils.toIntOrDef
|
||||
import com.nnbc123.core.utils.ktx.toIntOrDef
|
||||
import com.nnbc123.library.utils.SingleToastUtil
|
||||
import kotlin.math.max
|
||||
import kotlin.math.min
|
||||
|
@@ -10,7 +10,7 @@ import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import com.nnbc123.core.manager.AvRoomDataManager
|
||||
import com.nnbc123.core.room.wishlist.WishCreateItemInfo
|
||||
import com.nnbc123.core.room.wishlist.WishItemInfo
|
||||
import com.nnbc123.core.utils.toast
|
||||
import com.nnbc123.core.utils.ktx.toast
|
||||
import com.nnbc123.app.R
|
||||
import com.nnbc123.app.avroom.wishlist.history.WishListHistoryActivity
|
||||
import com.nnbc123.app.base.BaseViewBindingActivity
|
||||
|
@@ -8,7 +8,7 @@ import com.nnbc123.core.gift.bean.SimpleUserInfo
|
||||
import com.nnbc123.core.room.wishlist.WishCreateItemInfo
|
||||
import com.nnbc123.core.room.wishlist.WishItemInfo
|
||||
import com.nnbc123.core.room.wishlist.WishListModel
|
||||
import com.nnbc123.core.utils.toast
|
||||
import com.nnbc123.core.utils.ktx.toast
|
||||
import com.nnbc123.app.base.Event
|
||||
|
||||
class WishListViewModel : BaseViewModel() {
|
||||
|
@@ -1,6 +1,6 @@
|
||||
package com.nnbc123.app.base;
|
||||
|
||||
import static com.nnbc123.core.Constants.DEBUG_MAX_UID;
|
||||
import static com.nnbc123.core.CoreConstants.DEBUG_MAX_UID;
|
||||
import static com.nnbc123.core.im.custom.bean.CustomAttachment.CUSTOM_MESS_HEAD_NOBLE;
|
||||
import static com.nnbc123.core.im.custom.bean.CustomAttachment.CUSTOM_MESS_SUB_OPENNOBLE;
|
||||
import static com.nnbc123.core.im.custom.bean.CustomAttachment.CUSTOM_MESS_SUB_RENEWNOBLE;
|
||||
@@ -34,6 +34,7 @@ import android.view.inputmethod.InputMethodManager;
|
||||
import android.widget.Toast;
|
||||
|
||||
import androidx.annotation.ColorInt;
|
||||
import androidx.core.util.Consumer;
|
||||
import androidx.fragment.app.Fragment;
|
||||
import androidx.fragment.app.FragmentManager;
|
||||
|
||||
@@ -44,8 +45,8 @@ import com.netease.nim.uikit.common.util.log.LogUtil;
|
||||
import com.netease.nimlib.sdk.NIMSDK;
|
||||
import com.netease.nimlib.sdk.Observer;
|
||||
import com.netease.nimlib.sdk.msg.model.BroadcastMessage;
|
||||
import com.nnbc123.app.MiddleActivity;
|
||||
import com.nnbc123.app.NimMiddleActivity;
|
||||
import com.nnbc123.app.ui.agent.AgentActivity;
|
||||
import com.nnbc123.app.ui.im.NimMiddleActivity;
|
||||
import com.nnbc123.app.R;
|
||||
import com.nnbc123.app.application.XChatApplication;
|
||||
import com.nnbc123.app.avroom.activity.AVRoomActivity;
|
||||
@@ -81,7 +82,7 @@ import com.nnbc123.core.manager.RoomEvent;
|
||||
import com.nnbc123.core.mentoring_relationship.event.GrabApprenticesEvent;
|
||||
import com.nnbc123.core.newbie.NewbieHelloInfo;
|
||||
import com.nnbc123.core.newbie.event.NewbieHelloDialogEvent;
|
||||
import com.nnbc123.core.noble.AllServiceGiftProtocol;
|
||||
import com.nnbc123.core.noble.AllServiceGiftProtocolDataBean;
|
||||
import com.nnbc123.core.noble.NobleInfo;
|
||||
import com.nnbc123.core.noble.NobleProtocol;
|
||||
import com.nnbc123.core.redpackage.RedPackageNotifyInfo;
|
||||
@@ -99,7 +100,7 @@ import com.nnbc123.library.utils.UIUtils;
|
||||
import com.nnbc123.library.utils.codec.DESUtils;
|
||||
import com.nnbc123.library.utils.config.BasicConfig;
|
||||
import com.nnbc123.library.utils.log.MLog;
|
||||
import com.nnbc123.xchat_android_constants.XChatConstants;
|
||||
import com.nnbc123.core.XChatConstants;
|
||||
import com.orhanobut.logger.Logger;
|
||||
import com.readystatesoftware.systembartint.SystemBarTintManager;
|
||||
import com.tbruyelle.rxpermissions2.RxPermissions;
|
||||
@@ -133,7 +134,7 @@ public abstract class BaseActivity extends RxAppCompatActivity
|
||||
*/
|
||||
|
||||
protected static final String STATUS_TAG = "STATUS_TAG";
|
||||
private final RxPermissions rxPermissions = new RxPermissions(this);
|
||||
protected final RxPermissions rxPermissions = new RxPermissions(this);
|
||||
protected TitleBar mTitleBar;
|
||||
protected DefaultToolBar mToolBar;
|
||||
protected CompositeDisposable mCompositeDisposable;
|
||||
@@ -821,6 +822,17 @@ public abstract class BaseActivity extends RxAppCompatActivity
|
||||
}, Throwable::printStackTrace);
|
||||
}
|
||||
|
||||
|
||||
@SuppressLint("CheckResult")
|
||||
public void checkPermission(Consumer<Boolean> consumer, String... mPerms) {
|
||||
rxPermissions.request(mPerms)
|
||||
.subscribe(aBoolean -> {
|
||||
if (consumer != null) {
|
||||
consumer.accept(aBoolean);
|
||||
}
|
||||
}, Throwable::printStackTrace);
|
||||
}
|
||||
|
||||
@SuppressLint("CheckResult")
|
||||
public Observable<Boolean> checkPermission(String... mPerms) {
|
||||
return rxPermissions.request(mPerms);
|
||||
@@ -917,7 +929,7 @@ public abstract class BaseActivity extends RxAppCompatActivity
|
||||
if (this instanceof AddUserInfoActivity ||
|
||||
UserUtils.getUserInfo() == null)
|
||||
return;
|
||||
AllServiceGiftProtocol.DataBean data = JSON.parseObject(String.valueOf(baseProtocol.getData()), AllServiceGiftProtocol.DataBean.class);
|
||||
AllServiceGiftProtocolDataBean data = JSON.parseObject(String.valueOf(baseProtocol.getData()), AllServiceGiftProtocolDataBean.class);
|
||||
if (data == null || data.getGiftUrl() == null || !data.isCeremonyGift())
|
||||
return;
|
||||
new AllServiceGiftLevelCeremonyDialog(context, data).show();
|
||||
@@ -975,7 +987,7 @@ public abstract class BaseActivity extends RxAppCompatActivity
|
||||
acts.add(LoginCodeActivity.class);
|
||||
acts.add(ResetPasswordActivity.class);
|
||||
acts.add(AddUserInfoActivity.class);
|
||||
acts.add(MiddleActivity.class);
|
||||
acts.add(AgentActivity.class);
|
||||
acts.add(NimMiddleActivity.class);
|
||||
|
||||
for (Class act : acts) {
|
||||
|
@@ -6,7 +6,7 @@ import androidx.databinding.ObservableField;
|
||||
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
|
||||
|
||||
import com.chad.library.adapter.base.BaseQuickAdapter;
|
||||
import com.nnbc123.core.Constants;
|
||||
import com.nnbc123.core.CoreConstants;
|
||||
import com.nnbc123.core.bean.response.ServiceResult;
|
||||
import com.nnbc123.core.utils.net.RxHelper;
|
||||
import com.nnbc123.library.utils.SingleToastUtil;
|
||||
@@ -23,7 +23,7 @@ import io.reactivex.functions.Consumer;
|
||||
|
||||
public abstract class BaseListViewModel<D> {
|
||||
public int page = 1;
|
||||
public int pageSize = Constants.PAGE_SIZE;
|
||||
public int pageSize = CoreConstants.PAGE_SIZE;
|
||||
|
||||
public ObservableBoolean loading = new ObservableBoolean(false);
|
||||
public ObservableBoolean isLode = new ObservableBoolean(false);
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user