105 Commits

Author SHA1 Message Date
wzq
9673f1ff69 升级 Gradle 8.0 2023-09-14 17:52:40 +08:00
wushaocheng
24606d7b44 [Modify]修复动态特权卡不能显示的问题 2023-09-08 14:36:23 +08:00
wushaocheng
f2b755cf77 [Modify]修复QQ客户端不存在和隐私政策 2023-09-01 16:03:19 +08:00
wushaocheng
f7d62e6aa0 [Modify]音萌1.3.0功能 2023-09-01 14:40:37 +08:00
wushaocheng
2cfc74fa85 [Modify]点单功能完善 2023-08-25 20:33:49 +08:00
wushaocheng
3def5cebda [Modify]点单ui修改 2023-08-23 10:18:33 +08:00
wushaocheng
d29a2c1245 [Modify]点单ui修改 2023-08-22 21:42:42 +08:00
wushaocheng
a304b4b07b [Modify]特权卡提示,礼物面板调整 2023-08-21 15:41:41 +08:00
wushaocheng
87b4ea4935 [Modify]个人资料页公会信息调整 2023-08-17 16:28:09 +08:00
wushaocheng
ee320f0591 [Modify]启动页政策文案修改 2023-08-08 14:33:52 +08:00
wushaocheng
d05e8e9a53 [Modify]1.2.0bug修复 2023-08-04 12:04:53 +08:00
wushaocheng
31266aaee0 [Modify]房间背景 2023-07-28 19:51:00 +08:00
wushaocheng
2bb57e2b3f [Modify]热门房间tab调整 2023-07-28 14:59:31 +08:00
wushaocheng
10b48eeb0e [Modify]热门房间tab调整 2023-07-28 10:23:22 +08:00
wushaocheng
7a7a394b03 [Modify]特权卡功能实现 2023-07-27 16:13:54 +08:00
wushaocheng
ce93e02d8a [BugFix]修复线上bug 2023-06-01 16:18:36 +08:00
DESKTOP-ICQKP58\H1
3e07b3d9d7 [BugFix]点击邀请工会信息闪退 2023-04-26 16:05:41 +08:00
DESKTOP-ICQKP58\H1
b8645b2058 [BugFix]点击邀请工会信息闪退 2023-04-25 18:03:51 +08:00
DESKTOP-ICQKP58\H1
2f238e0447 [BugFix]房间排行榜前三头像回显 2023-04-25 16:02:19 +08:00
DESKTOP-ICQKP58\H1
34b061996f 本地音乐Android10.0适配 2023-04-19 19:15:53 +08:00
DESKTOP-ICQKP58\H1
58a5556fc0 [BugFix]礼物墙铺满剩下空白页面 2023-04-18 17:00:49 +08:00
DESKTOP-ICQKP58\H1
4f2d895f38 [BugFix]修复列表里直播中不会有动效的问题 2023-04-18 16:09:17 +08:00
wushaocheng
8ee3bcef6e [Modify]修改版本号为1.1.1 2023-04-14 17:53:08 +08:00
wushaocheng
3e29eb1c32 [BugFix]个人中心头像问题修复 2023-04-14 17:51:53 +08:00
wushaocheng
486da1d028 Rename .java to .kt 2023-04-14 17:51:53 +08:00
wushaocheng
cb21a12b95 [BugFix]修复保存图片失败的bug 2023-04-14 15:31:58 +08:00
wushaocheng
ee1d528027 [Modify]私聊获取图片失败bug修复 2023-04-14 14:14:23 +08:00
wushaocheng
684bd5260d [Modify]安卓10以上适配加入基础库 2023-04-13 18:47:53 +08:00
wushaocheng
c678061633 [Modify]安卓10以上适配 2023-04-13 16:58:18 +08:00
huangjian
e208dc6950 房间公告入口文字居中,去除CancellationException的toast 2023-03-31 11:56:55 +08:00
huangjian
ec9c3a9a42 测试环境域名修改 2023-03-28 14:26:27 +08:00
huangjian
5298e69eed 推荐改为热门 2023-03-27 17:12:03 +08:00
huangjian
0bbe0c8b64 房间送礼图标替换 2023-03-27 11:59:13 +08:00
huangjian
20a745e955 targetSdkVersion 改为29 2023-03-24 16:25:23 +08:00
huangjian
e2a667fb90 打开塔罗支付方法修改 2023-03-23 21:28:26 +08:00
huangjian
4716157368 私聊发送图片权限申请优化 2023-03-23 19:22:22 +08:00
huangjian
00866e7c73 bug fix 2023-03-23 18:53:12 +08:00
huangjian
63bd50479d bug fix 2023-03-23 16:35:30 +08:00
huangjian
9dd27c723c H5调用原生支付逻辑优化 2023-03-23 15:08:19 +08:00
huangjian
362c58da6d 一键登录预取号成功才展示 2023-03-23 14:58:51 +08:00
huangjian
4ca4d25644 UI调整,放出第三方登录 2023-03-23 14:40:22 +08:00
huangjian
362fb3b6c3 Revert "隐藏需要发送验证码的页面"
This reverts commit f9254a3f
2023-03-22 18:50:33 +08:00
huangjian
7dcd553fba 增加H5调用原生支付方法 2023-03-22 18:49:25 +08:00
huangjian
ce63fdcd12 推荐改为热门 2023-03-22 10:52:49 +08:00
huangjian
bd14980c14 UI调整 2023-03-21 19:27:41 +08:00
huangjian
a8b993572c 增加魔法帽和星际探险公屏昵称点击事件 2023-03-21 14:33:46 +08:00
huangjian
adac9ad536 增加魔法帽和星际探险公屏昵称点击事件 2023-03-21 14:25:06 +08:00
huangjian
3be3591b15 魔法帽UI修改 2023-03-21 14:21:15 +08:00
huangjian
1feda0e047 星际探险UI修改 2023-03-21 14:11:46 +08:00
huangjian
72643d7753 UI微调 2023-03-21 11:29:46 +08:00
huangjian
331e3404a6 登录svga,资源位找大神优化 2023-03-20 19:13:34 +08:00
huangjian
655f7d9c40 UI对稿 2023-03-20 18:46:04 +08:00
huangjian
c94b40fe8a 广场话题UI优化 2023-03-20 16:49:35 +08:00
huangjian
e7193e9ef4 BaseFragment优化 2023-03-20 16:14:49 +08:00
huangjian
5b987ecccc StatusLayout 增加ID 2023-03-20 16:01:25 +08:00
huangjian
5b7ef4c86d 动态话题UI修改 2023-03-20 15:51:38 +08:00
huangjian
f9254a3f15 隐藏需要发送验证码的页面 2023-03-20 15:28:24 +08:00
huangjian
87c1dddbab UI对稿,部分错误提示优化 2023-03-20 15:17:56 +08:00
huangjian
1a363a19e3 细节处理 2023-03-17 21:21:57 +08:00
huangjian
8c8f93580d 验证码登录替换 2023-03-17 21:10:50 +08:00
huangjian
6234480529 logo替换 2023-03-17 20:01:08 +08:00
huangjian
cd7b4db946 主题色替换 2023-03-17 19:32:07 +08:00
huangjian
eb25a1244c 细节优化 2023-03-17 18:29:45 +08:00
huangjian
83810d088a 默认头像修改,隐藏第三方登录 2023-03-17 18:09:59 +08:00
huangjian
17c7129f87 部分id新增复制按钮 2023-03-17 17:58:26 +08:00
huangjian
0cbdea2e6f 房间公告UI修改 2023-03-17 17:45:10 +08:00
huangjian
fb4aeba530 系统用户过滤 2023-03-17 17:13:33 +08:00
huangjian
e807dab42f 换一换刷新逻辑修改 2023-03-17 15:55:06 +08:00
huangjian
deac16a90a 首页UI修改 2023-03-17 15:50:50 +08:00
huangjian
3642ae2748 去掉验证码登录 2023-03-16 22:19:45 +08:00
huangjian
7331d8e205 一些细节问题处理 2023-03-16 22:15:57 +08:00
huangjian
311202c075 实名认证SDK升级,增加心跳接口调用 2023-03-16 20:49:34 +08:00
huangjian
119546866c 动态bug fix 2023-03-16 20:14:50 +08:00
huangjian
c21768d3d0 推荐改到第一位 2023-03-16 19:18:37 +08:00
huangjian
860e41c45e 首页匹配大神 2023-03-16 19:07:20 +08:00
huangjian
bb00f6433f bug fix 2023-03-16 18:21:48 +08:00
huangjian
4c17cf30ef 动态bugfix 2023-03-16 17:52:51 +08:00
huangjian
48fa73353d 第三方key修改 2023-03-16 17:21:28 +08:00
huangjian
da01c04dcc 派对banner使用组队开黑的 2023-03-16 17:10:21 +08:00
huangjian
cd0898ae68 Rename .java to .kt 2023-03-16 17:10:20 +08:00
huangjian
df31666b29 飘屏UI修改 2023-03-16 16:38:38 +08:00
huangjian
4fec80e42a splash修改 2023-03-16 15:29:20 +08:00
huangjian
4490a5e54e bug fix 2023-03-16 15:19:31 +08:00
huangjian
20fded3771 首页tab新增发现新朋友 2023-03-16 11:51:48 +08:00
huangjian
efeea38cc1 支付宝SDK升级 2023-03-15 17:59:52 +08:00
huangjian
aa2635c652 房间UI修改 2023-03-15 16:33:20 +08:00
huangjian
95d94f95b2 星际探索H5背景透明 2023-03-15 10:57:50 +08:00
huangjian
d26205bd1f 域名修改 2023-03-15 10:36:51 +08:00
huangjian
abbe516b3a app_logo替换,UI整体调整 2023-03-14 17:41:25 +08:00
huangjian
ac2f16f308 七鱼客服接入 2023-03-14 16:34:25 +08:00
huangjian
dae987e9e0 航海冒险改为星际探索 2023-03-14 14:20:26 +08:00
huangjian
fc0c688916 APP_MARK 修改 2023-03-14 12:03:52 +08:00
huangjian
be16a0a810 add kotlinOptions 2023-03-14 11:23:00 +08:00
huangjian
fadc41bb84 域名修改 2023-03-14 10:04:44 +08:00
huangjian
9290fdbd02 糖果树UI修改 2023-03-13 16:53:08 +08:00
huangjian
aa94a834ce 用户主页UI修改 2023-03-10 16:36:28 +08:00
huangjian
213cfb97cb 礼物面板UI修改 2023-03-09 18:56:52 +08:00
huangjian
0ac2bdc775 登录UI修改 2023-03-09 14:09:39 +08:00
huangjian
b23d8b6fa5 充值页面UI修改 2023-03-08 18:12:06 +08:00
huangjian
f7b36c40ab 首页消息tab UI修改 2023-03-08 16:13:30 +08:00
huangjian
fa47dad924 首页我的tab UI修改 2023-03-08 15:25:04 +08:00
huangjian
a15ae87fd5 首页动态tab UI修改 2023-03-07 18:58:06 +08:00
huangjian
83e4cfc629 派对UI修改 2023-03-07 14:59:11 +08:00
huangjian
0c7fb5dcf1 包名修改 2023-03-07 14:06:03 +08:00
huangjian
9d0b9d79e9 移除lombok,Android SDK更新,改为使用Java11,targetSdkVersion变更为32 2023-03-06 19:30:25 +08:00
4979 changed files with 146658 additions and 68491 deletions

View File

@@ -2,11 +2,11 @@ apply plugin: 'com.android.library'
apply plugin: 'kotlin-android'
android {
compileSdkVersion 30
compileSdkVersion COMPILE_SDK_VERSION.toInteger()
defaultConfig {
minSdkVersion 21
targetSdkVersion 29
minSdkVersion MIN_SDK_VERSION.toInteger()
targetSdkVersion TARGET_SDK_VERSION.toInteger()
testApplicationId 'com.soundcloud.android.crop.test'
testInstrumentationRunner 'android.test.InstrumentationTestRunner'
@@ -20,12 +20,22 @@ android {
}
buildToolsVersion = '30.0.3'
compileOptions {
sourceCompatibility JavaVersion.VERSION_11
targetCompatibility JavaVersion.VERSION_11
}
kotlinOptions {
jvmTarget = "11"
}
namespace 'com.soundcloud.android.crop'
}
dependencies {
api 'androidx.annotation:annotation:1.1.0'
api 'androidx.annotation:annotation:1.2.0'
api 'androidx.legacy:legacy-support-v4:1.0.0'
implementation "androidx.core:core-ktx:1.3.2"
implementation "androidx.core:core-ktx:1.7.0"
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
}
repositories {

View File

@@ -1 +1 @@
<manifest package="com.soundcloud.android.crop" />
<manifest />

View File

@@ -33,7 +33,7 @@
"project_id":"736430079244645870",
"app_id":"102953045",
"api_key":"DAEDAN1bqknzqRuvualUo98vO7U9uXBJtBZ0rNQHgSo03bXgkl98tD4sytVBCBB1Y7ha0NcY++dSp9JLsws9BzDN+/fS3v8J9We3nA==",
"package_name":"com.voice.magic"
"package_name":"cn.nnbc123.voice"
},
"oauth_client":{
"client_id":"102953045",
@@ -41,7 +41,7 @@
},
"app_info":{
"app_id":"102953045",
"package_name":"com.voice.magic"
"package_name":"cn.nnbc123.voice"
},
"service":{
"analytics":{
@@ -75,12 +75,12 @@
"configuration_version":"3.0",
"appInfos":[
{
"package_name":"com.voice.magic",
"package_name":"cn.nnbc123.voice",
"client":{
"app_id":"102953045"
},
"app_info":{
"package_name":"com.voice.magic",
"package_name":"cn.nnbc123.voice",
"app_id":"102953045"
},
"oauth_client":{

Binary file not shown.

View File

@@ -10,12 +10,12 @@ apply plugin: 'android-junk-code'
def onlyArm64 = Boolean.parseBoolean(only_arm64)
android {
compileSdkVersion 30
compileSdkVersion COMPILE_SDK_VERSION.toInteger()
defaultConfig {
applicationId "com.voice.magic"
minSdkVersion 21
targetSdkVersion 29
applicationId "cn.nnbc123.voice"
minSdkVersion MIN_SDK_VERSION.toInteger()
targetSdkVersion TARGET_SDK_VERSION.toInteger()
versionCode Integer.valueOf(version_code)
versionName version_name
@@ -65,19 +65,19 @@ android {
signingConfigs {
v2 {
storeFile file('../magic.jks')
storePassword "magic2020"
keyAlias "magic"
keyPassword "magic2020"
storeFile file('../yinmeng.jks')
storePassword "yinmeng2023"
keyAlias "yinmeng"
keyPassword "yinmeng2023"
v2SigningEnabled true
v1SigningEnabled true
}
v1 {
storeFile file('../magic.jks')
storePassword "magic2020"
keyAlias "magic"
keyPassword "magic2020"
storeFile file('../yinmeng.jks')
storePassword "yinmeng2023"
keyAlias "yinmeng"
keyPassword "yinmeng2023"
v2SigningEnabled false
v1SigningEnabled true
}
@@ -136,7 +136,8 @@ android {
buildTypes {
release {
buildConfigField "String", "BASE_URL", "\"https://yinyou.api.shengxuanwangluo.com/\""
buildConfigField "String", "BASE_URL", "\"https://api.nnbc123.cn/\""
buildConfigField "String", "WEB_URL", "\"https://h5.nnbc123.cn/\""
buildConfigField "String", "BASE_URL_DEBUG", "BASE_URL"
buildConfigField "String", "BASE_URL_STAGING", "BASE_URL"
buildConfigField "String", "BASE_URL_RELEASE", "BASE_URL"
@@ -147,37 +148,41 @@ android {
}
debug {
buildConfigField "String", "BASE_URL", "\"http://api.uat.lecheng163.com/\""
buildConfigField "String", "BASE_URL", "\"http://beta.api.nnbc123.cn/\""
buildConfigField "String", "WEB_URL", "\"http://beta.api.nnbc123.cn\""
buildConfigField "String", "BASE_URL_DEBUG", "BASE_URL"
buildConfigField "String", "BASE_URL_STAGING", "\"https://yinyou.api.shengxuanwangluo.com/\""
buildConfigField "String", "BASE_URL_RELEASE", "\"https://yinyou.api.shengxuanwangluo.com/\""
buildConfigField "String", "BASE_URL_STAGING", "\"https://api.nnbc123.cn/\""
buildConfigField "String", "BASE_URL_RELEASE", "\"https://api.nnbc123.cn/\""
minifyEnabled false
shrinkResources false
signingConfig signingConfigs.v1
signingConfig signingConfigs.v2
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
sourceCompatibility JavaVersion.VERSION_11
targetCompatibility JavaVersion.VERSION_11
}
kotlinOptions {
jvmTarget = "1.8"
jvmTarget = "11"
}
buildToolsVersion = '30.0.3'
namespace 'com.nnbc123.app'
}
def Lombok = "1.18.18"
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar', '*.aar'])
implementation fileTree(dir: 'aliyun-libs', include: ['*.jar', '*.aar'])
testImplementation 'junit:junit:4.13.1'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
implementation 'androidx.appcompat:appcompat:1.4.1'
implementation 'com.google.android.material:material:1.4.+'
implementation 'androidx.constraintlayout:constraintlayout:2.1.3'
testImplementation 'junit:junit:4.13.2'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
api 'androidx.multidex:multidex:2.0.1'
@@ -202,7 +207,7 @@ dependencies {
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.1.0'
annotationProcessor 'androidx.annotation:annotation:1.2.0'
implementation 'io.github.h07000223:flycoTabLayout:3.0.0'
@@ -216,8 +221,6 @@ dependencies {
api 'com.jungly:gridPasswordView:0.3'
api 'com.google.android.flexbox:flexbox:3.0.0'
compileOnly "org.projectlombok:lombok:${Lombok}"
annotationProcessor "org.projectlombok:lombok:${Lombok}"
implementation 'nl.dionsegijn:konfetti:1.1.2'
//数字滚动效果
@@ -249,6 +252,10 @@ dependencies {
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 {
@@ -264,7 +271,7 @@ channel {
outputDir = new File(project.buildDir, "channelapk")
//多渠道包的命名规则,默认为:${appName}-${versionName}-${versionCode}-${flavorName}-${buildType}-${buildTime}
def only64 = onlyArm64 ? "-only64" : ""
apkNameFormat = 'magic-${buildType}only64-${flavorName}-v${versionName}-${buildTime}'.replace("only64", only64)
apkNameFormat = 'yinmeng-${buildType}only64-${flavorName}-v${versionName}-${buildTime}'.replace("only64", only64)
//快速模式生成渠道包时不进行校验速度可以提升10倍以上默认为false
fastMode = false
//buildTime的时间格式默认格式yyyyMMdd-HHmmss
@@ -278,7 +285,7 @@ android.applicationVariants.all { variant ->
switch (variant.name) {//变体名称如果没有设置productFlavors就是buildType名称如果有设置productFlavors就是flavor+buildType例如freeRelease、proRelease
case "release":
androidJunkCode.configMap.put(variant.name, {
packageBase = "com.mango.plugin.ui" //生成java类根包名
packageBase = "com.nnbc123.plugin.ui" //生成java类根包名
packageCount = 30 //生成包数量
activityCountPerPackage = 30 //每个包下生成Activity类数量
excludeActivityJavaFile = false

View File

@@ -115,19 +115,19 @@
-keep class com.netease.** {*;}
# Presenter 相关
-keep class com.mango.moshen.base.** { *; }
-keep public class * extends com.mango.moshen.base.BaseMvpPresenter
-keep public class * extends com.mango.xchat_android_library.base.factory.AbstractMvpPresenter
-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.mango.moshen.ui.im.recent.holder.**
-keep class com.mango.moshen.ui.im.recent.holder.** {*;}
-keep class com.mango.moshen.ui.im.chat.** {*;}
-keep class com.mango.moshen.luckymoney.viewholder.** {*;}
-keep class com.mango.moshen.share.viewholder.** {*;}
-keep class com.mango.moshen.public_chat_hall.msg.viewholder.** {*;}
-keep class com.mango.moshen.module_hall.im.msgholder.** {*;}
-keep class com.mango.moshen.mentoring_relationship.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 {*;}
@@ -169,7 +169,7 @@
#-------------TakePhoto的混淆配置------------
-keep class com.jph.takephoto.** { *; }
-keep class com.nnbc123.app.takephoto.** { *; }
-dontwarn com.jph.takephoto.**
-keep class com.darsh.multipleimageselect.** { *; }
@@ -207,8 +207,8 @@
<init>(...);
}
-dontwarn com.mango.moshen.bindadapter.**
-keep class com.mango.moshen.bindadapter.** {*;}
-dontwarn com.nnbc123.app.bindadapter.**
-keep class com.nnbc123.app.bindadapter.** {*;}
# Ping++ 混淆过滤
-dontwarn com.pingplusplus.**
@@ -239,8 +239,8 @@
# TODO 网络加载 一些业务bean gson 时候混淆问题
-keep class org.json.** {*;}
-dontwarn com.moshen.core.**
-keep class com.mango.core.** {*;}
-dontwarn com.nnbc123.core.**
-keep class com.nnbc123.core.** {*;}
#百度统计
@@ -314,8 +314,8 @@
-keep class com.autonavi.aps.amapapi.model.**{*;}
#暂时keep这个View排查华为oom问题
-keep class com.mango.moshen.avroom.widget.MicroView{*;}
-keep class com.mango.moshen.ui.widget.rollviewpager.RollPagerView{*;}
-keep class com.nnbc123.app.avroom.widget.MicroView{*;}
-keep class com.nnbc123.app.ui.widget.rollviewpager.RollPagerView{*;}
#linkedMe
-keep class com.microquation.linkedme.android.** { *; }
@@ -373,7 +373,7 @@
-dontwarn com.meizu.cloud.**
-keep class com.meizu.cloud.** {*;}
-keep class com.mango.moshen.ui.widget.AppBarLayoutBehavior {*;}
-keep class com.nnbc123.app.ui.widget.AppBarLayoutBehavior {*;}
#ViewBinding使用的反射生成的对应Binding
-keepclassmembers class * implements androidx.viewbinding.ViewBinding {
@@ -436,9 +436,6 @@
# linkedme
-keep class com.microquation.linkedme.android.** { *; }
# 数美天网
-keep class com.ishumei.dfp.SMSDK { *; }
-dontwarn com.alibaba.**
-dontwarn com.taobao.**
-dontwarn com.google.**
@@ -453,5 +450,14 @@
-keep class android.support.v8.renderscript.** { *; }
-keep class androidx.renderscript.** { *; }
-keep class com.yinyou.plugin.**{*;}
-keep class com.nnbc123.plugin.ui.**{*;}
-dontwarn com.qiyukf.**
-keep class com.qiyukf.** {*;}
-dontwarn org.slf4j.**
-keep class org.slf4j.** { *; }
# For BannerViewPager
-keep class androidx.recyclerview.widget.** { *; }
-keep class androidx.viewpager2.widget.** { *; }

View File

@@ -1,28 +0,0 @@
package com.mango.moshen;
import android.content.Context;
import androidx.test.platform.app.InstrumentationRegistry;
import androidx.test.ext.junit.runners.AndroidJUnit4;
import org.junit.Test;
import org.junit.runner.RunWith;
import static org.junit.Assert.*;
/**
* Instrumented test, which will execute on an Android device.
*
* @see <a href="http://d.android.com/tools/testing">Testing documentation</a>
*/
@RunWith(AndroidJUnit4.class)
public class ExampleInstrumentedTest {
@Test
public void useAppContext() throws Exception {
// Context of the app under test.
Context appContext = InstrumentationRegistry.getTargetContext();
assertEquals("com.mango.moshen_android_client", appContext.getPackageName());
}
}

View File

@@ -0,0 +1,28 @@
package com.nnbc123.app;
import android.content.Context;
import androidx.test.platform.app.InstrumentationRegistry;
import androidx.test.ext.junit.runners.AndroidJUnit4;
import org.junit.Test;
import org.junit.runner.RunWith;
import static org.junit.Assert.*;
/**
* Instrumented test, which will execute on an Android device.
*
* @see <a href="http://d.android.com/tools/testing">Testing documentation</a>
*/
@RunWith(AndroidJUnit4.class)
public class ExampleInstrumentedTest {
@Test
public void useAppContext() throws Exception {
// Context of the app under test.
Context appContext = InstrumentationRegistry.getTargetContext();
assertEquals("com.nnbc123.app_android_client", appContext.getPackageName());
}
}

View File

@@ -1,11 +1,17 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/dialog_charge_bg_checked" android:state_selected="true" />
<item android:drawable="@drawable/dialog_charge_bg_checked" android:state_checked="true" />
<item android:state_selected="true">
<shape android:shape="rectangle">
<stroke android:width="1dp" android:color="#ffffe710" />
<solid android:color="#26ffe710" />
<corners android:bottomLeftRadius="8dp" android:bottomRightRadius="8dp" android:topLeftRadius="8dp" android:topRightRadius="8dp" />
</shape>
</item>
<item>
<shape android:shape="rectangle">
<solid android:color="@color/white" />
<corners android:radius="8dp"/>
<solid android:color="#fff8f8fa" />
<corners android:bottomLeftRadius="10dp" android:bottomRightRadius="10dp" android:topLeftRadius="10dp" android:topRightRadius="10dp" />
</shape>
</item>

View File

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

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<corners android:radius="@dimen/dp_12" />
<stroke android:color="#FFE974" android:width="1px"/>
<solid android:color="#0D002F"/>
</shape>

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -1,10 +0,0 @@
package com.jph.takephoto.permission;
import com.jph.takephoto.model.InvokeParam;
/**
* 授权管理回调
*/
public interface InvokeListener {
PermissionManager.TPermissionType invoke(InvokeParam invokeParam);
}

View File

@@ -1,93 +0,0 @@
package com.jph.takephoto.uitl;
import android.content.Intent;
import android.graphics.Bitmap;
import android.net.Uri;
import android.provider.MediaStore;
import android.util.Log;
import com.darsh.multipleimageselect.activities.AlbumSelectActivity;
import com.darsh.multipleimageselect.helpers.Constants;
import com.jph.takephoto.model.CropOptions;
import com.jph.takephoto.model.TContextWrap;
/**
* Intent工具类用于生成拍照、
* 从相册选择照片裁剪照片所需的Intent
* Author: JPH
* Date: 2016/6/7 0007 13:41
*/
public class IntentUtils {
private static final String TAG = IntentUtils.class.getName();
/**
* 获取图片多选的Intent
* @param limit 最多选择图片张数的限制
* */
public static Intent getPickMultipleIntent(TContextWrap contextWrap, int limit){
Intent intent = new Intent(contextWrap.getActivity(), AlbumSelectActivity.class);
intent.putExtra(Constants.INTENT_EXTRA_LIMIT, limit>0? limit:1);
return intent;
}
/**
* 获取裁剪照片的Intent
* @param targetUri 要裁剪的照片
* @param outPutUri 裁剪完成的照片
* @param options 裁剪配置
* @return
*/
public static Intent getCropIntentWithOtherApp(Uri targetUri, Uri outPutUri, CropOptions options) {
boolean isReturnData = TUtils.isReturnData();
Log.w(TAG, "getCaptureIntentWithCrop:isReturnData:" + (isReturnData ? "true" : "false"));
Intent intent = new Intent("com.android.camera.action.CROP");
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
intent.setDataAndType(targetUri, "image/*");
intent.putExtra("crop", "true");
if (options.getAspectX()*options.getAspectY()>0){
intent.putExtra("aspectX", options.getAspectX());
intent.putExtra("aspectY", options.getAspectY());
}
if (options.getOutputX()*options.getOutputY()>0){
intent.putExtra("outputX", options.getOutputX());
intent.putExtra("outputY", options.getOutputY());
}
intent.putExtra("scale", true);
intent.putExtra(MediaStore.EXTRA_OUTPUT, outPutUri);
intent.putExtra("return-data", isReturnData);
intent.putExtra("outputFormat", Bitmap.CompressFormat.JPEG.toString());
intent.putExtra("noFaceDetection", true); // no face detection
return intent;
}
/**
* 获取拍照的Intent
* @return
*/
public static Intent getCaptureIntent(Uri outPutUri) {
Intent intent = new Intent();
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
intent.setAction(MediaStore.ACTION_IMAGE_CAPTURE);//设置Action为拍照
intent.putExtra(MediaStore.EXTRA_OUTPUT, outPutUri);//将拍取的照片保存到指定URI
return intent;
}
/**
* 获取选择照片的Intent
* @return
*/
public static Intent getPickIntentWithGallery() {
Intent intent = new Intent();
intent.setAction(Intent.ACTION_PICK);//Pick an item from the data
intent.setType("image/*");//从所有图片中进行选择
return intent;
}
/**
* 获取从文件中选择照片的Intent
* @return
*/
public static Intent getPickIntentWithDocuments() {
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("image/*");
return intent;
}
}

View File

@@ -1,55 +0,0 @@
package com.mango.moshen.application;
import android.app.Activity;
import com.mango.moshen.avroom.activity.AVRoomActivity;
import com.mango.moshen.utils.ActWhiteListMrg;
import java.lang.ref.WeakReference;
import lombok.Getter;
/**
* create by lvzebiao @2019/8/8
*/
public class ActivityStackManager {
/**
* 用于保持最顶的Activity实例排除中转的activity
* 比如{@link com.mango.moshen.MiddleActivity}
*/
@Getter
private WeakReference<Activity> topUpgradeWeakRef;
@Getter
private WeakReference<Activity> avRoomActWeakRef;
public void setTopUpgradeActivity(Activity activity) {
if (!ActWhiteListMrg.isTempActivity(activity)) {
topUpgradeWeakRef = new WeakReference<>(activity);
}
}
public void addActivity(Activity activity){
if (activity instanceof AVRoomActivity) {
avRoomActWeakRef = new WeakReference<>(activity);
}
}
public void removeActivity(Activity activity){
if (activity instanceof AVRoomActivity) {
avRoomActWeakRef = null;
}
}
private static final class Helper {
public static final ActivityStackManager INSTANCE = new ActivityStackManager();
}
public static ActivityStackManager getInstance() {
return Helper.INSTANCE;
}
}

View File

@@ -1,10 +0,0 @@
package com.mango.moshen.audio.helper;
/**
* create by lvzebiao @2019/6/11
*/
public interface OnRefreshListener {
void refresh();
}

View File

@@ -1,35 +0,0 @@
package com.mango.moshen.audio.presenter;
import com.mango.moshen.audio.view.IMyVoiceView;
import com.mango.moshen.base.BaseMvpPresenter;
import com.mango.core.audio.AudioModel;
import com.mango.core.audio.bean.UserVoiceInfo;
import com.mango.core.auth.AuthModel;
import com.mango.core.utils.net.DontWarnObserver;
import com.mango.xchat_android_library.base.PresenterEvent;
import java.util.List;
/**
* 我的声音页面
*/
public class MyVoicePresenter extends BaseMvpPresenter<IMyVoiceView> {
public void getUserVoiceInfo() {
getMvpView().showLoadingView();
AudioModel.get().getMyVoiceInfoList(AuthModel.get().getCurrentUid())
.compose(bindUntilEvent(PresenterEvent.DESTROY))
.subscribe(new DontWarnObserver<List<UserVoiceInfo>>() {
@Override
public void accept(List<UserVoiceInfo> userVoiceInfos, String error) {
super.accept(userVoiceInfos, error);
if (getMvpView() == null) {
return;
}
getMvpView().hideLoadingView();
getMvpView().showVoiceInfo(userVoiceInfos);
}
});
}
}

View File

@@ -1,14 +0,0 @@
package com.mango.moshen.audio.view;
import com.mango.core.audio.bean.VoiceMatchInfo;
/**
* create by lvzebiao @2019/6/19
*/
public interface IBottleOpListener {
void onLimit(boolean isRight);
void onLikeOrUnLike(VoiceMatchInfo info, boolean isRight, boolean needLoading);
}

View File

@@ -1,23 +0,0 @@
package com.mango.moshen.audio.view;
import com.mango.core.audio.bean.UserVoiceInfo;
import com.mango.xchat_android_library.base.IMvpBaseView;
import java.util.List;
/**
* 我的声音页面
*/
public interface IMyVoiceView extends IMvpBaseView {
/**
* 显示声音数据消息
*/
void showVoiceInfo(List<UserVoiceInfo> voiceList);
/**
* 请稍后
*/
void showLoadingView();
void hideLoadingView();
}

View File

@@ -1,18 +0,0 @@
package com.mango.moshen.avroom;
import android.content.Context;
import android.util.SparseArray;
import com.mango.moshen.avroom.widget.ViewItem;
import com.mango.moshen.ui.widget.GiftDialog;
/**
* 用户卡片的管理
* Created by lvzebiao on 2018/11/12.
*/
public class UserCardButtonManager {
}

View File

@@ -1,20 +0,0 @@
package com.mango.moshen.avroom.adapter
import com.chad.library.adapter.base.BaseQuickAdapter
import com.chad.library.adapter.base.BaseViewHolder
import com.mango.moshen.R
import com.mango.moshen.ui.utils.ImageLoadUtils
import com.mango.core.home.bean.HomeRoomInfo
import com.mango.core.utils.subAndReplaceDot
class ExitRoomAdapter :
BaseQuickAdapter<HomeRoomInfo, BaseViewHolder>(R.layout.item_exit_room) {
override fun convert(helper: BaseViewHolder, item: HomeRoomInfo) {
ImageLoadUtils.loadImage(mContext, item.avatar, helper.getView(R.id.iv_avatar))
ImageLoadUtils.loadImage(mContext, item.tagPict, helper.getView(R.id.iv_tag))
helper.setText(R.id.tv_online_num, item.onlineNum.toString())
.setText(R.id.tv_title, item.title.subAndReplaceDot(8))
}
}

View File

@@ -1,17 +0,0 @@
package com.mango.moshen.avroom.adapter;
import com.mango.core.room.queue.bean.MicMemberInfo;
/**
* Created by lvzebiao on 2018/11/5.
*/
public interface OnMicroItemClickListener {
void onAvatarBtnClick(int position);
void onUpMicBtnClick(int position, MicMemberInfo chatRoomMember);
void onLockBtnClick(int position);
void onRoomSettingsClick();
}

View File

@@ -1,20 +0,0 @@
package com.mango.moshen.avroom.anotherroompk
import com.chad.library.adapter.base.BaseQuickAdapter
import com.chad.library.adapter.base.BaseViewHolder
import com.mango.moshen.R
import com.mango.moshen.ui.utils.ImageLoadUtils
import com.mango.core.room.anotherroompk.SimpleRoomInfo
import com.mango.core.utils.subAndReplaceDot
class RoomPKSearchAdapter :
BaseQuickAdapter<SimpleRoomInfo, BaseViewHolder>(R.layout.item_room_pk_search) {
override fun convert(helper: BaseViewHolder, item: SimpleRoomInfo) {
helper.setText(R.id.tv_room_title,item.title.subAndReplaceDot(7))
.setText(R.id.tv_room_id,"ID:${item.erbanNo}")
.setChecked(R.id.check_box,item.checked)
ImageLoadUtils.loadImage(mContext,item.avatar,helper.getView(R.id.iv_avatar))
helper.addOnClickListener(R.id.iv_avatar,R.id.check_box)
}
}

View File

@@ -1,19 +0,0 @@
package com.mango.moshen.avroom.anotherroompk
import com.mango.moshen.base.BaseDialog
import com.mango.moshen.databinding.DialogRoomPkRuleBinding
class RoomPkRuleDialog : BaseDialog<DialogRoomPkRuleBinding>() {
companion object {
@JvmStatic
fun newInstance(): RoomPkRuleDialog {
return RoomPkRuleDialog()
}
}
override fun init() {
binding.ivClose.setOnClickListener { dismissAllowingStateLoss() }
}
}

View File

@@ -1,35 +0,0 @@
package com.mango.moshen.avroom.dialog;
import android.content.Context;
import android.text.method.ScrollingMovementMethod;
import android.view.View;
import com.mango.moshen.R;
import com.mango.moshen.databinding.DialogDatingVipRuleBinding;
import com.mango.moshen.treasure_box.widget.dialog.BaseBindingDialog;
import com.mango.xchat_android_library.annatation.ActLayoutRes;
@ActLayoutRes(R.layout.dialog_dating_vip_rule)
public class DatingVipRuleDialog extends BaseBindingDialog<DialogDatingVipRuleBinding> implements View.OnClickListener {
public DatingVipRuleDialog(Context context) {
super(context, R.style.DialogFragment);
}
public static DatingVipRuleDialog newInstance(Context context) {
return new DatingVipRuleDialog(context);
}
@Override
protected void init() {
binding.setClick(this);
binding.tvRule.setMovementMethod(ScrollingMovementMethod.getInstance());
}
@Override
public void onClick(View v) {
closeDialog();
}
}

View File

@@ -1,23 +0,0 @@
package com.mango.moshen.avroom.dialog
import com.mango.moshen.base.BaseDialog
import com.mango.moshen.databinding.DialogNewUserGiftBinding
import com.mango.moshen.ui.utils.load
import com.mango.core.gift.bean.GiftInfo
import com.mango.core.statistic.StatisticManager
import com.mango.core.statistic.protocol.StatisticsProtocol
class NewUserGiftDialog(val giftInfo: GiftInfo) :
BaseDialog<DialogNewUserGiftBinding>() {
override fun init() {
StatisticManager.Instance().onEvent(StatisticsProtocol.EVENT_ROOM_NUGIVE_POP_SHOW, "房间礼物赠送弹窗曝光")
binding.ivClose.setOnClickListener {
StatisticManager.Instance().onEvent(StatisticsProtocol.EVENT_ROOM_NUGIVE_POP_CLICK, "房间礼物赠送弹窗关闭点击")
dismissAllowingStateLoss()
}
binding.ivGift.load(giftInfo.giftUrl)
binding.tvGiftName.text = "${giftInfo.giftName}*${giftInfo.count}"
}
}

View File

@@ -1,44 +0,0 @@
package com.mango.moshen.avroom.dialog
import android.content.Context
import android.view.View
import com.mango.moshen.R
import com.mango.moshen.databinding.DialogRequestUpmicBinding
import com.mango.moshen.treasure_box.widget.dialog.BaseBindingDialog
import com.mango.core.manager.AvRoomDataManager
import com.mango.core.manager.IMNetEaseManager
import com.mango.core.user.bean.BaseInfo
import com.mango.core.user.bean.UserInfo
import com.mango.xchat_android_library.annatation.ActLayoutRes
@ActLayoutRes(R.layout.dialog_request_upmic)
class RequestUpMicDialog(context: Context) :
BaseBindingDialog<DialogRequestUpmicBinding>(context, R.style.dialog),
View.OnClickListener {
private var userInfo: UserInfo? = null
override fun init() {
binding.click = this
}
override fun onClick(v: View) {
when (v.id) {
R.id.btn_cancel -> {
closeDialog()
}
R.id.btn_ok -> {
userInfo?.let {
val baseInfo = BaseInfo(it.uid, it.nick)
val position = AvRoomDataManager.get().findFreePosition()
if ( position == Int.MIN_VALUE) return@let
IMNetEaseManager.get().inviteMicroPhoneBySdk(baseInfo, position ).subscribe()
}
closeDialog()
}
}
}
fun setUser(userInfo: UserInfo) {
this.userInfo = userInfo
binding.user = userInfo
}
}

View File

@@ -1,28 +0,0 @@
package com.mango.moshen.avroom.firstcharge
import androidx.core.view.updateLayoutParams
import androidx.recyclerview.widget.RecyclerView
import com.chad.library.adapter.base.BaseQuickAdapter
import com.chad.library.adapter.base.BaseViewHolder
import com.mango.moshen.R
import com.mango.core.pay.bean.FirstChargeReward
import com.mango.moshen.ui.utils.ImageLoadUtils
import com.mango.core.utils.TextUtils
class RewardAdapter(private val itemWidth: Int) :
BaseQuickAdapter<FirstChargeReward, BaseViewHolder>(R.layout.item_first_charge_reward) {
override fun convert(helper: BaseViewHolder, item: FirstChargeReward) {
helper.itemView.updateLayoutParams<RecyclerView.LayoutParams> {
width = itemWidth
}
ImageLoadUtils.loadImage(
mContext,
item.showPir,
helper.getView(R.id.iv_pic),
R.drawable.default_cover
)
helper.setText(R.id.tv_name, item.showText)
.setText(R.id.tv_time, item.showTime)
.setGone(R.id.tv_time, !TextUtils.isEmptyText(item.showTime))
}
}

View File

@@ -1,687 +0,0 @@
package com.mango.moshen.avroom.fragment;
import android.annotation.SuppressLint;
import android.content.Intent;
import android.os.Bundle;
import android.view.Gravity;
import android.view.View;
import android.view.ViewConfiguration;
import android.view.ViewStub;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.annotation.Nullable;
import androidx.appcompat.widget.AppCompatImageView;
import androidx.databinding.DataBindingUtil;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.LinearLayoutManager;
import com.netease.nim.uikit.common.util.string.StringUtil;
import com.netease.nimlib.sdk.chatroom.ChatRoomMessageBuilder;
import com.netease.nimlib.sdk.chatroom.model.ChatRoomMessage;
import com.netease.nimlib.sdk.msg.attachment.MsgAttachment;
import com.opensource.svgaplayer.SVGAImageView;
import com.trello.rxlifecycle3.android.FragmentEvent;
import com.mango.moshen.R;
import com.mango.moshen.avroom.activity.AVRoomActivity;
import com.mango.moshen.avroom.activity.RoomOnlineUserActivity;
import com.mango.moshen.avroom.adapter.SelectGameAdapter;
import com.mango.moshen.avroom.dialog.ExitRoomPopupWindow;
import com.mango.moshen.avroom.widget.GiftV2View;
import com.mango.moshen.base.BaseFragment;
import com.mango.moshen.databinding.FragmentChatroomGameMainBinding;
import com.mango.moshen.friend.view.SelectFriendActivity;
import com.mango.moshen.home.helper.OpenRoomHelper;
import com.mango.moshen.ui.widget.ShareDialog;
import com.mango.moshen.utils.RegexUtil;
import com.mango.core.gift.bean.GiftMultiReceiverInfo;
import com.mango.core.gift.bean.GiftReceiveInfo;
import com.mango.core.gift.bean.LuckyBagGifts;
import com.mango.core.gift.bean.MultiGiftReceiveInfo;
import com.mango.core.home.event.FollowRoomEvent;
import com.mango.core.home.event.ShareRoomEvent;
import com.mango.core.home.model.CollectionRoomModel;
import com.mango.core.im.custom.bean.CustomAttachment;
import com.mango.core.im.custom.bean.RoomInfoAttachment;
import com.mango.core.magic.bean.MagicReceivedInfo;
import com.mango.core.magic.bean.MultiMagicReceivedInfo;
import com.mango.core.manager.AvRoomDataManager;
import com.mango.core.manager.IMNetEaseManager;
import com.mango.core.manager.RoomEvent;
import com.mango.core.praise.PraiseModel;
import com.mango.core.room.bean.RoomInfo;
import com.mango.core.room.bean.RoomModeType;
import com.mango.core.room.game.GameInfo;
import com.mango.core.room.game.GameModel;
import com.mango.core.room.queuing_mic.event.HasAnimationEffect;
import com.mango.core.share.ShareModel;
import com.mango.core.statistic.StatisticManager;
import com.mango.core.statistic.protocol.StatisticsProtocol;
import com.mango.core.super_admin.util.SuperAdminUtil;
import com.mango.core.user.UserModel;
import com.mango.core.user.bean.UserInfo;
import com.mango.xchat_android_library.utils.JavaUtil;
import com.mango.xchat_android_library.utils.SingleToastUtil;
import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode;
import java.lang.reflect.Field;
import java.util.HashMap;
import java.util.Map;
import java.util.Objects;
import cn.sharesdk.framework.Platform;
import io.reactivex.SingleObserver;
import io.reactivex.disposables.Disposable;
import io.reactivex.functions.Action;
/**
* 轰趴房
* Created by 2016/9/22.
*
* @author Administrator
*/
public class HomePartyFragment extends BaseFragment implements View.OnClickListener, ShareDialog.OnShareDialogItemClick {
private Fragment roomFragment;
private TextView roomTitle;
private TextView roomId;
private ImageView ivFollowRoom;
private AppCompatImageView mIvGoodNumber;
private ImageView roomMore;
private GiftV2View giftView;
private ViewStub mVsGift2View;
private SVGAImageView svgaRoomBg;
private String[] bgPicture = new String[]{""};
private UserInfo mUserInfo;
private FragmentChatroomGameMainBinding gameMainBinding;
private ShareDialog shareDialog;
//收藏房间
private String FOLLOW_ROOM_TYPE = "";
private SelectGameAdapter gameAdapter;
public static HomePartyFragment newInstance() {
HomePartyFragment homePartyFragment = new HomePartyFragment();
Bundle bundle = new Bundle();
homePartyFragment.setArguments(bundle);
return homePartyFragment;
}
@Override
public void onNewIntent(Intent intent) {
super.onNewIntent(intent);
// clear views
roomTitle.setText("");
setRoomId(0, 0);
updateOnlineNumberView(0);
if (roomFragment instanceof HomePartyRoomFragment) {
((HomePartyRoomFragment) roomFragment).onNewIntent(intent);
}
}
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
EventBus.getDefault().register(this);
}
private void setRoomId(long id, int onlineNumber) {
String htmlText = "ID:" + id;
roomId.setText(htmlText);
}
@Override
public int getRootLayoutId() {
return R.layout.fragment_chatroom_game_main;
}
@Override
public void onFindViews() {
gameMainBinding = DataBindingUtil.bind(mView);
roomTitle = mView.findViewById(R.id.room_title);
setupRoomTitleMarquee();
roomMore = mView.findViewById(R.id.room_more);
roomId = mView.findViewById(R.id.room_id);
mVsGift2View = mView.findViewById(R.id.vs_gift_view);
mIvGoodNumber = mView.findViewById(R.id.iv_good_number);
ivFollowRoom = mView.findViewById(R.id.iv_follow_room);
svgaRoomBg = mView.findViewById(R.id.svga_image_view_bg);
}
/**
* 添加跑马灯
* 以及反射一些参数影响跑马灯
*/
private void setupRoomTitleMarquee() {
try {
ViewConfiguration configuration = ViewConfiguration.get(getContext());
Class claz = configuration.getClass();
Field field = claz.getDeclaredField("mFadingMarqueeEnabled");
field.setAccessible(true);
field.set(configuration, true);
} catch (NoSuchFieldException e) {
e.printStackTrace();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
roomTitle.setSelected(true);
}
@Override
public void onSetListener() {
roomMore.setOnClickListener(this);
ivFollowRoom.setOnClickListener(this);
gameMainBinding.llRoomInfo.setOnClickListener(this);
gameMainBinding.ivBack.setOnClickListener(this);
}
@SuppressLint("CheckResult")
@Override
public void initiate() {
RoomInfo roomInfo = AvRoomDataManager.get().mCurrentRoomInfo;
if (roomInfo == null) return;
if (!AvRoomDataManager.get().haveSelfChange) {
AvRoomDataManager.get().mIsNeedGiftEffect = AvRoomDataManager.get().mCurrentRoomInfo.isHasAnimationEffect();
}
}
private void initRvGame() {
RoomInfo roomInfo = AvRoomDataManager.get().mCurrentRoomInfo;
if (roomInfo == null || gameAdapter != null) return;
gameMainBinding.rvGame.setLayoutManager(new LinearLayoutManager(mContext));
gameMainBinding.rvGame.setAdapter(gameAdapter = new SelectGameAdapter());
gameMainBinding.llSelectGame.setOnClickListener(v -> {
if (gameMainBinding.rvGame.getVisibility() == View.VISIBLE) {
gameMainBinding.rvGame.setVisibility(View.GONE);
gameMainBinding.ivChangeGameArrow.setImageResource(R.drawable.ic_room_arrow_type_below);
} else {
if (!isShowChangeGame()) {
SingleToastUtil.showToast("请关闭其他模式再切换游戏!");
return;
}
if (AvRoomDataManager.get().isGamePlaying()) {
SingleToastUtil.showToast("游戏中不可以切换游戏或玩法!");
} else {
gameMainBinding.rvGame.setVisibility(View.VISIBLE);
gameMainBinding.ivChangeGameArrow.setImageResource(R.drawable.ic_room_arrow_type);
}
}
});
gameAdapter.setOnItemClickListener((adapter, view, position) -> {
if (AvRoomDataManager.get().isGamePlaying()) {
SingleToastUtil.showToast("游戏中不可以切换游戏或玩法!");
}
if (!isShowChangeGame()) {
SingleToastUtil.showToast("请关闭其他模式再切换游戏!");
return;
}
GameInfo gameInfo = gameAdapter.getItem(position);
if (gameInfo != null) {
int type;
long mgId = 0;
if (Objects.equals("扩列交友", gameInfo.getName())) {
type = RoomInfo.ROOMTYPE_HOME_PARTY;
} else {
type = RoomInfo.ROOMTYPE_GAME;
mgId = JavaUtil.str2long(gameInfo.getMgId());
}
gameMainBinding.rvGame.setVisibility(View.GONE);
gameMainBinding.ivChangeGameArrow.setImageResource(R.drawable.ic_room_arrow_type_below);
OpenRoomHelper.updateRoomInfo(
getBaseActivity(),
AvRoomDataManager.get().mCurrentRoomInfo,
type,
mgId,
false);
}
});
}
//这里的2和4是服务端定义的错误状态 关闭排麦模式和关闭PK模式!
private boolean isShowChangeGame() {
RoomInfo 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);
}
public void setRoomBg(RoomInfo roomInfo) {
if (svgaRoomBg == null) return;
updateView(roomInfo);
AVRoomActivity.setBackBg(mContext, roomInfo, svgaRoomBg, bgPicture);
}
@SuppressLint("CheckResult")
@Override
public void onResume() {
super.onResume();
updateView(AvRoomDataManager.get().mCurrentRoomInfo);
IMNetEaseManager.get().getChatRoomEventObservable()
.compose(bindToLifecycle())
.subscribe(roomEvent -> {
if (roomEvent == null) return;
int event = roomEvent.getEvent();
switch (event) {
case RoomEvent.ENTER_ROOM:
if (AvRoomDataManager.get().mCurrentRoomInfo != null) {
updateOnlineNumberView(AvRoomDataManager.get().mCurrentRoomInfo.onlineNum);
}
addTipMsg();
case RoomEvent.ROOM_INFO_UPDATE:
setRoomBg(AvRoomDataManager.get().mCurrentRoomInfo);
break;
case RoomEvent.RECEIVE_NORMALE_GIFT:
onReceiveGiftMsg(roomEvent.getGiftReceiveInfo());
break;
case RoomEvent.RECEIVE_MUTLT_NORMALEI_GIFT://普通多人
onReceiveMultiGiftMsg(roomEvent.getGiftMultiReceiverInfo());
break;
case RoomEvent.RECEIVE_ALL_MIC__NORMALEI_GIFT://普通全麦
onReceiveAllMicGiftMsg(roomEvent.getMultiGiftReceiveInfo());
break;
//福袋礼物
case RoomEvent.RECEIVE_LUCKY_GIFT:
case RoomEvent.RECEIVE_MULTI_LUCKY_GIFT:
case RoomEvent.RECEIVE_ALL_MIC_LUCKY_GIFT:
onReceiveLuckyGiftToMultiMsg(roomEvent.getLuckygiftMultiReceiverInfo());
break;
case RoomEvent.RECEIVED_SINGLE_MAGIC:
onReceiveMagicMsg(roomEvent.getMagicReceivedInfo());
break;
case RoomEvent.RECEIVED_ALL_MIC_MAGIC:
onReceiveMultiMagicMsg(roomEvent.getMultiMagicReceivedInfo());
break;
case RoomEvent.FANS_TEAM_JOIN:
onReceiveFansTeamJoinMsg(roomEvent.getChatRoomMessage());
break;
default:
break;
}
});
}
private void onReceiveLuckyGiftToMultiMsg(LuckyBagGifts giftMultiReceiverInfo) {
if (giftMultiReceiverInfo == null || !isResumed()) return;
if (giftView == null) {
giftView = (GiftV2View) mVsGift2View.inflate();
}
giftView.onReceiveLuckyGiftToMultiMsg(giftMultiReceiverInfo);
}
/**
* 进入房间时的提示信息
*/
private void addTipMsg() {
if (AvRoomDataManager.get().mCurrentRoomInfo != null && AvRoomDataManager.get().mCurrentRoomInfo.isCloseScreen()) {
MsgAttachment attachment = new RoomInfoAttachment(CustomAttachment.CUSTOM_MSG_UPDATE_ROOM_INFO,
CustomAttachment.CUSTOM_MSG_UPDATE_ROOM_INFO_CLOSE_SCREEN);
ChatRoomMessage closeMsg = ChatRoomMessageBuilder.createChatRoomCustomMessage(
String.valueOf(AvRoomDataManager.get().getRoomId()), attachment);
closeMsg.setContent("管理员已关闭聊天公屏");
IMNetEaseManager.get().addCloseScreenMessages(closeMsg);
} else if (AvRoomDataManager.get().mCurrentRoomInfo != null && !AvRoomDataManager.get().mCurrentRoomInfo.isHasAnimationEffect()) {
ChatRoomMessage tipMessage = ChatRoomMessageBuilder.createTipMessage("");
tipMessage.setContent("礼物特效");
IMNetEaseManager.get().addCloseScreenMessages(tipMessage);
}
}
private void setIdOnlineData() {
RoomInfo roomInfo = AvRoomDataManager.get().mCurrentRoomInfo;
if (roomInfo == null) return;
UserModel.get().getUserInfo(roomInfo.getUid()).subscribe(new SingleObserver<UserInfo>() {
@Override
public void onSubscribe(Disposable d) {
mCompositeDisposable.add(d);
}
@Override
public void onSuccess(UserInfo userInfo) {
mUserInfo = userInfo;
setRoomId(mUserInfo.getErbanNo(), roomInfo.onlineNum);
mIvGoodNumber.setVisibility(mUserInfo.isHasPrettyErbanNo() ? View.VISIBLE : View.GONE);
}
@Override
public void onError(Throwable e) {
setRoomId(0, roomInfo.onlineNum);
mIvGoodNumber.setVisibility(View.GONE);
}
});
gameMainBinding.setRoomInfo(roomInfo);
}
@SuppressLint("CheckResult")
public void updateView(RoomInfo currentRoomInfo) {
if (currentRoomInfo != null) {
Fragment tempFragment = roomFragment;
switch (currentRoomInfo.getType()) {
case RoomInfo.ROOMTYPE_GAME:
if (!(tempFragment instanceof GameRoomFragment)) {
tempFragment = GameRoomFragment.newInstance();
}
break;
case RoomInfo.ROOM_TYPE_SINGLE:
if (!(tempFragment instanceof SingleRoomFragment)) {
tempFragment = SingleRoomFragment.newInstance();
}
break;
default:
if (!(tempFragment instanceof HomePartyRoomFragment)) {
tempFragment = HomePartyRoomFragment.newInstance();
}
break;
}
if (tempFragment != roomFragment) {
roomFragment = tempFragment;
getChildFragmentManager()
.beginTransaction()
.replace(R.id.container, roomFragment)
.commitAllowingStateLoss();
}
gameMainBinding.setRoomInfo(currentRoomInfo);
updateHasAnimationEffect();
roomTitle.setText(RegexUtil.getPrintableString(currentRoomInfo.getTitle()));
if (!StringUtil.isEmpty(currentRoomInfo.getRoomPwd())) {
roomTitle.setCompoundDrawablesWithIntrinsicBounds(null, null,
getResources().getDrawable(R.drawable.icon_room_lock), null);
} else {
roomTitle.setCompoundDrawablesWithIntrinsicBounds(null, null, null, null);
}
ivFollowRoom.setVisibility(AvRoomDataManager.get().isRoomOwner() ? View.GONE : View.VISIBLE);
FOLLOW_ROOM_TYPE = AvRoomDataManager.get().isRoomFans ? "2" : "1";
ivFollowRoom.setImageResource(AvRoomDataManager.get().isRoomFans ? R.drawable.icon_room_liked : R.drawable.icon_room_like);
setIdOnlineData();
if (isShowChangeGame()) {
initRvGame();
gameMainBinding.llChangeGame.setVisibility(View.VISIBLE);
if (AvRoomDataManager.get().isOpenGame()) {
gameMainBinding.tvCurrGame.setText(currentRoomInfo.getMgName());
} else {
gameMainBinding.tvCurrGame.setText("扩列交友");
}
GameModel.INSTANCE.getGameList()
.compose(bindToLifecycle())
.subscribe(gameInfos -> {
if (AvRoomDataManager.get().isOpenGame()) {
for (int i = 0; i < gameInfos.size(); i++) {
GameInfo gameInfo = gameInfos.get(i);
if (JavaUtil.str2long(gameInfo.getMgId()) == currentRoomInfo.getMgId()) {
gameInfos.remove(i);
break;
}
}
GameInfo gameInfo = new GameInfo();
gameInfo.setName("扩列交友");
gameInfos.add(gameInfo);
}
gameAdapter.setNewData(gameInfos);
});
} else {
gameMainBinding.llChangeGame.setVisibility(View.GONE);
}
}
}
public void updateHasAnimationEffect() {
if (!AvRoomDataManager.get().haveSelfChange && AvRoomDataManager.get().mCurrentRoomInfo != null) {
AvRoomDataManager.get().mIsNeedGiftEffect = AvRoomDataManager.get().mCurrentRoomInfo.isHasAnimationEffect();
}
gameMainBinding.setHasAnimationEffect(AvRoomDataManager.get().mIsNeedGiftEffect);
}
/**
* 更新特效开关提示
*/
@Subscribe(threadMode = ThreadMode.MAIN)
public void updateHasAnimation(HasAnimationEffect event) {
updateHasAnimationEffect();
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.room_more:
ExitRoomPopupWindow.newInstance((AVRoomActivity) requireActivity())
.showAtLocation(gameMainBinding.getRoot(), Gravity.END, 0, 0);
break;
case R.id.ll_room_info:
RoomOnlineUserActivity.start(getActivity());
StatisticManager.Instance().onEvent(StatisticsProtocol.EVENT_ROOM_ONLINE_LIST_CLICK, "房间在线列表点击");
break;
case R.id.iv_follow_room:
followRoom();
break;
case R.id.iv_back:
if (getActivity() instanceof AVRoomActivity) {
((AVRoomActivity) getActivity()).onBackPressed();
}
StatisticManager.Instance().onEvent(StatisticsProtocol.EVENT_ROOM_RETURN_CLICK, "房间返回按钮点击");
break;
default:
}
}
public void dismissSendRedPackageDialog() {
if (roomFragment instanceof BaseRoomFragment) {
((BaseRoomFragment) roomFragment).clearDialog();
}
}
/**
* 收藏房间
*/
@SuppressLint("CheckResult")
private void followRoom() {
RoomInfo currentRoomInfo = AvRoomDataManager.get().mCurrentRoomInfo;
if (currentRoomInfo == null) {
return;
}
Map<String, String> arguments = new HashMap<>();
arguments.put("room_id", String.valueOf(mUserInfo == null ? currentRoomInfo.getUid() : mUserInfo.getErbanNo()));
StatisticManager.Instance().onEvent(StatisticsProtocol.EVENT_ROOM_COLLECT_ICON_CLICK, "语音房_收藏顶部按钮", arguments);
CollectionRoomModel.get().followRoom(FOLLOW_ROOM_TYPE, currentRoomInfo.getUid())
.compose(bindUntilEvent(FragmentEvent.DESTROY))
.doOnError(throwable -> {
toast(throwable.getMessage());
})
.subscribe(s -> {
AvRoomDataManager.get().isRoomFans = !AvRoomDataManager.get().isRoomFans;
FOLLOW_ROOM_TYPE = AvRoomDataManager.get().isRoomFans ? "2" : "1";
ivFollowRoom.setImageResource(AvRoomDataManager.get().isRoomFans ? R.drawable.icon_room_liked : R.drawable.icon_room_like);
if (AvRoomDataManager.get().isRoomFans) {
SingleToastUtil.showToast("收藏成功!");
PraiseModel.get().setFollowRoomSuccessRoomTip(currentRoomInfo.getUid());
StatisticManager.Instance().onEvent(StatisticsProtocol.EVENT_ROOM_FOLLOW_BUTTON_CLICK, "语音房_收藏顶部按钮");
}
});
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void onFollowRoomEvent(FollowRoomEvent event) {
ivFollowRoom.setImageResource(AvRoomDataManager.get().isRoomFans ? R.drawable.icon_room_liked : R.drawable.icon_room_like);
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void onShareRoomEvent(ShareRoomEvent event) {
shareRoom();
}
/**
* 分享房间
*/
public void shareRoom() {
if (shareDialog != null && shareDialog.isShowing()) {
shareDialog.dismiss();
}
shareDialog = new ShareDialog(getActivity());
shareDialog.setOnShareDialogItemClick(this);
shareDialog.show();
StatisticManager.Instance().onEvent(StatisticsProtocol.EVENT_ROOM_SHARE_CLICK, "语音房_分享");
}
@Override
public void onInAppSharingItemClick() {
shareDialog.dismiss();
SelectFriendActivity.startForSharingRoom(getActivity());
}
@Override
public void onSharePlatformClick(Platform platform) {
RoomInfo currentRoomInfo = AvRoomDataManager.get().mCurrentRoomInfo;
if (currentRoomInfo != null) {
UserModel.get().getUserInfo(currentRoomInfo.getUid())
.flatMap(userInfo -> ShareModel.get().shareRoom(
platform,
currentRoomInfo.getUid(),
userInfo.getErbanNo(),
currentRoomInfo.getTitle(),
currentRoomInfo.getAvatar()
))
.compose(bindUntilEvent(FragmentEvent.DESTROY))
.doAfterTerminate(new Action() {
@Override
public void run() throws Exception {
getDialogManager().dismissDialog();
}
})
.subscribe(new SingleObserver<String>() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onSuccess(String s) {
toast(s);
}
@Override
public void onError(Throwable e) {
toast(e.getMessage());
}
});
}
}
@Override
public void onDestroy() {
if (giftView != null) {
giftView.release();
}
EventBus.getDefault().unregister(this);
super.onDestroy();
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
roomFragment.onActivityResult(requestCode, resultCode, data);
}
public void onRoomOnlineNumberSuccess(int onlineNumber) {
updateOnlineNumberView(onlineNumber);
}
/**
* 普通多人
*
* @param giftMultiReceiverInfo
*/
private void onReceiveMultiGiftMsg(GiftMultiReceiverInfo giftMultiReceiverInfo) {
if (giftMultiReceiverInfo == null || !isResumed()) return;
if (giftView == null) {
giftView = (GiftV2View) mVsGift2View.inflate();
}
giftView.onReceiveGiftToMultiMsg(giftMultiReceiverInfo);
}
/**
* 普通全麦
*
* @param multiGiftReceiveInfo
*/
private void onReceiveAllMicGiftMsg(MultiGiftReceiveInfo multiGiftReceiveInfo) {
if (multiGiftReceiveInfo == null || !isResumed()) return;
if (giftView == null) {
giftView = (GiftV2View) mVsGift2View.inflate();
}
giftView.onReceiveMultiGiftMsg(multiGiftReceiveInfo);
}
private void onReceiveGiftMsg(GiftReceiveInfo giftReceiveInfo) {
if (giftReceiveInfo == null || !isResumed()) return;
if (giftView == null) {
giftView = (GiftV2View) mVsGift2View.inflate();
}
giftView.onReceiveGiftMsg(giftReceiveInfo);
}
private void onReceiveMagicMsg(MagicReceivedInfo magicReceivedInfo) {
if (magicReceivedInfo == null || !isResumed()) return;
if (giftView == null) {
giftView = (GiftV2View) mVsGift2View.inflate();
}
giftView.onReceiveMagicMsg(magicReceivedInfo);
}
private void onReceiveMultiMagicMsg(MultiMagicReceivedInfo multiMagicReceivedInfo) {
if (multiMagicReceivedInfo == null || !isResumed()) return;
if (giftView == null) {
giftView = (GiftV2View) mVsGift2View.inflate();
}
giftView.onReceiveMultiMagicMsg(multiMagicReceivedInfo);
}
private void onReceiveFansTeamJoinMsg(ChatRoomMessage message) {
if (message == null || !isResumed())
return;
if (giftView == null) {
giftView = (GiftV2View) mVsGift2View.inflate();
}
giftView.onReceiveFansTeamOpenMsg(message);
}
private void updateOnlineNumberView(int onlineNumber) {
if (!SuperAdminUtil.isSuperAdmin()) {
if (onlineNumber < 1) {
onlineNumber = 1;
}
}
gameMainBinding.roomNums.setText("在线" + onlineNumber);
}
}

View File

@@ -1,5 +0,0 @@
package com.mango.moshen.avroom.fragment;
public interface IRoomRankDialogChangePageListener {
void onChangePage(int pos);
}

View File

@@ -1,5 +0,0 @@
package com.mango.moshen.avroom.fragment;
public interface IRoomRankDialogDismissListener {
void onDismiss();
}

View File

@@ -1,18 +0,0 @@
package com.mango.moshen.avroom.fragment;
import com.mango.core.room.bean.RoomRankHalfHourMeInfo;
import com.mango.core.room.bean.RoomRankHalfHourRankInfo;
import com.mango.core.room.bean.RoomRankMultiItem;
import com.mango.xchat_android_library.base.IMvpBaseView;
import java.util.List;
public interface IRoomRankHalfHourView extends IMvpBaseView {
void showMeInfo(RoomRankHalfHourMeInfo dataInfo/*, int progress, String onListTip*/);
void showTop3Info(List<RoomRankHalfHourRankInfo> dataInfoList);
void showRankListInfo(List<RoomRankMultiItem> dataList);
void loadDataFailure();
}

View File

@@ -1,41 +0,0 @@
package com.mango.moshen.avroom.fragment;
import androidx.fragment.app.Fragment;
import com.mango.moshen.R;
import com.mango.moshen.avroom.adapter.RoomContributeListAdapter;
import com.mango.moshen.avroom.widget.RankNavigatorAdapter;
import com.mango.moshen.base.BaseBindingFragment;
import com.mango.moshen.ui.widget.magicindicator.ViewPagerHelper;
import com.mango.moshen.ui.widget.magicindicator.buildins.commonnavigator.CommonNavigator;
import com.mango.core.room.bean.RoomContributeDataInfo;
import com.mango.xchat_android_library.annatation.ActLayoutRes;
import com.mango.moshen.databinding.FragmentRoomCharmListBinding;
import java.util.ArrayList;
@ActLayoutRes(R.layout.fragment_room_charm_list)
public class RoomCharmListFragment extends BaseBindingFragment<FragmentRoomCharmListBinding> {
public static RoomCharmListFragment newInstance() {
return new RoomCharmListFragment();
}
@Override
public void initiate() {
ArrayList<Fragment> fragments = new ArrayList<>(2);
fragments.add(RoomCharmRankingListFragment.newInstance(RoomContributeDataInfo.TYPE_ROOM_DAY_RANKING));
fragments.add(RoomCharmRankingListFragment.newInstance(RoomContributeDataInfo.TYPE_ROOM_WEEK_RANKING));
mBinding.vpCharmRankings.setAdapter(new RoomContributeListAdapter(getChildFragmentManager(), fragments));
CommonNavigator commonNavigator = new CommonNavigator(getActivity());
commonNavigator.setAdjustMode(false);
RankNavigatorAdapter indicator = new RankNavigatorAdapter(false);
indicator.setOnItemSelectListener(position -> mBinding.vpCharmRankings.setCurrentItem(position));
commonNavigator.setAdapter(indicator);
mBinding.viewIndicator.setNavigator(commonNavigator);
ViewPagerHelper.bind(mBinding.viewIndicator, mBinding.vpCharmRankings);
}
}

View File

@@ -1,61 +0,0 @@
package com.mango.moshen.avroom.fragment;
import androidx.fragment.app.Fragment;
import androidx.viewpager.widget.ViewPager;
import com.mango.moshen.R;
import com.mango.moshen.avroom.adapter.RoomContributeListAdapter;
import com.mango.moshen.avroom.widget.RankNavigatorAdapter;
import com.mango.moshen.base.BaseMvpFragment;
import com.mango.moshen.ui.widget.magicindicator.MagicIndicator;
import com.mango.moshen.ui.widget.magicindicator.ViewPagerHelper;
import com.mango.moshen.ui.widget.magicindicator.buildins.commonnavigator.CommonNavigator;
import com.mango.core.manager.AvRoomDataManager;
import com.mango.core.room.bean.RoomContributeDataInfo;
import com.mango.xchat_android_library.base.IMvpBaseView;
import java.util.ArrayList;
/**
* Created by MadisonRong on 25/04/2018.
*/
public class RoomContributeListFragment extends BaseMvpFragment implements IMvpBaseView {
private ViewPager viewPager;
private MagicIndicator viewIndicator;
@Override
public void onFindViews() {
viewIndicator = mView.findViewById(R.id.view_indicator);
viewPager = mView.findViewById(R.id.vp_contribute_rankings);
}
@Override
public void onSetListener() {
}
@Override
public void initiate() {
ArrayList<Fragment> fragments = new ArrayList<>(2);
fragments.add(RoomContributeFragment.newInstance(RoomContributeDataInfo.TYPE_ROOM_DAY_RANKING));
fragments.add(RoomContributeFragment.newInstance(RoomContributeDataInfo.TYPE_ROOM_WEEK_RANKING));
if (AvRoomDataManager.get().isDatingMode()) {
fragments.add(RoomContributeFragment.newInstance(RoomContributeDataInfo.TYPE_ROOM_MONTH_RANKING));
}
viewPager.setAdapter(new RoomContributeListAdapter(getChildFragmentManager(), fragments));
CommonNavigator commonNavigator = new CommonNavigator(getActivity());
commonNavigator.setAdjustMode(false);
RankNavigatorAdapter indicator = new RankNavigatorAdapter(AvRoomDataManager.get().isDatingMode());
indicator.setOnItemSelectListener(position -> viewPager.setCurrentItem(position));
commonNavigator.setAdapter(indicator);
viewIndicator.setNavigator(commonNavigator);
ViewPagerHelper.bind(viewIndicator, viewPager);
}
@Override
public int getRootLayoutId() {
return R.layout.fragment_room_contribute;
}
}

View File

@@ -1,30 +0,0 @@
package com.mango.moshen.avroom.helper;
import androidx.lifecycle.MutableLiveData;
import androidx.lifecycle.ViewModel;
import lombok.Getter;
/**
* 房间数据的一些管理
* Created by lvzebiao on 2018/11/16.
*/
public class RoomViewModel extends ViewModel {
@Getter
private final MutableLiveData<Boolean> isKtvModel = new MutableLiveData<>();
@Getter
private final MutableLiveData<Boolean> isGameModel = new MutableLiveData<>();
public void init() {
isKtvModel.setValue(false);
isGameModel.postValue(false);
}
@Override
protected void onCleared() {
super.onCleared();
}
}

View File

@@ -1,42 +0,0 @@
package com.mango.moshen.avroom.newuserchargegift
import android.content.Context
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import com.mango.moshen.R
import com.mango.moshen.databinding.DialogNewUserChargePrizeBinding
import com.mango.moshen.treasure_box.widget.dialog.BaseBindingDialog
import com.mango.moshen.ui.utils.RVDelegate
import com.mango.core.pay.bean.FirstChargeReward
import com.mango.core.statistic.StatisticManager
import com.mango.core.statistic.protocol.StatisticsProtocol
import com.mango.xchat_android_library.annatation.ActLayoutRes
@ActLayoutRes(R.layout.dialog_new_user_charge_prize)
class NewUserChargePrizeDialog(
context: Context,
val title: String?,
private val firstChargeRewardList: List<FirstChargeReward>?
) : BaseBindingDialog<DialogNewUserChargePrizeBinding>(context) {
private lateinit var rvDelegate: RVDelegate<FirstChargeReward>
override fun init() {
rvDelegate = RVDelegate.Builder<FirstChargeReward>()
.setAdapter(RewardAdapter())
.setLayoutManager(LinearLayoutManager(context, RecyclerView.HORIZONTAL, false))
.setRecyclerView(binding.recyclerView)
.build()
binding.ivKnow.setOnClickListener {
closeDialog()
}
rvDelegate.setNewData(firstChargeRewardList)
StatisticManager.Instance()
.onEvent(
StatisticsProtocol.EVENT_NUGIFT_POP_FINISH_CLICK,
"新人专享礼物弹窗充值完成后弹窗",
mapOf("charge_money" to title)
)
}
}

View File

@@ -1,21 +0,0 @@
package com.mango.moshen.avroom.newuserchargegift
import android.widget.ImageView
import com.chad.library.adapter.base.BaseQuickAdapter
import com.chad.library.adapter.base.BaseViewHolder
import com.mango.moshen.R
import com.mango.moshen.ui.utils.load
import com.mango.core.pay.bean.FirstChargeReward
import com.mango.core.utils.TextUtils
class RewardAdapter :
BaseQuickAdapter<FirstChargeReward, BaseViewHolder>(R.layout.item_new_user_charge_reward) {
override fun convert(helper: BaseViewHolder, item: FirstChargeReward) {
helper.getView<ImageView>(R.id.iv_pic).load(item.showPir)
helper.setText(R.id.tv_name, item.showText)
.setText(R.id.tv_time, "(${item.showTime})")
.setGone(R.id.tv_time, !TextUtils.isEmptyText(item.showTime))
}
}

View File

@@ -1,4 +0,0 @@
package com.mango.moshen.avroom.redpackage;
public class RedPackageEvent {
}

View File

@@ -1,28 +0,0 @@
package com.mango.moshen.avroom.singleroompk
import com.mango.core.room.anotherroompk.SingleRoomPKModel
import com.mango.core.utils.toast
import com.mango.moshen.base.BaseDialog
import com.mango.moshen.databinding.DialogSingleRoomPkRuleBinding
class SingleRoomPkRuleDialog : BaseDialog<DialogSingleRoomPkRuleBinding>() {
companion object {
@JvmStatic
fun newInstance(): SingleRoomPkRuleDialog {
return SingleRoomPkRuleDialog()
}
}
override fun init() {
binding.ivClose.setOnClickListener { dismissAllowingStateLoss() }
SingleRoomPKModel.getSingleRoomPkRule()
.compose(bindToLifecycle())
.doOnSuccess {
binding.tvContent.text = it.replace("\\n", "\n").replace("\\r", "\r")
}
.doOnError { it?.message.toast() }
.subscribe()
}
}

View File

@@ -1,11 +0,0 @@
package com.mango.moshen.avroom.view;
import com.mango.xchat_android_library.base.IMvpBaseView;
/**
* @author jack
* @Description
* @Date 2018/12/28
*/
public interface ICreatePKView extends IMvpBaseView {
}

View File

@@ -1,17 +0,0 @@
package com.mango.moshen.avroom.view;
import com.mango.core.home.bean.BannerInfo;
import java.util.List;
/**
* <p> 轰趴房View层 </p>
*
* @author jiahui
* @date 2017/12/8
*/
public interface IGameRoomView extends IBaseRoomView {
void onShowBanner(List<BannerInfo> dialogInfos);
}

View File

@@ -1,22 +0,0 @@
package com.mango.moshen.avroom.view;
import com.mango.core.room.bean.OnlineChatMember;
import com.mango.xchat_android_library.base.IMvpBaseView;
import java.util.List;
/**
* <p> </p>
*
* @author jiahui
* @date 2017/12/8
*/
public interface IHomePartyUserListView extends IMvpBaseView {
void onRequestChatMemberByPageSuccess(List<OnlineChatMember> memberList, int page);
void onRequestChatMemberByPageFail(String errorStr, int page);
void onMemberInRefresh();
}

View File

@@ -1,25 +0,0 @@
package com.mango.moshen.avroom.view;
import com.mango.core.home.bean.BannerInfo;
import com.mango.core.room.bean.RoomInfo;
import java.util.List;
/**
* <p> 轰趴房View层 </p>
*
* @author jiahui
* @date 2017/12/8
*/
public interface IHomePartyView extends IBaseRoomView {
//玩龙珠时换坑
void onDragonBarChangeMic(int micPosition, String uId, boolean isInviteUpMic, RoomInfo roomInfo);
/**
* 礼物值模式下换麦
*/
void onGiftValueChangeMic(int micPosition, String uId, boolean isInviteUpMic, RoomInfo roomInfo);
void onShowBanner(List<BannerInfo> bannerInfos);
}

View File

@@ -1,21 +0,0 @@
package com.mango.moshen.avroom.view;
import com.mango.core.room.queue.bean.RoomConsumeInfo;
import com.mango.xchat_android_library.base.IMvpBaseView;
import java.util.List;
/**
* <p> </p>
*
* @author jiahui
* @date 2017/12/24
*/
public interface ILightChatConsumeView extends IMvpBaseView {
void onGetRoomConsumeListSuccess(List<RoomConsumeInfo> roomConsumeInfos);
void onGetRoomConsumeListFail(String error);
}

View File

@@ -1,12 +0,0 @@
package com.mango.moshen.avroom.view;
import com.mango.xchat_android_library.base.IMvpBaseView;
/**
* @author jack
* @Description
* @Date 2018/12/29
*/
public interface IRecordForPKView extends IMvpBaseView {
}

View File

@@ -1,12 +0,0 @@
package com.mango.moshen.avroom.view;
import com.mango.core.room.bean.RoomRankMultiItem;
import com.mango.xchat_android_library.base.IMvpBaseView;
import java.util.List;
public interface IRoomCharmRankingListView extends IMvpBaseView {
void roomCharmListSuccess(List<RoomRankMultiItem> list);
void roomCharListFail(String message);
}

View File

@@ -1,16 +0,0 @@
package com.mango.moshen.avroom.view;
import com.mango.core.room.bean.RoomContributeDataInfo;
import com.mango.xchat_android_library.base.IMvpBaseView;
/**
* Created by MadisonRong on 25/04/2018.
*/
public interface IRoomContributeListView extends IMvpBaseView {
void getSingleRankingSuccess(RoomContributeDataInfo roomContributeDataInfo);
void getSingleRakingFail(int errorCode, String errorMsg);
}

View File

@@ -1,17 +0,0 @@
package com.mango.moshen.avroom.view;
import com.mango.core.home.bean.BannerInfo;
import java.util.List;
/**
* <p> 轰趴房View层 </p>
*
* @author jiahui
* @date 2017/12/8
*/
public interface ISingleRoomView extends IBaseRoomView {
void onShowBanner(List<BannerInfo> dialogInfos);
}

View File

@@ -1,119 +0,0 @@
package com.mango.moshen.avroom.widget;
import com.mango.moshen.R;
/**
* 从library拿到client
* Created by lvzebiao on 2018/11/9.
*/
public class ViewItem {
public static final int BUTTON_TYPE_NORMAL = 0;
public static final int BUTTON_TYPE_CANCEL = 1;
/**放置在资料卡片的底部位置的button*/
public static final int BUTTON_TYPE_USER_CAR_BOTTOM = 2;
/** 发送礼物 */
public static final int SEND_GIFT_ITEM = 0;
/** 锁坑 */
public static final int SEND_LOCK_MIC_ITEM = 1;
/** 踢下麦 */
public static final int SEND_KICKDOWN_MIC_ITEM = 2;
/** 踢出房间 */
public static final int SEND_KICKOUT_ROOM_ITEM = 3;
/** 查看个人信息 */
public static final int SEND_SHOW_USER_INCO_ITEM = 4;
/** 下麦 */
public static final int SEND_DOWN_MIC_ITEM = 5;
/** 释放麦 */
public static final int SEND_FREE_MIC_ITEM = 6;
/** 设置管理员 */
public static final int SEND_MARK_MANAGER_ITEM = 7;
/** 取消管理员 */
public static final int SEND_NOMARK_MANAGER_ITEM = 11;
/** 加入黑名单 */
public static final int SEND_MARK_BLACK_ITEM = 8;
/** 开麦 */
public static final int SEND_OPEN_MUTE_ITEM = 9;
/**
* 装扮
*/
public static final int SEND_DECORATION_ITEM = 10;
/** 抱上麦 */
public static final int SEND_INVITE_MIC_ITEM = 12;
/** 发起竞拍 */
public static final int START_AUCTION = 13;
/**关注or取消*/
public static final int ATTENT_ITEM = 15;
/**房间外送礼物*/
public final static int SEND_GIFT_OUT_ROOM = 16;
/**房间内送礼物*/
public final static int SEND_MAGIC_OUT_ROOM = 17;
/**是否是关注按钮*/
public boolean isAttent = false;
/**ture则的话则显示在个人资料卡片底部*/
public boolean isBottom = false;
/**
* 找到Ta
*/
public boolean isFindTa = false;
/**
* @Ta
*/
public boolean isAt = false;
public String mText;
public int resourceID;
public int imgRes;
public OnClickListener mClickListener;
public int mButtonType;
public int mTheme = -1;
public boolean noDissmis;
public ViewItem(String text, int imgRes, OnClickListener l) {
this(text, imgRes,BUTTON_TYPE_NORMAL, l);
}
public ViewItem(String text, int imgRes, boolean noDissmis, OnClickListener l) {
this(text, imgRes,BUTTON_TYPE_NORMAL, l);
this.noDissmis = noDissmis;
}
public ViewItem(String text, int imgRes, int buttonType, OnClickListener l) {
mText = text;
mClickListener = l;
mButtonType = buttonType;
this.imgRes = imgRes;
resourceID = R.layout.dialog_user_card_item;
}
public ViewItem(String text, int imgRes, int buttonType, int theme, OnClickListener l) {
mText = text;
this.imgRes = imgRes;
mClickListener = l;
mButtonType = buttonType;
resourceID = R.layout.dialog_user_card_item;
mTheme = theme;
}
/**用户卡片的底部item*/
public ViewItem(String text, OnClickListener l) {
mText = text;
mClickListener = l;
mButtonType = BUTTON_TYPE_USER_CAR_BOTTOM;
resourceID = R.layout.item_room_user_dialog_bottom_button;
}
public void setText(String text) {
this.mText = text;
}
public void setClickListener(OnClickListener mClickListener) {
this.mClickListener = mClickListener;
}
public interface OnClickListener {
void onClick();
}
}

View File

@@ -1,18 +0,0 @@
package com.mango.moshen.avroom.wishlist
import android.widget.ImageView
import com.chad.library.adapter.base.BaseQuickAdapter
import com.chad.library.adapter.base.BaseViewHolder
import com.mango.core.gift.bean.SimpleUserInfo
import com.mango.core.room.wishlist.WishItemInfo
import com.mango.moshen.R
import com.mango.moshen.ui.utils.load
class WishListPanelUserAdapter :
BaseQuickAdapter<SimpleUserInfo, BaseViewHolder>(R.layout.item_wish_list_panel_user) {
override fun convert(helper: BaseViewHolder, item: SimpleUserInfo) {
helper.getView<ImageView>(R.id.iv_avatar).load(item.avatar)
}
}

View File

@@ -1,24 +0,0 @@
package com.mango.moshen.avroom.wishlist.history
import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import com.mango.core.bean.response.ListResult
import com.mango.core.room.wishlist.WishHistoryInfo
import com.mango.core.room.wishlist.WishListModel
import com.mango.moshen.base.BaseViewModel
class WishListHistoryViewModel : BaseViewModel() {
private val _wishHistoryLiveData = MutableLiveData<ListResult<WishHistoryInfo>>()
val wishHistoryLiveData: LiveData<ListResult<WishHistoryInfo>> = _wishHistoryLiveData
fun getWisHistoryList() {
safeLaunch(true, onError = {
_wishHistoryLiveData.value = ListResult.failed(1)
}, block = {
val result = WishListModel.getWisHistoryList()
_wishHistoryLiveData.value = ListResult.success(result, 1)
})
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -1,12 +0,0 @@
package com.mango.moshen.base;
import com.mango.xchat_android_library.base.IMvpBaseView;
import com.mango.xchat_android_library.base.factory.AbstractMvpPresenter;
/**
* @author alvin hwang
*/
public abstract class BaseMvpActivity<V extends IMvpBaseView, P extends AbstractMvpPresenter<V>> extends AbstractMvpActivity<V, P>
implements IDataStatus, DialogManagerInterface {
}

View File

@@ -1,15 +0,0 @@
package com.mango.moshen.base;
import android.view.KeyEvent;
import androidx.fragment.app.FragmentManager;
import com.mango.xchat_android_library.base.IMvpBaseView;
import com.mango.xchat_android_library.base.factory.AbstractMvpPresenter;
/**
* @author alvin hwang
*/
public abstract class BaseMvpFragment<V extends IMvpBaseView, P extends AbstractMvpPresenter<V>> extends AbstractMvpFragment<V, P>
implements KeyEvent.Callback, IDataStatus, FragmentManager.OnBackStackChangedListener, IAcitivityBase {
}

View File

@@ -1,27 +0,0 @@
package com.mango.moshen.base;
import android.os.Bundle;
import androidx.annotation.Nullable;
import com.mango.xchat_android_library.base.IMvpBaseView;
import com.mango.xchat_android_library.base.factory.AbstractMvpPresenter;
/**
* @author jack
* @Description
* @Date 2018/5/9
*/
public class BaseMvpPresenter<V extends IMvpBaseView> extends AbstractMvpPresenter<V> {
@Override
public void onCreatePresenter(@Nullable Bundle saveState) {
super.onCreatePresenter(saveState);
}
@Override
public void onDestroyPresenter() {
super.onDestroyPresenter();
}
}

View File

@@ -1,9 +0,0 @@
package com.mango.moshen.base;
/**
* Created by huangmeng1 on 2018/5/7.
*/
public class BaseVM {
}

View File

@@ -1,10 +0,0 @@
package com.mango.moshen.base;
import com.mango.moshen.common.widget.dialog.DialogManager;
/**
* 返回通用的dialogmanager
*/
public interface DialogManagerInterface {
DialogManager getDialogManager();
}

View File

@@ -1,7 +0,0 @@
package com.mango.moshen.base;
/**
* Created by zhouxiangfeng on 17/3/5.
*/
public interface IBase {
}

View File

@@ -1,507 +0,0 @@
/**
* Copyright 2013 Joan Zapata
* <p>
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* <p>
* http://www.apache.org/licenses/LICENSE-2.0
* <p>
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.mango.moshen.base.list;
import android.graphics.Bitmap;
import android.graphics.Paint;
import android.graphics.Typeface;
import android.graphics.drawable.Drawable;
import android.os.Build;
import androidx.annotation.ColorInt;
import androidx.annotation.DrawableRes;
import androidx.annotation.IdRes;
import androidx.annotation.StringRes;
import androidx.recyclerview.widget.RecyclerView;
import android.text.util.Linkify;
import android.util.SparseArray;
import android.view.View;
import android.view.animation.AlphaAnimation;
import android.widget.Adapter;
import android.widget.AdapterView;
import android.widget.Checkable;
import android.widget.CompoundButton;
import android.widget.ImageView;
import android.widget.ProgressBar;
import android.widget.RatingBar;
import android.widget.TextView;
import java.util.HashSet;
import java.util.LinkedHashSet;
import java.util.Set;
/**
* https://github.com/CymChad/BaseRecyclerViewAdapterHelper
*/
public class BaseViewHolder extends RecyclerView.ViewHolder {
/**
* Views indexed with their IDs
*/
private final SparseArray<View> views;
public Set<Integer> getNestViews() {
return nestViews;
}
private final HashSet<Integer> nestViews;
private final LinkedHashSet<Integer> childClickViewIds;
private final LinkedHashSet<Integer> itemChildLongClickViewIds;
private CommonAdapter adapter;
/**
* use itemView instead
*/
@Deprecated
public View convertView;
/**
* Package private field to retain the associated user object and detect a change
*/
Object associatedObject;
public BaseViewHolder(final View view) {
super(view);
this.views = new SparseArray<>();
this.childClickViewIds = new LinkedHashSet<>();
this.itemChildLongClickViewIds = new LinkedHashSet<>();
this.nestViews = new HashSet<>();
convertView = view;
}
public HashSet<Integer> getItemChildLongClickViewIds() {
return itemChildLongClickViewIds;
}
public HashSet<Integer> getChildClickViewIds() {
return childClickViewIds;
}
/**
* use itemView instead
*
* @return the ViewHolder root view
*/
@Deprecated
public View getConvertView() {
return convertView;
}
/**
* Will set the text of a TextView.
*
* @param viewId The view id.
* @param value The text to put in the text view.
* @return The BaseViewHolder for chaining.
*/
public BaseViewHolder setText(@IdRes int viewId, CharSequence value) {
TextView view = getView(viewId);
view.setText(value);
return this;
}
public BaseViewHolder setText(@IdRes int viewId, @StringRes int strId) {
TextView view = getView(viewId);
view.setText(strId);
return this;
}
/**
* Will set the image of an ImageView from a resource id.
*
* @param viewId The view id.
* @param imageResId The image resource id.
* @return The BaseViewHolder for chaining.
*/
public BaseViewHolder setImageResource(@IdRes int viewId, @DrawableRes int imageResId) {
ImageView view = getView(viewId);
view.setImageResource(imageResId);
return this;
}
/**
* Will set background color of a view.
*
* @param viewId The view id.
* @param color A color, not a resource id.
* @return The BaseViewHolder for chaining.
*/
public BaseViewHolder setBackgroundColor(@IdRes int viewId, @ColorInt int color) {
View view = getView(viewId);
view.setBackgroundColor(color);
return this;
}
/**
* Will set background of a view.
*
* @param viewId The view id.
* @param backgroundRes A resource to use as a background.
* @return The BaseViewHolder for chaining.
*/
public BaseViewHolder setBackgroundRes(@IdRes int viewId, @DrawableRes int backgroundRes) {
View view = getView(viewId);
view.setBackgroundResource(backgroundRes);
return this;
}
/**
* Will set text color of a TextView.
*
* @param viewId The view id.
* @param textColor The text color (not a resource id).
* @return The BaseViewHolder for chaining.
*/
public BaseViewHolder setTextColor(@IdRes int viewId, @ColorInt int textColor) {
TextView view = getView(viewId);
view.setTextColor(textColor);
return this;
}
/**
* Will set the image of an ImageView from a drawable.
*
* @param viewId The view id.
* @param drawable The image drawable.
* @return The BaseViewHolder for chaining.
*/
public BaseViewHolder setImageDrawable(@IdRes int viewId, Drawable drawable) {
ImageView view = getView(viewId);
view.setImageDrawable(drawable);
return this;
}
/**
* Add an action to set the image of an image view. Can be called multiple times.
*/
public BaseViewHolder setImageBitmap(@IdRes int viewId, Bitmap bitmap) {
ImageView view = getView(viewId);
view.setImageBitmap(bitmap);
return this;
}
/**
* Add an action to set the alpha of a view. Can be called multiple times.
* Alpha between 0-1.
*/
public BaseViewHolder setAlpha(@IdRes int viewId, float value) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
getView(viewId).setAlpha(value);
} else {
// Pre-honeycomb hack to set Alpha value
AlphaAnimation alpha = new AlphaAnimation(value, value);
alpha.setDuration(0);
alpha.setFillAfter(true);
getView(viewId).startAnimation(alpha);
}
return this;
}
/**
* Set a view visibility to VISIBLE (true) or GONE (false).
*
* @param viewId The view id.
* @param visible True for VISIBLE, false for GONE.
* @return The BaseViewHolder for chaining.
*/
public BaseViewHolder setGone(@IdRes int viewId, boolean visible) {
View view = getView(viewId);
view.setVisibility(visible ? View.VISIBLE : View.GONE);
return this;
}
/**
* Set a view visibility to VISIBLE (true) or INVISIBLE (false).
*
* @param viewId The view id.
* @param visible True for VISIBLE, false for INVISIBLE.
* @return The BaseViewHolder for chaining.
*/
public BaseViewHolder setVisible(@IdRes int viewId, boolean visible) {
View view = getView(viewId);
view.setVisibility(visible ? View.VISIBLE : View.INVISIBLE);
return this;
}
/**
* Add links into a TextView.
*
* @param viewId The id of the TextView to linkify.
* @return The BaseViewHolder for chaining.
*/
public BaseViewHolder linkify(@IdRes int viewId) {
TextView view = getView(viewId);
Linkify.addLinks(view, Linkify.ALL);
return this;
}
/**
* Apply the typeface to the given viewId, and enable subpixel rendering.
*/
public BaseViewHolder setTypeface(@IdRes int viewId, Typeface typeface) {
TextView view = getView(viewId);
view.setTypeface(typeface);
view.setPaintFlags(view.getPaintFlags() | Paint.SUBPIXEL_TEXT_FLAG);
return this;
}
/**
* Apply the typeface to all the given viewIds, and enable subpixel rendering.
*/
public BaseViewHolder setTypeface(Typeface typeface, int... viewIds) {
for (int viewId : viewIds) {
TextView view = getView(viewId);
view.setTypeface(typeface);
view.setPaintFlags(view.getPaintFlags() | Paint.SUBPIXEL_TEXT_FLAG);
}
return this;
}
/**
* Sets the progress of a ProgressBar.
*
* @param viewId The view id.
* @param progress The progress.
* @return The BaseViewHolder for chaining.
*/
public BaseViewHolder setProgress(@IdRes int viewId, int progress) {
ProgressBar view = getView(viewId);
view.setProgress(progress);
return this;
}
/**
* Sets the progress and max of a ProgressBar.
*
* @param viewId The view id.
* @param progress The progress.
* @param max The max value of a ProgressBar.
* @return The BaseViewHolder for chaining.
*/
public BaseViewHolder setProgress(@IdRes int viewId, int progress, int max) {
ProgressBar view = getView(viewId);
view.setMax(max);
view.setProgress(progress);
return this;
}
/**
* Sets the range of a ProgressBar to 0...max.
*
* @param viewId The view id.
* @param max The max value of a ProgressBar.
* @return The BaseViewHolder for chaining.
*/
public BaseViewHolder setMax(@IdRes int viewId, int max) {
ProgressBar view = getView(viewId);
view.setMax(max);
return this;
}
/**
* Sets the rating (the number of stars filled) of a RatingBar.
*
* @param viewId The view id.
* @param rating The rating.
* @return The BaseViewHolder for chaining.
*/
public BaseViewHolder setRating(@IdRes int viewId, float rating) {
RatingBar view = getView(viewId);
view.setRating(rating);
return this;
}
/**
* Sets the rating (the number of stars filled) and max of a RatingBar.
*
* @param viewId The view id.
* @param rating The rating.
* @param max The range of the RatingBar to 0...max.
* @return The BaseViewHolder for chaining.
*/
public BaseViewHolder setRating(@IdRes int viewId, float rating, int max) {
RatingBar view = getView(viewId);
view.setMax(max);
view.setRating(rating);
return this;
}
/**
* Sets the on click listener of the view.
*
* @param viewId The view id.
* @param listener The on click listener;
* @return The BaseViewHolder for chaining.
*/
@Deprecated
public BaseViewHolder setOnClickListener(@IdRes int viewId, View.OnClickListener listener) {
View view = getView(viewId);
view.setOnClickListener(listener);
return this;
}
/**
* Sets the on touch listener of the view.
*
* @param viewId The view id.
* @param listener The on touch listener;
* @return The BaseViewHolder for chaining.
*/
@Deprecated
public BaseViewHolder setOnTouchListener(@IdRes int viewId, View.OnTouchListener listener) {
View view = getView(viewId);
view.setOnTouchListener(listener);
return this;
}
/**
* Sets the listview or gridview's item long click listener of the view
*
* @param viewId The view id.
* @param listener The item long click listener;
* @return The BaseViewHolder for chaining.
*/
public BaseViewHolder setOnItemLongClickListener(@IdRes int viewId, AdapterView.OnItemLongClickListener listener) {
AdapterView view = getView(viewId);
view.setOnItemLongClickListener(listener);
return this;
}
/**
* Sets the listview or gridview's item selected click listener of the view
*
* @param viewId The view id.
* @param listener The item selected click listener;
* @return The BaseViewHolder for chaining.
*/
public BaseViewHolder setOnItemSelectedClickListener(@IdRes int viewId, AdapterView.OnItemSelectedListener listener) {
AdapterView view = getView(viewId);
view.setOnItemSelectedListener(listener);
return this;
}
/**
* Sets the on checked change listener of the view.
*
* @param viewId The view id.
* @param listener The checked change listener of compound button.
* @return The BaseViewHolder for chaining.
*/
public BaseViewHolder setOnCheckedChangeListener(@IdRes int viewId, CompoundButton.OnCheckedChangeListener listener) {
CompoundButton view = getView(viewId);
view.setOnCheckedChangeListener(listener);
return this;
}
/**
* Sets the tag of the view.
*
* @param viewId The view id.
* @param tag The tag;
* @return The BaseViewHolder for chaining.
*/
public BaseViewHolder setTag(@IdRes int viewId, Object tag) {
View view = getView(viewId);
view.setTag(tag);
return this;
}
/**
* Sets the tag of the view.
*
* @param viewId The view id.
* @param key The key of tag;
* @param tag The tag;
* @return The BaseViewHolder for chaining.
*/
public BaseViewHolder setTag(@IdRes int viewId, int key, Object tag) {
View view = getView(viewId);
view.setTag(key, tag);
return this;
}
/**
* Sets the checked status of a checkable.
*
* @param viewId The view id.
* @param checked The checked status;
* @return The BaseViewHolder for chaining.
*/
public BaseViewHolder setChecked(@IdRes int viewId, boolean checked) {
View view = getView(viewId);
// View unable cast to Checkable
if (view instanceof Checkable) {
((Checkable) view).setChecked(checked);
}
return this;
}
/**
* Sets the adapter of a adapter view.
*
* @param viewId The view id.
* @param adapter The adapter;
* @return The BaseViewHolder for chaining.
*/
@SuppressWarnings("unchecked")
public BaseViewHolder setAdapter(@IdRes int viewId, Adapter adapter) {
AdapterView view = getView(viewId);
view.setAdapter(adapter);
return this;
}
/**
* Sets the adapter of a adapter view.
*
* @param adapter The adapter;
* @return The BaseViewHolder for chaining.
*/
protected BaseViewHolder setAdapter(CommonAdapter adapter) {
this.adapter = adapter;
return this;
}
@SuppressWarnings("unchecked")
public <T extends View> T getView(@IdRes int viewId) {
View view = views.get(viewId);
if (view == null) {
view = itemView.findViewById(viewId);
views.put(viewId, view);
}
return (T) view;
}
/**
* Retrieves the last converted object on this view.
*/
public Object getAssociatedObject() {
return associatedObject;
}
/**
* Should be called during convert
*/
public void setAssociatedObject(Object associatedObject) {
this.associatedObject = associatedObject;
}
}

View File

@@ -1,9 +0,0 @@
package com.mango.moshen.base.list;
/**
* Created by lvzebiao on 2018/12/18.
*/
public interface OnItemClickListener<T, K extends BaseViewHolder> {
void onItemClick(K holder, T item, int position);
}

View File

@@ -1,7 +0,0 @@
package com.mango.moshen.bills.presenter;
import com.mango.moshen.base.BaseMvpPresenter;
import com.mango.moshen.bills.view.IBillGiftIncomeGroupView;
public class BillGiftIncomeGroupPresenter extends BaseMvpPresenter<IBillGiftIncomeGroupView> {
}

View File

@@ -1,6 +0,0 @@
package com.mango.moshen.bills.view;
import com.mango.xchat_android_library.base.IMvpBaseView;
public interface IBillGiftIncomeGroupView extends IMvpBaseView {
}

View File

@@ -1,8 +0,0 @@
package com.mango.moshen.bills.view;
import com.mango.core.bills.bean.IncomeListInfo;
public interface IGiftIncomeView extends ISmoothToTopView {
void onGetDataError(String message);
void onGetIncomeBills(IncomeListInfo data);
}

View File

@@ -1,10 +0,0 @@
package com.mango.moshen.bills.view;
import com.mango.core.bills.bean.ExpendListInfo;
import com.mango.xchat_android_library.base.IMvpBaseView;
public interface IGiftOutputView extends IMvpBaseView {
void smoothScrollToTop();
void onGetDataError(String message);
void onGetExpendBills(ExpendListInfo data);
}

View File

@@ -1,8 +0,0 @@
package com.mango.moshen.bills.view;
import com.mango.core.bills.bean.RadishGiftListInfo;
public interface IRadishGiftView extends ISmoothToTopView {
void getRadishRecordSuccess(RadishGiftListInfo list);
void getRadishRecordFail(String message);
}

View File

@@ -1,7 +0,0 @@
package com.mango.moshen.bills.view;
import com.mango.xchat_android_library.base.IMvpBaseView;
public interface ISmoothToTopView extends IMvpBaseView {
void smoothScrollToTop();
}

View File

@@ -1,33 +0,0 @@
package com.mango.moshen.common;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import com.mango.moshen.R;
import com.mango.xchat_android_library.utils.NetworkUtils;
public class EmptyViewHelper {
public static View createEmptyView(Context context, String text) {
if (!NetworkUtils.isNetworkAvailable(context)) text = "网络异常,请检查网络再试~";
View view = LayoutInflater.from(context).inflate(R.layout.layout_ktv_empty, null);
view.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
((TextView) view.findViewById(R.id.tv_hint)).setText(text);
return view;
}
public static View createDarkEmptyView(Context context, String text) {
if (!NetworkUtils.isNetworkAvailable(context)) text = "网络异常,请检查网络再试~";
View view = LayoutInflater.from(context).inflate(R.layout.layout_ktv_empty, null);
view.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
((TextView) view.findViewById(R.id.tv_hint)).setText(text);
((ImageView) view.findViewById(R.id.iv_status)).setImageResource(R.drawable.empty_content_dark);
return view;
}
}

View File

@@ -1,299 +0,0 @@
/*
* Copyright Google Inc. All Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.mango.moshen.common.permission;
import android.annotation.TargetApi;
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.net.Uri;
import android.os.Build;
import android.provider.Settings;
import androidx.annotation.Nullable;
import androidx.annotation.StringRes;
import androidx.core.app.ActivityCompat;
import androidx.fragment.app.Fragment;
import androidx.core.content.ContextCompat;
import androidx.appcompat.app.AlertDialog;
import com.mango.moshen.common.widget.dialog.BaseAlertDialogBuilder;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
/**
* Android M (API >= 23).
*/
public class EasyPermissions {
public static final int SETTINGS_REQ_CODE = 16061;
private static final String TAG = "EasyPermissions";
public interface PermissionCallbacks extends
ActivityCompat.OnRequestPermissionsResultCallback {
void onPermissionsGranted(int requestCode, List<String> perms);
void onPermissionsDenied(int requestCode, List<String> perms);
void onPermissionsAllGranted();
}
/**
*/
public static boolean hasPermissions(Context context, String... perms) {
// Always return true for SDK < M, let the system deal with the permissions
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
return true;
}
for (String perm : perms) {
boolean hasPerm = (ContextCompat.checkSelfPermission(context, perm) ==
PackageManager.PERMISSION_GRANTED);
if (!hasPerm) {
return false;
}
}
return true;
}
/**
*/
public static void requestPermissions(final Object object, String rationale,
final int requestCode, final String... perms) {
requestPermissions(object, rationale,
android.R.string.ok,
android.R.string.cancel,
requestCode, perms);
}
/**
*/
public static void requestPermissions(final Object object, String rationale,
@StringRes int positiveButton,
@StringRes int negativeButton,
final int requestCode, final String... perms) {
checkCallingObjectSuitability(object);
boolean shouldShowRationale = false;
for (String perm : perms) {
shouldShowRationale =
shouldShowRationale || shouldShowRequestPermissionRationale(object, perm);
}
if (shouldShowRationale) {
Activity activity = getActivity(object);
if (null == activity) {
return;
}
AlertDialog dialog = new BaseAlertDialogBuilder(activity)
.setMessage(rationale)
.setPositiveButton(positiveButton, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
executePermissionsRequest(object, perms, requestCode);
}
})
.setNegativeButton(negativeButton, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// act as if the permissions were denied
if (object instanceof PermissionCallbacks) {
((PermissionCallbacks) object).onPermissionsDenied(requestCode, Arrays.asList(perms));
}
}
}).create();
dialog.show();
dialog.getButton(dialog.BUTTON_POSITIVE).setTextColor(Color.BLACK);
dialog.getButton(dialog.BUTTON_NEGATIVE).setTextColor(Color.BLACK);
} else {
executePermissionsRequest(object, perms, requestCode);
}
}
/**
*
*/
public static void onRequestPermissionsResult(int requestCode, String[] permissions,
int[] grantResults, Object object) {
checkCallingObjectSuitability(object);
// Make a collection of granted and denied permissions from the request.
ArrayList<String> granted = new ArrayList<>();
ArrayList<String> denied = new ArrayList<>();
for (int i = 0; i < permissions.length; i++) {
String perm = permissions[i];
if (grantResults[i] == PackageManager.PERMISSION_GRANTED) {
granted.add(perm);
} else {
denied.add(perm);
}
}
// Report granted permissions, if any.
if (!granted.isEmpty()) {
// Notify callbacks
if (object instanceof PermissionCallbacks) {
((PermissionCallbacks) object).onPermissionsGranted(requestCode, granted);
}
}
// Report denied permissions, if any.
if (!denied.isEmpty()) {
if (object instanceof PermissionCallbacks) {
((PermissionCallbacks) object).onPermissionsDenied(requestCode, denied);
}
}
// If 100% successful, call annotated methods
if (!granted.isEmpty() && denied.isEmpty()) {
if (object instanceof PermissionCallbacks)
((PermissionCallbacks) object).onPermissionsAllGranted();
}
}
public static boolean checkDeniedPermissionsNeverAskAgain(final Object object,
String rationale,
@StringRes int positiveButton,
@StringRes int negativeButton,
List<String> deniedPerms) {
return checkDeniedPermissionsNeverAskAgain(object, rationale,
positiveButton, negativeButton, null, deniedPerms);
}
public static boolean checkDeniedPermissionsNeverAskAgain(final Object object,
String rationale,
@StringRes int positiveButton,
@StringRes int negativeButton,
@Nullable DialogInterface.OnClickListener negativeButtonOnClickListener,
List<String> deniedPerms) {
boolean shouldShowRationale;
for (String perm : deniedPerms) {
shouldShowRationale = shouldShowRequestPermissionRationale(object, perm);
if (!shouldShowRationale) {
final Activity activity = getActivity(object);
if (null == activity) {
return true;
}
AlertDialog dialog = new BaseAlertDialogBuilder(activity)
.setMessage(rationale)
.setPositiveButton(positiveButton, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
Uri uri = Uri.fromParts("package", activity.getPackageName(), null);
intent.setData(uri);
startAppSettingsScreen(object, intent);
}
})
.setNegativeButton(negativeButton, negativeButtonOnClickListener)
.create();
dialog.show();
return true;
}
}
return false;
}
@TargetApi(23)
private static boolean shouldShowRequestPermissionRationale(Object object, String perm) {
if (object instanceof Activity) {
return ActivityCompat.shouldShowRequestPermissionRationale((Activity) object, perm);
} else if (object instanceof Fragment) {
return ((Fragment) object).shouldShowRequestPermissionRationale(perm);
} else if (object instanceof android.app.Fragment) {
return ((android.app.Fragment) object).shouldShowRequestPermissionRationale(perm);
} else {
return false;
}
}
@TargetApi(23)
private static void executePermissionsRequest(Object object, String[] perms, int requestCode) {
checkCallingObjectSuitability(object);
if (object instanceof Activity) {
ActivityCompat.requestPermissions((Activity) object, perms, requestCode);
} else if (object instanceof Fragment) {
((Fragment) object).requestPermissions(perms, requestCode);
} else if (object instanceof android.app.Fragment) {
((android.app.Fragment) object).requestPermissions(perms, requestCode);
}
}
@TargetApi(11)
private static Activity getActivity(Object object) {
if (object instanceof Activity) {
return ((Activity) object);
} else if (object instanceof Fragment) {
return ((Fragment) object).getActivity();
} else if (object instanceof android.app.Fragment) {
return ((android.app.Fragment) object).getActivity();
} else {
return null;
}
}
@TargetApi(11)
private static void startAppSettingsScreen(Object object,
Intent intent) {
if (object instanceof Activity) {
((Activity) object).startActivityForResult(intent, SETTINGS_REQ_CODE);
} else if (object instanceof Fragment) {
((Fragment) object).startActivityForResult(intent, SETTINGS_REQ_CODE);
} else if (object instanceof android.app.Fragment) {
((android.app.Fragment) object).startActivityForResult(intent, SETTINGS_REQ_CODE);
}
}
private static void checkCallingObjectSuitability(Object object) {
// Make sure Object is an Activity or Fragment
boolean isActivity = object instanceof Activity;
boolean isSupportFragment = object instanceof Fragment;
boolean isAppFragment = object instanceof android.app.Fragment;
boolean isMinSdkM = Build.VERSION.SDK_INT >= Build.VERSION_CODES.M;
if (!(isSupportFragment || isActivity || (isAppFragment && isMinSdkM))) {
if (isAppFragment) {
throw new IllegalArgumentException(
"Target SDK needs to be greater than 23 if caller is android.app.Fragment");
} else {
throw new IllegalArgumentException("Caller must be an Activity or a Fragment.");
}
}
}
}

View File

@@ -1,59 +0,0 @@
package com.mango.moshen.common.widget;
import android.content.Context;
import android.util.AttributeSet;
import android.view.View;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.ImageView;
import com.mango.moshen.R;
/**
* 描述:Loading加载控件
*
* @author zhengsun
* @since 2014年8月28日 下午4:13:37
*/
public class LoadingImageView extends ImageView {
public LoadingImageView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public LoadingImageView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
public LoadingImageView(Context context) {
super(context);
}
@Override
protected void onAttachedToWindow() {
super.onAttachedToWindow();
Animation hyperspaceJumpAnimation = AnimationUtils.loadAnimation(getContext(),
R.anim.comm_loading);
startAnimation(hyperspaceJumpAnimation);
}
@Override
protected void onDetachedFromWindow() {
super.onDetachedFromWindow();
clearAnimation();
}
@Override
protected void onVisibilityChanged(View changedView, int visibility) {
super.onVisibilityChanged(changedView, visibility);
if (visibility == View.INVISIBLE || visibility == View.GONE) {
clearAnimation();
return;
}
Animation hyperspaceJumpAnimation = AnimationUtils.loadAnimation(getContext(),
R.anim.comm_loading);
startAnimation(hyperspaceJumpAnimation);
}
}

View File

@@ -1,29 +0,0 @@
package com.mango.moshen.common.widget;
import android.content.Context;
import android.util.AttributeSet;
import androidx.core.content.ContextCompat;
import com.mango.moshen.R;
import com.mango.xchat_android_library.widget.IOSSwitchView;
/**
* 开关控件涉及ui继承library的 {@link com.mango.xchat_android_library.widget.IOSSwitchView}
* 改写UI
* Created by lvzebiao on 2019/1/25.
*/
public class TutuSwitchView extends IOSSwitchView {
public TutuSwitchView(Context context, AttributeSet attrs) {
super(context, attrs);
setNoStrokeColor(true);
setmIsKeepRate(true);
}
@Override
public int getSelectedColor() {
return ContextCompat.getColor(getContext(), R.color.app_248cfe);
}
}

View File

@@ -1,56 +0,0 @@
package com.mango.moshen.common.widget.dialog;
import android.animation.ObjectAnimator;
import android.content.Context;
import androidx.appcompat.widget.AppCompatImageView;
import android.util.AttributeSet;
import android.view.animation.LinearInterpolator;
/**
* create by lvzebiao @2019/12/5
*/
public class LoadingImageView extends AppCompatImageView {
private ObjectAnimator loadingAnim;
public LoadingImageView(Context context) {
this(context, null);
}
public LoadingImageView(Context context, AttributeSet attrs) {
this(context, attrs, 0);
}
public LoadingImageView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
@Override
protected void onAttachedToWindow() {
super.onAttachedToWindow();
startAnim();
}
@Override
protected void onDetachedFromWindow() {
super.onDetachedFromWindow();
stopAnim();
}
public void startAnim() {
stopAnim();
loadingAnim = ObjectAnimator.ofFloat(this, "rotation", 0f, 360f);
loadingAnim.setDuration(1000);
loadingAnim.setRepeatCount(-1);
loadingAnim.setInterpolator(new LinearInterpolator());
loadingAnim.start();
}
private void stopAnim() {
if (loadingAnim != null) {
loadingAnim.cancel();
loadingAnim = null;
}
}
}

View File

@@ -1,24 +0,0 @@
package com.mango.moshen.decoration.view;
import com.mango.core.decoration.car.bean.CarInfo;
import com.mango.xchat_android_library.base.IMvpBaseView;
/**
* Created by yudi
* on 2018/3/1.
*/
public interface ICarView extends IMvpBaseView {
/**
* 点击购买按钮
*
* @param carInfo -
*/
void showDetail(CarInfo carInfo);
/**
* 车库需不需要更新
*/
boolean getCarGarageNeedUpdate();
}

View File

@@ -1,28 +0,0 @@
package com.mango.moshen.decoration.viewmodel;
import com.mango.moshen.base.BaseListViewModel;
import com.mango.core.bean.response.ServiceResult;
import com.mango.core.decoration.car.CarModel;
import com.mango.core.decoration.car.bean.CarInfo;
import java.util.List;
import io.reactivex.Single;
/**
* Created by huangmeng1 on 2018/5/9.
*/
public class CarShopVm extends BaseListViewModel<CarInfo> {
private String uid;
public void setUid(String uid) {
this.uid = uid;
}
@Override
public Single<ServiceResult<List<CarInfo>>> getSingle() {
return CarModel.get()
.getStoreCarsV2(Long.parseLong(uid), String.valueOf(page), String.valueOf(pageSize));
}
}

View File

@@ -1,44 +0,0 @@
package com.mango.moshen.decoration.viewmodel;
import com.mango.moshen.base.BaseListViewModel;
import com.mango.core.auth.AuthModel;
import com.mango.core.bean.response.ServiceResult;
import com.mango.core.decoration.headwear.bean.HeadWearInfo;
import com.mango.core.decoration.headwear.HeadwearModel;
import java.util.List;
import io.reactivex.Single;
/**
* Created by huangmeng1 on 2018/5/10.
*/
public class HeadWearVm extends BaseListViewModel<HeadWearInfo> {
private boolean isMyHeadWear;
private String uid;
public void setUid(String uid) {
this.uid = uid;
}
public void setMyHeadWear(boolean myHeadWear) {
isMyHeadWear = myHeadWear;
}
public HeadWearVm() {
}
@Override
public Single<ServiceResult<List<HeadWearInfo>>> getSingle() {
if (isMyHeadWear) {
return HeadwearModel.get().getHeadWearListV2(AuthModel.get().getCurrentUid());
}
return HeadwearModel.get().getStoreHeadWearListV2(Long.parseLong(uid), page + "", pageSize + "");
}
public Single<String> userHeadWear(String headWearId) {
return HeadwearModel.get().userMyHeadWear(headWearId);
}
}

View File

@@ -1,26 +0,0 @@
package com.mango.moshen.decoration.viewmodel;
import com.mango.moshen.base.BaseListViewModel;
import com.mango.core.bean.response.ServiceResult;
import com.mango.core.decoration.car.CarModel;
import com.mango.core.decoration.car.bean.CarInfo;
import java.util.List;
import io.reactivex.Single;
public class MyCarVm extends BaseListViewModel<CarInfo> {
private String uid;
public void setUid(String uid) {
this.uid = uid;
}
public MyCarVm() {
}
@Override
public Single<ServiceResult<List<CarInfo>>> getSingle() {
return CarModel.get().getMyCars();
}
}

View File

@@ -1,27 +0,0 @@
package com.mango.moshen.decoration.viewmodel;
import com.mango.moshen.base.BaseListViewModel;
import com.mango.core.bean.response.ServiceResult;
import com.mango.core.decoration.headwear.HeadwearModel;
import com.mango.core.decoration.headwear.bean.UserCardWearInfo;
import java.util.List;
import io.reactivex.Single;
/**
* Created by huangmeng1 on 2018/5/10.
*/
public class UserCardWearVm extends BaseListViewModel<UserCardWearInfo> {
@Override
public Single<ServiceResult<List<UserCardWearInfo>>> getSingle() {
return HeadwearModel.get().getUserCardWearList(page, pageSize);
}
public Single<String> userHeadWear(String wearId) {
return HeadwearModel.get().useUserCardWear(wearId);
}
}

View File

@@ -1,27 +0,0 @@
package com.mango.moshen.decoration.viewmodel;
import com.mango.moshen.base.BaseListViewModel;
import com.mango.core.bean.response.ServiceResult;
import com.mango.core.decoration.headwear.HeadwearModel;
import com.mango.core.decoration.headwear.bean.ChatBubbleInfo;
import java.util.List;
import io.reactivex.Single;
/**
* Created by huangmeng1 on 2018/5/10.
*/
public class UserChatBubbleVm extends BaseListViewModel<ChatBubbleInfo> {
@Override
public Single<ServiceResult<List<ChatBubbleInfo>>> getSingle() {
return HeadwearModel.get().getChatBubbleInfoList(page, pageSize);
}
public Single<String> userChatBubble(String wearId) {
return HeadwearModel.get().userChatBubble(wearId);
}
}

View File

@@ -1,4 +0,0 @@
package com.mango.moshen.event;
public class OpenRoomIntroEvent {
}

View File

@@ -1,22 +0,0 @@
package com.mango.moshen.family.contract.viewinterface;
import com.mango.core.user.bean.AttentionInfo;
import com.mango.xchat_android_library.base.IMvpBaseView;
import java.util.List;
/**
* @author jack
* @Description
* @Date 2018/7/4
*/
public interface IFamilyAttentionFragmentView extends IMvpBaseView{
void onRefreshData(List<AttentionInfo> attentionInfoList);
void onLoadMoreData(List<AttentionInfo> attentionInfoList);
void onRefreshDataFail(String error);
void onLoadMoreDataFail(String error);
}

View File

@@ -1,13 +0,0 @@
package com.mango.moshen.family.contract.viewinterface;
import com.mango.xchat_android_library.base.IMvpBaseView;
/**
* @author jack
* @Description
* @Date 2018/5/30
*/
public interface IFamilyCurrencySearchView extends IMvpBaseView {
}

View File

@@ -1,20 +0,0 @@
package com.mango.moshen.family.contract.viewinterface;
import com.mango.core.family.bean.VMBillItemInfo;
import com.mango.xchat_android_library.base.IMvpBaseView;
import java.util.List;
/**
* @author jack
* @Description
* @Date 2018/5/28
*/
public interface IFamilyCurrencyView extends IMvpBaseView {
void onLoadData(List<VMBillItemInfo> billItemInfos, int page, int dataSize);
void showErrorView(String message);
void refreshData();
}

View File

@@ -1,20 +0,0 @@
package com.mango.moshen.family.contract.viewinterface;
import com.mango.core.user.bean.FansListInfo;
import com.mango.xchat_android_library.base.IMvpBaseView;
/**
* @author jack
* @Description
* @Date 2018/7/4
*/
public interface IFamilyFansListFragmentView extends IMvpBaseView {
void onRefreshData(FansListInfo fansListInfo);
void onLoadMoreData(FansListInfo fansListInfo);
void onRefreshDataFail(String message);
void onLoadMoreDataFail(String message);
}

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