Compare commits

...

176 Commits

Author SHA1 Message Date
max
e43b3348bf 更新混淆配置 2024-04-25 16:12:49 +08:00
max
8f552d6663 混淆配置:这个引用会被误混淆(大概因为同名),改为直接引用路径 2024-04-25 15:49:09 +08:00
max
a7c528fff1 fix:修复文件上传失败问题(混淆导致) 2024-04-25 15:47:30 +08:00
max
afc1d5ef69 混淆异常处理 2024-04-24 23:20:09 +08:00
max
4a3c8cbdac 混淆配置:调整顺序(应该没区别) 2024-04-24 23:11:46 +08:00
max
1c9c084c3e 多语言适配:补充提交 2024-04-24 21:10:00 +08:00
max
39cd73b021 fix:修复多个多语言UI适配问题 2024-04-24 21:07:27 +08:00
max
f6e5017fbb fix:修复VIP中心的多语言适配问题 2024-04-24 20:39:57 +08:00
max
8562768556 fix:去掉不必要的字段(为null导致异常) 2024-04-24 19:53:46 +08:00
max
7d6f0c360b feat:更新混淆规则(新增一些目录移动配置) 2024-04-24 18:36:14 +08:00
max
e635f69b1f fix:欢乐砸蛋公屏文案调整(1.寻爱之旅换欢乐砸蛋2.欢乐砸蛋暂时不需要翻译) 2024-04-24 18:24:18 +08:00
max
66e9a1442e 补充全局飘屏屏蔽页面 2024-04-24 17:34:23 +08:00
max
30036526bd fix:全局飘屏增加屏蔽页面(升级弹窗) 2024-04-24 17:30:26 +08:00
max
de71c445c1 feat:调整收益记录页UI(文本颜色互换) 2024-04-24 17:27:25 +08:00
max
088d27c51c feat:调整状态图资源 2024-04-24 17:12:17 +08:00
max
42007aa075 feat:调整接口日志输出限制(debug环境输出) 2024-04-24 16:13:35 +08:00
max
bc441a8ac2 多语言适配:调整我的页面-VIP中心入口的图片 2024-04-24 15:09:54 +08:00
max
5b9ada0902 多语言适配:我的装扮页面适配 2024-04-24 11:56:22 +08:00
max
5f441aa8eb fix:去掉通用飘屏文本行数限制 2024-04-24 11:54:26 +08:00
max
9e8a95c1d6 feat:补充几个之前删除的SVGA文件 2024-04-23 20:12:00 +08:00
max
ac14be2c88 feat:调整通用飘屏-SVGA方案(自己做进场/退出动画,不用SVGA的动态文本了,自己叠加一个TextView) 2024-04-23 18:58:50 +08:00
max
e334c7ce16 feat:调整接口加密KEY 2024-04-23 18:33:55 +08:00
max
32b0fba6fb 同步PIKO:房间在线列表改用接口加载 2024-04-23 15:08:04 +08:00
max
d9a39877f1 fix:修复欢乐砸蛋排行榜数据加载问题(viewpager2导致) 2024-04-23 14:21:17 +08:00
max
681bd8bca9 修改房间默认背景 2024-04-23 11:37:42 +08:00
max
fc62f8cd28 fix:修复部分手机偶现多语言切换失效问题(发现一台Vivo测试机,进入退出二级页面后,Application的Locale被重置 导致ResUtils.getString没有正确读取文本) 2024-04-22 21:13:16 +08:00
max
696dc32234 fix:调整福袋飘屏 多语言文案问题 2024-04-22 20:54:35 +08:00
max
99e85366b3 多语言适配:创建房间 2024-04-22 18:15:30 +08:00
max
70785fdf47 同步PIKO:恢复地区隔离功能 2024-04-22 17:43:02 +08:00
max
b353105ca2 多语言适配:遗漏的文案适配 2024-04-22 16:45:44 +08:00
max
62dc2e3c9d 多语言适配:修复部分多语言适配问题(私聊页、PK拒绝提示、PK搜索ID等) 2024-04-22 16:34:22 +08:00
max
9c63c56488 feat:全局性广播飘窗-增加地区隔离逻辑(只展示当前地区的飘屏) 2024-04-22 15:20:50 +08:00
max
d3b16529e1 feat:寻爱之旅玩法改版-》欢乐砸蛋 2024-04-22 15:04:09 +08:00
max
d73770cfe2 fix:文案调整(贵族->VIP) 2024-04-19 18:26:30 +08:00
max
191990426a 多语言适配:赠送礼物失败提示文案 2024-04-19 18:24:16 +08:00
max
87052c52c1 补充提交:缺少引用 2024-04-19 18:11:56 +08:00
max
568a42799d 同步PIKO:PK更新值忽略超级幸运礼物 2024-04-19 17:32:39 +08:00
max
c0663e4aa8 同步PIKO:云信消息处理增加异常捕获 2024-04-19 17:18:29 +08:00
max
a8e7634920 同步PIKO:移植超级幸运礼物 2024-04-19 17:07:06 +08:00
max
8d292ccac0 feat:福袋礼物飘屏采用新方案实现 2024-04-19 15:42:07 +08:00
max
b81f0c0808 多语言适配:PK状态背景适配 2024-04-19 14:17:38 +08:00
max
b354931ed2 多语言适配:送礼弹窗-VIP特权图标资源 2024-04-19 11:52:32 +08:00
max
f538dde6da 多语言适配:排麦弹窗操作按钮多语言大小适配 2024-04-19 11:40:09 +08:00
max
a37ff5d9b8 fix:修复相亲房bug及多语言适配 2024-04-19 11:18:55 +08:00
max
f675e3e085 RTL适配:修复PK面板背景图片适配问题 2024-04-19 10:19:26 +08:00
max
63553473bf feat:升级TRTC-SDK(11.7.0.13946) 2024-04-19 10:16:44 +08:00
max
15f8ae439b RTL适配:私聊-消息适配、全局性的布局属性替换(layout_alignParentLeft、layout_alignParentRight、layout_toLeftOf、layout_toRightOf) 2024-04-19 09:43:34 +08:00
max
f73b56726a fix:调整私聊输入框文本:局中 2024-04-18 19:07:49 +08:00
max
cbca06b03d feat:寻爱飘屏实现方案调整(改用新飘屏方案实现) 2024-04-18 18:52:19 +08:00
max
9b0168f614 功能恢复:恢复寻爱玩法 2024-04-18 18:52:18 +08:00
max
70b9e5cbdd 恢复个播房 2024-04-18 18:52:18 +08:00
max
f95f8fb0f5 房间飘屏最大展示条数改为1 2024-04-18 15:01:37 +08:00
max
8b90c472e3 fix:修复google不可用情况下 无法使用金币开通问题 2024-04-18 15:00:31 +08:00
max
c924a2b2ac fix:修复房间底部输入框入口多语言适配问题 2024-04-18 14:32:35 +08:00
max
e7d2c0cf75 同步PIKO:送礼接口修改为V5 2024-04-18 11:26:57 +08:00
max
5946726d0b fix:修复公会部分页面的多语言适配问题 2024-04-18 11:25:35 +08:00
max
ca266841ac RTL适配:VIP中心-返利图片适配 2024-04-17 18:12:38 +08:00
max
5c9ad5b2fb 文案修改:贵族 换成 VIP 2024-04-17 18:09:03 +08:00
max
68e6d2aa15 功能恢复:恢复贵族中心的帮助入口、排行榜入口、特权详情查看功能 2024-04-17 12:04:28 +08:00
max
fcecc29add 多语言适配:图片资源适配 2024-04-17 11:36:24 +08:00
max
81ba536dba fix:修复公会页操作入口多语言适配问题 2024-04-16 20:14:24 +08:00
max
3bf1af2c0b fix:修复切换语言后进房提示文案未及时更新问题 2024-04-16 20:13:59 +08:00
max
48de4c765b feat:调整进房提示文案 2024-04-16 19:47:27 +08:00
max
eb6fb9b2da fix:金币翻译调整为Coins 2024-04-16 19:39:12 +08:00
max
5cf07b86b3 RTL适配:送礼-麦位动画 2024-04-16 18:59:48 +08:00
max
0fce835c0c fix:修复房间用户弹窗操作按钮加载问题 2024-04-16 17:20:26 +08:00
max
dcbd5aae25 fix:调整送礼飘窗阿语文案 2024-04-16 16:15:20 +08:00
max
b5541afc5d RTL适配:送礼公屏 2024-04-16 16:00:51 +08:00
max
25e0c29dbc fix:修复粉丝列表按钮适配问题 2024-04-16 15:53:12 +08:00
max
46c6ee3e99 fix:修复搜索页输入框未局中问题 2024-04-16 15:37:27 +08:00
max
6277322ebe fix:礼物弹窗适配RTL:Viewpager换ViewPager2
fix:移除礼物弹窗-余额文案
2024-04-16 15:19:26 +08:00
max
a8bc86b5aa fix:调整送礼弹窗-钻石图标大小 2024-04-15 18:27:10 +08:00
max
291f85c310 同步PIKO:完成送礼可用金币+钻石功能 2024-04-15 18:23:16 +08:00
max
26ea3dbfd5 feat:完成通用飘屏公屏功能(使用新方案,同时把礼物飘窗也改用新方案实现) 2024-04-15 17:45:27 +08:00
max
14a70f29c8 fix:修复启动页多语言适配问题 2024-04-15 16:57:21 +08:00
max
96174fbfeb feat:首页房间Top榜边框资源适配多语言 2024-04-15 16:38:10 +08:00
max
492b5f7263 feat:调整礼物面包接口、去掉GiftModel构造函数请求礼物数据逻辑 2024-04-15 16:29:25 +08:00
max
408afcebcb feat:调整首页房间列表公告标题字段 2024-04-15 10:28:19 +08:00
max
18904e853e feat:logo调整、占位图调整 2024-04-12 19:19:15 +08:00
max
61ac515cf9 feat:首页房间列表UI调整 2024-04-12 19:16:49 +08:00
max
c47281401e 应用名修改:Molistar->MoliStar 2024-04-12 16:47:08 +08:00
max
58abce7456 同步PIKO:修复礼物Modle默认加载礼物列表未判断登录问题 2024-04-12 16:41:10 +08:00
max
fdd6f1836f 移植文件上传:七牛云换腾讯云 2024-04-12 16:16:37 +08:00
max
5928151853 移除星座展示 2024-04-12 11:19:24 +08:00
max
c4cc6153df RTL适配:Viewpager换为Viewpager2 2024-04-12 11:00:10 +08:00
max
ecdeee3e76 RTL适配:全局替换布局属性(layout_marginLeft->layout_marginStar、layout_marginRight->layout_marginEnd、paddingLeft->paddingStart、paddingRight->paddingEnd、drawableLeft->drawableStar、drawableRight->drawableEnd、gravityLeft->gravityStart、gravityRight->gravityEnd) 2024-04-12 09:55:20 +08:00
max
a39a11343c RTL适配:送礼弹窗、礼物飘窗 2024-04-12 09:38:43 +08:00
max
c5d0b80f1b 修改测试环境域名、云信测试环境KEY 2024-04-11 19:41:32 +08:00
max
520efa04f8 RTL适配:增加EditText全局样式适配 2024-04-11 18:56:22 +08:00
max
5b1b469316 多语言适配:添加部分多语言图片资源 2024-04-11 16:57:15 +08:00
max
7ce3990728 RTL适配:房间右侧操作面板、我的操作条目箭头 2024-04-11 16:18:39 +08:00
max
542e12a88b RTL适配:房间用户卡片底部操作按钮移动到上面的操作按钮区 2024-04-11 16:12:26 +08:00
max
7373093946 适配首页-星球动画RTL 2024-04-11 14:05:17 +08:00
max
792b140f0f fix:修复切换语言启动时未正确设置问题 2024-04-11 14:04:59 +08:00
max
c64d74aa7d fix:修复部分手机切换Application语言无效问题 2024-04-11 11:32:47 +08:00
max
73f24839d4 feat:完成 钻石金币 概念互换(文案、图标资源互换) 2024-04-10 18:38:30 +08:00
max
9a532c5c3f 删除部分目前版本不需要的图片资源 2024-04-10 11:50:31 +08:00
max
1b74aa08ce fix:修复错误引用问题 2024-04-09 15:52:17 +08:00
max
831d219f36 feat:完成切换语言功能,新增阿语(目前只适配部分) 2024-04-09 15:26:37 +08:00
max
6858130a7e 固化新增的混淆规则 2024-04-08 09:29:37 +08:00
max
db9077fbbc feat:增量混淆 2024-04-07 18:27:19 +08:00
max
e67ab3c1b3 feat:移植分享邀请功能(新增LinkActivity相关代码是为了邀请码唤起功能,之前用的MobLink方案,但目前molistar不打算接入第三方SDK) 2024-04-07 16:43:26 +08:00
max
df0b246062 feat:完成登录页UI微调整 2024-04-07 14:29:16 +08:00
max
bf133e5dc6 feat:恢复首页banner 2024-04-07 10:23:17 +08:00
max
b4f26d324c feat:增加支付场景的日志输出 2024-04-02 20:18:28 +08:00
max
4a2618a76b 调整版本号 2024-04-02 17:57:14 +08:00
max
1b56fd075b fix:贵族中心适配英文:微调部分字体大小、文案 、图标 2024-04-02 17:55:44 +08:00
max
f1586fb0ac feat:设置页条目字体大小统一 2024-04-02 17:02:47 +08:00
max
66aa5a5671 fix:修复贵族中心空指针隐患 2024-04-02 16:52:35 +08:00
max
52bfc9636b feat:移除不必要的类 2024-04-02 16:52:12 +08:00
max
7c0665b9ce feat:调整贵族中心部分翻译 2024-04-02 14:22:24 +08:00
max
ecb3c46407 feat:退出登录操作 增加退出google登录 2024-04-02 11:43:23 +08:00
max
6ce3a64ea3 fix:调整贵族中心部分翻译和文本局中对齐 2024-04-02 11:30:11 +08:00
max
408ec37ff2 fix:获取google-service做非空判断 2024-04-02 10:40:25 +08:00
max
ecdbf9e9c3 feat:地区选择添加英国、美国 2024-04-02 10:39:10 +08:00
max
d8ae8a559d feat:初步移植piko的新版贵族中心(返利+购买) 2024-04-01 19:00:26 +08:00
max
2f8511ca16 feat:添加google登录 2024-04-01 16:34:24 +08:00
max
7e6c8bc4d3 图片资源MD5修改固化 2024-04-01 11:47:11 +08:00
max
30c63dd35d 移除无用清单文件配置 2024-03-05 14:22:22 +08:00
max
40b54bdf53 补充混淆配置 2024-03-05 14:21:38 +08:00
max
7bdbae1d9e 移除测试代码 2024-03-05 00:13:24 +08:00
max
30dbebc696 移除无用资源 2024-03-05 00:13:11 +08:00
max
d3c70fa0d9 修改送全麦文案展示(国际化) 2024-03-05 00:04:31 +08:00
max
bc5a20263c 调整注册页-性别提示UI位置 2024-03-04 21:39:56 +08:00
max
2205c59d69 隐藏房间在线列表 部分标签信息 2024-03-04 21:39:50 +08:00
max
a7f8c413d6 修改创建房间图标
修改搜索列表-在直播图标
2024-03-04 21:39:32 +08:00
max
2c098a9092 去掉房间公屏-收藏房间提示 2024-03-04 21:39:21 +08:00
zu
e547fff367 最新混淆配置 2024-03-04 21:38:46 +08:00
max
b7951341b2 调整首页星球滚动速度 2024-03-04 18:30:04 +08:00
max
30d81ebbfd 调整房间公屏开关文案国际化 2024-03-04 18:29:48 +08:00
max
3cb2267032 修改贵族页背景图 2024-03-04 17:52:16 +08:00
max
85dcb4806e 去掉房间小时榜、房间排行榜、粉丝团、个播房
去掉礼物入口首充图标
去掉规则一些H5入口
去掉首页排行榜入口
2024-03-04 17:23:32 +08:00
max
40a93939ad 去掉地区检测 2024-03-04 14:41:11 +08:00
max
98b66940e5 删除部分无用工具类 2024-03-04 14:40:49 +08:00
max
7b4bb010bf 重命名加密模块相关代码 2024-03-04 14:31:55 +08:00
max
9bc58277aa feat:修改声网、云信 配置 2024-03-04 14:24:34 +08:00
max
5a69f092a2 feat:修改消息-【小秘书、工会】头像地址 2024-03-04 14:14:40 +08:00
max
1873359e36 修改域名、应用名、签名等配置 2024-03-04 11:25:20 +08:00
max
eae1539375 国际化配置修改:打包仅保留en(目前版本需求) 2024-03-01 21:15:44 +08:00
max
c49d8c0f0c feat:完成多语言(新增英文) 2024-03-01 21:10:49 +08:00
max
642b0cc1fc 删除贵族特权明细弹窗 2024-03-01 20:17:16 +08:00
max
9850069824 feat:完成首页数据交互 2024-03-01 20:14:23 +08:00
max
038aded819 feat:初步完成首页星球UI部分 2024-02-29 21:10:22 +08:00
max
bffe6916e9 删除部分代码(分享、签到等) 2024-02-29 15:42:17 +08:00
max
9bb7ee73f5 feat:完成个人主页UI改版 2024-02-29 15:21:14 +08:00
max
81769854ee 恢复误删除的房间操作弹窗入口
移除贵族特权详情描述展示
2024-02-29 10:54:08 +08:00
max
614b5ad042 feat:修改Logo
修改主题色
删除首页Tab相关无用代码
2024-02-28 18:21:45 +08:00
max
da86497b95 feat:完成首页TabBarUI改版 2024-02-28 16:52:05 +08:00
max
c37635d6d1 feat:完成首页UI改版 2024-02-28 15:48:27 +08:00
max
1a1d2cf46c feat:完成消息页UI改版(删除部分无用代码) 2024-02-28 14:44:49 +08:00
max
a686dcc19d feat:完成我的页面UI改版 2024-02-28 14:23:45 +08:00
max
1ffd596ab2 feat:完成登录、注册UI改变(删除快捷登录页面) 2024-02-28 10:56:39 +08:00
max
4c01a2eb2c 新增molistar签名文件 2024-02-27 20:58:30 +08:00
max
93ebf4f8e1 删除装扮商城和房间banner入口 2024-02-27 20:58:10 +08:00
Max
c264a25d66 删除礼物面板周星礼物提示 2024-02-27 20:19:41 +08:00
Max
44c76eb00d 删除个人资料-声音签名 2024-02-27 16:05:02 +08:00
Max
36d80dc7f0 删除个人资料-标签 2024-02-27 16:01:28 +08:00
Max
6905425adb 删除抽奖功能 2024-02-27 15:53:53 +08:00
Max
79aa0754d5 删除师徒相关 2024-02-27 15:40:40 +08:00
Max
abad8212a5 删除家族相关代码 2024-02-27 15:07:28 +08:00
Max
f4626dc8b7 删除公聊大厅相关代码 2024-02-27 14:57:51 +08:00
Max
f383b23ad9 删除支付宝&提现相关代码 2024-02-27 12:02:19 +08:00
Max
e31545ddb0 删除提现、转赠、支付密码相关 2024-02-27 11:53:27 +08:00
Max
b9d090cd25 删除首充引导相关 2024-02-27 11:11:09 +08:00
Max
c55b1ba737 补充删除夺宝相关代码 2024-02-27 10:38:57 +08:00
Max
a93f3acdc9 删除房间停留获取免费礼物相关代码 2024-02-27 10:08:45 +08:00
Max
500d5ca1a8 删除首页开启推送通知提醒功能 2024-02-27 10:05:17 +08:00
Max
fdfa571d16 删除装扮商城相关代码 2024-02-26 21:04:28 +08:00
Max
8c14c2e1ab 移除设置-检查版本功能、隐藏设置-支付密码入口 2024-02-26 20:46:53 +08:00
Max
b999193f42 删除幸运礼物顶部提示栏 2024-02-26 20:17:05 +08:00
Max
1c1eb1c959 移除发现萌新相关代码 2024-02-26 19:47:53 +08:00
Max
1b02f13ea2 移除航海冒险相关代码 2024-02-26 18:39:37 +08:00
Max
96e7b58446 删除红包相关代码 2024-02-26 18:22:46 +08:00
Max
3b3b3cea18 去掉基于渠道的判断逻辑,默认按google渠道处理 2024-02-26 17:36:42 +08:00
Max
a1144d47c8 删除社区与话题相关代码 2024-02-26 14:40:27 +08:00
Max
4bd9865ac2 chore:移除原签名包名等信息 2024-02-23 15:17:24 +08:00
4534 changed files with 39568 additions and 84445 deletions

View File

@@ -10,7 +10,7 @@ android {
compileSdkVersion COMPILE_SDK_VERSION.toInteger()
defaultConfig {
applicationId isolationMode ? 'com.example.gogo' : 'app.hiyoo.fun'
applicationId isolationMode ? 'com.e.oos' : 'com.hhchu.molistar'
minSdkVersion MIN_SDK_VERSION.toInteger()
targetSdkVersion TARGET_SDK_VERSION.toInteger()
versionCode Integer.valueOf(version_code)
@@ -20,11 +20,11 @@ android {
flavorDimensions 'default'
buildConfigField "boolean", "ISOLATION_MODE", "$isolationMode"
resConfigs "en", "zh-rTW", "ar"
if (isolationMode) {
resValue "string", "app_name", "Hi-debug"
resValue "string", "app_name", "Mo-debug"
} else {
resValue "string", "app_name", "Hiyoo"
resValue "string", "app_name", "MoliStar"
}
}
@@ -63,7 +63,7 @@ android {
if (abi == null) {
abi = "universal"
}
outputFileName = "hiyoo_${buildType.name}_v${defaultConfig.versionName}_${abi}_${date}.apk"
outputFileName = "MoliStar_${buildType.name}_v${defaultConfig.versionName}_${abi}_${date}.apk"
}
}
@@ -84,19 +84,19 @@ android {
signingConfigs {
debug {
storeFile file('../app_debug.jks')
storePassword "debug2023"
keyAlias "debug"
keyPassword "debug2023"
storeFile file('../molistar_debug.jks')
storePassword "molistar"
keyAlias "molistar"
keyPassword "molistar"
v2SigningEnabled true
v1SigningEnabled true
}
release {
storeFile file('../hiyoo.jks')
storePassword "hiyoo2023"
keyAlias "hiyoo"
keyPassword "hiyoo2023"
storeFile file('../molistar.jks')
storePassword "molistar"
keyAlias "molistar"
keyPassword "molistar"
v2SigningEnabled true
v1SigningEnabled true
}
@@ -107,40 +107,28 @@ android {
main {
java.srcDirs = [
'src/main/java',
'src/module_public_chat_hall/java',
'src/module_upgrade_app/java',
'src/module_mentoring_relationship/java',
'src/module_labour_union/java',
'src/module_room_chat/java',
'src/model_customer_server/java',
'src/module_music/java',
'src/module_mini_world/java',
'src/module_lottery_dialog/java',
'src/module_bank_card/java',
'src/module_super_admin/java',
'src/module_treasure_box/java',
'src/module_community/java',
'src/module_album/java',
'src/module_treasure_box/java',
]
res.srcDirs = [
'src/main/res',
'src/common/res',
'src/module_public_chat_hall/res',
'src/module_upgrade_app/res',
'src/module_mentoring_relationship/res',
'src/module_labour_union/res',
'src/module_room_chat/res',
'src/model_customer_server/res',
'src/module_music/res',
'src/module_mini_world/res',
'src/module_lottery_dialog/res',
'src/module_bank_card/res',
'src/module_super_admin/res',
'src/module_treasure_box/res',
'src/module_community/res',
'src/module_album/res',
'src/module_treasure_box/res',
]
@@ -149,15 +137,12 @@ android {
}
buildTypes {
def server_url_debug = '"http://beta.api.hiyoo.fun/"'
def server_url_release = '"https://api.hiyoo.fun/"'
def server_url_debug = '"http://beta.api.molistar.xyz/"'
def server_url_release = '"https://api.molistar.xyz/"'
debug {
println("minifyEnabled = " + minify_enabled)
// ext.enableCrashlytics = false
// ext.alwaysUpdateBuildId = false // Firebase Crashlytics禁用更新构建ID
buildConfigField "String", "BASE_URL", server_url_debug
buildConfigField "String", "BASE_URL_DEBUG", "BASE_URL"
buildConfigField "String", "BASE_URL_STAGING", "BASE_URL"
@@ -178,10 +163,6 @@ android {
release {
ext.enableCrashlytics = CRASHLYTICS_COLLECTION_ENABLED.toBoolean()
ext.alwaysUpdateBuildId = CRASHLYTICS_COLLECTION_ENABLED.toBoolean()
// firebaseCrashlytics {
// //Firebase Crashlytics控制上传混淆文件开关
// mappingFileUploadEnabled CRASHLYTICS_COLLECTION_ENABLED.toBoolean()
// }
buildConfigField "String", "BASE_URL", server_url_release
buildConfigField "String", "BASE_URL_DEBUG", "BASE_URL"
@@ -275,21 +256,8 @@ dependencies {
implementation 'com.github.mmin18:realtimeblurview:1.2.1'
// implementation 'com.appsflyer:af-android-sdk:6.8.2'
implementation 'com.github.zhpanvip:BannerViewPager:3.5.6'
//fireBase
// implementation platform('com.google.firebase:firebase-bom:31.1.1')
// implementation 'com.google.firebase:firebase-crashlytics-ktx'
// implementation 'com.google.firebase:firebase-analytics-ktx'
//Adjust接入
// implementation 'com.adjust.sdk:adjust-android:4.33.0'
// implementation 'com.android.installreferrer:installreferrer:2.2'
// Add the following if you are using the Adjust SDK inside web views on your app
// implementation 'com.adjust.sdk:adjust-android-webbridge:4.33.0'
implementation 'com.github.yalantis:ucrop:2.2.7'
implementation 'com.github.lihangleo2:ShadowLayout:3.3.2'
@@ -297,7 +265,6 @@ dependencies {
//wheelView
implementation 'com.contrarywind:wheelview:4.1.0'
// implementation 'tech.sud.mgp:SudMGP-static:1.3.3.1158'
implementation project(':modules:module_base')
if (!isolationMode && file("../modules/module_google/build.gradle").exists()) {
@@ -309,7 +276,7 @@ channel {
//多渠道包的输出目录默认为new File(project.buildDir,"channel")
outputDir = new File(project.buildDir, "channelapk")
//多渠道包的命名规则,默认为:${appName}-${versionName}-${versionCode}-${flavorName}-${buildType}-${buildTime}
apkNameFormat = 'hiyoo-${buildType}-${flavorName}-v${versionName}-${buildTime}'
apkNameFormat = 'MoliStar-${buildType}-${flavorName}-v${versionName}-${buildTime}'
//快速模式生成渠道包时不进行校验速度可以提升10倍以上默认为false
fastMode = false
//buildTime的时间格式默认格式yyyyMMdd-HHmmss
@@ -324,7 +291,7 @@ aabResGuard {
"*.R.raw.*",
"*.R.drawable.icon"
]
obfuscatedBundleFileName = "duplicated-app.aab" // Obfuscated file name, must end with '.aab'
obfuscatedBundleFileName = "MoliStar-app.aab" // Obfuscated file name, must end with '.aab'
mergeDuplicatedRes = true // Whether to allow the merge of duplicate resources
enableFilterFiles = false // Whether to allow filter files
filterList = [ // file filter rules
@@ -334,7 +301,7 @@ aabResGuard {
enableFilterStrings = false // switch of filter strings
unusedStringPath = file("unused.txt").toPath() // strings will be filtered in this file
languageWhiteList = ["en", "zh"] // keep en,en-xx,zh,zh-xx etc. remove others.
languageWhiteList = ["en", "zh", "ar", "zh-rTW"] // keep en,en-xx,zh,zh-xx etc. remove others.
}
//以下均为非必须
@@ -343,5 +310,665 @@ xmlClassGuard {
//用于增量混淆的 mapping 文件
mappingFile = file("xml-class-mapping.txt")
//更改manifest文件的package属性即包名
packageChange = ["com.chwl.app": "co.ch.a"]
packageChange = ["com.chwl.app": "com.hhchu.molistar",
"com.chwl.core": "com.hhchu.core",
"com.chwl.library": "com.hhchu.library"]
moveDir = [
"com.chwl.library.language" : "faceb.abded",
"com.chwl.app.ui.invite" : "cfdd.baac",
"com.chwl.app.ui.link" : "fdb.ddbd",
"com.chwl.app.ui.language" : "cffafe.edafba",
"com.chwl.core.file.cos" : "cccdbdcce.eccffeccb",
"com.chwl.app.notify.views" : "fbbdbcaa.dbfaeadb",
"com.chwl.app.notify" : "eaafaa.edeeef",
"com.chwl.app.support.float" : "eadbfff.eccceee",
"com.chwl.app.avroom.gameplay" : "dfcf.dbdcb",
"com.chwl.app.treasure_box.activity" : "fdbac.cdfab",
"com.chwl.app.treasure_box.adapter" : "febab.bdfcb",
"com.chwl.app.treasure_box.fragment" : "ecbbc.baaada",
"com.chwl.app.treasure_box.module" : "aecae.aeacf",
"com.chwl.app.treasure_box.presenter" : "ddaaee.bacbdcb",
"com.chwl.app.treasure_box.widget" : "bedacc.bbbceb",
"com.chwl.app.treasure_box" : "afccebdddd.ecdedbfcea",
"com.chwl.core.treasure_box.bean" : "eeaaaa.bbedeee",
"com.chwl.core.treasure_box.event" : "dfbfa.edacdb",
"com.chwl.core.treasure_box.model" : "abdf.ebeab",
"com.example.lib_utils.spannable" : "babdfb.baacfc",
"com.example.lib_utils.log" : "cade.bebee",
"com.example.lib_utils.ktx" : "aedbdf.cbfffd",
"com.example.lib_utils" : "edadfda.cbddcda",
"com.soundcloud.crop" : "eccbecc.eefdcbdd",
"com.example.lib_core.component" : "cebecef.abcfbdda",
"com.example.lib_core" : "ffedce.affffdf",
"com.chwl.library.luban" : "cdbffbd.eadcbca",
"com.chwl.library.easyphoto.utils.uri" : "dbbffdafc.aaadcdfcca",
"com.chwl.library.easyphoto.utils.system" : "adb.ffd",
"com.chwl.library.easyphoto.utils.string" : "bebbc.efcaca",
"com.chwl.library.easyphoto.utils.settings" : "defee.eaccbb",
"com.chwl.library.easyphoto.utils.result" : "eecdc.cddbfa",
"com.chwl.library.easyphoto.utils.permission" : "fea.fcef",
"com.chwl.library.easyphoto.utils.media" : "ddddcde.bfececea",
"com.chwl.library.easyphoto.utils.color" : "ddc.cacb",
"com.chwl.library.easyphoto.utils.bitmap" : "fadfc.bcaac",
"com.chwl.library.easyphoto.ui.widget" : "bfafdb.ffeeadd",
"com.chwl.library.easyphoto.ui.dialog" : "fbaaaf.cdadedd",
"com.chwl.library.easyphoto.ui.adapter" : "fcada.cbadea",
"com.chwl.library.easyphoto.ui" : "beefbfb.bffbefaf",
"com.chwl.library.easyphoto.setting" : "edfd.dbfda",
"com.chwl.library.easyphoto.result" : "fddd.dbae",
"com.chwl.library.easyphoto.models.sticker.view" : "bacccfc.abbadfec",
"com.chwl.library.easyphoto.models.sticker.listener" : "edecfbdbb.fbdcbfaaed",
"com.chwl.library.easyphoto.models.sticker.entity" : "bbfeef.fdaefba",
"com.chwl.library.easyphoto.models.sticker.cache" : "cfeefddf.daadadef",
"com.chwl.library.easyphoto.models.sticker" : "eadfab.aaffafa",
"com.chwl.library.easyphoto.models.puzzle.template.straight" : "cbbfdd.fdbaab",
"com.chwl.library.easyphoto.models.puzzle.template.slant" : "fcffbcef.cbefeefa",
"com.chwl.library.easyphoto.models.puzzle.straight" : "bbacbff.ecbddeb",
"com.chwl.library.easyphoto.models.puzzle.slant" : "ebbbf.bfcbc",
"com.chwl.library.easyphoto.models.puzzle" : "afbfbfd.dffbcec",
"com.chwl.library.easyphoto.models.album.entity" : "baf.edaf",
"com.chwl.library.easyphoto.models.album" : "daddbf.cebdcdd",
"com.chwl.library.easyphoto.models.ad" : "adecece.cdedecc",
"com.chwl.library.easyphoto.engine" : "ecadb.effbcc",
"com.chwl.library.easyphoto.constant" : "abcfbde.cefbdbb",
"com.chwl.library.easyphoto.callback" : "acbfefebc.aefecbfea",
"com.chwl.library.easyphoto.builder" : "cccbcd.fabeea",
"com.chwl.library.easyphoto" : "cebee.abfded",
"com.chwl.library.easypermisssion.helper" : "dcbcfd.abebba",
"com.chwl.library.easypermisssion" : "fdecdffb.cbddcdadd",
"com.chwl.library.common.widget" : "dbcccf.adbaeab",
"com.chwl.library.common.util" : "abadefdd.bbdedefbe",
"com.chwl.library.common.transform" : "ddecee.dbeafe",
"com.chwl.library.common.photo" : "bdbbad.cbbefbe",
"com.chwl.library.common.glide" : "faacc.afcba",
"com.chwl.library.common.fragmentation.windowcallback" : "bafbddf.cdcdbdb",
"com.chwl.library.common.fragmentation.queue" : "ffceba.caedfea",
"com.chwl.library.common.fragmentation.internal" : "fcfc.dceae",
"com.chwl.library.common.fragmentation" : "cafcfb.febddef",
"com.chwl.library.common.file" : "cdcdeb.ccfddae",
"com.chwl.library.common.entity" : "acdb.aacb",
"com.chwl.library.common.delegate" : "cbdf.beed",
"com.chwl.library.common.base" : "daebfd.bfaada",
"com.chwl.library.common.application" : "afdbd.ffcebb",
"com.chwl.library.common" : "fede.deddf",
"com.chwl.library.widget.xlist" : "ccbecd.ffdfcdb",
"com.chwl.library.widget.decoration" : "dacceb.bcfbca",
"com.chwl.library.widget" : "eacad.fcafd",
"com.chwl.library.utils.valid" : "eccee.fdbec",
"com.chwl.library.utils.pref" : "aaebaf.edefdcf",
"com.chwl.library.utils.net" : "aadbf.cfabd",
"com.chwl.library.utils.log" : "cdefbea.aedfceec",
"com.chwl.library.utils.keyboard" : "acbbf.ecdbcf",
"com.chwl.library.utils.json" : "cad.dcad",
"com.chwl.library.utils.image" : "ccdabf.fefcfbc",
"com.chwl.library.utils.file" : "cfe.bbdd",
"com.chwl.library.utils.constant" : "fcde.abaf",
"com.chwl.library.utils.config" : "edaaebed.afbeccda",
"com.chwl.library.utils.codec" : "ffbedacf.cadbdefa",
"com.chwl.library.utils.cache" : "beaeed.adcfbd",
"com.chwl.library.utils.asynctask" : "dacf.bbfea",
"com.chwl.library.utils.anim" : "dbcbbd.cbccefa",
"com.chwl.library.utils" : "fdeaee.fddfeca",
"com.chwl.library.threadmgr" : "eddebea.dcbdfbf",
"com.chwl.library.swipeactivity" : "eaacbeb.fddeacad",
"com.chwl.library.softinput" : "ecefea.cfddea",
"com.chwl.library.service" : "efdcc.dfcbe",
"com.chwl.library.rxbus" : "aefdcd.dbadbed",
"com.chwl.library.rx" : "eab.bee",
"com.chwl.library.record" : "dafcbfe.afcdffa",
"com.chwl.library.net.rxnet.utils" : "acfbbb.ceeeab",
"com.chwl.library.net.rxnet.model" : "cefdcae.ecabacf",
"com.chwl.library.net.rxnet.manager" : "fdccbc.fbdadfe",
"com.chwl.library.net.rxnet.interceptor" : "fcce.cbdf",
"com.chwl.library.net.rxnet.https" : "dcdca.eafdc",
"com.chwl.library.net.rxnet.factory" : "afbebbbdb.eafdafcbb",
"com.chwl.library.net.rxnet.exception" : "eeeab.bebfa",
"com.chwl.library.net.rxnet.converter" : "baaccbeb.efccaccde",
"com.chwl.library.net.rxnet.callback" : "dfad.eccaf",
"com.chwl.library.net.rxnet" : "facdef.bbedadd",
"com.chwl.library.manager" : "cbaf.aadf",
"com.chwl.library.list" : "bddaaa.ffeead",
"com.chwl.library.coremanager" : "aadcbecd.fedbababd",
"com.chwl.library.bindinglist" : "afabdcf.feacfbfb",
"com.chwl.library.base.factory" : "ddbfbdf.acbaddc",
"com.chwl.library.base" : "bfba.fcbd",
"com.chwl.library.annatation" : "bcfcaaa.cefecab",
"com.chwl.library.animator" : "acbc.afcdd",
"com.chwl.library.adapters" : "caffe.edbbcd",
"com.chwl.core.upgrade.model" : "cad.abdd",
"com.chwl.core.upgrade.event" : "fffdf.aaaccc",
"com.chwl.core.upgrade.bean" : "aea.baaf",
"com.chwl.core.super_admin.util" : "cacffea.cbcafbe",
"com.chwl.core.super_admin.model.exception" : "cabed.eeaede",
"com.chwl.core.super_admin.model" : "bdbd.affda",
"com.chwl.core.super_admin.bean" : "ddfb.edcab",
"com.chwl.core.super_admin.attachment" : "bfeea.cbedcb",
"com.chwl.core.super_admin" : "cddaaf.ddabfc",
"com.chwl.core.code" : "aeabedb.eebbdcaa",
"com.chwl.core.public_chat_hall.manager" : "cefdad.fefbeef",
"com.chwl.core.public_chat_hall.event" : "ccff.dfccf",
"com.chwl.core.public_chat_hall.bean" : "aeaaa.dedad",
"com.chwl.core.public_chat_hall.attachment" : "fedd.fadb",
"com.chwl.core.music.view" : "dafddd.eecfdad",
"com.chwl.core.music.model" : "ecabcfecb.bafeafaeb",
"com.chwl.core.music.event" : "dbbfcd.fcacbed",
"com.chwl.core.music.db.model" : "dcaac.ddecf",
"com.chwl.core.music.db.dao" : "fafafcea.fbfbbfda",
"com.chwl.core.music.db.converter" : "baf.fac",
"com.chwl.core.music.db.bean" : "acbfad.dcbefe",
"com.chwl.core.music.bean" : "deafc.bebac",
"com.chwl.core.miniworld.model" : "cdcbc.cfbbc",
"com.chwl.core.miniworld.event" : "babacc.becdde",
"com.chwl.core.miniworld.bean" : "ffbe.bdac",
"com.chwl.core.mentoring_relationship.view" : "aadffbfa.fedbaace",
"com.chwl.core.mentoring_relationship.model" : "dfdeb.baabec",
"com.chwl.core.mentoring_relationship.exception" : "beebbbe.debeffc",
"com.chwl.core.mentoring_relationship.event" : "fcaceace.afcfdceb",
"com.chwl.core.mentoring_relationship.bean" : "eaedcce.eebdfabf",
"com.chwl.core.mentoring_relationship.attachment" : "faebfdc.bcbbbbfc",
"com.chwl.core.module_hall.team.event" : "ebfdfe.fcefebd",
"com.chwl.core.module_hall.team.bean" : "edcbb.bcfca",
"com.chwl.core.module_hall.team" : "bbeafe.ffebdfa",
"com.chwl.core.module_hall.secretcode.bean" : "ffdab.eabbd",
"com.chwl.core.module_hall.secretcode" : "eedbec.ffbcbed",
"com.chwl.core.module_hall.income.event" : "bdecee.edfdbad",
"com.chwl.core.module_hall.income.bean" : "fcfc.debbb",
"com.chwl.core.module_hall.income" : "afdaaf.afcbfd",
"com.chwl.core.module_hall.im.bean" : "bfbcaedcbf.fddedfaafe",
"com.chwl.core.module_hall.im" : "fabf.dada",
"com.chwl.core.module_hall.hall.event" : "fdcc.edcba",
"com.chwl.core.module_hall.hall.bean" : "eacfafb.adbcafda",
"com.chwl.core.module_hall.hall" : "bfdade.fbabba",
"com.chwl.core.db" : "dccfb.bfeca",
"com.chwl.core.community.square" : "fbacff.ebfcca",
"com.chwl.core.community.im" : "ddfc.bbcdb",
"com.chwl.core.community.event" : "baaeac.edbfbcd",
"com.chwl.core.community.dynamic" : "abdce.bdebca",
"com.chwl.core.community.bean.comment" : "aedfcaaf.cdfbbcce",
"com.chwl.core.community.bean" : "bbcf.abac",
"com.chwl.core.community.attachment" : "ceebd.fefcbb",
"com.chwl.core.community" : "fcefbba.abbefae",
"com.chwl.core.channel_page.model" : "eed.bae",
"com.chwl.core.channel_page.bean" : "edfea.cddcb",
"com.chwl.core.bank_card.view" : "fbefdfd.fecfadeb",
"com.chwl.core.bank_card.model" : "afdeac.aecbbce",
"com.chwl.core.bank_card.exception" : "dccfcc.cbdaacd",
"com.chwl.core.bank_card.bean" : "ccaad.bddfa",
"com.chwl.core.withdraw.bean" : "aaffcba.daeefdac",
"com.chwl.core.web.event" : "ecefca.fecfafc",
"com.chwl.core.web.bean" : "cbcdae.acdabfe",
"com.chwl.core.vip.bean" : "eedbaeb.defbdfae",
"com.chwl.core.vip" : "bfcdb.eeabef",
"com.chwl.core.utils.net" : "dadebe.fbcfaa",
"com.chwl.core.utils.extension" : "aeef.afaa",
"com.chwl.core.utils" : "eafcbdd.abaeccf",
"com.chwl.core.user.event" : "ffbae.efabfb",
"com.chwl.core.user.bean" : "cfeddda.aafffbc",
"com.chwl.core.user" : "afacaed.bbaefab",
"com.chwl.core.treasurefairy.bean" : "eaffcdbc.daeffdba",
"com.chwl.core.treasurefairy" : "bcdefdc.efbefada",
"com.chwl.core.team.model" : "eefedae.dfccaca",
"com.chwl.core.team.bean" : "bfbdcd.fafefd",
"com.chwl.core.support.room.lifecycle.rx" : "defdaecac.ccedeecec",
"com.chwl.core.support.room.lifecycle" : "afcfafa.dffefaa",
"com.chwl.core.support.room" : "ddaddaf.fccabdf",
"com.chwl.core.support.config" : "cfacaac.feafadc",
"com.chwl.core.statistic.protocol" : "ccefcc.aecaac",
"com.chwl.core.statistic" : "dbdef.bfdea",
"com.chwl.core.sound.model" : "beffe.abfeac",
"com.chwl.core.skill.event" : "edaba.ddedb",
"com.chwl.core.skill.entity" : "bacfcf.dddbef",
"com.chwl.core.share.bean" : "aceac.ecabfe",
"com.chwl.core.settings.bean" : "cdccdab.ebdbacb",
"com.chwl.core.settings" : "adcfbfced.fadbfddca",
"com.chwl.core.set.model" : "efcb.ccac",
"com.chwl.core.set.bean" : "bababbc.cecaffca",
"com.chwl.core.room.treasure_box.event" : "fdccbea.eacbffe",
"com.chwl.core.room.treasure_box.bean" : "edbce.fdbbbc",
"com.chwl.core.room.recommendpos.bean" : "dfaabac.aabbefcc",
"com.chwl.core.room.recommendpos" : "ffbadbcda.dfdcbffdf",
"com.chwl.core.room.queuing_mic.event" : "abfbcbe.bceaabda",
"com.chwl.core.room.queuing_mic.bean" : "edccdc.abfbfcc",
"com.chwl.core.room.queuing_mic.attachment" : "eabbdce.ecdbefc",
"com.chwl.core.room.queue.bean" : "eebfd.aaccca",
"com.chwl.core.room.pk.model" : "acefeab.bddecfb",
"com.chwl.core.room.pk.event" : "fbbefcc.efafcfb",
"com.chwl.core.room.pk.bean.response" : "ecaed.eebace",
"com.chwl.core.room.pk.bean.request" : "cfeee.cdeea",
"com.chwl.core.room.pk.bean" : "afb.eaca",
"com.chwl.core.room.pk.attachment" : "cdd.cfde",
"com.chwl.core.room.model.inteface" : "bfcaceb.eaaeaae",
"com.chwl.core.room.model" : "bdefe.abaefa",
"com.chwl.core.room.giftvalue.helper" : "ffaaa.aceba",
"com.chwl.core.room.giftvalue.bean" : "bdebccd.fbfaecdb",
"com.chwl.core.room.giftvalue" : "caeb.acffa",
"com.chwl.core.room.game.bean" : "eacfafb.aadfdcee",
"com.chwl.core.room.game" : "acecfafb.cdacfdabe",
"com.chwl.core.room.face" : "cfcefbebdc.fecabacfcb",
"com.chwl.core.room.exception" : "baebbfcb.debebcfe",
"com.chwl.core.room.event" : "afdece.ecaeae",
"com.chwl.core.room.dragonball" : "adbbbaa.bcccfdf",
"com.chwl.core.room.core" : "efddaaf.aaabbfcd",
"com.chwl.core.room.bean" : "bceba.bbfce",
"com.chwl.core.room.auction.bean" : "fddadcc.fbdbaaa",
"com.chwl.core.room.auction" : "bacebdb.bceeffa",
"com.chwl.core.room.anotherroompk" : "edbcdb.efbadd",
"com.chwl.core.room.activitytimer" : "adabddff.ccfdcfbd",
"com.chwl.core.room" : "fcea.defb",
"com.chwl.core.retry" : "dbee.cafae",
"com.chwl.core.relation.cp.bean" : "bdabfb.aecccbc",
"com.chwl.core.relation.cp" : "caedeb.abacfbc",
"com.chwl.core.redpackage.bean" : "edbaad.bbdcdfc",
"com.chwl.core.redpackage" : "bcc.ffd",
"com.chwl.core.redPacket.event" : "efcdfd.fdfbcae",
"com.chwl.core.redPacket.bean" : "acdfe.ebeaed",
"com.chwl.core.redPacket" : "edfebe.eebcfad",
"com.chwl.core.recall.event" : "eebebe.eeeacfa",
"com.chwl.core.recall.bean" : "fabffdc.ffcdadbe",
"com.chwl.core.recall" : "cbdac.cadea",
"com.chwl.core.realm" : "bdbdef.cffbbf",
"com.chwl.core.radish.task.bean" : "abbefdab.daeaadad",
"com.chwl.core.radish.task" : "bbedaaf.fbdfcce",
"com.chwl.core.radish.signin.bean" : "def.cff",
"com.chwl.core.radish.signin" : "ecabbcaca.eddcdecfe",
"com.chwl.core.radish.event" : "cdfaedb.eecdebad",
"com.chwl.core.radish" : "fdbeeb.eddbbaf",
"com.chwl.core.praise.event" : "fdddf.ceacfd",
"com.chwl.core.praise" : "becbbbfc.beafebfff",
"com.chwl.core.pay.event" : "dbdfe.efdce",
"com.chwl.core.pay.bean" : "fbefaae.fddefebe",
"com.chwl.core.pay" : "eefbfb.ccdcdeb",
"com.chwl.core.patriarch.exception" : "bbcdfae.eddfdbfe",
"com.chwl.core.patriarch.event" : "eabff.eccdc",
"com.chwl.core.patriarch.bean" : "fbdfcae.fefbfee",
"com.chwl.core.noble.bean" : "dfefd.bacabc",
"com.chwl.core.noble" : "fdfb.adfec",
"com.chwl.core.newbie.event" : "facdeeb.fbeaaff",
"com.chwl.core.newbie.bean" : "ffedae.acfcdbb",
"com.chwl.core.msg.sysv2.bean" : "ddeeb.bdcdf",
"com.chwl.core.msg.sysv2" : "accaef.bfedba",
"com.chwl.core.msg.sys.bean" : "dcabc.bbdaea",
"com.chwl.core.msg.sys" : "ecdbfa.bedeee",
"com.chwl.core.msg" : "bafbfed.efeeebd",
"com.chwl.core.monsterhunting.rxevent" : "dfafbbe.afcbecce",
"com.chwl.core.monsterhunting.model" : "eabaaa.afcbcd",
"com.chwl.core.monsterhunting.manager" : "bdabaef.eaeccdc",
"com.chwl.core.monsterhunting.bean" : "adbaee.fffffc",
"com.chwl.core.monsterhunting" : "dddbd.cecfcf",
"com.chwl.core.market_verify.event" : "bedbcf.ffcdfb",
"com.chwl.core.market_verify.bean" : "fffba.cdbfee",
"com.chwl.core.market_verify" : "ecddaa.decfae",
"com.chwl.core.manager.trtc" : "cdffbe.cfbefa",
"com.chwl.core.manager.event" : "ebeccadeab.daaebfafbc",
"com.chwl.core.manager.agora" : "bdfbed.baaadfc",
"com.chwl.core.manager" : "eada.dedbf",
"com.chwl.core.magic.toolbox" : "feaabe.faacdb",
"com.chwl.core.magic.exception" : "bdc.dbdc",
"com.chwl.core.magic.bean" : "cbeee.efcdfb",
"com.chwl.core.magic" : "effdcba.daeaeedf",
"com.chwl.core.luckymoney.bean" : "cdaabd.cfabfca",
"com.chwl.core.linked.event" : "dccdeb.adfceff",
"com.chwl.core.linked.bean" : "dbeef.acefca",
"com.chwl.core.linked" : "dfcbeac.affedbe",
"com.chwl.core.level.event" : "ecbafad.dceddabe",
"com.chwl.core.level" : "eeaeecb.efdafbdc",
"com.chwl.core.kick" : "fccbdc.febfaf",
"com.chwl.core.interceptor" : "abeb.bdbf",
"com.chwl.core.initial.bean" : "edbabbab.acdccacc",
"com.chwl.core.initial" : "dfbcef.ddbeede",
"com.chwl.core.im.sysmsg" : "cdfe.ddaf",
"com.chwl.core.im.state" : "ddcefccc.baeddeeec",
"com.chwl.core.im.room" : "efafb.cccabc",
"com.chwl.core.im.notification" : "cbace.fedfba",
"com.chwl.core.im.login" : "febec.facfc",
"com.chwl.core.im.friend" : "ea.ea",
"com.chwl.core.im.custom.bean" : "dedfdbd.ebffbcba",
"com.chwl.core.im.custom" : "ccfbca.bcccebd",
"com.chwl.core.im.chatterbox.bean" : "dfdefbe.fedadcf",
"com.chwl.core.im.chatterbox" : "ffdffe.ccecbfc",
"com.chwl.core.im.avroom" : "bcafa.eadbc",
"com.chwl.core.im" : "dffa.ebaa",
"com.chwl.core.home.model" : "ffdbfa.ddcfcea",
"com.chwl.core.home.event" : "dfbbd.cefeaf",
"com.chwl.core.home.bean" : "accd.bbdff",
"com.chwl.core.home" : "bccfeaf.fbdedea",
"com.chwl.core.helper" : "fcddab.afabccd",
"com.chwl.core.gift.toolbox" : "bcbed.ffcdaf",
"com.chwl.core.gift.exception" : "beccc.cccee",
"com.chwl.core.gift.event" : "ccde.faea",
"com.chwl.core.gift.bean" : "ebbffdf.beebece",
"com.chwl.core.gift" : "dbbcc.dbceee",
"com.chwl.core.file" : "ccafedb.bddaadf",
"com.chwl.core.fansteam.bean" : "fcfdaa.edabfab",
"com.chwl.core.fansteam" : "adbfd.adeecd",
"com.chwl.core.family.model" : "bbcedbab.caaefbfb",
"com.chwl.core.family.event" : "efa.edde",
"com.chwl.core.family.bean.response.moneyManagement" : "afbba.abdcd",
"com.chwl.core.family.bean.response.memberList" : "dbcce.ecaeff",
"com.chwl.core.family.bean.response.familyPlaza" : "fbbcdb.ddfadba",
"com.chwl.core.family.bean.response" : "bbecb.daedaf",
"com.chwl.core.family.bean" : "cdade.adeda",
"com.chwl.core.exception" : "eeceaead.ceacebbe",
"com.chwl.core.earn.model" : "ffebb.edbcaf",
"com.chwl.core.earn.bean" : "bbcabbb.dcabfcd",
"com.chwl.core.decoration.nameplate.bean" : "cfadf.caddb",
"com.chwl.core.decoration.nameplate" : "cbddeb.bebdcc",
"com.chwl.core.decoration.headwear.throwable" : "bebcb.aefce",
"com.chwl.core.decoration.headwear.bean" : "bdbabbdc.ffafceeac",
"com.chwl.core.decoration.headwear" : "cbcebdb.bdebbebd",
"com.chwl.core.decoration.car.bean" : "ccbd.abca",
"com.chwl.core.decoration.car" : "ebdefd.befcae",
"com.chwl.core.decoration.bean" : "fbeebae.ebcadebe",
"com.chwl.core.decoration.backgroud.bean" : "aaecbd.bfafacd",
"com.chwl.core.decoration.backgroud" : "ecabbc.ccafec",
"com.chwl.core.decoration" : "babeeeb.ecbaceee",
"com.chwl.core.contacts" : "becea.cccca",
"com.chwl.core.community" : "fcefbba.abbefae",
"com.chwl.core.channel" : "ccb.fcf",
"com.chwl.core.certification.event" : "ceecd.bebccf",
"com.chwl.core.certification" : "fafbaf.febcecf",
"com.chwl.core.bills.result" : "defceb.bddedaa",
"com.chwl.core.bills.bean" : "fcef.caffe",
"com.chwl.core.bills" : "ebcfbec.defbbcbc",
"com.chwl.core.bean.response.result" : "decd.efffc",
"com.chwl.core.bean.response" : "cdfaac.caaeba",
"com.chwl.core.bean.attachmsg" : "fdab.dbaad",
"com.chwl.core.bean" : "dbcdb.edafab",
"com.chwl.core.base" : "eadbead.cefeacdf",
"com.chwl.core.auth.exception" : "bfcced.baedbeb",
"com.chwl.core.auth.event" : "ddcbacef.ebcaacba",
"com.chwl.core.auth.entity" : "cfeaf.ddccec",
"com.chwl.core.auth" : "debfc.deefa",
"com.chwl.core.audio.event" : "edfdda.fdabdf",
"com.chwl.core.audio.bean" : "feacbcff.edcaafbbb",
"com.chwl.core.audio" : "eeaca.ebabbb",
"com.chwl.core.association.model" : "eacfeca.adcbbfa",
"com.chwl.core.association.bean" : "ebdeaeb.dbccefdb",
"com.chwl.core.activity.model" : "debbcfdb.edbdfdeaf",
"com.chwl.core.activity.event" : "cfaafeb.ffdedef",
"com.chwl.core.activity.bean" : "feacdf.cefdbd",
"com.chwl.core" : "dddeaae.cfddfded",
"com.chwl.app.sadmin.utils" : "cccafa.feaeab",
"com.chwl.app.sadmin" : "accdab.baeeaee",
"com.chwl.app.room_chat.utils" : "ebdddaa.feeeabb",
"com.chwl.app.room_chat.fragment" : "afeccfe.dcfbfca",
"com.chwl.app.room_chat.event" : "cebb.fcbd",
"com.chwl.app.room_chat.adapter" : "baad.cfcfa",
"com.chwl.app.room_chat.activity" : "eaaadcc.ebdbede",
"com.chwl.app.room_chat" : "cdfaf.eceabb",
"com.chwl.app.music.widget" : "fadfedef.abeacebff",
"com.chwl.app.music.presenter" : "cdfa.baab",
"com.chwl.app.music.fragment" : "edfcdf.aabfdc",
"com.chwl.app.music.adapter" : "fadcdbbe.cebcdaae",
"com.chwl.app.music.activity" : "baddf.dbacfa",
"com.chwl.app.module_hall.viewmodel" : "fddae.dbafab",
"com.chwl.app.module_hall.team.view.widget" : "fecfabd.ffecdfb",
"com.chwl.app.module_hall.team.view" : "fead.fecfb",
"com.chwl.app.module_hall.team.presenter" : "edbfcf.eddebd",
"com.chwl.app.module_hall.team.adapter" : "dceeca.cabfcb",
"com.chwl.app.module_hall.team.activity" : "bdefdae.dbdbbbeb",
"com.chwl.app.module_hall.team" : "acfaacfd.aaddcbfed",
"com.chwl.app.module_hall.secretcode" : "eaafad.ebbdfca",
"com.chwl.app.module_hall.income.view" : "eefbddf.bebcebcf",
"com.chwl.app.module_hall.income.presenter" : "afbba.afcffb",
"com.chwl.app.module_hall.income.adapter" : "eabcac.bebbec",
"com.chwl.app.module_hall.income" : "acaede.cfecbe",
"com.chwl.app.module_hall.im.msgholder" : "decfc.acfca",
"com.chwl.app.module_hall.im.dialog" : "caca.dcdfa",
"com.chwl.app.module_hall.im" : "ebfceeb.dcaaedfe",
"com.chwl.app.module_hall.hall.view.indicator" : "bcdebe.cceeae",
"com.chwl.app.module_hall.hall.view.dialog" : "beffcef.ddaebdd",
"com.chwl.app.module_hall.hall.view" : "efbe.ccbe",
"com.chwl.app.module_hall.hall.presenter" : "bbebecb.bdacbefa",
"com.chwl.app.module_hall.hall.fragment" : "dffdae.dbaeadb",
"com.chwl.app.module_hall.hall.adapter" : "badadbfc.feddfdcae",
"com.chwl.app.module_hall.hall.activity" : "bdcdd.aaccc",
"com.chwl.app.module_hall" : "aedebf.dbedcab",
"com.chwl.app.bank_card.presenter" : "fcefbfa.bbabedeb",
"com.chwl.app.bank_card.adapter" : "ecdae.feffda",
"com.chwl.app.bank_card.activity" : "baaebb.adacabb",
"com.chwl.app.bank_card" : "afdfbbee.acccbcafe",
"com.example.matisse.widget" : "fafdc.ccdcea",
"com.example.matisse.ui" : "bddeecdf.daebcbca",
"com.example.matisse.listener" : "fdeec.edddcc",
"com.example.matisse.internal.utils" : "daadd.dccbda",
"com.example.matisse.internal.ui.widget" : "feebb.dcbfa",
"com.example.matisse.internal.ui.adapter" : "dcaaa.cabef",
"com.example.matisse.internal.ui" : "cabaff.aababab",
"com.example.matisse.internal.model" : "cdadc.cccccd",
"com.example.matisse.internal.loader" : "bcbcac.cfecdb",
"com.example.matisse.internal.entity" : "fecfdeeae.aefaabccf",
"com.example.matisse.filter" : "aabfe.eacfa",
"com.example.matisse.engine.impl" : "debe.ddbed",
"com.example.matisse.engine" : "bfcfa.aabec",
"com.example.matisse" : "badbf.fadfea",
"com.jph.takephoto.uitl" : "fbbaffa.faecdbe",
"com.jph.takephoto.permission" : "accbfce.fccdabb",
"com.jph.takephoto.model" : "afbfaa.afcdcd",
"com.jph.takephoto.compress" : "aecbcaf.acdbabae",
"com.jph.takephoto.app" : "edeebee.fefabfb",
"com.chwl.app.vip.view" : "ecad.baecf",
"com.chwl.app.vip.util" : "bcfe.ccaa",
"com.chwl.app.vip.dialog" : "cafded.caafcba",
"com.chwl.app.vip.bean" : "efbbc.adeda",
"com.chwl.app.vip.adapter" : "dceeffbc.eaffbcfd",
"com.chwl.app.vip" : "abaeec.bdedac",
"com.chwl.app.view.layoutmanager" : "fabcc.cffdbf",
"com.chwl.app.view" : "cabdb.accfda",
"com.chwl.app.utils" : "bcead.dfdbfb",
"com.chwl.app.ui.widget.viewpager" : "cbffcedc.ceeebada",
"com.chwl.app.ui.widget.rollviewpager.hintview" : "eedaced.ccaeddd",
"com.chwl.app.ui.widget.rollviewpager.adapter" : "bdeeebd.aaacacf",
"com.chwl.app.ui.widget.rollviewpager" : "ebffacb.ecccaaf",
"com.chwl.app.ui.widget.recyclerview.layoutmanager" : "faffb.bbcdba",
"com.chwl.app.ui.widget.recyclerview.decoration" : "afbbfef.dbebefb",
"com.chwl.app.ui.widget.password" : "cdbdc.cfcdde",
"com.chwl.app.ui.widget.marqueeview" : "fe.cff",
"com.chwl.app.ui.widget.magicindicator.ext" : "edcebdc.abcdfda",
"com.chwl.app.ui.widget.magicindicator.buildins.commonnavigator.titles.badge" : "aefeb.bfcdf",
"com.chwl.app.ui.widget.magicindicator.buildins.commonnavigator.titles" : "eacbbaf.edaceeb",
"com.chwl.app.ui.widget.magicindicator.buildins.commonnavigator.model" : "afcebbb.bcbbaba",
"com.chwl.app.ui.widget.magicindicator.buildins.commonnavigator.indicators" : "ddede.cbafa",
"com.chwl.app.ui.widget.magicindicator.buildins.commonnavigator.abs" : "aebeae.dcddcfc",
"com.chwl.app.ui.widget.magicindicator.buildins.commonnavigator" : "acab.aaea",
"com.chwl.app.ui.widget.magicindicator.buildins.circlenavigator" : "acdcf.aecead",
"com.chwl.app.ui.widget.magicindicator.buildins" : "eaeaabd.ccbaeabc",
"com.chwl.app.ui.widget.magicindicator.abs" : "beeadefa.cffedbfa",
"com.chwl.app.ui.widget.magicindicator" : "deecdc.cefebd",
"com.chwl.app.ui.widget.interfacex" : "afef.cbfae",
"com.chwl.app.ui.widget.higuide" : "cfc.cefd",
"com.chwl.app.ui.widget.dynamicface" : "bacace.febaea",
"com.chwl.app.ui.widget.drawgift" : "cae.cbb",
"com.chwl.app.ui.widget.dialog" : "bccfaa.eeedea",
"com.chwl.app.ui.widget.bubble" : "fccea.caeaa",
"com.chwl.app.ui.widget.XRecyclerView" : "cff.dfb",
"com.chwl.app.ui.widget" : "efaded.babadae",
"com.chwl.app.ui.webview.room_banner" : "cada.eecbe",
"com.chwl.app.ui.webview.event" : "ffbbb.ceebbb",
"com.chwl.app.ui.webview" : "aaadff.eebecc",
"com.chwl.app.ui.wallet.adapter" : "deccfe.bcbbbe",
"com.chwl.app.ui.utils.sys" : "dfcdebe.adfefffe",
"com.chwl.app.ui.utils" : "dcbeeada.dfeedeab",
"com.chwl.app.ui.user.viewmodel" : "fafab.bedbf",
"com.chwl.app.ui.user.fragment" : "dcbf.bdefe",
"com.chwl.app.ui.user.event" : "feea.afda",
"com.chwl.app.ui.user.dialog" : "feeaaf.cdbbab",
"com.chwl.app.ui.user.decorationsend" : "abfbeaad.badffeebd",
"com.chwl.app.ui.user.adapter" : "bbdbd.acccbd",
"com.chwl.app.ui.user.activity" : "cbce.cfaac",
"com.chwl.app.ui.setting.viewmodel" : "bfafaedcc.fbdbadacae",
"com.chwl.app.ui.setting.bean" : "bccd.dddee",
"com.chwl.app.ui.setting.adapter" : "ffcaca.fbfaafc",
"com.chwl.app.ui.setting" : "ecaccbb.beccadff",
"com.chwl.app.ui.search.view" : "fdbeb.deffd",
"com.chwl.app.ui.search.presenter" : "adcae.bcfdca",
"com.chwl.app.ui.search.event" : "acfa.ffcb",
"com.chwl.app.ui.search" : "ddbffcaa.ffbccbbe",
"com.chwl.app.ui.relation.adapter" : "fdcecaf.eabaeaef",
"com.chwl.app.ui.relation" : "bedfeb.eeedcfb",
"com.chwl.app.ui.radish" : "ffbac.dfaec",
"com.chwl.app.ui.praise.base" : "eacffed.bfaeded",
"com.chwl.app.ui.praise" : "cdcbd.fbecf",
"com.chwl.app.ui.pay" : "eaddab.fdfdafb",
"com.chwl.app.ui.patriarch.help" : "dfcbd.cdcfcc",
"com.chwl.app.ui.patriarch" : "dfdeaddb.dbbdcaee",
"com.chwl.app.ui.login.ui" : "aaadcea.bdbfdaba",
"com.chwl.app.ui.login.helper" : "defefbb.cbfaccae",
"com.chwl.app.ui.login.fragment" : "dcfb.bfdce",
"com.chwl.app.ui.login" : "fbdb.abea",
"com.chwl.app.ui.list" : "afbeccf.eeadfbf",
"com.chwl.app.ui.keepalive" : "aabffd.fbaccfa",
"com.chwl.app.ui.indicator_impl" : "cead.ddea",
"com.chwl.app.ui.im.recent.holder" : "bdcb.eedb",
"com.chwl.app.ui.im.recent.adapter" : "eeefed.becfad",
"com.chwl.app.ui.im.recent" : "dfaebff.aabdecc",
"com.chwl.app.ui.im.model" : "cbafae.dbecfdc",
"com.chwl.app.ui.im.friend" : "dbecb.ccfcda",
"com.chwl.app.ui.im.fragment" : "fcfffef.cdaaffee",
"com.chwl.app.ui.im.chat" : "cddcabe.afbdedeb",
"com.chwl.app.ui.im.avtivity" : "bebec.afdec",
"com.chwl.app.ui.im.audio" : "accfdc.cdcbfac",
"com.chwl.app.ui.im.actions" : "feefed.becfccf",
"com.chwl.app.ui.im" : "beafbfbeb.dedfbbdbcb",
"com.chwl.app.ui.gift.widget" : "bfaeacf.aabcdbfa",
"com.chwl.app.ui.gift.util" : "deacecd.addbcee",
"com.chwl.app.ui.gift.gif" : "befcb.affcf",
"com.chwl.app.ui.gift.dialog" : "dccddf.bfcedeb",
"com.chwl.app.ui.gift.callback" : "dceed.febbe",
"com.chwl.app.ui.gift.adapter" : "eceedadb.dcfbbfdec",
"com.chwl.app.ui.behavior" : "ccdfda.debfad",
"com.chwl.app.ui.bean" : "faafdf.cefbbcb",
"com.chwl.app.ui.anim" : "bacee.daccf",
"com.chwl.app.ui.adapter" : "bdbce.adbdfc",
"com.chwl.app.team.viewmodel" : "bfeace.ffbefff",
"com.chwl.app.team.view" : "caead.eedace",
"com.chwl.app.team.event" : "cacdecf.ddebcbd",
"com.chwl.app.team.dialog" : "fdfcfc.aafcdc",
"com.chwl.app.team.bean" : "fcebb.eebee",
"com.chwl.app.team.adapter" : "bfddccfa.eadeaddae",
"com.chwl.app.sys" : "cbebab.dacbed",
"com.chwl.app.support" : "bdbeedc.fcdfcfa",
"com.chwl.app.star" : "bffcec.cebfbb",
"com.chwl.app.skill.widget" : "daeec.fdbbfb",
"com.chwl.app.skill.repository" : "bbcdaeca.dcfbfcfbe",
"com.chwl.app.skill.dialog" : "aedad.fefbab",
"com.chwl.app.skill.decoration" : "bbeee.feabad",
"com.chwl.app.skill.adapter" : "eeababfbe.accdfbdbd",
"com.chwl.app.skill.activity" : "ebceceb.facbeebc",
"com.chwl.app.skill" : "bfbacc.eabfde",
"com.chwl.app.share.viewholder" : "dcdaef.bbcdfa",
"com.chwl.app.share" : "bad.fabf",
"com.chwl.app.service" : "ddacadb.abafdaa",
"com.chwl.app.relation.extention" : "caedcc.deceffc",
"com.chwl.app.relation.cp.widget" : "cefecca.adfcdaf",
"com.chwl.app.relation.cp.viewmodel" : "bcabafedc.ccbfeeada",
"com.chwl.app.relation.cp.model" : "ccfafe.fbdbaec",
"com.chwl.app.relation.cp.fragment" : "bceb.dadfb",
"com.chwl.app.relation.cp.dialog" : "fbceea.cefbefb",
"com.chwl.app.relation.cp.adapter" : "abccbf.eaacbd",
"com.chwl.app.relation.cp.activity" : "efaeff.aececca",
"com.chwl.app.relation.cp" : "eabafed.efacabe",
"com.chwl.app.reciever" : "cca.cba",
"com.chwl.app.radish.widget" : "ffbea.aaddd",
"com.chwl.app.radish.wallet" : "efeedaeccc.cfcaeacafa",
"com.chwl.app.radish.view" : "becee.bcfeee",
"com.chwl.app.radish.task.view" : "faaee.afbce",
"com.chwl.app.radish.task.presenter" : "faedd.eecbcd",
"com.chwl.app.radish.task.fragment" : "abfacfbc.deefaddda",
"com.chwl.app.radish.task.adpter" : "bbdadbc.bcdcddbc",
"com.chwl.app.radish.task.activity" : "dceccff.aafdfebc",
"com.chwl.app.radish.presenter" : "acaecc.eaeddf",
"com.chwl.app.radish.helper" : "faaeb.fffedc",
"com.chwl.app.radish.adapter" : "fcfbbe.ddeecf",
"com.chwl.app.radish.activity" : "bdfffab.dffcdfbf",
"com.chwl.app.photo" : "eecccd.bfdbfcc",
"com.chwl.app.pay.view" : "eacfaa.fbeaac",
"com.chwl.app.pay.presenter" : "afceab.feabbff",
"com.chwl.app.other.view" : "ddacd.cdbfca",
"com.chwl.app.other.present" : "bbddcabe.bebbbdae",
"com.chwl.app.other.dialog" : "cedb.bdeeb",
"com.chwl.app.other.activity" : "e.ba",
"com.chwl.app.other" : "faedfe.fabffda",
"com.chwl.app.monsterhunting.bean" : "cedec.faddde",
"com.chwl.app.monsterhunting" : "fbabff.dbfeac",
"com.chwl.app.module" : "efdfeaf.efcddef",
"com.chwl.app.luckymoney.viewholder" : "dfedf.eedab",
"com.chwl.app.luckymoney.view" : "ddaddcd.caccbde",
"com.chwl.app.luckymoney.dialog" : "ffecde.ebbcfef",
"com.chwl.app.luckymoney.adapter" : "efeefc.eccdbf",
"com.chwl.app.home.widget" : "dfaafb.fcdcae",
"com.chwl.app.home.view" : "edfeb.efbcb",
"com.chwl.app.home.refresh" : "cfadbacde.cfaedfcccf",
"com.chwl.app.home.presenter" : "bdfece.fbefff",
"com.chwl.app.home.helper" : "fadcf.dfbdfa",
"com.chwl.app.home.fragment" : "beffafaea.aaccfbeab",
"com.chwl.app.home.event" : "aadff.cfbdd",
"com.chwl.app.home.dialog" : "bfbfb.ccacbc",
"com.chwl.app.home.adapter" : "dcaaa.bacefa",
"com.chwl.app.home.activity" : "cbafdaea.dabbbcef",
"com.chwl.app.home" : "facc.ffdec",
"com.chwl.app.guide" : "bafbbace.feffabda",
"com.chwl.app.friend.view" : "dabb.cedce",
"com.chwl.app.friend.action" : "deeead.dfedfad",
"com.chwl.app.friend" : "bfddd.dfdef",
"com.chwl.app.fansteam" : "eabdedaed.cfeadaacfe",
"com.chwl.app.event" : "bdff.bafcc",
"com.chwl.app.earn.adapter" : "dbddedf.cecfafa",
"com.chwl.app.earn.activity" : "aedee.bcdadb",
"com.chwl.app.earn" : "ffdbec.afddefd",
"com.chwl.app.decoration.viewmodel" : "dccaca.cbaaeea",
"com.chwl.app.decoration.view.widgets" : "dafde.edfde",
"com.chwl.app.decoration.view" : "affeefb.cddaaab",
"com.chwl.app.decoration.helper" : "bdbfa.aeccba",
"com.chwl.app.decoration.adapter" : "ebbd.edae",
"com.chwl.app.constants" : "ddeeea.cbabbd",
"com.chwl.app.common.widget.dialog" : "adbbdfcb.abacbeeb",
"com.chwl.app.common.widget" : "cdcbfd.cdcdaad",
"com.chwl.app.common.util" : "bcaabadbafe.cbdddabbbcfd",
"com.chwl.app.common.svga" : "dedde.effdb",
"com.chwl.app.common.server" : "abbadac.adcefdc",
"com.chwl.app.common.photo" : "bceefea.bcefcab",
"com.chwl.app.common.permission" : "acfda.dfeeab",
"com.chwl.app.common.dialog" : "deaeba.ffcaae",
"com.chwl.app.common.app" : "dbcedb.cccffe",
"com.chwl.app.common" : "cbaca.adadbb",
"com.chwl.app.bindadapter" : "bacefd.cdbedf",
"com.chwl.app.bills.widget" : "cdcfbd.fcadcaa",
"com.chwl.app.bills.view" : "cda.aedf",
"com.chwl.app.bills.presenter" : "bcbdbd.cfaccfd",
"com.chwl.app.bills.fragmemt" : "baffeb.dedcfc",
"com.chwl.app.bills.event" : "bdacea.effdae",
"com.chwl.app.bills.adapter" : "dffcceeb.cfbbbddde",
"com.chwl.app.bills.activities" : "ffaf.eadaa",
"com.chwl.app.base.list" : "dffcde.efbadaa",
"com.chwl.app.base" : "aedbb.fbfebd",
"com.chwl.app.avroom.widget" : "caeddfb.efcaeecd",
"com.chwl.app.avroom.view" : "bbaff.dbaabe",
"com.chwl.app.avroom.singleroompk" : "bbadb.dbabde",
"com.chwl.app.avroom.room_album" : "fffc.cdafe",
"com.chwl.app.avroom.recommendcard" : "aaefc.cffadd",
"com.chwl.app.avroom.rank" : "edadcb.beeaca",
"com.chwl.app.avroom.presenter" : "dddee.cfdea",
"com.chwl.app.avroom.newuserchargegift" : "bbfcc.bdbbb",
"com.chwl.app.avroom.helper" : "bcfbb.dffeae",
"com.chwl.app.avroom.giftvalue" : "acfcd.fbbcdd",
"com.chwl.app.avroom.fragment" : "beefbb.fbcafec",
"com.chwl.app.avroom.dialog" : "abbcea.ceadbc",
"com.chwl.app.avroom.core" : "fbebb.bdbebf",
"com.chwl.app.avroom.bean" : "affae.fcdff",
"com.chwl.app.avroom.anotherroompk" : "bbdba.edbbe",
"com.chwl.app.avroom.adapter" : "bffc.bbcd",
"com.chwl.app.avroom.activity" : "dccdfed.ccdfdde",
"com.chwl.app.avroom" : "bfedffaa.adfffbef",
"com.chwl.app.audio.widget" : "bfcafa.fbbfdb",
"com.chwl.app.audio.viewmodel" : "bdfe.bfccf",
"com.chwl.app.audio.view" : "abdfdcc.bbcaebb",
"com.chwl.app.audio.presenter" : "aeef.cbbaf",
"com.chwl.app.audio.helper" : "cfeb.ebade",
"com.chwl.app.audio.adapter" : "ddeceecf.dddcbccf",
"com.chwl.app.audio" : "cdedecf.fbddecef",
"com.chwl.app.application" : "cfd.ccae",
"com.chwl.app" : "cfdd.baac",
]
}

158
app/proguard-rules.pro vendored
View File

@@ -481,4 +481,160 @@
-keep public class com.alibaba.android.arouter.routes.**{*;}
-keep public class com.alibaba.android.arouter.facade.**{*;}
-keep class * implements com.alibaba.android.arouter.facade.template.ISyringe{*;}
-keep class * implements com.alibaba.android.arouter.facade.template.ISyringe{*;}
#new after proguard
-dontwarn bdcb.eedb.**
-keep class bdcb.eedb.** {*;}
-keep class cddcabe.afbdedeb.** {*;}
-keep class dfedf.eedab.** {*;}
-keep class dcdaef.bbcdfa.** {*;}
-keep class com.chwl.app.public_chat_hall.msg.viewholder.** {*;}
-keep class decfc.acfca.** {*;}
-keep class com.chwl.app.mentoring_relationship.viewholder.** {*;}
-keep class b.** { *; }
-keep class cb.** { *; }
-keep public class * extends b.NP
-keep public class * extends ddbfbdf.acbaddc.AbstractMvpPresenter
-dontwarn bacefd.cdbedf.**
-keep class bacefd.cdbedf.** {*;}
-keep class f.DG{*;}
-keep class bf.CA{*;}
-keep class q.Y {*;}
-keep class bacccfc.abbadfec.** { *; }
-keep class edecfbdbb.fbdcbfaaed.** { *; }
-keep class bbfeef.fdaefba.** { *; }
-keep class cfeefddf.daadadef.** { *; }
-keep class eadfab.aaffafa.** { *; }
-keep class cbbfdd.fdbaab.** { *; }
-keep class fcffbcef.cbefeefa.** { *; }
-keep class bbacbff.ecbddeb.** { *; }
-keep class ebbbf.bfcbc.** { *; }
-keep class afbfbfd.dffbcec.** { *; }
-keep class el.** {*;}
-keep class baf.edaf.** { *; }
-keep class daddbf.cebdcdd.** { *; }
-keep class adecece.cdedecc.** { *; }
-keep class fbbaffa.faecdbe.** { *; }
-keep class accbfce.fccdabb.** { *; }
-keep class afbfaa.afcdcd.** { *; }
-keep class aecbcaf.acdbabae.** { *; }
-keep class edeebee.fefabfb.** { *; }
-dontwarn fbbaffa.faecdbe.**
-dontwarn accbfce.fccdabb.**
-dontwarn afbfaa.afcdcd.**
-dontwarn aecbcaf.acdbabae.**
-dontwarn edeebee.fefabfb.**
-keep class cp.** { *; }
-dontwarn cp.**
-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 {*;}
-keep class aea.baaf.** { *; }
-keep class ddfb.edcab.** { *; }
-keep class aeaaa.dedad.** { *; }
-keep class acbfad.dcbefe.** { *; }
-keep class deafc.bebac.** { *; }
-keep class ffbe.bdac.** { *; }
-keep class eaedcce.eebdfabf.** { *; }
-keep class edcbb.bcfca.** { *; }
-keep class ffdab.eabbd.** { *; }
-keep class fcfc.debbb.** { *; }
-keep class bfbcaedcbf.fddedfaafe.** { *; }
-keep class eacfafb.adbcafda.** { *; }
-keep class aedfcaaf.cdfbbcce.** { *; }
-keep class bbcf.abac.** { *; }
-keep class edfea.cddcb.** { *; }
-keep class ccaad.bddfa.** { *; }
-keep class aaffcba.daeefdac.** { *; }
-keep class cbcdae.acdabfe.** { *; }
-keep class eedbaeb.defbdfae.** { *; }
-keep class cfeddda.aafffbc.** { *; }
-keep class y.** {*;}
-keep class eaffcdbc.daeffdba.** { *; }
-keep class bfbdcd.fafefd.** { *; }
-keep class ba.** {*;}
-keep class aceac.ecabfe.** { *; }
-keep class cdccdab.ebdbacb.** { *; }
-keep class bababbc.cecaffca.** { *; }
-keep class edbce.fdbbbc.** { *; }
-keep class dfaabac.aabbefcc.** { *; }
-keep class edccdc.abfbfcc.** { *; }
-keep class eebfd.aaccca.** { *; }
-keep class ecaed.eebace.** { *; }
-keep class cfeee.cdeea.** { *; }
-keep class afb.eaca.** { *; }
-keep class bdebccd.fbfaecdb.** { *; }
-keep class eacfafb.aadfdcee.** { *; }
-keep class bceba.bbfce.** { *; }
-keep class cd.** {*;}
-keep class fddadcc.fbdbaaa.** { *; }
-keep class bdabfb.aecccbc.** { *; }
-keep class g.** {*;}
-keep class edbaad.bbdcdfc.** { *; }
-keep class acdfe.ebeaed.** { *; }
-keep class fabffdc.ffcdadbe.** { *; }
-keep class abbefdab.daeaadad.** { *; }
-keep class def.cff.** { *; }
-keep class fbefaae.fddefebe.** { *; }
-keep class fbdfcae.fefbfee.** { *; }
-keep class dfefd.bacabc.** { *; }
-keep class ffedae.acfcdbb.** { *; }
-keep class ddeeb.bdcdf.** { *; }
-keep class dcabc.bbdaea.** { *; }
-keep class adbaee.fffffc.** { *; }
-keep class bb.** {*;}
-keep class fffba.cdbfee.** { *; }
-keep class cbeee.efcdfb.** { *; }
-keep class cdaabd.cfabfca.** { *; }
-keep class dbeef.acefca.** { *; }
-keep class edbabbab.acdccacc.** { *; }
-keep class dedfdbd.ebffbcba.** { *; }
-keep class dfdefbe.fedadcf.** { *; }
-keep class accd.bbdff.** { *; }
-keep class u.** {*;}
-keep class ebbffdf.beebece.** { *; }
-keep class fcfdaa.edabfab.** { *; }
-keep class afbba.abdcd.** { *; }
-keep class dbcce.ecaeff.** { *; }
-keep class fbbcdb.ddfadba.** { *; }
-keep class bbecb.daedaf.** { *; }
-keep class cdade.adeda.** { *; }
-keep class bg.** {*;}
-keep class bbcabbb.dcabfcd.** { *; }
-keep class cfadf.caddb.** { *; }
-keep class bdbabbdc.ffafceeac.** { *; }
-keep class bd.** {*;}
-keep class ccbd.abca.** { *; }
-keep class j.** {*;}
-keep class fbeebae.ebcadebe.** { *; }
-keep class aaecbd.bfafacd.** { *; }
-keep class fcef.caffe.** { *; }
-keep class decd.efffc.** { *; }
-keep class cdfaac.caaeba.** { *; }
-keep class fdab.dbaad.** { *; }
-keep class dbcdb.edafab.** { *; }
-keep class feacbcff.edcaafbbb.** { *; }
-keep class ebdeaeb.dbccefdb.** { *; }
-keep class feacdf.cefdbd.** { *; }
-keep class efbbc.adeda.** { *; }
-keep class bccd.dddee.** { *; }
-keep class faafdf.cefbbcb.** { *; }
-keep class fcebb.eebee.** { *; }
-keep class cedec.faddde.** { *; }
-keep class affae.fcdff.** { *; }
-keep class eecdc.cddbfa.** { *; }
-keep class fddd.dbae.** { *; }
-keep class defceb.bddedaa.** { *; }
-keep class decd.efffc.** { *; }
-keep class bbfeef.fdaefba.** { *; }
-keep class baf.edaf.** { *; }
-keep class acdb.aacb.** { *; }
-keep class bacfcf.dddbef.** { *; }
-keep class cfeaf.ddccec.** { *; }

View File

@@ -127,6 +127,24 @@
<!-- </intent-filter>-->
</activity>
<activity
android:name=".ui.link.LinkActivity"
android:configChanges="orientation|screenSize"
android:exported="true"
android:launchMode="singleTop"
android:theme="@style/transparent_activity">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data
android:host="app"
android:scheme="molistar" />
</intent-filter>
</activity>
<!-- <meta-data-->
<!-- android:name="firebase_crashlytics_collection_enabled"-->
<!-- android:value="${CRASHLYTICS_COLLECTION_ENABLED}" /> &lt;!&ndash; 刘海屏适配 begin &ndash;&gt;-->
@@ -162,7 +180,7 @@
如果 SDKOptions 中提供了,取 SDKOptions 中的值。
-->
<!-- <activity-->
<!-- android:name="app.hiyoo.fun.lineapi.LineAuthenticationCallbackActivity"-->
<!-- android:name="app.molistar.fun.lineapi.LineAuthenticationCallbackActivity"-->
<!-- android:exported="true"-->
<!-- android:launchMode="singleTask"-->
<!-- android:noHistory="true">-->
@@ -223,7 +241,7 @@
<activity
android:name=".MainActivity"
android:configChanges="orientation|keyboardHidden|screenSize"
android:label="Hiyoo"
android:label="MoliStar"
android:launchMode="singleTask"
android:screenOrientation="portrait"
android:windowSoftInputMode="adjustPan|stateAlwaysHidden" /> <!-- 配置的service和receiver -->
@@ -303,10 +321,6 @@
android:name=".home.activity.CollectionRoomActivity"
android:label="@string/main_androidmanifest_019"
android:screenOrientation="portrait" />
<activity
android:name=".ui.wallet.ExchangeGoldActivity"
android:label="@string/main_androidmanifest_020"
android:screenOrientation="portrait" />
<activity
android:name=".ui.setting.SettingActivity"
android:screenOrientation="portrait" />
@@ -316,18 +330,6 @@
<activity
android:name=".ui.relation.FansListActivity"
android:screenOrientation="portrait" />
<activity
android:name=".ui.withdraw.WithdrawActivity"
android:screenOrientation="portrait" />
<activity
android:name=".ui.withdraw.bankcard.BindWithdrawBankCardActivity"
android:screenOrientation="portrait" />
<activity
android:name=".ui.withdraw.WithdrawRuleActivity"
android:screenOrientation="portrait" />
<activity
android:name=".ui.withdraw.BinderAlipayActivity"
android:screenOrientation="portrait" />
<activity
android:name=".ui.user.activity.AboutActivity"
android:screenOrientation="portrait" />
@@ -404,10 +406,6 @@
android:name=".decoration.view.MyDecorationActivity"
android:label="@string/main_androidmanifest_027"
android:screenOrientation="portrait" />
<activity
android:name=".decoration.view.DecorationStoreActivity"
android:screenOrientation="portrait"
android:windowSoftInputMode="stateHidden|adjustResize" />
<activity
android:name=".ui.user.activity.UserGiftActivity"
android:screenOrientation="portrait"
@@ -416,42 +414,6 @@
android:name=".friend.view.SelectFriendActivity"
android:screenOrientation="portrait"
android:windowSoftInputMode="stateHidden|adjustResize" />
<activity
android:name=".family.view.activity.FamilyPlazaActivity"
android:screenOrientation="portrait"
android:windowSoftInputMode="stateHidden|adjustResize" />
<activity
android:name=".family.view.activity.FamilyHomeActivity"
android:screenOrientation="portrait"
android:windowSoftInputMode="stateHidden|adjustResize" />
<activity
android:name=".family.view.activity.FamilySearchActivity"
android:screenOrientation="portrait"
android:windowSoftInputMode="stateHidden|adjustResize" />
<activity
android:name=".family.view.activity.FamilyListActivity"
android:screenOrientation="portrait"
android:windowSoftInputMode="stateHidden|adjustResize" />
<activity
android:name=".family.view.activity.FamilyManageActivity"
android:screenOrientation="portrait"
android:windowSoftInputMode="stateHidden|adjustResize" />
<activity
android:name=".family.view.activity.FamilyCurrencyActivity"
android:screenOrientation="portrait"
android:windowSoftInputMode="stateHidden|adjustResize" />
<activity
android:name=".family.view.activity.FamilyMemberListActivity"
android:screenOrientation="portrait"
android:windowSoftInputMode="stateHidden|adjustResize" />
<activity
android:name=".family.view.activity.FamilyInfoActivity"
android:screenOrientation="portrait"
android:windowSoftInputMode="stateHidden|adjustResize" />
<activity
android:name=".family.view.activity.FamilyMemberSearchActivity"
android:screenOrientation="portrait"
android:windowSoftInputMode="stateHidden|adjustResize" />
<activity
android:name=".team.view.NimTeamMessageActivity"
android:screenOrientation="portrait"
@@ -496,10 +458,6 @@
android:name=".luckymoney.view.LuckyMoneyDetailActivity"
android:screenOrientation="portrait"
android:windowSoftInputMode="stateHidden|adjustResize" /> <!-- android:launchMode="singleTask" -->
<activity
android:name=".family.view.activity.FamilyMemberCurrencyActivity"
android:screenOrientation="portrait"
android:windowSoftInputMode="stateHidden|adjustResize" />
<activity
android:name=".ErbanTakePhotoActivity"
android:screenOrientation="portrait"
@@ -509,17 +467,14 @@
android:screenOrientation="portrait"
android:windowSoftInputMode="stateHidden|adjustResize" />
<activity
android:name=".family.view.activity.FamilySelectFriendActivity"
android:screenOrientation="portrait"
android:windowSoftInputMode="stateHidden|adjustResize" />
android:name=".treasure_box.activity.TreasureBoxActivity"
android:theme="@style/transparent_activity" />
<activity
android:name=".family.view.activity.FamilyTextInputActivity"
android:screenOrientation="portrait"
android:windowSoftInputMode="stateHidden|adjustResize" />
android:name=".treasure_box.activity.BoxRankingActivity"
android:theme="@style/room_message_activity" />
<activity
android:name=".family.view.activity.FamilyGameListActivity"
android:screenOrientation="portrait"
android:windowSoftInputMode="stateHidden|adjustResize" />
android:name=".treasure_box.activity.TreasureBoxHonourActivity"
android:theme="@style/dialog_web_view_activity" />
<activity android:name=".ui.setting.VerifyPhoneActivity" />
<activity android:name=".ui.setting.ModifyPwdActivity" />
<activity
@@ -531,17 +486,6 @@
android:name=".ui.widget.RecallDialog"
android:screenOrientation="portrait"
android:theme="@style/dialog_activity_close_inside" />
<activity
android:name=".public_chat_hall.activity.PublicChatHallHomeActivity"
android:configChanges="keyboardHidden|orientation"
android:label="@string/main_androidmanifest_028"
android:screenOrientation="portrait"
android:windowSoftInputMode="stateHidden|adjustResize" />
<activity
android:name=".public_chat_hall.activity.PublicChatHallAitFriendsActivity"
android:configChanges="keyboardHidden|orientation"
android:label="@string/main_androidmanifest_029"
android:screenOrientation="portrait" />
<activity
android:name=".ui.user.decorationsend.DecorationSendActivity"
android:screenOrientation="portrait"
@@ -552,14 +496,6 @@
<activity
android:name=".avroom.activity.RoomOnlineUserActivity"
android:screenOrientation="portrait" />
<activity
android:name=".public_chat_hall.activity.PublicChatHallRelatedToMeActivity"
android:screenOrientation="portrait"
android:windowSoftInputMode="stateHidden|adjustResize" />
<activity
android:name=".public_chat_hall.activity.AitFriendsSearchActivity"
android:screenOrientation="portrait"
android:windowSoftInputMode="stateHidden|adjustResize" />
<activity
android:name=".ui.login.ShowBindPhoneActivity"
android:screenOrientation="portrait" />
@@ -625,9 +561,6 @@
<activity
android:name=".module_hall.hall.activity.MemberSearchActivity"
android:windowSoftInputMode="adjustPan" />
<activity
android:name=".avroom.activity.CpRoomInviteActivity"
android:screenOrientation="portrait" />
<activity
android:name=".module_hall.hall.activity.HallSearchActivity"
android:screenOrientation="portrait" />
@@ -640,11 +573,6 @@
<activity
android:name=".module_hall.team.activity.HTeamMemberListActivity"
android:screenOrientation="portrait" />
<activity
android:name="com.chwl.app.mentoring_relationship.activity.MentoringRelationshipActivity"
android:label="@string/main_androidmanifest_030"
android:screenOrientation="portrait"
android:windowSoftInputMode="stateHidden|adjustResize" />
<activity
android:name=".avroom.recommendcard.MyRecommendCardActivity"
android:launchMode="singleTask"
@@ -655,12 +583,6 @@
<activity
android:name="com.chwl.app.room_chat.activity.RoomMsgActivity"
android:theme="@style/room_message_activity" />
<activity
android:name="com.chwl.app.room_chat.activity.RoomNewbieActivity"
android:theme="@style/room_message_activity" />
<activity
android:name="com.chwl.app.room_chat.activity.RoomNewbieMessageActivity"
android:theme="@style/room_message_activity" />
<activity
android:name="com.chwl.app.room_chat.activity.RoomInviteFansActivity"
android:theme="@style/room_message_activity" />
@@ -678,9 +600,6 @@
<activity
android:name=".radish.activity.RadishRecordActivity"
android:screenOrientation="portrait" />
<activity
android:name=".radish.signin.SignInActivity"
android:screenOrientation="portrait" />
<activity
android:name=".radish.task.activity.TaskCenterActivity"
android:screenOrientation="portrait" />
@@ -704,42 +623,6 @@
<activity
android:name=".audio.VoiceMatchActivity"
android:screenOrientation="portrait" />
<activity
android:name=".miniworld.activity.MiniWorldGuestPageActivity"
android:screenOrientation="portrait" /> <!-- 推荐位 -->
<activity
android:name=".miniworld.activity.TopicMainActivity"
android:screenOrientation="portrait" /> <!-- 房间内私聊 -->
<activity
android:name=".miniworld.activity.MiniWorldEditActivity"
android:screenOrientation="portrait" />
<activity
android:name=".miniworld.activity.MiniWorldMemberListActivity"
android:screenOrientation="portrait" />
<activity
android:name=".miniworld.activity.MiniWorldTeamMessageActivity"
android:screenOrientation="portrait"
android:windowSoftInputMode="stateHidden|adjustResize" />
<activity
android:name=".miniworld.activity.MWTeamRoomMessageAct"
android:screenOrientation="portrait"
android:theme="@style/room_message_activity" />
<activity
android:name=".miniworld.activity.MiniWorldGroupThemeActivity"
android:screenOrientation="portrait" />
<activity
android:name=".miniworld.activity.MiniWorldActivity"
android:screenOrientation="portrait" />
<activity
android:name=".miniworld.activity.AllTopicActivity"
android:screenOrientation="portrait" /> <!-- 房间内私聊 -->
<!-- 萝卜-签到-任务 -->
<activity
android:name=".miniworld.activity.MiniWorldSearchActivity"
android:screenOrientation="portrait" />
<activity
android:name=".miniworld.activity.MiniWorldMainActivity"
android:screenOrientation="portrait" />
<activity android:name=".ui.im.friend.ActFriendList" />
<activity
android:name=".bank_card.activity.BankCardListActivity"
@@ -760,19 +643,10 @@
android:name=".home.activity.CommunityNoticeAct"
android:screenOrientation="portrait" />
<activity
android:name=".community.publish.view.PublishActivity"
android:launchMode="singleTop"
android:screenOrientation="portrait"
android:windowSoftInputMode="stateHidden|adjustNothing" />
<activity
android:name=".community.dynamic.view.DynamicDetailActivity"
android:screenOrientation="portrait"
android:windowSoftInputMode="adjustPan" />
<activity
android:name=".community.photo.PreviewPhotoActivity"
android:name=".photo.PreviewPhotoActivity"
android:screenOrientation="portrait" />
<activity
android:name=".community.photo.BigPhotoActivity"
android:name=".photo.BigPhotoActivity"
android:screenOrientation="portrait" />
<activity
android:name="com.example.matisse.ui.MatisseActivity"
@@ -783,41 +657,21 @@
<activity
android:name="com.example.matisse.internal.ui.SelectedPreviewActivity"
android:screenOrientation="portrait" /> <!-- 房间内私聊 -->
<activity
android:name=".ui.wallet.sendgold.SendGoldActivity"
android:screenOrientation="portrait"
android:windowSoftInputMode="stateHidden|adjustResize" />
<activity
android:name=".pay.activity.GiveGoldActivity"
android:screenOrientation="portrait"
android:windowSoftInputMode="stateHidden|adjustResize" />
<activity
android:name=".pay.activity.GiveGoldDetailActivity"
android:screenOrientation="portrait"
android:windowSoftInputMode="stateHidden|adjustResize" />
<activity
android:name=".pay.activity.GiveGoldToUserActivity"
android:screenOrientation="portrait"
android:windowSoftInputMode="adjustPan" />
<activity
android:name=".pay.activity.GiveGoldSearchActivity"
android:screenOrientation="portrait"
android:windowSoftInputMode="stateHidden|adjustResize" />
<activity
android:name=".ui.setting.PrivacySettingActivity"
android:screenOrientation="portrait" /> <!-- 银行卡列表 -->
<activity
android:name=".ui.setting.NoticeSettingActivity"
android:screenOrientation="portrait" /> <!-- 解除绑定银行卡 -->
<activity
android:name=".ui.login.LoginActivity"
android:label="@string/main_androidmanifest_031"
android:launchMode="singleTask"
android:screenOrientation="portrait" /> <!-- 绑定银行卡 -->
<activity
android:name=".ui.webview.DialogWebViewActivity"
android:theme="@style/dialog_web_view_activity"
android:windowSoftInputMode="adjustPan" /> <!-- 隐私政策 -->
android:windowSoftInputMode="adjustPan" />
<activity
android:name=".ui.webview.room_banner.RoomWebDialogActivity"
android:theme="@style/room_dialog_web_view_activity"
android:windowSoftInputMode="adjustPan" />
<!-- 隐私政策 -->
<activity
android:name=".ui.webview.DatingRuleWebViewActivity"
android:theme="@style/dialog_web_view_activity" />
@@ -830,6 +684,7 @@
android:theme="@style/dialog_web_view_activity" />
<activity
android:name=".ui.login.LoginPasswordActivity"
android:launchMode="singleTask"
android:screenOrientation="portrait" /> <!-- 社区 -->
<activity
android:name=".ui.setting.ResetPasswordActivity"
@@ -857,9 +712,6 @@
android:name=".avroom.singleroompk.SingleRoomPKSearchActivity"
android:theme="@style/dialog_web_view_activity"
android:windowSoftInputMode="adjustPan" />
<activity
android:name=".avroom.firstcharge.FirstChargeDialog"
android:theme="@style/dialogactivity" />
<activity
android:name=".ui.setting.GrantedPermissionsActivity"
android:screenOrientation="portrait" />
@@ -899,21 +751,6 @@
<activity
android:name=".relation.cp.activity.CpInviteRecordActivity"
android:screenOrientation="portrait" />
<activity
android:name=".fansteam.FansTeamJoinActivity"
android:theme="@style/dialog_web_view_activity" />
<activity
android:name=".fansteam.FansTeamJoinedActivity"
android:theme="@style/dialog_web_view_activity" />
<activity
android:name=".fansteam.FansTeamListActivity"
android:screenOrientation="portrait" />
<activity
android:name=".shipantics.PullRadishActivity"
android:theme="@style/dialog_web_view_activity" />
<activity
android:name=".shipantics.RadishRankingActivity"
android:theme="@style/room_message_activity" />
<activity
android:name=".AgentActivity"
android:theme="@android:style/Theme.Translucent.NoTitleBar" />
@@ -933,11 +770,6 @@
android:configChanges="screenSize|orientation|keyboardHidden|mcc|mnc|locale|touchscreen|screenLayout|keyboard|navigation|fontScale|uiMode|smallestScreenSize|layoutDirection"
android:exported="false"
android:screenOrientation="portrait" />
<activity
android:name=".earn.activity.EarnWithdrawActivity"
android:configChanges="screenSize|orientation|keyboardHidden|mcc|mnc|locale|touchscreen|screenLayout|keyboard|navigation|fontScale|uiMode|smallestScreenSize|layoutDirection"
android:exported="false"
android:screenOrientation="portrait" /> <!-- com.chwl.core.skill -->
<activity
android:name=".earn.activity.BindWithdrawMsgActivity"
android:configChanges="screenSize|orientation|keyboardHidden|mcc|mnc|locale|touchscreen|screenLayout|keyboard|navigation|fontScale|uiMode|smallestScreenSize|layoutDirection"
@@ -968,11 +800,6 @@
android:configChanges="screenSize|orientation|keyboardHidden|mcc|mnc|locale|touchscreen|screenLayout|keyboard|navigation|fontScale|uiMode|smallestScreenSize|layoutDirection"
android:exported="false"
android:screenOrientation="portrait" />
<activity
android:name=".ui.user.activity.EditUserLabelActivity"
android:configChanges="screenSize|orientation|keyboardHidden|mcc|mnc|locale|touchscreen|screenLayout|keyboard|navigation|fontScale|uiMode|smallestScreenSize|layoutDirection"
android:exported="false"
android:screenOrientation="portrait" />
<activity
android:name=".ui.webview.FairyDialogWebViewActivity"
@@ -1051,6 +878,8 @@
<activity android:name=".avroom.room_album.RoomAlbumActivity" />
<activity android:name=".ui.language.LanguageActivity" />
</application>
</manifest>

Binary file not shown.

File diff suppressed because one or more lines are too long

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.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

After

Width:  |  Height:  |  Size: 20 KiB

View File

@@ -23,6 +23,8 @@ import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentTransaction;
import androidx.lifecycle.ViewModelProvider;
import com.chwl.app.star.StarFragment;
import com.chwl.app.ui.login.LoginPasswordActivity;
import com.chwl.core.settings.SettingsModel;
import com.netease.nim.uikit.StatusBarUtil;
import com.netease.nim.uikit.common.util.log.LogUtil;
@@ -38,7 +40,6 @@ import com.netease.nimlib.sdk.team.constant.TeamMessageNotifyTypeEnum;
import com.netease.nimlib.sdk.team.model.Team;
import com.netease.nimlib.sdk.uinfo.model.NimUserInfo;
import com.orhanobut.logger.Logger;
import com.chwl.app.upgrade.AppUpgradeHelper;
import com.trello.rxlifecycle3.android.ActivityEvent;
import com.chwl.app.application.IReportConstants;
import com.chwl.app.application.ReportManager;
@@ -47,9 +48,6 @@ import com.chwl.app.avroom.activity.AVRoomActivity;
import com.chwl.app.base.BaseMvpActivity;
import com.chwl.app.common.widget.CircleImageView;
import com.chwl.app.common.widget.DragLayout;
import com.chwl.app.community.dynamic.view.DynamicDetailActivity;
import com.chwl.app.community.publish.view.PublishActivity;
import com.chwl.app.family.view.activity.FamilyHomeActivity;
import com.chwl.app.home.HomeViewModel;
import com.chwl.app.home.dialog.NewUserHelloDialog;
import com.chwl.app.home.dialog.ProtocolUpdateDialog;
@@ -59,15 +57,12 @@ import com.chwl.app.home.fragment.MeFragment;
import com.chwl.app.home.presenter.MainPresenter;
import com.chwl.app.home.view.IMainView;
import com.chwl.app.home.widget.AnchorCardView;
import com.chwl.app.main.helper.NoticationsUiHelper;
import com.chwl.app.miniworld.activity.MiniWorldGuestPageActivity;
import com.chwl.app.module.Extras;
import com.chwl.app.module_hall.secretcode.PwdCodeMgr;
import com.chwl.app.service.DaemonService;
import com.chwl.app.ui.im.ImInitHelper;
import com.chwl.app.ui.im.avtivity.NimP2PMessageActivity;
import com.chwl.app.ui.login.BindPhoneActivity;
import com.chwl.app.ui.login.LoginActivity;
import com.chwl.app.ui.login.fragment.AddUserInfoFragment;
import com.chwl.app.ui.patriarch.help.LimitEnterRoomHelper;
import com.chwl.app.ui.patriarch.help.PmDialogShowMrg;
@@ -114,7 +109,6 @@ import com.chwl.core.utils.SharedPreferenceUtils;
import com.chwl.core.utils.StringFormatUtils;
import com.chwl.library.base.factory.CreatePresenter;
import com.chwl.library.threadmgr.ThreadPoolManager;
import com.chwl.library.utils.JavaUtil;
import com.chwl.library.utils.ResUtil;
import org.greenrobot.eventbus.EventBus;
@@ -147,7 +141,7 @@ public class MainActivity extends BaseMvpActivity<IMainView, MainPresenter>
private MainTabLayout mMainTabLayout;
private AnchorCardView anchorCardView;
private View viewClose;
private int mCurrentTabType = MainTabType.TAB_TYPE_HOME;
private int mCurrentTabType = MainTabType.TAB_TYPE_STAR;
/**
* 房间最小化动画换成属性动画原先的补间动画影响了activity的生命周期
*/
@@ -165,8 +159,8 @@ public class MainActivity extends BaseMvpActivity<IMainView, MainPresenter>
private Runnable touchRunnable;
{
fragmentArray.put(MainTabType.TAB_TYPE_STAR, new StarFragment());
fragmentArray.put(MainTabType.TAB_TYPE_HOME, new HomeFragment());
// fragmentArray.put(MainTabType.TAB_TYPE_SQUARE, new SquareFragment());
fragmentArray.put(MainTabType.TAB_TYPE_MSG, new ContactsListFragment());
fragmentArray.put(MainTabType.TAB_TYPE_ME, new MeFragment());
}
@@ -199,16 +193,8 @@ public class MainActivity extends BaseMvpActivity<IMainView, MainPresenter>
// 跳转
if (!StringUtil.isEmpty(linkedInfo.getRoomUid()) && linkedInfo.getType().equals("2")) {
AVRoomActivity.start(context, Long.parseLong(linkedInfo.getRoomUid()));
} else if (!StringUtil.isEmpty(linkedInfo.getFamilyId()) && linkedInfo.getType().equals("4")) {
FamilyHomeActivity.start(context, linkedInfo.getFamilyId());
} else if (!TextUtils.isEmpty(linkedInfo.getUrl()) && linkedInfo.getType().equals("3")) {
CommonWebViewActivity.start(context, UriProvider.getLinkUrl(linkedInfo.getUrl()));
} else if (!TextUtils.isEmpty(linkedInfo.getWorldId()) && linkedInfo.getType().equals("5")) {
MiniWorldGuestPageActivity.start(context, linkedInfo.getWorldId());
} else if (linkedInfo.getType().equals("6") && !TextUtils.isEmpty(linkedInfo.getWorldId()) &&
!TextUtils.isEmpty(linkedInfo.getDynamicId())) {
DynamicDetailActivity.start(context, JavaUtil.str2long(linkedInfo.getDynamicId()),
JavaUtil.str2long(linkedInfo.getWorldId()), 6);
} else if (linkedInfo.getType().equals("7") && !TextUtils.isEmpty(linkedInfo.getUid())) {
NimP2PMessageActivity.start(context, linkedInfo.getUid());
} else {
@@ -249,8 +235,6 @@ public class MainActivity extends BaseMvpActivity<IMainView, MainPresenter>
mMainTabLayout.setMainTabInfoList(mainTabInfo);
}
});
//检测更新
AppUpgradeHelper.checkAppUpgrade(this);
initMaterialView();
onParseIntent();
updateDatas();
@@ -327,34 +311,9 @@ public class MainActivity extends BaseMvpActivity<IMainView, MainPresenter>
UserInfo userInfo = UserModel.get().getCacheLoginUserInfo();
if (userInfo != null) {
handleLinkedJump(this);
// if (userInfo.isShowLimitCharge() &&
// PmDialogShowMrg.get().isHasShow() &&
// DemoCache.readNewUserChargeGift() == 1) {
// StatisticManager.Instance().onEvent(StatisticsProtocol.EVENT_NUGIFT_POP_SHOW, getString(R.string.enjoy_the_popup_exposure));
// NewUserChargeGiftDialog.start(context);
// DemoCache.saveNewUserChargeGift(2);
// }
// checkShowAnchorCardView();
}
}
// private void checkShowAnchorCardView() {
// if (touchRunnable != null || !mResumed || AvRoomDataManager.get().mCurrentRoomInfo != null)
// return;
// int anchorCardViewType = DemoCache.readAnchorCardView();
// if (anchorCardViewType == 2) {
// if (CurrentTimeUtils.getCurrentTime() - DemoCache.readAnchorCardViewTime() > 15 * 60 * 1000) {
// touchRunnable = () -> {
// touchRunnable = null;
// homeViewModel.requestAnchorInfo();
// };
// mMainTabLayout.postDelayed(touchRunnable, 5000);
// }
// } else if (anchorCardViewType == 1 || DemoCache.readLaunchCount() == 1) {
// homeViewModel.requestAnchorInfo();
// }
// }
@Override
protected void onPause() {
super.onPause();
@@ -388,10 +347,10 @@ public class MainActivity extends BaseMvpActivity<IMainView, MainPresenter>
userLivingView.setColor(Color.WHITE);
mMainTabLayout.setOnTabClickListener(this);
anchorCardView = findViewById(R.id.vs_anchor_card);
mMainTabLayout.setDefaultTabType(mCurrentTabType);
}
private void updateDatas() {
mMainTabLayout.setDefaultTabType(mCurrentTabType);
handleNimIntent();
}
@@ -506,8 +465,6 @@ public class MainActivity extends BaseMvpActivity<IMainView, MainPresenter>
Log.i("checkLostUser", "onLogin");
//登录成功查询未读信息数量
mMainTabLayout.setUnReadDynamicCount(0);
int unreadCount = IMMessageManager.get().queryUnreadMsg();
mMainTabLayout.setMsgNum(unreadCount);
openCommunityNotice();
@@ -522,14 +479,14 @@ public class MainActivity extends BaseMvpActivity<IMainView, MainPresenter>
public void onLogout() {
Logger.e(TAG, "onLogout Success ~~~~");
getMvpPresenter().exitRoom();
LoginActivity.start(MainActivity.this);
LoginPasswordActivity.start(MainActivity.this);
PmDialogShowMrg.get().onLogout();
finish();
}
public void onNeedLogin() {
NimMiddleActivity.openCommunity = false;
LoginActivity.start(MainActivity.this);
LoginPasswordActivity.start(MainActivity.this);
}
@Subscribe(threadMode = ThreadMode.MAIN)
@@ -641,9 +598,19 @@ public class MainActivity extends BaseMvpActivity<IMainView, MainPresenter>
transaction.add(R.id.main_fragment, showFragment, null);
}
transaction.show(showFragment);
if (tempFragment != null) transaction.hide(tempFragment);
if (tempFragment != null) {
transaction.hide(tempFragment);
if (tempFragment instanceof MainTabContentView) {
((MainTabContentView) tempFragment).onVisibleStateChanged(false);
}
}
tempFragment = showFragment;
if (!isDestroyed()) transaction.commitNowAllowingStateLoss();
if (!isDestroyed()) {
transaction.commitNowAllowingStateLoss();
if (tempFragment instanceof MainTabContentView) {
((MainTabContentView) tempFragment).onVisibleStateChanged(true);
}
}
mCurrentTabType = tabType;
//每次点击我的都更新当前用户信息
@@ -655,9 +622,6 @@ public class MainActivity extends BaseMvpActivity<IMainView, MainPresenter>
case MainTabType.TAB_TYPE_HOME:
reportTabClick(IReportConstants.ELEVEN);
break;
case MainTabType.TAB_TYPE_SQUARE:
reportTabClick(IReportConstants.TWELVE);
break;
case MainTabType.TAB_TYPE_MSG:
reportTabClick(IReportConstants.THIRTEEN);
break;
@@ -676,7 +640,7 @@ public class MainActivity extends BaseMvpActivity<IMainView, MainPresenter>
//登录页展示时
HashMap<String, Object> map = new HashMap<>(3);
map.put(IReportConstants.HOMEPAGE_TYPE, type);
map.put(IReportConstants.MODULE, IReportConstants.PEKO_HOMEPAGE);
map.put(IReportConstants.MODULE, IReportConstants.MOLISTAR_HOMEPAGE);
ReportManager.get().reportEvent(IReportConstants.MODULE_HOMEPAGE_CLICK, map);
}
@@ -694,9 +658,6 @@ public class MainActivity extends BaseMvpActivity<IMainView, MainPresenter>
//青少年弹窗处理
PmDialogShowMrg.get().handle(new WeakReference<>(this));
//通知栏权限判断
NoticationsUiHelper.handle(this, getDialogManager());
handleChannelPageInfo();
checkProtocolUpdate();
@@ -847,16 +808,8 @@ public class MainActivity extends BaseMvpActivity<IMainView, MainPresenter>
}
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void onUnReadCount(UnReadCountEvent event) {
mMainTabLayout.setUnReadDynamicCount(event.getTotal());
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void SquarePublish(SquareTaskEvent event) {
if (getDialogManager() != null) {
PublishActivity.start(getDialogManager());
}
}
private void handlePmExitRoom() {

View File

@@ -0,0 +1,5 @@
package com.chwl.app
interface MainTabContentView {
fun onVisibleStateChanged(showOrHide: Boolean) {}
}

View File

@@ -12,7 +12,6 @@ import com.netease.nimlib.sdk.msg.constant.MsgTypeEnum;
import com.netease.nimlib.sdk.msg.model.IMMessage;
import com.chwl.app.avroom.activity.AVRoomActivity;
import com.chwl.app.base.BaseActivity;
import com.chwl.app.radish.signin.SignInActivity;
import com.chwl.app.ui.im.avtivity.NimP2PMessageActivity;
import com.chwl.app.ui.webview.CommonWebViewActivity;
import com.chwl.app.utils.PushMessageHandler;
@@ -106,11 +105,6 @@ public class NimMiddleActivity extends BaseActivity {
if (noticeAttachment.getUid() > 0) {
AVRoomActivity.start(this, noticeAttachment.getUid());
}
} else if (attachment instanceof OpenSignInAttachment) {
if (AuthModel.get().isImLogin()
&& !UIUtils.isTopActivity(this, SignInActivity.class.getSimpleName())) {
SignInActivity.start(this);
}
} else if (attachment.getFirst() == CustomAttachment.CUSTOM_MSG_RED_PACKAGE) {
if (attachment.getSecond() == CustomAttachment.CUSTOM_MSG_SUB_RED_PACKAGE_RECEIVE_ALL_DIAMOND) {
RedPackageAttachment redPackageAttachment = (RedPackageAttachment) attachment;

View File

@@ -10,7 +10,6 @@ import com.chwl.app.audio.SoundSignatureActivity;
import com.chwl.app.ui.login.AddUserInfoActivity;
import com.chwl.app.ui.login.ModifyInfoActivity;
import com.chwl.app.ui.setting.SettingActivity;
import com.chwl.app.ui.user.activity.EditUserLabelActivity;
import com.chwl.app.ui.user.activity.UserInfoActivity;
import com.chwl.app.ui.user.activity.UserInfoModifyActivity;
import com.chwl.app.ui.user.activity.UserModifyPhotosActivity;
@@ -108,12 +107,7 @@ public class UIHelper {
public static void showMonsterResult(Context context, String monsterId) {
CommonWebViewActivity.start(context, UriProvider.IM_SERVER_URL +
"/hiyoo/modules/monster/index.html?monsterId=" + monsterId);
}
public static void showLabelInfoAct(Activity mActivity, int requestCode) {
Intent intent = new Intent(mActivity, EditUserLabelActivity.class);
mActivity.startActivityForResult(intent, requestCode);
"/molistar/modules/monster/index.html?monsterId=" + monsterId);
}
/**
@@ -132,11 +126,11 @@ public class UIHelper {
*/
public static void showRecommendPosH5(Context context) {
String cardUrl = UriProvider.JAVA_WEB_URL +
"/hiyoo/modules/recommend-card/index.html";
"/molistar/modules/recommend-card/index.html";
CommonWebViewActivity.start(context, cardUrl);
}
public static void openContactUs(Context context) {
CommonWebViewActivity.start(context, UriProvider.IM_SERVER_URL + "/hiyoo/modules/contact/contact.html");
CommonWebViewActivity.start(context, UriProvider.IM_SERVER_URL + "/molistar/modules/contact/contact.html");
}
}

View File

@@ -5,6 +5,7 @@ import static com.chwl.core.im.custom.bean.CustomAttachment.CUSTOM_MSG_HEADER_TY
import android.annotation.SuppressLint;
import android.app.Application;
import android.content.Context;
import android.content.res.Configuration;
import android.graphics.Color;
import android.net.http.HttpResponseCache;
import android.os.Build;
@@ -12,12 +13,14 @@ import android.provider.Settings;
import android.text.TextUtils;
import android.util.Log;
import androidx.annotation.NonNull;
import androidx.core.util.Supplier;
import androidx.multidex.MultiDex;
import com.alibaba.android.arouter.launcher.ARouter;
import com.bumptech.glide.request.target.ViewTarget;
import com.chwl.app.support.IMUserInfoProvider;
import com.example.lib_utils.LanguageUtils;
import com.chwl.library.language.LanguageHelper;
import com.coorchice.library.utils.LogUtils;
import com.example.lib_utils.ServiceTime;
import com.hjq.toast.ToastUtils;
@@ -66,9 +69,7 @@ import com.chwl.core.interceptor.TimeSyncInterceptor;
import com.chwl.core.manager.IMMessageManager;
import com.chwl.core.manager.IMSystemMsgManager;
import com.chwl.core.market_verify.MarketVerifyModel;
import com.chwl.core.mentoring_relationship.model.MentoringRelationshipModel;
import com.chwl.core.pay.PayModel;
import com.chwl.core.public_chat_hall.model.PublicChatHallModel;
import com.chwl.core.radish.RadishModel;
import com.chwl.core.radish.signin.bean.ImNotice;
import com.chwl.core.room.face.DynamicFaceModel;
@@ -418,9 +419,9 @@ public class App extends BaseApp {
httpParams.put("deviceId", DeviceUuidFactory.getDeviceId(context));
httpParams.put("androidId", MD5Utils.getMD5String(Settings.Secure.getString(context.getContentResolver(), Settings.Secure.ANDROID_ID)));
httpParams.put("channel", AppMetaDataUtil.getChannelID());
httpParams.put("lang", LanguageUtils.INSTANCE.getSystemLanguage().toLanguageTag());
httpParams.put("lang", LanguageHelper.INSTANCE.getSystemLanguage().toLanguageTag());
RxNet.init(context)
.debug(Env.isDebug())
.debug(Env.isRealDebug())
.setBaseUrl(url)
.addInterceptors(new ParamsInterceptor(httpParams))
.addInterceptors(new NoParamsInterceptor())//注意:拦截器的添加顺序,请求的拦截顺序
@@ -480,11 +481,9 @@ public class App extends BaseApp {
ChannelModel.get();
MarketVerifyModel.get();
GiftModel.get();
PublicChatHallModel.get();
GiftModel.get().tryLoadGiftList();
// 模厅
HallDataManager.get().application();
// 师徒
MentoringRelationshipModel.get();
//全局处理
GlobalHandleManager.get().init();
@@ -527,11 +526,13 @@ public class App extends BaseApp {
BasicConfig.INSTANCE.setAppContext(this.getApplicationContext());
SharedPreferenceUtils.init(this);
ResUtil.init(this);
ResUtil.contextSupplier = () -> App.gStack.getTopContext();
LanguageHelper.INSTANCE.wrapContext(instance);
initOtherSDK();
initContext(this);
//首次启动事件
HashMap<String, Object> map = new HashMap<>(2);
map.put(IReportConstants.MODULE, IReportConstants.PEKO_ACTIVATE);
map.put(IReportConstants.MODULE, IReportConstants.MOLISTAR_ACTIVATE);
ReportManager.get().reportEvent(IReportConstants.ACTIVATE_FIRST, map);
}
@@ -555,6 +556,12 @@ public class App extends BaseApp {
MultiDex.install(base);
}
@Override
public void onConfigurationChanged(@NonNull Configuration newConfig) {
super.onConfigurationChanged(newConfig);
LanguageHelper.INSTANCE.wrapContext(this);
}
@Override
public void onTerminate() {
super.onTerminate();

View File

@@ -2,15 +2,11 @@ package com.chwl.app.application;
import android.app.Activity;
import com.chwl.app.upgrade.AppUpgradeHelper;
import com.trello.rxlifecycle3.components.support.RxAppCompatActivity;
import com.chwl.app.avroom.newuserchargegift.NewUserChargePrizeDialog;
import com.chwl.app.relation.cp.dialog.CpGlobalDialog;
import com.chwl.app.ui.widget.LevelUpDialog;
import com.chwl.app.ui.widget.RecallDialog;
import com.chwl.app.ui.widget.lottery_dialog.LotteryDialogManager;
import com.chwl.app.vip.dialog.VipUpgradeDialog;
import com.chwl.core.activity.bean.LotteryInfo;
import com.chwl.core.level.event.CharmLevelUpEvent;
import com.chwl.core.level.event.LevelUpEvent;
import com.chwl.core.manager.AvRoomDataManager;
@@ -55,14 +51,6 @@ public class GlobalHandleManager {
@Subscribe(threadMode = ThreadMode.MAIN)
public void onImPushUpdateAppEvent(ImPushUpdateAppEvent event) {
AppUpgradeHelper.checkAppUpgrade((RxAppCompatActivity) getActivity(), event.getInfo());
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void onReceiveLotteryActivity(LotteryInfo lotteryInfo) {
Activity activity = getActivity();
if (activity == null) return;
LotteryDialogManager.checkLotteryDialog(activity);
}
@Subscribe(threadMode = ThreadMode.MAIN)

View File

@@ -32,9 +32,9 @@ public interface IReportConstants {
int FIFTEEN = 15;
String ACTIVATE_FIRST = "activate_first";
String PEKO_ACTIVATE = "peko_activate";
String MOLISTAR_ACTIVATE = "molistar_activate";
String AGREEMENT_SHOW = "agreement_show";
String PEKO_LOGIN = "peko_login";
String MOLISTAR_LOGIN = "molistar_login";
String AGREEMENT_CLICK = "agreement_click";
String CLICK_TYPE = "click_type";
String PAGE = "page";
@@ -47,7 +47,7 @@ public interface IReportConstants {
String FAIL_DETAIL = "fail_detail";
String MODULE_HOMEPAGE_CLICK = "module_homepage_click";
String HOMEPAGE_TYPE = "homepage_type";
String PEKO_HOMEPAGE = "peko_homepage";
String MOLISTAR_HOMEPAGE = "molistar_homepage";
String TAB_HOMEPAGE_CLICK = "tab_homepage_click";
String HOMEPAGE_TAB = "homepage_tab";
String PAYPAGE_SHOW = "paypage_show";
@@ -55,6 +55,6 @@ public interface IReportConstants {
String ACCOUNT_BALANCE = "account_balance";
String PAY_CLICK = "pay_click";
String MONEY = "money";
String PEKO_PAY = "peko_pay";
String MOLISTAR_PAY = "molistar_pay";
}

View File

@@ -23,38 +23,8 @@ public class ReportManager implements IReportService {
}
public void init() {
// initFirebase();
// initAdjust();
}
/**
* 初始化Firebase相关库
*/
// private void initFirebase() {
// // FirebaseCrashlytics注册公共属性
// FirebaseCrashlytics.getInstance().setCustomKey(IReportConstants.CHANNEL, AppMetaDataUtil.getChannelID());
// // FirebaseAnalytics注册公共属性
// Bundle params = new Bundle();
// if (AuthModel.get().getCurrentUid() != 0) {
// params.putLong(IReportConstants.UID, AuthModel.get().getCurrentUid());
// }
// params.putString(IReportConstants.CHANNEL, AppMetaDataUtil.getChannelID());
// setFirebaseAnalyticsDefaultEventParameters(params);
// }
//Adjust初始化
// private void initAdjust() {
// String appToken = XChatConstants.ADJUST_APP_TOKEN;
// String environment;
// if (XChatApplication.isDebug()) {
// environment = AdjustConfig.ENVIRONMENT_SANDBOX;
// } else {
// environment = AdjustConfig.ENVIRONMENT_PRODUCTION;
// }
// AdjustConfig config = new AdjustConfig(XChatApplication.instance(), appToken, environment);
// config.setLogLevel(LogLevel.WARN);
// Adjust.onCreate(config);
// }
/**
* 设置FirebaseAnalytics公共属性
@@ -63,9 +33,6 @@ public class ReportManager implements IReportService {
*/
@Override
public void setFirebaseAnalyticsDefaultEventParameters(Bundle bundle) {
// if (bundle != null) {
// FirebaseAnalytics.getInstance(XChatApplication.instance()).setDefaultEventParameters(bundle);
// }
}
/**
@@ -86,30 +53,10 @@ public class ReportManager implements IReportService {
*/
@Override
public void reportEvent(String eventId, Map<String, Object> map) {
// try {
// Logger.i(TAG, "reportEvent: eventId=%s, map=%s", eventId, new Gson().toJson(map));
// Bundle bundle = null;
// if (map != null) {
// bundle = new Bundle();
// for (Map.Entry<String, Object> item : map.entrySet()) {
// String key = item.getKey();
// Object value = item.getValue();
// if (!TextUtils.isEmpty(key) && value != null) {
// bundle.putString(key, String.valueOf(value));
// }
// }
// }
// //所有事件都上报到Google Analytics
// FirebaseAnalytics.getInstance(XChatApplication.instance()).logEvent(eventId, bundle);
// } catch (Exception e) {
// Logger.e(TAG, "reportEvent", e);
// }
}
@Override
public void reportAdjustEvent(String eventId) {
// AdjustEvent adjustEvent = new AdjustEvent(eventId);
// Adjust.trackEvent(adjustEvent);
}

View File

@@ -13,7 +13,6 @@ import com.chwl.app.R;
import com.chwl.app.UIHelper;
import com.chwl.app.avroom.widget.ViewItem;
import com.chwl.app.common.widget.dialog.DialogManager;
import com.chwl.app.public_chat_hall.widget.ShutUpDialog;
import com.chwl.app.ui.im.avtivity.NimFriendModel;
import com.chwl.app.ui.im.avtivity.NimP2PMessageActivity;
import com.chwl.app.ui.widget.ButtonItem;
@@ -27,7 +26,6 @@ import com.chwl.core.initial.bean.InitInfo;
import com.chwl.core.kick.KickModel;
import com.chwl.core.manager.AvRoomDataManager;
import com.chwl.core.manager.IMNetEaseManager;
import com.chwl.core.public_chat_hall.manager.PublicChatHallDataManager;
import com.chwl.core.room.bean.RoomInfo;
import com.chwl.core.room.model.AvRoomModel;
import com.chwl.core.statistic.StatLogKey;
@@ -195,42 +193,6 @@ public class ButtonItemFactory {
return buttonItems;
}
/**
* 创建相关的buttons 添加到资料卡片
*
* @param context context
* @param uid uid or 云信account
* @param listener dialog的监听回调
* @return List<ViewItem>
*/
public static List<ViewItem> createPublicChatHallButtonItems(
Context context,
long uid,
boolean isInRoom,
GiftDialog.OnGiftDialogBtnClickListener listener) {
if (uid <= 0) return null;
String currentUid = String.valueOf(AuthModel.get().getCurrentUid());
String account = String.valueOf(uid);
//account和chatRoomMember 不会同时为空,如果同时为空,则是前面传参出错
boolean isMySelf = Objects.equals(currentUid, account);
if (isMySelf) {
return null;
}
List<ViewItem> buttonItems = new ArrayList<>();
//不在房间内,也不需要魔法
buttonItems.add(createSendGiftItem(context, uid, true, true, listener));
// 私聊
buttonItems.add(createPrivateChatItem(context, account, isInRoom));
//装扮和关注目前是都有的操作
//buttonItems.add(createSendDecorationItem(context, uid));
buttonItems.add(createAttentItem());
buttonItems.add(createFindMeItem());
if (PublicChatHallDataManager.get().isRoomAdmin()) {
buttonItems.add(createShutupItem(context, uid));
}
return buttonItems;
}
/**
* 踩TA当该人再房间中的时候进入他所在的房间
*
@@ -463,15 +425,6 @@ public class ButtonItemFactory {
});
}
/**
* 公聊大厅禁言
*/
public static ViewItem createShutupItem(Context context, long uid) {
return new ViewItem(ResUtil.getString(R.string.erban_avroom_buttonitemfactory_028), R.drawable.icon_shut_up, () -> {
new ShutUpDialog(context, uid).openDialog();
});
}
/**
* @param isInRoom true 在房间内弹起

View File

@@ -1,17 +1,13 @@
package com.chwl.app.avroom.activity;
import static android.view.View.VISIBLE;
import static com.chwl.core.im.custom.bean.CustomAttachment.CUSTOM_MSG_ALL_SERVICE_GIFT;
import static com.chwl.core.im.custom.bean.CustomAttachment.CUSTOM_MSG_BOX;
import static com.chwl.core.im.custom.bean.CustomAttachment.CUSTOM_MSG_FAIRY;
import static com.chwl.core.im.custom.bean.CustomAttachment.CUSTOM_MSG_HEADER_TYPE_GIFT;
import static com.chwl.core.im.custom.bean.CustomAttachment.CUSTOM_MSG_LUCKY_GIFT;
import static com.chwl.core.im.custom.bean.CustomAttachment.CUSTOM_MSG_LUCKY_GIFT_SERVER_ALL;
import static com.chwl.core.im.custom.bean.CustomAttachment.CUSTOM_MSG_LUCKY_GIFT_SERVER_NOTIFY;
import static com.chwl.core.im.custom.bean.CustomAttachment.CUSTOM_MSG_LUCKY_SEA;
import static com.chwl.core.im.custom.bean.CustomAttachment.CUSTOM_MSG_LUCKY_SEA_GIFT_SERVER_ALL;
import static com.chwl.core.im.custom.bean.CustomAttachment.CUSTOM_MSG_ROOM_PK;
import static com.chwl.core.im.custom.bean.CustomAttachment.CUSTOM_MSG_SUB_BOX_ALL_ROOM_NOTIFY_BY_SVGA;
import static com.chwl.core.im.custom.bean.CustomAttachment.CUSTOM_MSG_SUB_DRAW_GIFT_L5;
import static com.chwl.core.im.custom.bean.CustomAttachment.CUSTOM_MSG_SUB_ROOM_PK_NOTIFY;
@@ -44,7 +40,9 @@ import androidx.viewpager2.widget.ViewPager2;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.chwl.app.notify.RoomNotifyManager;
import com.chwl.core.monsterhunting.bean.MonsterDataBean;
import com.chwl.core.support.room.RoomWidget;
import com.netease.nim.uikit.StatusBarUtil;
import com.netease.nimlib.sdk.NIMSDK;
import com.netease.nimlib.sdk.Observer;
@@ -57,18 +55,15 @@ import com.opensource.svgaplayer.SVGAImageView;
import com.opensource.svgaplayer.SVGAParser;
import com.opensource.svgaplayer.SVGAVideoEntity;
import com.orhanobut.logger.Logger;
import com.trello.rxlifecycle3.android.ActivityEvent;
import com.chwl.app.R;
import com.chwl.app.avroom.dialog.NewUserGiftDialog;
import com.chwl.app.avroom.dialog.SingleRoomTipDialog;
import com.chwl.app.avroom.firstcharge.FirstChargeDialog;
import com.chwl.app.avroom.fragment.FakeSingleRoomBackFragment;
import com.chwl.app.avroom.fragment.FakeSingleRoomFragment;
import com.chwl.app.avroom.fragment.HomePartyFragment;
import com.chwl.app.avroom.fragment.InputPwdDialogFragment;
import com.chwl.app.avroom.presenter.AvRoomPresenter;
import com.chwl.app.avroom.presenter.HomePartyPresenter;
import com.chwl.app.avroom.redpackage.RedPackageHandler;
import com.chwl.app.avroom.view.IAvRoomView;
import com.chwl.app.avroom.widget.VerticalViewPagerAdapter;
import com.chwl.app.base.BaseMvpActivity;
@@ -81,12 +76,10 @@ import com.chwl.app.ui.patriarch.help.LimitEnterRoomHelper;
import com.chwl.app.ui.user.activity.UserInfoActivity;
import com.chwl.app.ui.utils.ImageLoadUtils;
import com.chwl.app.ui.webview.CommonWebViewActivity;
import com.chwl.app.ui.webview.DialogWebViewActivity;
import com.chwl.app.ui.widget.NobleOpenNoticeView;
import com.chwl.app.ui.widget.dialog.AllServiceGiftLevelDialog;
import com.chwl.app.ui.widget.dialog.MonsterDialog;
import com.chwl.app.utils.UserUtils;
import com.chwl.app.room_chat.activity.RoomMsgActivity;
import com.chwl.core.Constants;
import com.chwl.core.DemoCache;
import com.chwl.core.auth.AuthModel;
@@ -100,8 +93,6 @@ import com.chwl.core.im.custom.bean.CustomAttachment;
import com.chwl.core.im.custom.bean.FairyMsgAttachment;
import com.chwl.core.im.custom.bean.NotifyH5Attachment;
import com.chwl.core.im.custom.bean.NotifyH5Info;
import com.chwl.core.im.custom.bean.RoomBoxPrizeAttachment;
import com.chwl.core.im.custom.bean.RoomBoxPrizeInfo;
import com.chwl.core.im.custom.bean.RoomLuckySeaAttachment;
import com.chwl.core.im.custom.bean.RoomLuckySeaMsgBean;
import com.chwl.core.im.custom.bean.RoomPKAttachment;
@@ -117,7 +108,6 @@ import com.chwl.core.module_hall.hall.HallModel;
import com.chwl.core.module_hall.hall.bean.SuperAdminInfo;
import com.chwl.core.monsterhunting.bean.MonsterHuntingResult;
import com.chwl.core.monsterhunting.bean.MonsterInfo;
import com.chwl.core.monsterhunting.bean.MonsterProtocol;
import com.chwl.core.monsterhunting.manager.MonsterDataManager;
import com.chwl.core.noble.bean.AllServiceGiftProtocol;
import com.chwl.core.noble.bean.NobleInfo;
@@ -142,7 +132,6 @@ import com.chwl.core.support.room.RoomContext;
import com.chwl.core.support.room.RoomView;
import com.chwl.core.treasurefairy.bean.FairyMsgInfoBean;
import com.chwl.core.user.UserModel;
import com.chwl.core.user.bean.FirstChargeInfo;
import com.chwl.core.user.bean.UserInfo;
import com.chwl.core.utils.LogUtils;
import com.chwl.core.utils.StringFormatUtils;
@@ -160,13 +149,12 @@ import java.lang.ref.WeakReference;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.LinkedList;
import java.util.Objects;
import java.util.concurrent.TimeUnit;
import io.reactivex.Single;
import io.reactivex.SingleObserver;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.Disposable;
import kotlin.Unit;
import kotlin.jvm.functions.Function1;
/**
@@ -229,6 +217,8 @@ public class AVRoomActivity extends BaseMvpActivity<IAvRoomView, AvRoomPresenter
// 是否禁用VP滑动true不允许滑动false某些条件下可以滑动
private boolean viewPagerInputDisable;
private RoomNotifyManager roomNotify;
public static void start(Context context, long roomUid) {
startForFromType(context, roomUid, FROM_TYPE_NORMAL, null, null);
}
@@ -507,6 +497,17 @@ public class AVRoomActivity extends BaseMvpActivity<IAvRoomView, AvRoomPresenter
}
});
roomNotify = new RoomNotifyManager(this);
roomNotify.setOnShowUserCard(new Function1<String, Unit>() {
@Override
public Unit invoke(String s) {
if (mCurrentFragment != null) {
mCurrentFragment.showUserCardDialog(s);
}
return null;
}
});
roomNotify.start();
}
@Override
@@ -690,11 +691,6 @@ public class AVRoomActivity extends BaseMvpActivity<IAvRoomView, AvRoomPresenter
if (roomContext != null) {
roomContext.onViewAttach(this);
}
/**
* 每次View重新创建意味着可能在房间外点了红包就重新尝试加载红包并展示
*/
tryShowSourceRedPackage();
}
private void showLiveFinishView(long uid) {
@@ -731,23 +727,6 @@ public class AVRoomActivity extends BaseMvpActivity<IAvRoomView, AvRoomPresenter
AvRoomDataManager.get().release();
}
/**
* 尝试展示来源红包(在房间外点击红包入口进入房间时)
*/
private void tryShowSourceRedPackage() {
try {
if (redPackageNotifyInfo != null) {
RedPackageHandler handler = getRoomContext().findAbility(RedPackageHandler.class.getSimpleName());
if (handler != null) {
long id = Long.parseLong(redPackageNotifyInfo.getRedEnvelopeId());
handler.tryShowRedPackage(id);
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
private void dismissRedPackageDialog() {
if (mCurrentFragment != null) {
mCurrentFragment.dismissSendRedPackageDialog();
@@ -1194,56 +1173,56 @@ public class AVRoomActivity extends BaseMvpActivity<IAvRoomView, AvRoomPresenter
if (baseProtocol == null) return;
if (!isValid()) return;
switch (baseProtocol.getFirst()) {
case CUSTOM_MSG_HEADER_TYPE_GIFT:
if (giftList == null) {
giftList = new LinkedList<>();
}
int second2 = baseProtocol.getSecond();
AllServiceGiftProtocol.DataBean data = JSON.parseObject(String.valueOf(baseProtocol.getData()), AllServiceGiftProtocol.DataBean.class);
if (data == null || (data.getGiftUrl()) == null)
return;
giftList.add(data);
if (second2 == CUSTOM_MSG_ALL_SERVICE_GIFT) {
if (giftDialog != null && giftDialog.isShowing()) {
// 如果当前以及有礼物弹窗在展示,则需要等到他 dismiss 后再显示下一个
AllServiceGiftProtocol.DataBean dataBean = giftList.peekFirst();
if (dataBean != null) {
return;
} else {
giftDialog.dismiss();
}
} else {
showGiftDialog();
}
}
break;
case CUSTOM_MSG_BOX://寻爱之旅
if (baseProtocol.getSecond() == CUSTOM_MSG_SUB_BOX_ALL_ROOM_NOTIFY_BY_SVGA) {
RoomBoxPrizeAttachment roomBoxPrizeAttachment = new RoomBoxPrizeAttachment(CUSTOM_MSG_BOX, CUSTOM_MSG_SUB_BOX_ALL_ROOM_NOTIFY_BY_SVGA);
RoomBoxPrizeInfo roomBoxPrizeBean = JSON.parseObject(String.valueOf(baseProtocol.getData()), RoomBoxPrizeInfo.class);
roomBoxPrizeAttachment.setUid(roomBoxPrizeBean.getUid());
roomBoxPrizeAttachment.setPrizeName(roomBoxPrizeBean.getPrizeName());
roomBoxPrizeAttachment.setNick(roomBoxPrizeBean.getNick());
roomBoxPrizeAttachment.setBoxTypeStr(roomBoxPrizeBean.getBoxTypeStr());
roomBoxPrizeAttachment.setRoomUid(roomBoxPrizeBean.getRoomUid());
roomBoxPrizeAttachment.setPrizeNum(roomBoxPrizeBean.getPrizeNum());
roomBoxPrizeAttachment.setUserLevelLimit(roomBoxPrizeBean.getUserLevelLimit());
if (AvRoomDataManager.get().isOpenPureMode()) {
// 純凈模式打開後,僅能看跟自己相關的砸蛋消息
if (Objects.equals(roomBoxPrizeAttachment.getUid(), AuthModel.get().getCurrentUid())) {
ChatRoomMessage message = ChatRoomMessageBuilder.createChatRoomCustomMessage(String.valueOf(AvRoomDataManager.get().getRoomId()), roomBoxPrizeAttachment);
IMNetEaseManager.get().addMessages(message);
}
} else {
ChatRoomMessage message = ChatRoomMessageBuilder.createChatRoomCustomMessage(String.valueOf(AvRoomDataManager.get().getRoomId()), roomBoxPrizeAttachment);
IMNetEaseManager.get().addMessages(message);
IMNetEaseManager.get().getChatRoomEventObservable()
.onNext(new RoomEvent()
.setEvent(RoomEvent.BOX_NOTIFY_SVGA)
.setChatRoomMessage(message));
}
}
break;
// case CUSTOM_MSG_HEADER_TYPE_GIFT:
// if (giftList == null) {
// giftList = new LinkedList<>();
// }
// int second2 = baseProtocol.getSecond();
// AllServiceGiftProtocol.DataBean data = JSON.parseObject(String.valueOf(baseProtocol.getData()), AllServiceGiftProtocol.DataBean.class);
// if (data == null || (data.getGiftUrl()) == null)
// return;
// giftList.add(data);
// if (second2 == CUSTOM_MSG_ALL_SERVICE_GIFT) {
// if (giftDialog != null && giftDialog.isShowing()) {
// // 如果当前以及有礼物弹窗在展示,则需要等到他 dismiss 后再显示下一个
// AllServiceGiftProtocol.DataBean dataBean = giftList.peekFirst();
// if (dataBean != null) {
// return;
// } else {
// giftDialog.dismiss();
// }
// } else {
// showGiftDialog();
// }
// }
// break;
// case CUSTOM_MSG_BOX://寻爱之旅
// if (baseProtocol.getSecond() == CUSTOM_MSG_SUB_BOX_ALL_ROOM_NOTIFY_BY_SVGA) {
// RoomBoxPrizeAttachment roomBoxPrizeAttachment = new RoomBoxPrizeAttachment(CUSTOM_MSG_BOX, CUSTOM_MSG_SUB_BOX_ALL_ROOM_NOTIFY_BY_SVGA);
// RoomBoxPrizeInfo roomBoxPrizeBean = JSON.parseObject(String.valueOf(baseProtocol.getData()), RoomBoxPrizeInfo.class);
// roomBoxPrizeAttachment.setUid(roomBoxPrizeBean.getUid());
// roomBoxPrizeAttachment.setPrizeName(roomBoxPrizeBean.getPrizeName());
// roomBoxPrizeAttachment.setNick(roomBoxPrizeBean.getNick());
// roomBoxPrizeAttachment.setBoxTypeStr(roomBoxPrizeBean.getBoxTypeStr());
// roomBoxPrizeAttachment.setRoomUid(roomBoxPrizeBean.getRoomUid());
// roomBoxPrizeAttachment.setPrizeNum(roomBoxPrizeBean.getPrizeNum());
// roomBoxPrizeAttachment.setUserLevelLimit(roomBoxPrizeBean.getUserLevelLimit());
// if (AvRoomDataManager.get().isOpenPureMode()) {
// // 純凈模式打開後,僅能看跟自己相關的砸蛋消息
// if (Objects.equals(roomBoxPrizeAttachment.getUid(), AuthModel.get().getCurrentUid())) {
// ChatRoomMessage message = ChatRoomMessageBuilder.createChatRoomCustomMessage(String.valueOf(AvRoomDataManager.get().getRoomId()), roomBoxPrizeAttachment);
// IMNetEaseManager.get().addMessages(message);
// }
// } else {
// ChatRoomMessage message = ChatRoomMessageBuilder.createChatRoomCustomMessage(String.valueOf(AvRoomDataManager.get().getRoomId()), roomBoxPrizeAttachment);
// IMNetEaseManager.get().addMessages(message);
// IMNetEaseManager.get().getChatRoomEventObservable()
// .onNext(new RoomEvent()
// .setEvent(RoomEvent.BOX_NOTIFY_SVGA)
// .setChatRoomMessage(message));
// }
// }
// break;
case CustomAttachment.CUSTOM_MESS_TAROT:
if (baseProtocol.getSecond() == CustomAttachment.CUSTOM_MESS_TAROT_SENIOR_PRIZE_WINNING) {
TarotMsgBean tarotMsgBean = JSON.parseObject(String.valueOf(baseProtocol.getData()), TarotMsgBean.class);
@@ -1286,7 +1265,7 @@ public class AVRoomActivity extends BaseMvpActivity<IAvRoomView, AvRoomPresenter
RoomReceivedLuckyGiftAttachment attachment = new RoomReceivedLuckyGiftAttachment(CUSTOM_MSG_LUCKY_GIFT_SERVER_NOTIFY);
attachment.setLuckyBagNoticeInfo(JSON.parseObject(String.valueOf(baseProtocol.getData()), LuckyBagNoticeInfo.class));
ChatRoomMessage message = ChatRoomMessageBuilder.createChatRoomCustomMessage(String.valueOf(AvRoomDataManager.get().getRoomId()), attachment);
IMNetEaseManager.get().noticeServiceLuckyBagNotice(message);
// IMNetEaseManager.get().noticeServiceLuckyBagNotice(message);
IMNetEaseManager.get().addMessages(message);
}
break;
@@ -1363,22 +1342,6 @@ public class AVRoomActivity extends BaseMvpActivity<IAvRoomView, AvRoomPresenter
new NewUserGiftDialog(giftInfo).show(this);
}
@Override
public void showFirstChargeDialog(FirstChargeInfo firstChargeInfo) {
Single.timer(firstChargeInfo.getShowAfterSecond() * 1000L, TimeUnit.MILLISECONDS, AndroidSchedulers.mainThread())
.compose(bindUntilEvent(ActivityEvent.DESTROY))
.doOnSuccess(aLong -> {
if (!DemoCache.readBoolean("FirstCharge", false) &&
(UIUtils.isTopActivity(AVRoomActivity.this)
// || UIUtils.isTopActivity(this, TreasureBoxActivity.class.getName())
|| UIUtils.isTopActivity(this, DialogWebViewActivity.class.getName())
|| UIUtils.isTopActivity(this, RoomMsgActivity.class.getName()))) {
FirstChargeDialog.start(this);
}
})
.subscribe();
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void onImPushMsgPmLimitTimeEvent(ImPushMsgPmLimitTimeEvent event) {
//时间到限制时间段之后后台推送im消息
@@ -1403,6 +1366,12 @@ public class AVRoomActivity extends BaseMvpActivity<IAvRoomView, AvRoomPresenter
return this;
}
@Nullable
@Override
public RoomWidget findWidget(@NonNull String name) {
return null;
}
private static class GiftBroadcastObserver implements Observer<BroadcastMessage> {
private WeakReference<AVRoomActivity> mReference;
@@ -1422,14 +1391,14 @@ public class AVRoomActivity extends BaseMvpActivity<IAvRoomView, AvRoomPresenter
JSONObject jsonObject;
try {
jsonObject = JSON.parseObject(contentStr);
if (jsonObject == null) return;
if (jsonObject.containsKey("body")) {
String body = jsonObject.getString("body");
if (TextUtils.isEmpty(body)) return;
activity.onReceivedGiftBroadcastMessage(body);
}
} catch (Exception e) {
jsonObject = null;
}
if (jsonObject == null) return;
if (jsonObject.containsKey("body")) {
String body = jsonObject.getString("body");
if (TextUtils.isEmpty(body)) return;
activity.onReceivedGiftBroadcastMessage(body);
e.printStackTrace();
}
}
}

View File

@@ -1,146 +0,0 @@
package com.chwl.app.avroom.activity;
import android.view.View;
import com.chwl.app.R;
import com.chwl.app.avroom.fragment.InviteFriendListFragment;
import com.chwl.app.base.BaseBindingActivity;
import com.chwl.app.databinding.ActivityCpRoomInviteBinding;
import com.chwl.app.public_chat_hall.event.AitFriendEvent;
import com.chwl.core.auth.AuthModel;
import com.chwl.core.manager.AvRoomDataManager;
import com.chwl.core.manager.IMNetEaseManager;
import com.chwl.core.room.bean.RoomInfo;
import com.chwl.core.room.model.RoomSettingModel;
import com.chwl.core.share.bean.SessionType;
import com.chwl.core.utils.net.DontWarnObserver;
import com.chwl.library.annatation.ActLayoutRes;
import com.chwl.library.utils.ResUtil;
import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode;
import java.util.ArrayList;
import java.util.List;
import io.reactivex.Single;
import io.reactivex.SingleSource;
import io.reactivex.functions.Function;
@ActLayoutRes(R.layout.activity_cp_room_invite)
public class CpRoomInviteActivity extends BaseBindingActivity<ActivityCpRoomInviteBinding> {
private List<String> uids = new ArrayList<>();
private List<String> userNames = new ArrayList<>();
@Override
protected void onDestroy() {
super.onDestroy();
EventBus.getDefault().unregister(this);
}
@Override
protected void init() {
EventBus.getDefault().register(this);
initTitleBar(ResUtil.getString(R.string.avroom_activity_cproominviteactivity_01));
getSupportFragmentManager().beginTransaction().add(R.id.content, new InviteFriendListFragment(), null).commitAllowingStateLoss();
mBinding.tvInvite.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (AvRoomDataManager.get().mCurrentRoomInfo == null) return;
if (uids.size() == 0) {
toast(ResUtil.getString(R.string.avroom_activity_cproominviteactivity_02));
return;
}
String uid = "";
for (int i = 0; i < uids.size(); i++) {
String targetUid = uids.get(i);
String nick = userNames.get(i);
uid += uids.get(i) + ",";
int sessionType = SessionType.P2P;
IMNetEaseManager.get().sendSharingRoomMessage(sessionType, targetUid);
}
RoomSettingModel model = new RoomSettingModel();
model.invite(AvRoomDataManager.get().mCurrentRoomInfo.getUid(), uid)
.flatMap((Function<String, SingleSource<RoomInfo>>) s -> updateRoomInfo("", RoomInfo.IS_INVITE))
.subscribe(new DontWarnObserver<RoomInfo>() {
@Override
public void accept(RoomInfo roomInfo, String error) {
super.accept(roomInfo, error);
if (error != null) {
toast(error);
} else {
toast(ResUtil.getString(R.string.avroom_activity_cproominviteactivity_03));
finish();
}
}
});
}
});
}
private Single<RoomInfo> updateRoomInfo(String encryptPwd, String limitType) {
RoomInfo roomInfo = AvRoomDataManager.get().mCurrentRoomInfo;
if (roomInfo == null) {
return Single.error(new Throwable(ResUtil.getString(R.string.avroom_activity_cproominviteactivity_04)));
}
//更新房间接口调用成功后会发事件RoomEvent.ROOM_INFO_UPDATE
RoomSettingModel model = new RoomSettingModel();
if (AvRoomDataManager.get().isRoomOwner()) {
return model.updateRoomInfo(roomInfo.title,
roomInfo.getRoomDesc(),
roomInfo.getIntroduction(),
encryptPwd,
roomInfo.getRoomTag(),
roomInfo.tagId,
AuthModel.get().getCurrentUid(),
AuthModel.get().getTicket(),
roomInfo.isHasAnimationEffect(),
roomInfo.getAudioQuality(),
limitType,
roomInfo.isPureMode(),
roomInfo.getType(),
roomInfo.getMgId());
} else {
return model.updateByAdmin(roomInfo.getUid(), roomInfo.title,
roomInfo.getRoomDesc(),
roomInfo.getIntroduction(),
encryptPwd,
roomInfo.getRoomTag(),
roomInfo.tagId,
AuthModel.get().getCurrentUid(),
AuthModel.get().getTicket(),
roomInfo.isHasAnimationEffect(),
roomInfo.getAudioQuality(),
roomInfo.isPureMode());
}
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void countingAitFriends(AitFriendEvent event) {
switch (event.getType()) {
case AitFriendEvent.TYPE_ADD:
if (uids.size() == 20) {
toast(ResUtil.getString(R.string.avroom_activity_cproominviteactivity_05));
return;
}
if (!uids.contains(event.getUid())) {
uids.add(event.getUid());
userNames.add(event.getNick());
}
break;
case AitFriendEvent.TYTPE_REMOVE:
if (uids.contains(event.getUid())) {
uids.remove(event.getUid());
userNames.remove(event.getNick());
}
break;
}
initTitleBar(ResUtil.getString(R.string.avroom_activity_cproominviteactivity_06) + uids.size() + "/20)");
}
}

View File

@@ -7,6 +7,7 @@ import android.text.TextUtils;
import androidx.fragment.app.FragmentActivity;
import androidx.recyclerview.widget.RecyclerView;
import com.chwl.core.room.bean.RoomOnlineUserBean;
import com.netease.nim.uikit.StatusBarUtil;
import com.netease.nim.uikit.common.util.sys.NetworkUtil;
import com.netease.nimlib.sdk.chatroom.model.ChatRoomMember;
@@ -20,7 +21,6 @@ import com.chwl.app.avroom.view.IRoomInviteView;
import com.chwl.app.base.BaseMvpActivity;
import com.chwl.core.Constants;
import com.chwl.core.noble.NobleResourceType;
import com.chwl.core.room.bean.OnlineChatMember;
import com.chwl.core.user.bean.UserInfo;
import com.chwl.library.base.factory.CreatePresenter;
import com.chwl.library.utils.ListUtils;
@@ -106,8 +106,9 @@ public class RoomInviteActivity extends BaseMvpActivity<IRoomInviteView, RoomInv
getMvpPresenter().requestChatMemberByPage(mPage, time, onlyManager);
}
@Override
public void onRequestChatMemberByPageSuccess(List<OnlineChatMember> memberList, int page) {
public void onRequestRoomOnlineListSuccess(List<RoomOnlineUserBean> memberList) {
}

View File

@@ -7,8 +7,10 @@ import android.view.View;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentStatePagerAdapter;
import androidx.viewpager.widget.ViewPager;
import androidx.viewpager2.widget.ViewPager2;
import com.chwl.app.R;
import com.chwl.app.avroom.adapter.CommonVPAdapter;
import com.chwl.app.avroom.fragment.RoomCharmListFragment;
import com.chwl.app.avroom.fragment.RoomContributeListFragment;
import com.chwl.app.base.BaseBindingActivity;
@@ -39,18 +41,8 @@ public class RoomRankListActivity extends BaseBindingActivity<ActivityRoomRankLi
List<Fragment> list = new ArrayList<>();
list.add(RoomCharmListFragment.newInstance());
list.add(new RoomContributeListFragment());
mBinding.viewPager.setAdapter(new FragmentStatePagerAdapter(getSupportFragmentManager()) {
@Override
public Fragment getItem(int position) {
return list.get(position);
}
@Override
public int getCount() {
return list.size();
}
});
mBinding.viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
mBinding.viewPager.setAdapter(new CommonVPAdapter(getSupportFragmentManager(),getLifecycle(),list));
mBinding.viewPager.registerOnPageChangeCallback(new ViewPager2.OnPageChangeCallback(){
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

View File

@@ -1,134 +0,0 @@
package com.chwl.app.avroom.adapter;
import android.app.Activity;
import android.text.TextUtils;
import android.view.View;
import android.widget.CheckBox;
import androidx.appcompat.widget.AppCompatImageView;
import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.BaseViewHolder;
import com.chwl.app.R;
import com.chwl.app.public_chat_hall.bean.PublicChatHallFriendInfo;
import com.chwl.app.public_chat_hall.event.AitFriendEvent;
import com.chwl.app.ui.utils.ImageLoadUtils;
import com.chwl.app.ui.widget.NobleAvatarView;
import com.chwl.core.noble.NobleUtil;
import com.chwl.core.user.bean.UserInfo;
import com.chwl.library.utils.ResUtil;
import com.chwl.library.utils.SingleToastUtil;
import org.greenrobot.eventbus.EventBus;
public class InviteFriendListAdapter extends BaseQuickAdapter<PublicChatHallFriendInfo, BaseViewHolder> {
private Activity context;
public InviteFriendListAdapter(Activity context) {
super(R.layout.item_public_chat_hall_friend_list);
this.context = context;
}
private OnItemClickListener onItemClickListener;
public interface OnItemClickListener {
void sendListener(UserInfo attentionInfo);
}
public void setRylListener(OnItemClickListener onClickListener) {
onItemClickListener = onClickListener;
}
@Override
protected void convert(BaseViewHolder helper, PublicChatHallFriendInfo pchFriendInfo) {
if (pchFriendInfo == null) return;
final UserInfo item = pchFriendInfo.getUserInfo();
CheckBox cbFriend = helper.getView(R.id.cb_friend);
helper.setText(R.id.tv_userName, item.getNick())
.setText(R.id.tv_user_desc, item.getUserDesc() != null ?
item.getUserDesc()
: helper.itemView.getContext().getResources().getString(R.string.msg_no_user_desc))
.setVisible(R.id.view_line, helper.getLayoutPosition() != getItemCount() - 1)
;
NobleAvatarView nobleAvatarView = helper.getView(R.id.noble_avatar_view);
nobleAvatarView.setSize(47, 70, 13);
nobleAvatarView.setData(item.getAvatar(), item.getNobleUsers());
AppCompatImageView ivGender = helper.getView(R.id.iv_gender);
if (item.getGender() == 1) {
ivGender.setImageResource(R.drawable.ic_gender_male);
} else {
ivGender.setImageResource(R.drawable.ic_gender_female);
}
AppCompatImageView ivNobleLevel = helper.getView(R.id.iv_noble_level);
if (item.getNobleUsers() != null) {
ivNobleLevel.setVisibility(View.VISIBLE);
String badgeByLevel = NobleUtil.getBadgeByLevel(item.getNobleUsers().getLevel());
if (!TextUtils.isEmpty(badgeByLevel)) {
NobleUtil.loadResource(badgeByLevel, ivNobleLevel);
} else {
ivNobleLevel.setVisibility(View.GONE);
}
} else {
ivNobleLevel.setVisibility(View.GONE);
}
AppCompatImageView ivUserLevel = helper.getView(R.id.iv_user_level);
ivUserLevel.setVisibility(View.GONE);
if (item.getUserLevelVo() != null && !TextUtils.isEmpty(item.getUserLevelVo().getExperUrl())) {
ivUserLevel.setVisibility(View.VISIBLE);
ImageLoadUtils.loadImage(mContext, item.getUserLevelVo().getExperUrl(), ivUserLevel);
}
AppCompatImageView ivCharmLevel = helper.getView(R.id.iv_charm_level);
ivCharmLevel.setVisibility(View.GONE);
if (item.getUserLevelVo() != null && !TextUtils.isEmpty(item.getUserLevelVo().getCharmUrl())) {
ivCharmLevel.setVisibility(View.VISIBLE);
ImageLoadUtils.loadImage(mContext, item.getUserLevelVo().getCharmUrl(), ivCharmLevel);
}
cbFriend.setChecked(pchFriendInfo.isSelected());
// cbFriend.setOnClickListener(new View.OnClickListener() {
// @Override
// public void onClick(View v) {
// onSelect(cbFriend, pchFriendInfo, item);
// }
// });
// cbFriend.setOnCheckedChangeListener((buttonView, isChecked) -> {
//
// });
helper.getView(R.id.container).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
onSelect(cbFriend, pchFriendInfo, item);
}
});
}
private void onSelect(CheckBox cbFriend, PublicChatHallFriendInfo pchFriendInfo, UserInfo item) {
int count = 0;
for (PublicChatHallFriendInfo publicChatHallFriendInfo : getData()) {
if (publicChatHallFriendInfo.isSelected()) {
count++;
}
}
if (count == 20 && !pchFriendInfo.isSelected()) {
SingleToastUtil.showToast(ResUtil.getString(R.string.avroom_adapter_invitefriendlistadapter_01));
return;
}
cbFriend.setChecked(!cbFriend.isChecked());
pchFriendInfo.setSelected(!pchFriendInfo.isSelected());
EventBus.getDefault().post(new AitFriendEvent()
.setType(pchFriendInfo.isSelected() ? AitFriendEvent.TYPE_ADD : AitFriendEvent.TYTPE_REMOVE)
.setUid(String.valueOf(item.getUid()))
.setNick(item.getNick()));
}
}

View File

@@ -12,6 +12,9 @@ import androidx.recyclerview.widget.RecyclerView;
import com.chad.library.adapter.base.BaseMultiItemQuickAdapter;
import com.chad.library.adapter.base.BaseViewHolder;
import com.chwl.app.utils.NamePlateHelper;
import com.chwl.core.level.UserLevelVo;
import com.chwl.core.room.bean.RoomOnlineUserBean;
import com.netease.nim.uikit.impl.cache.NimUserInfoCache;
import com.netease.nimlib.sdk.RequestCallbackWrapper;
import com.netease.nimlib.sdk.uinfo.constant.GenderEnum;
@@ -41,19 +44,16 @@ import io.reactivex.disposables.Disposable;
* @author Administrator
* @date 2017/12/4
*/
public class OnlineUserAdapter extends BaseMultiItemQuickAdapter<OnlineChatMember, BaseViewHolder> {
public class OnlineUserAdapter extends BaseMultiItemQuickAdapter<RoomOnlineUserBean, BaseViewHolder> {
private boolean mIsHomeParty;
private Disposable mDisposable;
private Context context;
private OnRoomOnlineNumberChangeListener mListener;
public OnlineUserAdapter(Context context, boolean isHomeParty) {
super(null);
addItemType(OnlineChatMember.NORMAL, R.layout.list_item_online_user);
addItemType(OnlineChatMember.NOBLE, R.layout.list_item_online_user_mystery);
addItemType(RoomOnlineUserBean.NORMAL, R.layout.list_item_online_user);
addItemType(RoomOnlineUserBean.NOBLE, R.layout.list_item_online_user_mystery);
mIsHomeParty = isHomeParty;
this.context = context;
}
@Override
@@ -63,147 +63,76 @@ public class OnlineUserAdapter extends BaseMultiItemQuickAdapter<OnlineChatMembe
}
@Override
protected void convert(@NonNull BaseViewHolder baseViewHolder, OnlineChatMember onlineChatMember) {
if (onlineChatMember != null && onlineChatMember.chatRoomMember != null) {
if (onlineChatMember.getItemType() == OnlineChatMember.NORMAL) {
setNormalData(baseViewHolder, onlineChatMember);
} else {
setMysteryData();
}
protected void convert(@NonNull BaseViewHolder helper, RoomOnlineUserBean item) {
if (item.getItemType() == OnlineChatMember.NOBLE) {
return;
}
// 性别
final ImageView sexImage = helper.getView(R.id.sex);
if (item.getGender() == 1) {
sexImage.setVisibility(View.VISIBLE);
sexImage.setImageResource(R.drawable.ic_gender_male);
} else if (item.getGender() == 2) {
sexImage.setVisibility(View.VISIBLE);
sexImage.setImageResource(R.drawable.ic_gender_female);
} else {
sexImage.setVisibility(View.GONE);
}
}
private void setMysteryData() {
//do nothing
}
// 昵称
helper.setText(R.id.nick, RegexUtil.getPrintableString(item.getNick()));
private void setNormalData(BaseViewHolder baseViewHolder, OnlineChatMember onlineChatMember) {
setSexData(baseViewHolder, onlineChatMember);
ImageView roomOnlineTag = baseViewHolder.getView(R.id.room_online_tag);
ImageView managerLogo = baseViewHolder.getView(R.id.manager_logo);
roomOnlineTag.setVisibility(onlineChatMember.isOnMic ? View.VISIBLE : View.GONE);
managerLogo.setVisibility((onlineChatMember.isAdmin || onlineChatMember.isRoomOwer)
? View.VISIBLE : View.GONE);
managerLogo.setImageResource(onlineChatMember.isAdmin ? R.drawable.icon_admin_logo
: R.drawable.icon_user_list_room_ownner);
baseViewHolder.setText(R.id.nick, RegexUtil.getPrintableString(onlineChatMember.chatRoomMember.getNick()));
NobleAvatarView nobleAvatarView = baseViewHolder.getView(R.id.noble_avatar_view);
// 头像
NobleAvatarView nobleAvatarView = helper.getView(R.id.noble_avatar_view);
nobleAvatarView.setSize(37, 54, 0);
nobleAvatarView.setData(onlineChatMember.chatRoomMember);
nobleAvatarView.setData(item);
// 官字
baseViewHolder.getView(R.id.iv_user_official).setVisibility(onlineChatMember.isOfficial() ? View.VISIBLE : View.GONE);
helper.getView(R.id.iv_user_official).setVisibility(item.isOfficial() ? View.VISIBLE : View.GONE);
// 管理
ImageView ivManager = helper.getView(R.id.manager_logo);
if (item.getMemberType() != null && item.getMemberType().equals("MANAGER")) {
ivManager.setVisibility(View.VISIBLE);
ivManager.setImageResource(R.drawable.icon_admin_logo);
} else if (item.getMemberType() != null && item.getMemberType().equals("CREATOR")) {
ivManager.setVisibility(View.VISIBLE);
ivManager.setImageResource(R.drawable.icon_user_list_room_ownner);
} else {
ivManager.setVisibility(View.GONE);
}
// 在麦
ImageView ivMic = helper.getView(R.id.room_online_tag);
ivMic.setVisibility(item.isInMic() ? View.VISIBLE : View.GONE);
//等级
UserLevelVo levelVo = item.getUserLevelVo();
String experLevelUrl = null;
String charmLevelUrl = null;
if (levelVo != null) {
experLevelUrl = levelVo.getExperUrl();
charmLevelUrl = levelVo.getCharmUrl();
}
//经验等级
AppCompatImageView ivUserExper = baseViewHolder.getView(R.id.iv_user_exper);
String experLevelUrl = NobleUtil.getLevel(UserLevelResourceType.EXPER_URL, onlineChatMember.chatRoomMember);
AppCompatImageView ivUserExper = helper.getView(R.id.iv_user_exper);
boolean isExperLevelUrlEmpty = TextUtils.isEmpty(experLevelUrl);
ivUserExper.setVisibility(!isExperLevelUrlEmpty ? View.VISIBLE : View.GONE);
if (!isExperLevelUrlEmpty) {
ImageLoadUtils.loadImage(mContext, experLevelUrl, ivUserExper);
}
//魅力等级
AppCompatImageView ivUserCharm = baseViewHolder.getView(R.id.iv_user_charm);
String charmLevelUrl = NobleUtil.getLevel(UserLevelResourceType.CHARM_URL, onlineChatMember.chatRoomMember);
AppCompatImageView ivUserCharm = helper.getView(R.id.iv_user_charm);
boolean isCharmLevelUrlEmpty = TextUtils.isEmpty(charmLevelUrl);
ivUserCharm.setVisibility(!isCharmLevelUrlEmpty ? View.VISIBLE : View.GONE);
if (!isCharmLevelUrlEmpty) {
ImageLoadUtils.loadImage(mContext, charmLevelUrl, ivUserCharm);
}
// 官方主播铭牌标识
String fixWord = NobleUtil.getLevel(UserInfo.OAC_NAME, onlineChatMember.chatRoomMember);
String iconPic = NobleUtil.getLevel(UserInfo.OAC_ICON, onlineChatMember.chatRoomMember);
View inOfficialMask = baseViewHolder.getView(R.id.in_official_mask);
if (!TextUtils.isEmpty(fixWord) && !TextUtils.isEmpty(iconPic)) {
inOfficialMask.setVisibility(View.VISIBLE);
TextView tvOfficialMask = inOfficialMask.findViewById(R.id.tv_official_mask);
if (tvOfficialMask != null) {
tvOfficialMask.setText(fixWord);
}
ImageView ivOfficialMask = inOfficialMask.findViewById(R.id.iv_official_mask);
if (ivOfficialMask != null) {
ImageLoadUtils.loadImage(mContext, iconPic, ivOfficialMask);
}
} else {
inOfficialMask.setVisibility(View.GONE);
}
// 铭牌
String namePlateWord = NobleUtil.getLevel(UserInfo.NAMEPLATE_WORD, onlineChatMember.chatRoomMember);
String namePlatePic = NobleUtil.getLevel(UserInfo.NAMEPLATE_PIC, onlineChatMember.chatRoomMember);
View inNamePlate = baseViewHolder.getView(R.id.in_nameplate);
if (!TextUtils.isEmpty(namePlateWord) && !TextUtils.isEmpty(namePlatePic)) {
inNamePlate.setVisibility(View.VISIBLE);
TextView tvNamePlate = inNamePlate.findViewById(R.id.tv_official_mask);
if (tvNamePlate != null) {
tvNamePlate.setText(namePlateWord);
}
ImageView ivNamePlate = inNamePlate.findViewById(R.id.iv_official_mask);
if (ivNamePlate != null) {
ImageLoadUtils.loadImage(mContext, namePlatePic, ivNamePlate);
}
} else {
inNamePlate.setVisibility(View.GONE);
}
AppCompatImageView ivUserLevel = baseViewHolder.getView(R.id.iv_noble_level);
String resource = (String) NobleUtil.getResource(NobleResourceType.KEY_BADGE, onlineChatMember.chatRoomMember);
if (TextUtils.isEmpty(resource)) {
ivUserLevel.setVisibility(View.GONE);
return;
}
ivUserLevel.setVisibility(View.VISIBLE);
NobleUtil.loadResource(resource, ivUserLevel);
}
private void setSexData(BaseViewHolder baseViewHolder, OnlineChatMember onlineChatMember) {
final ImageView sexImage = baseViewHolder.getView(R.id.sex);
String gender = NobleUtil.getLevel(UserInfo.GENDER, onlineChatMember.chatRoomMember);
if ("1".equals(gender)) {
sexImage.setVisibility(View.VISIBLE);
sexImage.setImageResource(R.drawable.ic_gender_male);
} else if ("2".equals(gender)) {
sexImage.setVisibility(View.VISIBLE);
sexImage.setImageResource(R.drawable.ic_gender_female);
} else {
NimUserInfo nimUserInfo = NimUserInfoCache.getInstance().getUserInfo(onlineChatMember.chatRoomMember.getAccount());
if (nimUserInfo == null) {
NimUserInfoCache.getInstance().getUserInfoFromRemote(onlineChatMember.chatRoomMember.getAccount(),
new RequestCallbackWrapper<NimUserInfo>() {
@Override
public void onResult(int i, NimUserInfo nimUserInfo, Throwable throwable) {
if (nimUserInfo != null) {
if (nimUserInfo.getGenderEnum() == GenderEnum.MALE) {
sexImage.setVisibility(View.VISIBLE);
sexImage.setImageResource(R.drawable.ic_gender_male);
} else if (nimUserInfo.getGenderEnum() == GenderEnum.FEMALE) {
sexImage.setVisibility(View.VISIBLE);
sexImage.setImageResource(R.drawable.ic_gender_female);
} else {
sexImage.setVisibility(View.GONE);
}
}
}
});
} else {
if (nimUserInfo.getGenderEnum() == GenderEnum.MALE) {
sexImage.setVisibility(View.VISIBLE);
sexImage.setImageResource(R.drawable.ic_gender_male);
} else if (nimUserInfo.getGenderEnum() == GenderEnum.FEMALE) {
sexImage.setVisibility(View.VISIBLE);
sexImage.setImageResource(R.drawable.ic_gender_female);
} else {
sexImage.setVisibility(View.GONE);
}
}
}
View inNamePlate = helper.getView(R.id.in_nameplate);
NamePlateHelper.INSTANCE.load(inNamePlate, inNamePlate.findViewById(R.id.tv_official_mask), inNamePlate.findViewById(R.id.iv_official_mask), item);
}
private void registerRoomEvent() {
@@ -240,7 +169,7 @@ public class OnlineUserAdapter extends BaseMultiItemQuickAdapter<OnlineChatMembe
updateMemberIn(roomEvent);
} else if (event == RoomEvent.ROOM_MEMBER_EXIT) {
if (mListener != null) {
mListener.onMemberExit(roomEvent.getAccount(), mData);
mListener.onMemberExit(roomEvent.getAccount());
}
}
});
@@ -248,19 +177,19 @@ public class OnlineUserAdapter extends BaseMultiItemQuickAdapter<OnlineChatMembe
private void updateMemberIn(RoomEvent roomEvent) {
if (mListener != null) {
mListener.onMemberIn(roomEvent.getAccount(), mData);
mListener.onMemberIn(roomEvent.getAccount());
}
}
private void updateManager(RoomEvent roomEvent) {
if (mListener != null)
mListener.onUpdateMemberManager(roomEvent.getAccount(),
roomEvent.getEvent() == RoomEvent.ROOM_MANAGER_REMOVE, mData);
roomEvent.getEvent() == RoomEvent.ROOM_MANAGER_REMOVE);
}
private void updateDownUpMic(String account, boolean isUpMic) {
if (mListener != null) {
mListener.onMemberDownUpMic(account, isUpMic, mData);
mListener.onMemberDownUpMic(account, isUpMic);
}
}
@@ -281,34 +210,29 @@ public class OnlineUserAdapter extends BaseMultiItemQuickAdapter<OnlineChatMembe
*
* @param account
*/
void onMemberIn(String account, List<OnlineChatMember> dataList);
void onMemberIn(String account);
/**
* 成员出去回调
*
* @param account
* @param dataList
*/
void onMemberExit(String account, List<OnlineChatMember> dataList);
void onMemberExit(String account);
/**
* 成员上下麦更新
*
* @param account
* @param isUpMic
* @param dataList
*/
void onMemberDownUpMic(String account, boolean isUpMic,
List<OnlineChatMember> dataList);
void onMemberDownUpMic(String account, boolean isUpMic);
/**
* 设置管理员回调
*
* @param account
* @param dataList
*/
void onUpdateMemberManager(String account, boolean isRemoveManager,
List<OnlineChatMember> dataList);
void onUpdateMemberManager(String account, boolean isRemoveManager);
void addMemberBlack();
}

View File

@@ -12,7 +12,7 @@ class RoomPKSearchAdapter :
override fun convert(helper: BaseViewHolder, item: SimpleRoomInfo) {
helper.setText(R.id.tv_room_title,item.title.subAndReplaceDot(7))
.setText(R.id.tv_room_id,"Hiyoo号:${item.erbanNo}")
.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,6 +1,5 @@
package com.chwl.app.avroom.core
import com.chwl.app.avroom.redpackage.RedPackageHandler
import com.chwl.core.support.room.RoomAbility
import com.chwl.core.support.room.RoomContext
@@ -13,7 +12,5 @@ class AudioRoomContext(roomId: Long) : RoomContext(roomId) {
override fun loadAbility(list: MutableMap<String, RoomAbility>) {
super.loadAbility(list)
// 红包处理器
list[RedPackageHandler::class.java.simpleName] = RedPackageHandler()
}
}

View File

@@ -6,7 +6,7 @@ import android.view.View;
import com.chwl.app.R;
import com.chwl.app.databinding.DialogDatingVipRuleBinding;
import com.chwl.app.treasure_box.widget.dialog.BaseBindingDialog;
import com.chwl.app.base.BaseBindingDialog;
import com.chwl.library.annatation.ActLayoutRes;

View File

@@ -25,6 +25,7 @@ import com.chwl.core.manager.AvRoomDataManager
import com.chwl.core.room.model.AvRoomModel
import com.chwl.library.annatation.ActLayoutRes
import com.chwl.library.utils.ResUtil
import com.example.lib_utils.UiUtils
import io.reactivex.disposables.Disposable
@@ -64,8 +65,11 @@ class ExitRoomPopupWindow(val avRoomActivity: AVRoomActivity) : PopupWindow() {
}
private fun initView() {
animationStyle = R.style.style_anim_right_in_out
if(UiUtils.isRtl(avRoomActivity)){
animationStyle = R.style.style_anim_left_in_out
}else{
animationStyle = R.style.style_anim_right_in_out
}
setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
tvExitRoom.setOnClickListener {

View File

@@ -4,7 +4,7 @@ import android.content.Context
import android.view.View
import com.chwl.app.R
import com.chwl.app.databinding.DialogRequestUpmicBinding
import com.chwl.app.treasure_box.widget.dialog.BaseBindingDialog
import com.chwl.app.base.BaseBindingDialog
import com.chwl.core.manager.AvRoomDataManager
import com.chwl.core.manager.IMNetEaseManager
import com.chwl.core.user.bean.BaseInfo

View File

@@ -1,68 +0,0 @@
package com.chwl.app.avroom.dialog;
import android.content.Context;
import android.os.Bundle;
import android.util.DisplayMetrics;
import android.view.Display;
import android.view.View;
import android.view.WindowManager;
import androidx.databinding.DataBindingUtil;
import com.google.android.material.bottomsheet.BottomSheetDialog;
import com.chwl.app.R;
import com.chwl.app.databinding.DialogRoomFreeGiftBinding;
import com.chwl.app.ui.utils.ImageLoadUtilsV2;
import com.chwl.core.gift.bean.GiftFreeInfo;
import com.chwl.library.utils.TimeUtils;
/**
* 房间免费礼物弹窗
* Created by wushaocheng on 2022/12/14.
*/
public class RoomFreeGiftDialog extends BottomSheetDialog implements View.OnClickListener {
private Context context;
private GiftFreeInfo giftFreeInfo;
private DialogRoomFreeGiftBinding binding;
public RoomFreeGiftDialog(Context context, GiftFreeInfo giftFreeInfo) {
super(context, R.style.ErbanBottomSheetDialog);
this.context = context;
this.giftFreeInfo = giftFreeInfo;
}
@SuppressWarnings("ConstantConditions")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setCanceledOnTouchOutside(true);
setContentView(R.layout.dialog_room_free_gift);
binding = DataBindingUtil.bind(findViewById(R.id.dialog_container));
binding.setClick(this);
WindowManager windowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
Display d = windowManager.getDefaultDisplay();
DisplayMetrics realDisplayMetrics = new DisplayMetrics();
d.getRealMetrics(realDisplayMetrics);
WindowManager.LayoutParams params = getWindow().getAttributes();
params.width = WindowManager.LayoutParams.MATCH_PARENT;
params.height = WindowManager.LayoutParams.MATCH_PARENT;
params.dimAmount = 0f;
getWindow().setAttributes(params);
binding.tvTop.setText(context.getString(R.string.dialog_free_gift_top, TimeUtils.secondsToTime(giftFreeInfo.getFirstSecond())));
binding.tvBottom.setText(String.format(context.getString(R.string.dialog_free_gift_bottom_text), giftFreeInfo.getGiftName(), giftFreeInfo.getMaxStage()));
ImageLoadUtilsV2.loadImage(binding.ivGiftIcon, giftFreeInfo.getGiftUrl());
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.iv_delete:
case R.id.tv_know:
dismiss();
break;
}
}
}

View File

@@ -1,154 +0,0 @@
package com.chwl.app.avroom.dialog;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.text.TextUtils;
import android.util.DisplayMetrics;
import android.view.Display;
import android.view.View;
import android.view.WindowManager;
import android.widget.FrameLayout;
import androidx.databinding.DataBindingUtil;
import com.google.android.material.bottomsheet.BottomSheetBehavior;
import com.google.android.material.bottomsheet.BottomSheetDialog;
import com.chwl.app.R;
import com.chwl.app.avroom.activity.CpRoomInviteActivity;
import com.chwl.app.avroom.widget.EditRoomTitleDialog;
import com.chwl.app.databinding.DialogRoomImposeBinding;
import com.chwl.app.ui.widget.magicindicator.buildins.UIUtil;
import com.chwl.library.common.util.Utils;
import com.chwl.core.auth.AuthModel;
import com.chwl.core.manager.AvRoomDataManager;
import com.chwl.core.room.bean.RoomInfo;
import com.chwl.core.room.model.RoomSettingModel;
import com.chwl.core.utils.net.DontWarnObserver;
import com.chwl.library.utils.ResUtil;
import com.chwl.library.utils.SingleToastUtil;
import com.chwl.library.utils.codec.DESUtils;
public class RoomImposeDialog extends BottomSheetDialog implements View.OnClickListener {
private Context context;
private DialogRoomImposeBinding binding;
public RoomImposeDialog(Context context) {
super(context, R.style.ErbanBottomSheetDialogDimFalse);
this.context = context;
}
@SuppressWarnings("ConstantConditions")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setCanceledOnTouchOutside(true);
setContentView(R.layout.dialog_room_impose);
binding = DataBindingUtil.bind(findViewById(R.id.dialog_container));
binding.setClick(this);
FrameLayout bottomSheet = findViewById(R.id.design_bottom_sheet);
if (bottomSheet != null) {
BottomSheetBehavior.from(bottomSheet).setSkipCollapsed(false);
BottomSheetBehavior.from(bottomSheet).setPeekHeight(
UIUtil.dip2px(context, 270) +
(Utils.hasSoftKeys(context) ? Utils.getNavigationBarHeight(context) : 0));
}
WindowManager windowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
Display d = windowManager.getDefaultDisplay();
DisplayMetrics realDisplayMetrics = new DisplayMetrics();
d.getRealMetrics(realDisplayMetrics);
WindowManager.LayoutParams params = getWindow().getAttributes();
params.width = WindowManager.LayoutParams.MATCH_PARENT;
params.height = WindowManager.LayoutParams.MATCH_PARENT;
getWindow().setAttributes(params);
getWindow().setWindowAnimations(R.style.ErbanCommonWindowAnimationStyle);
RoomInfo roomInfo = AvRoomDataManager.get().mCurrentRoomInfo;
if (roomInfo == null) return;
if ("lock".equals(roomInfo.getLimitType()) || !TextUtils.isEmpty(roomInfo.roomPwd)) {
binding.tvPwd.setTextColor(context.getResources().getColor(R.color.appColor));
} else if ("isFriend".equals(roomInfo.getLimitType())) {
binding.tvFriend.setTextColor(context.getResources().getColor(R.color.appColor));
} else if ("isInvite".equals(roomInfo.getLimitType())) {
binding.tvInvite.setTextColor(context.getResources().getColor(R.color.appColor));
}
}
@Override
public void onClick(View v) {
RoomInfo roomInfo = AvRoomDataManager.get().mCurrentRoomInfo;
if (roomInfo == null) return;
switch (v.getId()) {
case R.id.tv_invite:
context.startActivity(new Intent(context, CpRoomInviteActivity.class));
dismiss();
break;
case R.id.tv_friend:
updateRoomInfo("", roomInfo, RoomInfo.IS_FRIEND);
break;
case R.id.tv_pwd:
String oldContent = "";
try {
oldContent = DESUtils.DESAndBase64Decrypt(roomInfo.roomPwd);
} catch (Exception e) {
e.printStackTrace();
}
EditRoomTitleDialog pwdDialog = new EditRoomTitleDialog(context,
EditRoomTitleDialog.TYPE_EDIT_PASSWORD, oldContent);
pwdDialog.setOnEditTitleListner(new EditRoomTitleDialog.OnEditTitleListner() {
@Override
public void onEditPwdListner(String newPwd) {
String encryptPwd = DESUtils.DESAndBase64(newPwd);
if (encryptPwd.equals(roomInfo.getRoomPwd())) {
return;
}
updateRoomInfo(encryptPwd, roomInfo, RoomInfo.LOCK);
}
});
pwdDialog.show();
break;
case R.id.tv_cancel_limit:
updateRoomInfo("", roomInfo, "");
break;
case R.id.btn_cancel:
dismiss();
break;
}
}
private void updateRoomInfo(String encryptPwd, RoomInfo roomInfo, String limitType) {
//更新房间接口调用成功后会发事件RoomEvent.ROOM_INFO_UPDATE
RoomSettingModel model = new RoomSettingModel();
model.updateRoomInfo(roomInfo.title,
roomInfo.getRoomDesc(),
roomInfo.getIntroduction(),
encryptPwd,
roomInfo.getRoomTag(),
roomInfo.tagId,
AuthModel.get().getCurrentUid(),
AuthModel.get().getTicket(),
roomInfo.isHasAnimationEffect(),
roomInfo.getAudioQuality(),
limitType,
roomInfo.isPureMode(),
roomInfo.getType(),
roomInfo.getMgId())
.subscribe(new DontWarnObserver<RoomInfo>() {
@Override
public void accept(RoomInfo roomInfo, String error) {
super.accept(roomInfo, error);
if (error != null) {
SingleToastUtil.showToast(error);
} else {
if (!limitType.equals(RoomInfo.IS_INVITE)) {
SingleToastUtil.showToast(ResUtil.getString(R.string.avroom_dialog_roomimposedialog_04));
}
}
}
});
dismiss();
}
}

View File

@@ -127,7 +127,7 @@ public class RoomOperationDialog extends BottomSheetDialog {
addOpenOrClosePublicScreenAction(optAdapter);
// addRedPackageSwitch();
addCleanScreenAction(optAdapter);
addRoomLimit(optAdapter);
// addRoomLimit(optAdapter);
addGiftValueAction(optAdapter);
addSuperAdminAction(optAdapter);
addShieldReportAction(optAdapter);
@@ -271,7 +271,7 @@ public class RoomOperationDialog extends BottomSheetDialog {
private void addRoomAlbum(OptAdapter optAdapter) {
if (AvRoomDataManager.get().isHasRoomAlbum()) {
optAdapter.addData(new OptAction(R.drawable.ic_room_operation_album, "房间相册", () -> {
optAdapter.addData(new OptAction(R.drawable.ic_room_operation_album, ResUtil.getString(R.string.room_album), () -> {
RoomAlbumActivity.start(getContext());
}));
}
@@ -361,12 +361,7 @@ public class RoomOperationDialog extends BottomSheetDialog {
*/
private void addRoomLimit(OptAdapter optAdapter) {
//添加
if (AvRoomDataManager.get().isRoomOwner() && AvRoomDataManager.get().isCpRoom()) {
optAdapter.addData(new OptAction(R.drawable.icon_room_limit,
ResUtil.getString(R.string.avroom_dialog_roomoperationdialog_023),
() -> new RoomImposeDialog(context).show()));
}
}
/**

View File

@@ -5,7 +5,7 @@ import android.view.View
import com.donkingliang.labels.LabelsView
import com.chwl.app.R
import com.chwl.app.databinding.DialogSelectLabelBinding
import com.chwl.app.treasure_box.widget.dialog.BaseBindingDialog
import com.chwl.app.base.BaseBindingDialog
import com.chwl.library.annatation.ActLayoutRes
@ActLayoutRes(R.layout.dialog_select_label)

View File

@@ -1,498 +0,0 @@
package com.chwl.app.avroom.firstcharge
import android.annotation.SuppressLint
import android.content.Context
import android.content.Intent
import android.graphics.Color
import android.graphics.drawable.ColorDrawable
import android.text.Spannable
import android.text.SpannableStringBuilder
import android.text.style.ForegroundColorSpan
import android.util.Log
import android.view.Gravity
import android.view.LayoutInflater
import android.view.View
import android.view.WindowManager
import android.widget.PopupWindow
import android.widget.TextView
import androidx.recyclerview.widget.GridLayoutManager
//import com.appsflyer.AFInAppEventParameterName
//import com.appsflyer.AFInAppEventType
//import com.appsflyer.AppsFlyerLib
import com.example.module_base.support.billing.IBillingResult
import com.example.module_base.support.billing.IBillingService
import com.example.module_base.support.billing.IProductDetails
import com.example.module_base.support.billing.IPurchase
import com.example.module_base.support.google.IGoogleService
import com.netease.nim.uikit.common.util.sys.ScreenUtil
import com.chwl.app.R
import com.chwl.app.base.BaseViewBindingActivity
import com.chwl.app.databinding.DialogFirstChargeBinding
import com.chwl.app.ui.setting.ModifyPwdActivity
import com.chwl.app.ui.webview.CommonWebViewActivity
import com.chwl.app.ui.widget.magicindicator.buildins.UIUtil
import com.chwl.core.Constants
import com.chwl.core.DemoCache
import com.chwl.core.UriProvider
import com.chwl.core.pay.PayModel
import com.chwl.core.pay.bean.FirstChargeGoods
import com.chwl.core.pay.bean.FirstChargeReward
import com.chwl.core.pay.bean.PayRecordId
import com.chwl.core.pay.event.FirstChargeEvent
import com.chwl.core.room.model.AvRoomModel
import com.chwl.core.utils.net.IgnoreException
import com.chwl.core.utils.extension.toast
import com.chwl.library.common.util.DeviceUtil
import com.chwl.library.utils.AppMetaDataUtil
import com.chwl.library.utils.ResUtil
import com.chwl.library.utils.SingleToastUtil
import org.greenrobot.eventbus.EventBus
import org.greenrobot.eventbus.Subscribe
import org.greenrobot.eventbus.ThreadMode
/**
* author: wushaocheng
* time: 2022/2/21
* desc: 限时首充
*/
class FirstChargeDialog : BaseViewBindingActivity<DialogFirstChargeBinding>(),
IBillingService.Listener {
private var goodsList: List<FirstChargeGoods>? = null
private var currGoods: FirstChargeGoods? = null
private lateinit var helpPopupWindow: PopupWindow
private var billingManager: IBillingService? = null
private var position = -1
private val mReward2Adapter by lazy { Reward2Adapter() }
companion object {
@JvmStatic
fun start(context: Context) {
val starter = Intent(context, FirstChargeDialog::class.java)
context.startActivity(starter)
}
private const val BIND_CODE_GOLD = 200
private const val TAG = "FirstChargeDialog"
}
@SuppressLint("CheckResult")
override fun init() {
//这里的height用MATCH_PARENT状态栏会被顶上去,不知道什么鬼
val height = ScreenUtil.screenHeight - ScreenUtil.getStatusBarHeight(context)
window.setLayout(WindowManager.LayoutParams.MATCH_PARENT, height)
window.setGravity(Gravity.CENTER)
EventBus.getDefault().register(this)
binding.rbPlanA.setOnClickListener {
binding.rbPlanA.isChecked = true
binding.rbPlanB.isChecked = false
binding.rbPlanC.isChecked = false
binding.ivArrow1.visibility = View.VISIBLE
binding.ivArrow2.visibility = View.INVISIBLE
binding.ivArrow3.visibility = View.INVISIBLE
updateCurrGoods(goodsList?.getOrNull(0))
position = 0
}
binding.rbPlanB.setOnClickListener {
binding.rbPlanA.isChecked = false
binding.rbPlanB.isChecked = true
binding.rbPlanC.isChecked = false
binding.ivArrow1.visibility = View.INVISIBLE
binding.ivArrow2.visibility = View.VISIBLE
binding.ivArrow3.visibility = View.INVISIBLE
updateCurrGoods(goodsList?.getOrNull(1))
position = 1
}
binding.rbPlanC.setOnClickListener {
binding.rbPlanA.isChecked = false
binding.rbPlanB.isChecked = false
binding.rbPlanC.isChecked = true
binding.ivArrow1.visibility = View.INVISIBLE
binding.ivArrow2.visibility = View.INVISIBLE
binding.ivArrow3.visibility = View.VISIBLE
updateCurrGoods(goodsList?.getOrNull(2))
position = 2
}
binding.ivHelp.setOnClickListener { showHelpPopup() }
binding.tvCharge.setOnClickListener {
val channel = AppMetaDataUtil.getChannelID()
if (position == -1) {
ResUtil.getString(R.string.avroom_firstcharge_firstchargedialog_01).toast()
}
else{
goodsList?.get(position)?.let { charge ->
buyProduct(charge.productDetails)
}
}
// if (channel.equals(Constants.GOOGLE)) {
// goodsList?.get(position)?.let { charge ->
// buyProduct(charge.productDetails)
// }
// } else {
// CommonWebViewActivity.start(
// context,
// UriProvider.getOfficialPay(6, DeviceUtil.getDeviceId(context))
// )
// }
}
binding.recyclerView.layoutManager = GridLayoutManager(this, 6)
//重新定义每行的item数量
mReward2Adapter.setSpanSizeLookup { _, position ->
val data = mReward2Adapter.data
var spanSize = 0
when (data[position].itemType) {
FirstChargeReward.ONE -> {
spanSize = 6
}
FirstChargeReward.TWO_LEFT -> {
spanSize = 3
}
FirstChargeReward.TWO_RIGHT -> {
spanSize = 3
}
FirstChargeReward.THREE -> {
spanSize = 2
}
FirstChargeReward.TWO_LEFT_SMALL -> {
spanSize = 3
}
FirstChargeReward.TWO_RIGHT_SMALL -> {
spanSize = 3
}
}
spanSize
}
binding.recyclerView.adapter = mReward2Adapter
PayModel.get().firstChargeList
.compose(bindToLifecycle())
.subscribe({
initData(it)
}, {
it.printStackTrace()
SingleToastUtil.showToast(it.message)
finish()
})
binding.viewBg.setOnClickListener {
//do nothing
}
binding.root.setOnClickListener {
finish()
}
DemoCache.saveBoolean("FirstCharge", true)
AvRoomModel.get().postFirstCharge()
.compose(bindToLifecycle())
.subscribe()
}
@SuppressLint("SetTextI18n")
private fun initData(goodsList: List<FirstChargeGoods>) {
this.goodsList = goodsList
binding.rbPlanA.isChecked = true
updateCurrGoods(goodsList.getOrNull(0))
position = 0
when (goodsList.size) {
1 -> {
binding.rbPlanB.visibility = View.GONE
binding.rbPlanC.visibility = View.GONE
binding.rbPlanA.text = "$${goodsList[0].chargeMoney}"
}
2 -> {
binding.rbPlanC.visibility = View.GONE
binding.rbPlanA.text = "$${goodsList[0].chargeMoney}"
binding.rbPlanB.text = "$${goodsList[1].chargeMoney}"
}
3 -> {
binding.rbPlanA.text = "$${goodsList[0].chargeMoney}"
binding.rbPlanB.text = "$${goodsList[1].chargeMoney}"
binding.rbPlanC.text = "$${goodsList[2].chargeMoney}"
}
}
if (AppMetaDataUtil.getChannelID().equals(Constants.GOOGLE)) {
initBilling()
}
}
private fun initBilling() {
billingManager = IGoogleService.newBillingService(this,this)
}
@SuppressLint("CheckResult")
override fun onBillingClientSetupFinished() {
Log.i(TAG, "onBillingClientSetupFinished")
goodsList?.let { initProduceList(it) }
}
private fun initProduceList(goodsList: List<FirstChargeGoods>) {
val productKeys: MutableList<String> = ArrayList()
for (bean in goodsList) {
productKeys.add(bean.chargeProdId)
}
billingManager?.querySkuDetailsAsync(productKeys,object :IBillingService.ProductDetailsResponseListener{
override fun onProductDetailsResponse(
billingResult: IBillingResult,
productDetails: List<IProductDetails>
) {
if (!billingResult.isResponseOk()) {
Log.w(
TAG,
"Unsuccessful query for Error code: " + billingResult.getResponseCode()
)
}else if (productDetails.isNotEmpty()) {
for (chargeBean in goodsList) {
for (skuDetails in productDetails) {
if (skuDetails.getProductId() == chargeBean.chargeProdId) {
chargeBean.productDetails = skuDetails
break
}
}
}
}
}
})
}
/*商品更新回调*/
@SuppressLint("CheckResult")
override fun onPurchasesUpdated(purchases: List<IPurchase>) {
for (purchase in purchases) {
if (purchase.isPurchasedState() &&
purchase.getAccountIdentifiers() != null
) {
PayModel.get().verifyOrder(
purchase.getAccountIdentifiers()!!.getObfuscatedAccountId(),
purchase.getProducts()[0],
purchase.getPackageName(),
purchase.getPurchaseToken()
)
.compose(bindToLifecycle())
.subscribe(
{ token: String ->
//L.i("token=" + token);
billingManager?.consumeAsync(token)
// var skuDetails: IProductDetails? = null
// val goodList = goodsList
// if (!goodList.isNullOrEmpty()) {
// for (datum in goodList) {
// if (datum.chargeProdId == purchase.getProducts()[0]) {
// skuDetails = datum.productDetails
// break
// }
// }
// }
// if (skuDetails != null) {
// val eventValue: MutableMap<String, Any> =
// HashMap()
// eventValue[AFInAppEventParameterName.CONTENT_TYPE] = "Gold"
// eventValue[AFInAppEventParameterName.QUANTITY] = 1
// eventValue[AFInAppEventParameterName.CONTENT_ID] = purchase.getOrderId()!!
// skuDetails.getOneTimePurchaseOfferDetails()?.let {
// eventValue[AFInAppEventParameterName.REVENUE] =
// it.getPriceAmountMicros() / 1000000f
// eventValue["Price"] = it.getFormattedPrice()
// eventValue[AFInAppEventParameterName.CURRENCY] =
// it.getPriceCurrencyCode()
// }
// AppsFlyerLib.getInstance().logEvent(
// applicationContext,
// AFInAppEventType.PURCHASE,
// eventValue
// )
// }
}
) { throwable: Throwable ->
if (throwable !is IgnoreException) {
SingleToastUtil.showToast(throwable.message)
}
}
}
}
Log.i(TAG, "onPurchasesUpdated")
}
override fun onConsumeFinished(token: String?, result: Int) {
}
override fun onFailedHandle(result: Int) {
}
/*购买商品*/
@SuppressLint("CheckResult")
fun buyProduct(skuDetails: IProductDetails?) {
if (skuDetails != null) {
Log.d(TAG, "BuyProduct:" + skuDetails.getProductId())
PayModel.get().placeOrder(skuDetails.getProductId())
.compose(bindToLifecycle())
.subscribe(
{ recordId: PayRecordId ->
billingManager?.initiatePurchaseFlow(
skuDetails,
recordId.recordId
)
}
) { throwable: Throwable ->
SingleToastUtil.showToast(
throwable.message
)
}
} else {
Log.w(TAG, "skuDetails ==null")
}
}
override fun onResume() {
super.onResume()
if (billingManager?.isServiceConnected() == true) {
billingManager?.onQueryPurchases()
}
}
override fun onDestroy() {
super.onDestroy()
EventBus.getDefault().unregister(this)
billingManager?.destroy()
}
private fun updateCurrGoods(firstChargeGoods: FirstChargeGoods?) {
firstChargeGoods?.let {
currGoods = it
val giveMoneyIndex = it.chargeProdTitle.lastIndexOf(it.giveMoney)
if (giveMoneyIndex == -1) {
binding.tvTitle.text = it.chargeProdTitle
} else {
val builder = SpannableStringBuilder(it.chargeProdTitle)
builder.setSpan(
ForegroundColorSpan(Color.parseColor("#BE5AF6")), giveMoneyIndex,
giveMoneyIndex + (it.giveMoney?.length ?: 0),
Spannable.SPAN_EXCLUSIVE_EXCLUSIVE
)
binding.tvTitle.text = builder
}
val firstChargeRewardList = it.firstChargeRewardList ?: return
when (firstChargeRewardList.size) {
1 -> {
for (bean in firstChargeRewardList) {
bean.itemType = FirstChargeReward.ONE
}
}
2 -> {
for (i in firstChargeRewardList.indices) {
if (i == 0) {
firstChargeRewardList[i].itemType = FirstChargeReward.TWO_LEFT
} else if (i == 1) {
firstChargeRewardList[i].itemType = FirstChargeReward.TWO_RIGHT
}
}
}
3 -> {
for (bean in firstChargeRewardList) {
bean.itemType = FirstChargeReward.THREE
}
}
4 -> {
for (i in firstChargeRewardList.indices) {
if ((i + 1) % 2 != 0) {
firstChargeRewardList[i].itemType = FirstChargeReward.TWO_LEFT
} else {
firstChargeRewardList[i].itemType = FirstChargeReward.TWO_RIGHT
}
}
}
else -> {
if (firstChargeRewardList.size % 3 == 0) {
for (bean in firstChargeRewardList) {
bean.itemType = FirstChargeReward.THREE
}
} else {
val num = firstChargeRewardList.size / 3
val residueNUm = firstChargeRewardList.size - (num * 3)
for (i in firstChargeRewardList.indices) {
if ((i + 1) <= num * 3) {
firstChargeRewardList[i].itemType = FirstChargeReward.THREE
} else if (residueNUm == 2) {
if (firstChargeRewardList.size - (i + 1) == 1) {
firstChargeRewardList[i].itemType =
FirstChargeReward.TWO_LEFT_SMALL
} else if (firstChargeRewardList.size - (i + 1) == 0) {
firstChargeRewardList[i].itemType =
FirstChargeReward.TWO_RIGHT_SMALL
}
} else {
firstChargeRewardList[i].itemType = FirstChargeReward.THREE
}
}
}
}
}
mReward2Adapter.setNewData(it.firstChargeRewardList)
}
}
private fun showHelpPopup() {
if (currGoods == null) {
SingleToastUtil.showToast(ResUtil.getString(R.string.avroom_firstcharge_firstchargedialog_02))
return
}
val contentView: View
if (!this::helpPopupWindow.isInitialized) {
contentView =
LayoutInflater.from(context)
.inflate(R.layout.layout_first_charge_help_view, null)
contentView.findViewById<TextView>(R.id.tv_content).text =
currGoods?.chargeProdDesc?.replace("\\n", "\n")?.replace("\\r", "\r")
helpPopupWindow =
PopupWindow(
contentView,
ScreenUtil.dip2px(150f),
WindowManager.LayoutParams.WRAP_CONTENT
)
helpPopupWindow.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
helpPopupWindow.isOutsideTouchable = true
helpPopupWindow.isFocusable = true
}
try {
helpPopupWindow.showAsDropDown(
binding.ivHelp,
UIUtil.dip2px(context, 18.0), UIUtil.dip2px(context, -3.0), Gravity.END
)
} catch (e: Exception) {
e.printStackTrace()
}
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
dialogManager.dismissDialog()
if (resultCode != RESULT_OK) {
return
}
if (requestCode == BIND_CODE_GOLD) {
ModifyPwdActivity.start(this, ModifyPwdActivity.FOGERT_PAY_PWD)
}
}
@Subscribe(threadMode = ThreadMode.MAIN)
fun onFirstRechargeEvent(event: FirstChargeEvent?) {
finish()
}
}

View File

@@ -1,41 +0,0 @@
package com.chwl.app.avroom.firstcharge
import android.content.Context
import com.google.android.flexbox.AlignItems
import com.google.android.flexbox.FlexboxLayoutManager
import com.google.android.flexbox.JustifyContent
import com.netease.nim.uikit.common.util.sys.ScreenUtil
import com.chwl.app.R
import com.chwl.app.databinding.DialogFirstChargePrizeBinding
import com.chwl.app.treasure_box.widget.dialog.BaseBindingDialog
import com.chwl.app.ui.utils.RVDelegate
import com.chwl.core.pay.bean.FirstChargeReward
import com.chwl.library.annatation.ActLayoutRes
@ActLayoutRes(R.layout.dialog_first_charge_prize)
class FirstChargePrizeDialog(
context: Context,
val title: String?,
private val firstChargeRewardList: List<FirstChargeReward>?
) : BaseBindingDialog<DialogFirstChargePrizeBinding>(context) {
private lateinit var rvDelegate: RVDelegate<FirstChargeReward>
override fun init() {
rvDelegate = RVDelegate.Builder<FirstChargeReward>()
.setAdapter(RewardAdapter(ScreenUtil.dip2px(248f) / 3))
.setLayoutManager(FlexboxLayoutManager(context).apply {
alignItems = AlignItems.STRETCH
justifyContent = JustifyContent.SPACE_EVENLY
})
.setRecyclerView(binding.recyclerView)
.build()
binding.ivKnow.setOnClickListener {
closeDialog()
}
binding.tvDesc.text = title
rvDelegate.setNewData(firstChargeRewardList)
}
}

View File

@@ -1,39 +0,0 @@
package com.chwl.app.avroom.firstcharge
import com.chad.library.adapter.base.BaseMultiItemQuickAdapter
import com.chad.library.adapter.base.BaseViewHolder
import com.chwl.app.R
import com.chwl.app.ui.utils.ImageLoadUtils
import com.chwl.core.pay.bean.FirstChargeReward
import com.chwl.core.utils.CoreTextUtils
class Reward2Adapter : BaseMultiItemQuickAdapter<FirstChargeReward, BaseViewHolder>(null) {
init {
addItemType(FirstChargeReward.ONE, R.layout.item_first_charge_reward_one)
addItemType(FirstChargeReward.TWO_LEFT, R.layout.item_first_charge_reward_two_left)
addItemType(FirstChargeReward.TWO_RIGHT, R.layout.item_first_charge_reward_two_right)
addItemType(FirstChargeReward.THREE, R.layout.item_first_charge_reward_three)
addItemType(
FirstChargeReward.TWO_LEFT_SMALL,
R.layout.item_first_charge_reward_two_left_small
)
addItemType(
FirstChargeReward.TWO_RIGHT_SMALL,
R.layout.item_first_charge_reward_two_right_small
)
}
override fun convert(helper: BaseViewHolder, item: FirstChargeReward) {
ImageLoadUtils.loadImage(
mContext,
item.showPir,
helper.getView(R.id.iv_pic),
R.drawable.ic_first_charge_default
)
helper.setText(R.id.tv_name, item.showText)
.setText(R.id.tv_time, item.showTime)
.setGone(R.id.tv_time, !CoreTextUtils.isEmptyText(item.showTime))
}
}

View File

@@ -1,28 +0,0 @@
package com.chwl.app.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.chwl.app.R
import com.chwl.app.ui.utils.ImageLoadUtils
import com.chwl.core.pay.bean.FirstChargeReward
import com.chwl.core.utils.CoreTextUtils
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.ic_first_charge_default
)
helper.setText(R.id.tv_name, item.showText)
.setText(R.id.tv_time, item.showTime)
.setGone(R.id.tv_time, !CoreTextUtils.isEmptyText(item.showTime))
}
}

View File

@@ -18,16 +18,11 @@ import android.view.ViewStub
import android.widget.EditText
import android.widget.ImageView
import android.widget.RelativeLayout
import android.widget.TextView
import androidx.annotation.CallSuper
import androidx.core.content.ContextCompat
import androidx.lifecycle.LifecycleOwner
import androidx.lifecycle.lifecycleScope
import androidx.lifecycle.withResumed
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import com.chad.library.adapter.base.BaseQuickAdapter
import com.chad.library.adapter.base.BaseViewHolder
import com.netease.nim.uikit.common.antispam.AntiSpamEvent
import com.netease.nimlib.sdk.StatusCode
import com.netease.nimlib.sdk.chatroom.ChatRoomMessageBuilder
@@ -45,11 +40,8 @@ import com.chwl.app.avroom.activity.RoomTitleEditActivity
import com.chwl.app.avroom.adapter.OnMicroItemClickListener
import com.chwl.app.avroom.dialog.AttentionHintDialog
import com.chwl.app.avroom.dialog.DatingVipRuleDialog
import com.chwl.app.avroom.dialog.RoomFreeGiftDialog
import com.chwl.app.avroom.dialog.RoomOperationDialog
import com.chwl.app.avroom.firstcharge.FirstChargeDialog
import com.chwl.app.avroom.presenter.BaseRoomPresenter
import com.chwl.app.avroom.redpackage.send.RedPackageSendDialog
import com.chwl.app.avroom.room_album.RoomAlbumModel
import com.chwl.app.avroom.view.IBaseRoomView
import com.chwl.app.avroom.widget.BottomView
@@ -60,9 +52,6 @@ import com.chwl.app.base.BaseMvpFragment
import com.chwl.app.event.OpenRoomIntroEvent
import com.chwl.app.friend.view.SelectFriendActivity
import com.chwl.app.home.adapter.RoomActAdapter
import com.chwl.app.shipantics.PullRadishActivity
import com.chwl.app.treasure_box.widget.GoldBoxHelper
import com.chwl.app.ui.webview.DialogWebViewActivity
import com.chwl.app.ui.widget.ButtonItem
import com.chwl.app.ui.widget.GiftDialog
import com.chwl.app.ui.widget.GiftDialog.OnGiftDialogBtnClickListener
@@ -78,8 +67,6 @@ import com.chwl.app.music.widget.MusicPlayerView
import com.chwl.app.room_chat.activity.RoomMsgActivity
import com.chwl.core.XConstants
import com.chwl.core.Constants
import com.chwl.core.DemoCache
import com.chwl.core.UriProvider
import com.chwl.core.auth.AuthModel
import com.chwl.core.bean.RoomMicInfo
import com.chwl.core.gift.GiftModel
@@ -97,7 +84,6 @@ import com.chwl.core.manager.RoomEvent
import com.chwl.core.mentoring_relationship.event.MentoringStopCountingEvent
import com.chwl.core.room.anotherroompk.ShowGiftDialogEvent
import com.chwl.core.room.anotherroompk.ShowUserInfoDialogEvent
import com.chwl.core.room.bean.RoomContributeUserInfo
import com.chwl.core.room.bean.RoomInfo
import com.chwl.core.room.event.RoomAtEvent
import com.chwl.core.room.event.RoomClearScreenEvent
@@ -113,10 +99,8 @@ import com.chwl.core.support.room.RoomWidget
import com.chwl.core.user.UserModel
import com.chwl.core.user.bean.BaseInfo
import com.chwl.core.user.bean.UserInfo
import com.chwl.core.utils.CurrentTimeUtils
import com.chwl.core.utils.net.VipLevelNotEnoughException
import com.chwl.library.common.util.LimitClickUtils
import com.chwl.library.common.util.SPUtils
import com.chwl.library.net.rxnet.utils.RxNetWorkUtils
import com.chwl.library.rxbus.RxBus
import com.chwl.library.utils.*
@@ -147,14 +131,11 @@ open class BaseRoomFragment<V : IBaseRoomView?, P : BaseRoomPresenter<V>?> :
protected lateinit var inputSend: ImageView
protected lateinit var microView: MicroView
private var musicPlayerView: MusicPlayerView? = null
private var ivRadishEntrance: View? = null
private var mVsMusicPlayer: ViewStub? = null
private var mDisposable: Disposable? = null
private var isCloseScreen = false
private var isOpenRedPackage = false
private var roomFreeGiftDialog: RoomFreeGiftDialog? = null
private val mClickLimit by lazy { LimitClickUtils() }
@JvmField
@@ -170,7 +151,6 @@ open class BaseRoomFragment<V : IBaseRoomView?, P : BaseRoomPresenter<V>?> :
* 是否開啟禮物值顯示
*/
private var showGiftValue = false
private var redPackageSendDialog: RedPackageSendDialog? = null
private val mOnSoftKeyBoardChangeListener: OnSoftKeyBoardChangeListener =
object : OnSoftKeyBoardChangeListener {
override fun keyBoardShow(height: Int) {
@@ -207,7 +187,6 @@ open class BaseRoomFragment<V : IBaseRoomView?, P : BaseRoomPresenter<V>?> :
inputSend = mView.findViewById(R.id.input_send)
microView = mView.findViewById(R.id.micro_view)
mVsMusicPlayer = mView.findViewById(R.id.vs_music_player)
ivRadishEntrance = mView.findViewById(R.id.iv_radish_entrance)
messageView.setClickConsumer {
if (!TextUtils.isEmpty(it) && it != "0") {
showUserCardDialog(it)
@@ -289,10 +268,6 @@ open class BaseRoomFragment<V : IBaseRoomView?, P : BaseRoomPresenter<V>?> :
checkFollowOwner()
GiftValueMrg.get().updateRoomGiftValue(false)
//先隐藏航海冒险
// ivRadishEntrance?.isVisible =
// !GoldBoxHelper.needIntegrateBoxEntrance() && GoldBoxHelper.isShowRadish()
//获取免费礼物详情
mvpPresenter?.queryFreeFlower()
initRoomAlbum()
@@ -524,7 +499,6 @@ open class BaseRoomFragment<V : IBaseRoomView?, P : BaseRoomPresenter<V>?> :
}
private fun releaseView() {
roomFreeGiftDialog?.dismiss()
messageView.release()
microView.release()
musicPlayerView?.release()
@@ -678,12 +652,6 @@ open class BaseRoomFragment<V : IBaseRoomView?, P : BaseRoomPresenter<V>?> :
R.id.input_send -> {
sendMsg()
}
R.id.iv_first_charge_enter -> FirstChargeDialog.start(mContext)
// R.id.iv_treasure_box,
// R.id.iv_treasure_box_cp -> GoldBoxHelper.handleBoxClick(mContext)
R.id.iv_radish_entrance -> PullRadishActivity.start(mContext)
}
}
@@ -746,7 +714,12 @@ open class BaseRoomFragment<V : IBaseRoomView?, P : BaseRoomPresenter<V>?> :
.compose(bindUntilEvent(FragmentEvent.DESTROY))
.doOnError {
if (it is VipLevelNotEnoughException) {
dialogManager.showOkDialog("尚未達到贈送${giftInfo.giftName}所需貴族等級,所需貴族等級:${giftInfo.giftVipInfo?.vipName}")
val message = context?.getString(
R.string.send_gift_vip_level_tips,
giftInfo.giftName ?: "",
giftInfo.giftVipInfo?.vipName ?: ""
)
dialogManager.showOkDialog(message)
}
}
.subscribe { _, throwable ->
@@ -799,7 +772,7 @@ open class BaseRoomFragment<V : IBaseRoomView?, P : BaseRoomPresenter<V>?> :
) {
val buttonItems: MutableList<ButtonItem> = ArrayList(4)
val presideMic = AvRoomDataManager.get().isDatingMode && micPosition == -1
val presideText = if (presideMic) "當主持人" else ""
val presideText = if (presideMic) ResUtil.getString(R.string.switch_host) else ""
val buttonItem1 = ButtonItem(
getString(R.string.embrace_up_mic) + presideText,
object : ButtonItem.OnClickListener {
@@ -845,7 +818,7 @@ open class BaseRoomFragment<V : IBaseRoomView?, P : BaseRoomPresenter<V>?> :
}
})
val buttonItem4 =
ButtonItem("上麥") { toUpMicroPhone(micPosition, currentUid.toString() + "", false) }
ButtonItem(ResUtil.getString(R.string.up_mic)) { toUpMicroPhone(micPosition, currentUid.toString() + "", false) }
//別問為什麽ui調整了順序
//禁用超管的上麥和抱TA上麥
if (!SuperAdminUtil.isSuperAdmin()) {
@@ -931,7 +904,6 @@ open class BaseRoomFragment<V : IBaseRoomView?, P : BaseRoomPresenter<V>?> :
try {
giftDialog?.dismiss()
dynamicFaceDialog?.dismiss()
redPackageSendDialog?.dismissAllowingStateLoss()
} catch (e: Exception) {
e.printStackTrace()
}
@@ -1161,16 +1133,6 @@ open class BaseRoomFragment<V : IBaseRoomView?, P : BaseRoomPresenter<V>?> :
@Subscribe(threadMode = ThreadMode.MAIN)
fun onRoomFreeGiftEvent(event: RoomFreeGiftEvent) {
event.giftFreeInfo?.let {
if (UIUtils.isTopActivity(context as Activity?) && isResumed) {
if (roomFreeGiftDialog?.isShowing == true) {
roomFreeGiftDialog?.dismiss()
}
roomFreeGiftDialog = RoomFreeGiftDialog(context, it)
roomFreeGiftDialog?.show()
SPUtils.putBoolean(Constants.IS_SHOW_FREE_GIFT, true)
}
}
}
@@ -1241,13 +1203,6 @@ open class BaseRoomFragment<V : IBaseRoomView?, P : BaseRoomPresenter<V>?> :
override fun onMoreBtnClick() {
val dialog = RoomOperationDialog(mContext)
dialog.setOnActionListener {
redPackageSendDialog = RedPackageSendDialog.newInstance(AvRoomDataManager.get().redEnvelopeType)
redPackageSendDialog?.setOnDismissListener {
redPackageSendDialog = null
}
redPackageSendDialog?.show(activity)
}
dialog.show()
}
@@ -1278,6 +1233,10 @@ open class BaseRoomFragment<V : IBaseRoomView?, P : BaseRoomPresenter<V>?> :
return this
}
override fun findWidget(name: String): RoomWidget? {
return widgets[name]
}
open fun initWidget() {
}

View File

@@ -17,6 +17,10 @@ import androidx.annotation.Nullable;
import androidx.databinding.DataBindingUtil;
import androidx.fragment.app.Fragment;
import com.chwl.app.ui.widget.GiftDialog;
import com.chwl.app.ui.widget.UserInfoDialog;
import com.chwl.library.utils.JavaUtil;
import com.example.lib_utils.UiUtils;
import com.netease.nim.uikit.common.util.string.StringUtil;
import com.netease.nimlib.sdk.chatroom.ChatRoomMessageBuilder;
import com.netease.nimlib.sdk.chatroom.model.ChatRoomMessage;
@@ -31,8 +35,6 @@ import com.chwl.app.avroom.widget.GiftV2View;
import com.chwl.app.avroom.widget.RoomEffectView;
import com.chwl.app.base.BaseFragment;
import com.chwl.app.databinding.FragmentChatroomGameMainBinding;
import com.chwl.app.friend.view.SelectFriendActivity;
import com.chwl.app.ui.widget.ShareDialog;
import com.chwl.app.utils.RegexUtil;
import com.chwl.core.gift.bean.GiftMultiReceiverInfo;
import com.chwl.core.gift.bean.GiftReceiveInfo;
@@ -50,7 +52,6 @@ import com.chwl.core.manager.RoomEvent;
import com.chwl.core.praise.PraiseModel;
import com.chwl.core.room.bean.RoomInfo;
import com.chwl.core.room.queuing_mic.event.HasAnimationEffect;
import com.chwl.core.share.ShareModel;
import com.chwl.core.super_admin.util.SuperAdminUtil;
import com.chwl.core.user.UserModel;
import com.chwl.core.user.bean.UserInfo;
@@ -64,10 +65,8 @@ import org.greenrobot.eventbus.ThreadMode;
import java.lang.reflect.Field;
import cn.sharesdk.framework.Platform;
import io.reactivex.SingleObserver;
import io.reactivex.disposables.Disposable;
import io.reactivex.functions.Action;
import kotlin.jvm.functions.Function0;
/**
@@ -76,7 +75,7 @@ import kotlin.jvm.functions.Function0;
*
* @author Administrator
*/
public class HomePartyFragment extends BaseFragment implements View.OnClickListener, ShareDialog.OnShareDialogItemClick {
public class HomePartyFragment extends BaseFragment implements View.OnClickListener {
private Fragment roomFragment;
@@ -97,12 +96,8 @@ public class HomePartyFragment extends BaseFragment implements View.OnClickListe
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();
@@ -221,73 +216,6 @@ public class HomePartyFragment extends BaseFragment implements View.OnClickListe
}
}
// 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(ResUtil.getString(R.string.avroom_fragment_homepartyfragment_01));
// return;
// }
// if (AvRoomDataManager.get().isGamePlaying()) {
// SingleToastUtil.showToast(ResUtil.getString(R.string.avroom_fragment_homepartyfragment_02));
// } 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(ResUtil.getString(R.string.avroom_fragment_homepartyfragment_03));
// }
// if (!isShowChangeGame()) {
// SingleToastUtil.showToast(ResUtil.getString(R.string.avroom_fragment_homepartyfragment_04));
// return;
// }
//
// GameInfo gameInfo = gameAdapter.getItem(position);
// if (gameInfo != null) {
// int type;
// long mgId = 0;
// if (Objects.equals(ResUtil.getString(R.string.avroom_fragment_homepartyfragment_05), 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() {
return false;
// 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);
@@ -463,34 +391,6 @@ public class HomePartyFragment extends BaseFragment implements View.OnClickListe
ivFollowRoom.setImageResource(AvRoomDataManager.get().isRoomFans ? R.drawable.room_ic_collect_yes : R.drawable.room_ic_collect_no);
setIdOnlineData();
// if (isShowChangeGame()) {
// initRvGame();
// gameMainBinding.llChangeGame.setVisibility(View.VISIBLE);
// if (AvRoomDataManager.get().isOpenGame()) {
// gameMainBinding.tvCurrGame.setText(currentRoomInfo.getMgName());
// } else {
// gameMainBinding.tvCurrGame.setText(ResUtil.getString(R.string.avroom_fragment_homepartyfragment_08));
// }
// 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(ResUtil.getString(R.string.avroom_fragment_homepartyfragment_09));
// gameInfos.add(gameInfo);
// }
// gameAdapter.setNewData(gameInfos);
// });
// } else {
// gameMainBinding.llChangeGame.setVisibility(View.GONE);
// }
}
}
@@ -513,15 +413,16 @@ public class HomePartyFragment extends BaseFragment implements View.OnClickListe
public void onClick(View v) {
switch (v.getId()) {
case R.id.room_more:
int gravity = Gravity.END;
if(UiUtils.INSTANCE.isRtl(requireContext())){
gravity = Gravity.START;
}
ExitRoomPopupWindow.newInstance((AVRoomActivity) requireActivity())
.showAtLocation(gameMainBinding.getRoot(), Gravity.END, 0, 0);
.showAtLocation(gameMainBinding.getRoot(), gravity, 0, 0);
break;
case R.id.ll_room_info:
RoomOnlineUserActivity.start(getActivity());
break;
// case R.id.iv_room_share:
// shareRoom();
// break;
case R.id.iv_follow_room:
followRoom();
break;
@@ -571,67 +472,6 @@ public class HomePartyFragment extends BaseFragment implements View.OnClickListe
ivFollowRoom.setImageResource(AvRoomDataManager.get().isRoomFans ? R.drawable.room_ic_collect_yes : R.drawable.room_ic_collect_no);
}
// @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();
// }
@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) {
@@ -720,4 +560,20 @@ public class HomePartyFragment extends BaseFragment implements View.OnClickListe
gameMainBinding.roomNums.setText(ResUtil.getString(R.string.avroom_fragment_homepartyfragment_013) + onlineNumber);
}
public void showUserCardDialog(String uid){
long id = JavaUtil.str2long(uid);
if (id == 0) {
return;
}
if (roomFragment instanceof GiftDialog.OnGiftDialogBtnClickListener) {
UserInfoDialog.showNewUserInfoDialog(
mContext,
id,
true,
true,
true, (GiftDialog.OnGiftDialogBtnClickListener) roomFragment
);
}
}
}

View File

@@ -8,10 +8,9 @@ import android.view.View;
import androidx.annotation.NonNull;
import androidx.databinding.DataBindingUtil;
import com.chwl.app.avroom.rank.RoomRankWidget;
import com.chwl.app.avroom.gameplay.RoomGameplayListWidget;
import com.chwl.app.avroom.gameplay.RoomGameplayWidget;
import com.chwl.app.music.widget.MusicPlayerView;
import com.chwl.app.ui.webview.DialogWebViewActivity;
import com.chwl.core.home.bean.BannerInfo;
import com.netease.nim.uikit.common.util.log.LogUtil;
import com.trello.rxlifecycle3.android.FragmentEvent;
import com.chwl.app.R;
@@ -27,10 +26,8 @@ import com.chwl.app.avroom.dialog.MicQueueDialog;
import com.chwl.app.avroom.dialog.PKMicQueueDialog;
import com.chwl.app.avroom.dialog.PKResultDialog;
import com.chwl.app.avroom.dialog.PKScoreBoardDialog;
import com.chwl.app.avroom.firstcharge.FirstChargePrizeDialog;
import com.chwl.app.avroom.giftvalue.GiftValueDialogUiHelper;
import com.chwl.app.avroom.presenter.HomePartyPresenter;
import com.chwl.app.avroom.redpackage.RedPackageWidget;
import com.chwl.app.avroom.view.IHomePartyView;
import com.chwl.app.avroom.widget.PKBoardView;
import com.chwl.app.base.BaseMvpActivity;
@@ -47,7 +44,6 @@ import com.chwl.core.im.custom.bean.RoomPkBean;
import com.chwl.core.manager.AvRoomDataManager;
import com.chwl.core.manager.RoomEvent;
import com.chwl.core.market_verify.MarketVerifyModel;
import com.chwl.core.pay.event.FirstChargeEvent;
import com.chwl.core.room.bean.RoomInfo;
import com.chwl.core.room.event.DatingSelectUserEvent;
import com.chwl.core.room.face.DynamicFaceModel;
@@ -137,8 +133,8 @@ public class HomePartyRoomFragment extends BaseRoomFragment<IHomePartyView, Home
@Override
public void initWidget() {
super.initWidget();
registerWidget(RedPackageWidget.class.getSimpleName(), gameBinding.redPackageWidget);
registerWidget(RoomRankWidget.class.getSimpleName(), gameBinding.rankWidget);
registerWidget(RoomGameplayListWidget.class.getSimpleName(), gameBinding.gameplayListWidget);
registerWidget(RoomGameplayWidget.class.getSimpleName(), gameBinding.gameplayWidget);
}
@SuppressLint("CheckResult")
@@ -151,7 +147,6 @@ public class HomePartyRoomFragment extends BaseRoomFragment<IHomePartyView, Home
updateQueuingMicBtn();
updatePkScoreBoard();
initRoomPkOrder(AvRoomDataManager.get().showPkBeginTime, AvRoomDataManager.get().pkBeginTime);
getMvpPresenter().getBannerList();
}
@Override
@@ -593,12 +588,6 @@ public class HomePartyRoomFragment extends BaseRoomFragment<IHomePartyView, Home
getMvpPresenter().cancelDragon();
});
break;
case R.id.tv_hour_rank:
DialogWebViewActivity.start(
mContext,
UriProvider.getRoomHourRankUrl(AvRoomDataManager.get().getRoomUid())
);
break;
default:
break;
}
@@ -787,42 +776,6 @@ public class HomePartyRoomFragment extends BaseRoomFragment<IHomePartyView, Home
if (AvRoomDataManager.get().mCurrentRoomInfo == null) {
return;
}
if (AvRoomDataManager.get().mCurrentRoomInfo.getIsPermitRoom() == 1) {
gameBinding.tvHourRank.setVisibility(View.VISIBLE);
} else {
gameBinding.tvHourRank.setVisibility(View.GONE);
}
// if (!GoldBoxHelper.needIntegrateBoxEntrance()) {
// GoldBoxHelper.isHideBox().subscribe(
// hide -> {
// if (hide != null && !hide) {
// if (AvRoomDataManager.get().isCpRoom()) {
// gameBinding.ivTreasureBoxCp.setVisibility(View.VISIBLE);
// gameBinding.ivTreasureBox.setVisibility(View.GONE);
// } else {
// gameBinding.ivTreasureBoxCp.setVisibility(View.GONE);
// gameBinding.ivTreasureBox.setVisibility(View.VISIBLE);
// GlideApp.with(BasicConfig.INSTANCE.getAppContext())
// .load(GoldBoxHelper.getBoxIcon())
// .error(R.drawable.icon_room_treasure_box)
// .into(gameBinding.ivTreasureBox);
// }
// } else {
// gameBinding.ivTreasureBoxCp.setVisibility(View.GONE);
// gameBinding.ivTreasureBox.setVisibility(View.GONE);
// }
// },
// throwable -> {
// gameBinding.ivTreasureBoxCp.setVisibility(View.GONE);
// gameBinding.ivTreasureBox.setVisibility(View.GONE);
// });
// } else {
// gameBinding.ivTreasureBoxCp.setVisibility(View.GONE);
// gameBinding.ivTreasureBox.setVisibility(View.GONE);
// }
setDragonView();
}
@@ -956,18 +909,6 @@ public class HomePartyRoomFragment extends BaseRoomFragment<IHomePartyView, Home
return pkMicQueueDialog != null && pkMicQueueDialog.isShowing();
}
@Override
public void onShowBanner(List<BannerInfo> bannerInfos) {
initRoomAct(gameBinding.activityImg, bannerInfos, 11f);
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void onFirstRechargeEvent(FirstChargeEvent event) {
gameBinding.ivFirstChargeEnter.setVisibility(View.GONE);
new FirstChargePrizeDialog(requireContext(), event.getChargeProdTitle(), event.getFirstChargeRewardList()).openDialog();
}
/**
* 底部按钮点击处理
*/

View File

@@ -1,152 +0,0 @@
package com.chwl.app.avroom.fragment;
import android.os.Bundle;
import androidx.annotation.Nullable;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
import com.chwl.app.R;
import com.chwl.app.avroom.adapter.InviteFriendListAdapter;
import com.chwl.app.base.BaseFragment;
import com.chwl.app.public_chat_hall.bean.PublicChatHallFriendInfo;
import com.chwl.core.im.friend.IMFriendModel;
import com.chwl.core.manager.IMNetEaseManager;
import com.chwl.core.manager.RelationShipEvent;
import com.chwl.core.user.UserModel;
import com.chwl.core.user.bean.UserInfo;
import com.chwl.library.utils.ListUtils;
import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode;
import java.util.ArrayList;
import java.util.List;
import io.reactivex.SingleObserver;
import io.reactivex.disposables.Disposable;
/**
* 公聊大厅选择艾特人的好友页面
*/
public class InviteFriendListFragment extends BaseFragment {
private static final String TAG = "InviteFriendListFragment";
private InviteFriendListAdapter adapter = null;
private SwipeRefreshLayout mSwipeRefresh;
private RecyclerView mRecyclerView;
public static InviteFriendListFragment newInstances() {
return new InviteFriendListFragment();
}
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
EventBus.getDefault().register(this);
}
@Override
public void onDestroy() {
super.onDestroy();
EventBus.getDefault().unregister(this);
}
@Override
public void onFindViews() {
mSwipeRefresh = mView.findViewById(R.id.swipe_refresh);
mRecyclerView = mView.findViewById(R.id.recycler_view);
}
@Override
public void onSetListener() {
}
@Override
public void initiate() {
mSwipeRefresh.setEnabled(false);
if (adapter == null) {
adapter = new InviteFriendListAdapter(getActivity());
mRecyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
mRecyclerView.setAdapter(adapter);
loadFriends();
} else {
mRecyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
mRecyclerView.setAdapter(adapter);
}
Disposable d = IMNetEaseManager.get().getRelationShipEventObservable().subscribe(this::onGetRelationShipEvent);
mCompositeDisposable.add(d);
}
private void onGetRelationShipEvent(RelationShipEvent event) {
if (event.event == RelationShipEvent.EVENT_FRIEND_UPDATE) {
onFriendListUpdate(event.accounts);
}
}
private void loadFriends() {
onFriendListUpdate(IMFriendModel.get().getMyFriendsAccounts());
}
@Override
public int getRootLayoutId() {
return R.layout.fragment_fans_list;
}
private void onFriendListUpdate(List<String> accounts) {
if (ListUtils.isListEmpty(accounts)) {
showNoData(getString(R.string.no_frenids_text));
return;
}
ArrayList<Long> ids = new ArrayList<>(accounts.size());
for (String account : accounts) {
ids.add(Long.valueOf(account));
}
UserModel.get().loadUserInfoByUids(accounts).subscribe(new SingleObserver<List<UserInfo>>() {
@Override
public void onSubscribe(Disposable d) {
mCompositeDisposable.add(d);
}
@Override
public void onSuccess(List<UserInfo> userInfos) {
List<PublicChatHallFriendInfo> publicChatHallFriendInfoList = new ArrayList<>();
for (UserInfo userInfo : userInfos) {
PublicChatHallFriendInfo friendInfo = new PublicChatHallFriendInfo();
friendInfo.setUserInfo(userInfo);
publicChatHallFriendInfoList.add(friendInfo);
}
setData(publicChatHallFriendInfoList);
}
@Override
public void onError(Throwable e) {
toast(e.getMessage());
}
});
}
private void setData(List<PublicChatHallFriendInfo> userInfos) {
if (userInfos != null && !userInfos.isEmpty()) {
hideStatus();
adapter.setNewData(userInfos);
//adapter.notifyDataSetChanged();
} else {
showNoData(getString(R.string.no_frenids_text));
}
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void onCurrentUserInfoUpdate(UserInfo userInfo) {
mRecyclerView.postDelayed(() -> onFriendListUpdate(IMFriendModel.get().getMyFriendsAccounts())
, 250);
}
}

View File

@@ -6,11 +6,13 @@ import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chwl.core.room.bean.RoomOnlineUserBean;
import com.netease.nim.uikit.common.util.sys.NetworkUtil;
import com.netease.nimlib.sdk.chatroom.model.ChatRoomMember;
import com.orhanobut.logger.Logger;
import com.scwang.smartrefresh.layout.SmartRefreshLayout;
import com.scwang.smartrefresh.layout.api.RefreshLayout;
import com.scwang.smartrefresh.layout.listener.OnRefreshListener;
import com.scwang.smartrefresh.layout.listener.OnRefreshLoadmoreListener;
import com.chwl.app.R;
import com.chwl.app.avroom.adapter.OnlineUserAdapter;
@@ -44,7 +46,6 @@ public class OnlineUserFragment extends BaseMvpFragment<IHomePartyUserListView,
private SmartRefreshLayout mRefreshLayout;
private OnlineUserAdapter mOnlineUserAdapter;
private int mPage = Constants.PAGE_START;
private boolean isShowToUser = false;
@Override
@@ -58,25 +59,12 @@ public class OnlineUserFragment extends BaseMvpFragment<IHomePartyUserListView,
public void onFindViews() {
mRecyclerView = mView.findViewById(R.id.recycler_view);
mRefreshLayout = mView.findViewById(R.id.refresh_layout);
mRefreshLayout.setEnableLoadmore(false);
}
@Override
public void onSetListener() {
mRefreshLayout.setOnRefreshLoadmoreListener(new OnRefreshLoadmoreListener() {
@Override
public void onLoadmore(RefreshLayout refreshLayout) {
if (!NetworkUtil.isNetAvailable(mContext)) {
mRefreshLayout.finishLoadmore();
return;
}
List<OnlineChatMember> data = mOnlineUserAdapter.getData();
if (ListUtils.isListEmpty(data)) {
mRefreshLayout.finishLoadmore();
return;
}
loadData(data.get(data.size() - 1).chatRoomMember.getEnterTime());
}
mRefreshLayout.setOnRefreshListener(new OnRefreshListener() {
@Override
public void onRefresh(RefreshLayout refreshLayout) {
if (!NetworkUtil.isNetAvailable(mContext)) {
@@ -106,53 +94,24 @@ public class OnlineUserFragment extends BaseMvpFragment<IHomePartyUserListView,
public void firstLoad() {
mPage = Constants.PAGE_START;
loadData(0);
loadData();
}
private void loadData(long time) {
getMvpPresenter().requestChatMemberByPage(mPage, time,
mOnlineUserAdapter == null ? null : mOnlineUserAdapter.getData());
private void loadData() {
getMvpPresenter().requestRoomOnlineList(AvRoomDataManager.get().getRoomUid());
}
@Override
public void onRequestChatMemberByPageSuccess(List<OnlineChatMember> chatRoomMemberList, int page) {
mPage = page;
if (!ListUtils.isListEmpty(chatRoomMemberList)) {
//超管不显示
Iterator<OnlineChatMember> iterator = chatRoomMemberList.iterator();
while (iterator.hasNext()) {
OnlineChatMember member = iterator.next();
if (member != null && SuperAdminUtil.isSuperAdmin(member.chatRoomMember)) {
iterator.remove();
}
}
mOnlineUserAdapter.setNewData(chatRoomMemberList);
if (mPage == Constants.PAGE_START) {
mRefreshLayout.finishRefresh();
} else {
mRefreshLayout.finishLoadmore(0);
}
mPage++;
} else {
if (mPage == Constants.PAGE_START) {
mRefreshLayout.finishRefresh();
} else {
mRefreshLayout.finishLoadmore(0);
}
}
public void onRequestRoomOnlineListSuccess(List<RoomOnlineUserBean> chatRoomMemberList) {
mOnlineUserAdapter.setNewData(chatRoomMemberList);
mRefreshLayout.finishRefresh();
}
@Override
public void onRequestChatMemberByPageFail(String errorStr, int page) {
Logger.i(ResUtil.getString(R.string.avroom_fragment_onlineuserfragment_01) + page);
mPage = page;
if (mPage == Constants.PAGE_START) {
mRefreshLayout.finishRefresh();
} else {
mRefreshLayout.finishLoadmore(0);
}
mRefreshLayout.finishRefresh();
}
@Override
@@ -166,16 +125,15 @@ public class OnlineUserFragment extends BaseMvpFragment<IHomePartyUserListView,
public void onItemClick(BaseQuickAdapter baseQuickAdapter, View view, int position) {
RoomInfo currentRoom = AvRoomDataManager.get().mCurrentRoomInfo;
if (currentRoom != null) {
List<OnlineChatMember> chatRoomMembers = mOnlineUserAdapter.getData();
List<RoomOnlineUserBean> chatRoomMembers = mOnlineUserAdapter.getData();
if (ListUtils.isListEmpty(chatRoomMembers)) return;
OnlineChatMember onlineChatMember = chatRoomMembers.get(position);
ChatRoomMember chatRoomMember = onlineChatMember.chatRoomMember;
if (chatRoomMember != null) {
RoomOnlineUserBean onlineChatMember = chatRoomMembers.get(position);
if (onlineChatMember != null) {
if (onlineChatMember.getItemType() == OnlineChatMember.NOBLE) {
return;
}
UserInfoDialog.showNewUserInfoDialog(mContext,
JavaUtil.str2long(chatRoomMember.getAccount()),
onlineChatMember.getUid(),
true,
false,
true,
@@ -185,28 +143,24 @@ public class OnlineUserFragment extends BaseMvpFragment<IHomePartyUserListView,
}
@Override
public void onMemberIn(String account, List<OnlineChatMember> dataList) {
public void onMemberIn(String account) {
// if (!isResumed()) return;
// getMvpPresenter().onMemberInRefreshData(account, dataList, mPage);
}
@Override
public void onMemberExit(String account, List<OnlineChatMember> dataList) {
public void onMemberExit(String account) {
// if (!isResumed()) return;
// if (!isShowToUser()) return;
// firstLoad();
}
@Override
public void onMemberDownUpMic(String account, boolean isUpMic, List<OnlineChatMember> dataList) {
if (!isResumed()) return;
getMvpPresenter().onMemberDownUpMic(account, isUpMic, dataList, mPage);
public void onMemberDownUpMic(String account, boolean isUpMic) {
}
@Override
public void onUpdateMemberManager(String account, boolean isRemoveManager, List<OnlineChatMember> dataList) {
if (!isResumed()) return;
getMvpPresenter().onUpdateMemberManager(account, dataList, isRemoveManager, mPage);
public void onUpdateMemberManager(String account, boolean isRemoveManager) {
}
@Override

View File

@@ -3,6 +3,7 @@ package com.chwl.app.avroom.fragment;
import androidx.fragment.app.Fragment;
import com.chwl.app.R;
import com.chwl.app.avroom.adapter.CommonVPAdapter;
import com.chwl.app.avroom.adapter.RoomContributeListAdapter;
import com.chwl.app.avroom.widget.RankNavigatorAdapter;
import com.chwl.app.base.BaseBindingFragment;
@@ -26,7 +27,7 @@ public class RoomCharmListFragment extends BaseBindingFragment<FragmentRoomCharm
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));
mBinding.vpCharmRankings.setAdapter(new CommonVPAdapter(getChildFragmentManager(), getLifecycle(),fragments));
CommonNavigator commonNavigator = new CommonNavigator(getActivity());
commonNavigator.setAdjustMode(false);

View File

@@ -2,8 +2,10 @@ package com.chwl.app.avroom.fragment;
import androidx.fragment.app.Fragment;
import androidx.viewpager.widget.ViewPager;
import androidx.viewpager2.widget.ViewPager2;
import com.chwl.app.R;
import com.chwl.app.avroom.adapter.CommonVPAdapter;
import com.chwl.app.avroom.adapter.RoomContributeListAdapter;
import com.chwl.app.avroom.widget.RankNavigatorAdapter;
import com.chwl.app.base.BaseMvpFragment;
@@ -21,7 +23,7 @@ import java.util.ArrayList;
*/
public class RoomContributeListFragment extends BaseMvpFragment implements IMvpBaseView {
private ViewPager viewPager;
private ViewPager2 viewPager;
private MagicIndicator viewIndicator;
@Override
@@ -43,7 +45,7 @@ public class RoomContributeListFragment extends BaseMvpFragment implements IMvpB
if (AvRoomDataManager.get().isDatingMode()) {
fragments.add(RoomContributeFragment.newInstance(RoomContributeDataInfo.TYPE_ROOM_MONTH_RANKING));
}
viewPager.setAdapter(new RoomContributeListAdapter(getChildFragmentManager(), fragments));
viewPager.setAdapter(new CommonVPAdapter(getChildFragmentManager(),getLifecycle(), fragments));
CommonNavigator commonNavigator = new CommonNavigator(getActivity());
commonNavigator.setAdjustMode(false);
RankNavigatorAdapter indicator = new RankNavigatorAdapter(AvRoomDataManager.get().isDatingMode());

View File

@@ -5,6 +5,7 @@ import android.view.View;
import androidx.fragment.app.Fragment;
import com.chwl.app.R;
import com.chwl.app.avroom.adapter.CommonVPAdapter;
import com.chwl.app.avroom.adapter.RoomContributeListAdapter;
import com.chwl.app.avroom.widget.RoomRankNavigatorAdapter;
import com.chwl.app.base.BaseBindingFragment;
@@ -29,7 +30,7 @@ public class RoomRankListFragment extends BaseBindingFragment<FragmentRoomRankLi
List<Fragment> list = new ArrayList<>(2);
list.add(new RoomContributeListFragment());
list.add(RoomCharmListFragment.newInstance());
mBinding.viewPager.setAdapter(new RoomContributeListAdapter(getChildFragmentManager(), list));
mBinding.viewPager.setAdapter(new CommonVPAdapter(getChildFragmentManager(), getLifecycle(), list));
CommonNavigator commonNavigator = new CommonNavigator(getActivity());
commonNavigator.setAdjustMode(true);

View File

@@ -2,48 +2,31 @@ package com.chwl.app.avroom.fragment
import android.annotation.SuppressLint
import android.os.Bundle
import android.view.View
import androidx.constraintlayout.widget.ConstraintLayout
import androidx.core.view.isVisible
import androidx.core.view.updateLayoutParams
import androidx.databinding.DataBindingUtil
import androidx.fragment.app.viewModels
import com.chwl.app.R
import com.chwl.app.avroom.adapter.OnMicroItemClickListener
import com.chwl.app.avroom.adapter.SingleAnchorMicroViewAdapter
import com.chwl.app.avroom.adapter.SingleRoomPKMicroViewAdapter
import com.chwl.app.avroom.dialog.RequestUpMicDialog
import com.chwl.app.avroom.firstcharge.FirstChargePrizeDialog
import com.chwl.app.avroom.gameplay.RoomGameplayListWidget
import com.chwl.app.avroom.gameplay.RoomGameplayWidget
import com.chwl.app.avroom.presenter.SingleRoomPresenter
import com.chwl.app.avroom.rank.RoomRankWidget
import com.chwl.app.avroom.redpackage.RedPackageWidget
import com.chwl.app.avroom.singleroompk.SingleRoomPkFinishDialog
import com.chwl.app.avroom.singleroompk.SingleRoomPkForceFinishDialog
import com.chwl.app.avroom.singleroompk.SingleRoomPkReceivedDialog
import com.chwl.app.avroom.view.ISingleRoomView
import com.chwl.app.databinding.FragmentSingleRoomBinding
import com.chwl.app.fansteam.FansTeamJoinActivity
import com.chwl.app.fansteam.FansTeamJoinedActivity
import com.chwl.app.fansteam.FansTeamViewModel
import com.chwl.app.music.widget.MusicPlayerView
import com.chwl.app.ui.webview.CommonWebViewActivity
import com.chwl.app.ui.webview.DialogWebViewActivity
import com.chwl.core.UriProvider
import com.chwl.core.auth.AuthModel
import com.chwl.core.fansteam.bean.FansTeamInitInfo
import com.chwl.core.home.bean.BannerInfo
import com.chwl.core.im.custom.bean.FansTeamMsgAttachment
import com.chwl.core.im.custom.bean.RequestUpmicAttachment
import com.chwl.core.im.custom.bean.RoomPKAttachment
import com.chwl.core.manager.AvRoomDataManager
import com.chwl.core.manager.RoomEvent
import com.chwl.core.pay.event.FirstChargeEvent
import com.chwl.core.user.bean.UserInfo
import com.chwl.library.base.factory.CreatePresenter
import com.example.lib_utils.ktx.singleClick
import com.netease.nim.uikit.common.util.sys.ScreenUtil
import org.greenrobot.eventbus.Subscribe
import org.greenrobot.eventbus.ThreadMode
/**
* 個播房間
@@ -68,7 +51,6 @@ class SingleRoomFragment : BaseRoomFragment<ISingleRoomView?, SingleRoomPresente
private lateinit var gameBinding: FragmentSingleRoomBinding
private lateinit var upMicDialog: RequestUpMicDialog
private val fansTeamViewModel: FansTeamViewModel by viewModels()
override fun getRootLayoutId(): Int {
return R.layout.fragment_single_room
}
@@ -84,73 +66,6 @@ class SingleRoomFragment : BaseRoomFragment<ISingleRoomView?, SingleRoomPresente
@SuppressLint("CheckResult")
override fun initiate() {
super.initiate()
mvpPresenter?.getBannerList()
// initSpeedyMessage(gameBinding.flSpeedyMessage)
fansTeamViewModel.loadFansTeamInitInfo()
fansTeamViewModel.fansTeamInitInfoLiveData.observe(viewLifecycleOwner) {
it?.let {
updateFansTeamInfo(it)
}
}
gameBinding.tvHourRank.singleClick {
DialogWebViewActivity.start(
mContext,
UriProvider.getSingleRoomHourRankUrl(AvRoomDataManager.get().roomUid)
)
}
}
@SuppressLint("SetTextI18n")
private fun updateFansTeamInfo(initInfo: FansTeamInitInfo) {
var clickListener: View.OnClickListener? = null
if (initInfo.hasFansTeamCurrentRoom) {
if (AvRoomDataManager.get().isRoomOwner) {
gameBinding.flFansTeamJoinTip.isVisible = false
gameBinding.tvFansTeamOpt.isVisible = true
gameBinding.tvFansTeamOpt.text = "粉絲團(${initInfo.anchorFansNum})"
clickListener = View.OnClickListener {
DialogWebViewActivity.start(
requireContext(),
UriProvider.getFansTeamMyFansUrl(AvRoomDataManager.get().roomUid)
)
}
} else {
if (initInfo.isAnchorFans) {
gameBinding.flFansTeamJoinTip.isVisible = false
gameBinding.tvFansTeamOpt.isVisible = true
gameBinding.tvFansTeamOpt.text =
"粉絲LV.${if (initInfo.fansLevelSeq == 0) 1 else initInfo.fansLevelSeq}"
clickListener = View.OnClickListener {
FansTeamJoinedActivity.start(requireContext())
}
} else {
gameBinding.flFansTeamJoinTip.isVisible = true
gameBinding.tvFansTeamOpt.isVisible = false
clickListener = View.OnClickListener {
FansTeamJoinActivity.start(requireContext())
}
}
}
} else {
if (AvRoomDataManager.get().isRoomOwner) {
gameBinding.flFansTeamJoinTip.isVisible = false
gameBinding.tvFansTeamOpt.isVisible = true
gameBinding.tvFansTeamOpt.text = "開通粉絲團"
clickListener = View.OnClickListener {
CommonWebViewActivity.start(
requireContext(),
UriProvider.getFansTeamOpenUrl(AvRoomDataManager.get().roomUid)
)
}
} else {
gameBinding.flFansTeamJoinTip.isVisible = false
gameBinding.tvFansTeamOpt.isVisible = true
gameBinding.tvFansTeamOpt.text = "TA暫未開通粉絲團"
}
}
gameBinding.flFansTeam.setOnClickListener(clickListener)
}
override fun onReceiveRoomEvent(roomEvent: RoomEvent?) {
@@ -162,28 +77,6 @@ class SingleRoomFragment : BaseRoomFragment<ISingleRoomView?, SingleRoomPresente
showInviteDialog(it)
}
}
RoomEvent.FANS_TEAM_OPEN_SUCCESS,
RoomEvent.FANS_TEAM_OPEN_FAILED,
RoomEvent.FANS_TEAM_JOIN,
RoomEvent.FANS_TEAM_EXIT -> {
(roomEvent.chatRoomMessage?.attachment as? FansTeamMsgAttachment)?.fansTeamMsgInfo?.let {
val currFansTeamInitInfo = fansTeamViewModel.fansTeamInitInfoLiveData.value
updateFansTeamInfo(
FansTeamInitInfo(
it.count,
currFansTeamInitInfo?.fansLevelSeq ?: 1,
roomEvent.event != RoomEvent.FANS_TEAM_OPEN_FAILED,
if (AuthModel.get().currentUid == it.uid) {
roomEvent.event == RoomEvent.FANS_TEAM_JOIN
} else {
currFansTeamInitInfo?.isAnchorFans ?: false
},
AvRoomDataManager.get().isRoomOwner,
roomEvent.event == RoomEvent.FANS_TEAM_OPEN_FAILED
)
)
}
}
RoomEvent.ROOM_PK_INVITE ->
SingleRoomPkReceivedDialog.newInstance((roomEvent.chatRoomMessage.attachment as RoomPKAttachment).roomPkBean)
.show(mContext)
@@ -219,7 +112,6 @@ class SingleRoomFragment : BaseRoomFragment<ISingleRoomView?, SingleRoomPresente
override fun onEnterRoom() {
super.onEnterRoom()
fansTeamViewModel.loadFansTeamInitInfo()
}
override fun updateView() {
@@ -241,24 +133,13 @@ class SingleRoomFragment : BaseRoomFragment<ISingleRoomView?, SingleRoomPresente
}
}
override fun onShowBanner(dialogInfos: List<BannerInfo>) {
initRoomAct(gameBinding.activityImg, dialogInfos, 10f)
}
@Subscribe(threadMode = ThreadMode.MAIN)
fun onFirstRechargeEvent(event: FirstChargeEvent) {
gameBinding.ivFirstChargeEnter.visibility = View.GONE
FirstChargePrizeDialog(
requireContext(),
event.chargeProdTitle,
event.firstChargeRewardList
).openDialog()
}
override fun initWidget() {
super.initWidget()
registerWidget(RedPackageWidget::class.java.simpleName, gameBinding.redPackageWidget)
registerWidget(RoomRankWidget::class.java.simpleName, gameBinding.rankWidget)
registerWidget(
RoomGameplayListWidget::class.java.simpleName,
gameBinding.gameplayListWidget
)
registerWidget(RoomGameplayWidget::class.java.simpleName, gameBinding.gameplayWidget)
}
override fun onInitMusicPlayerView(view: MusicPlayerView) {

View File

@@ -0,0 +1,22 @@
package com.chwl.app.avroom.gameplay
import android.content.Context
import android.util.AttributeSet
import android.view.MotionEvent
import androidx.recyclerview.widget.RecyclerView
class GameplayRecyclerView : RecyclerView {
constructor(context: Context) : super(context)
constructor(context: Context, attrs: AttributeSet?) : super(context, attrs)
constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int) : super(
context,
attrs,
defStyleAttr
)
override fun onInterceptTouchEvent(e: MotionEvent?): Boolean {
parent.requestDisallowInterceptTouchEvent(true)
return super.onInterceptTouchEvent(e)
}
}

View File

@@ -0,0 +1,66 @@
package com.chwl.app.avroom.gameplay
import android.content.Context
import android.util.AttributeSet
import android.view.LayoutInflater
import android.view.ViewConfiguration
import androidx.databinding.DataBindingUtil
import com.chwl.core.support.room.FrameLayoutRoomWidget
import com.chwl.app.R
import com.chwl.app.databinding.RoomGameplayListWidgetBinding
import com.chwl.core.room.bean.RoomIcon
class RoomGameplayListWidget : FrameLayoutRoomWidget {
private val adapter = RoomPlayListAdapter()
private val binding: RoomGameplayListWidgetBinding =
DataBindingUtil.inflate(
LayoutInflater.from(
context
), R.layout.room_gameplay_list_widget, this, true
)
constructor(context: Context) : super(context)
constructor(context: Context, attrs: AttributeSet?) : super(context, attrs)
constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int) : super(
context,
attrs,
defStyleAttr
)
constructor(
context: Context,
attrs: AttributeSet?,
defStyleAttr: Int,
defStyleRes: Int
) : super(context, attrs, defStyleAttr, defStyleRes)
init {
binding.recyclerView.adapter = adapter
binding.ivSwitch.setOnClickListener {
getGameplayIconWidget()?.switchUI(false)
}
adapter.setOnItemClickListener { adapter, view, position ->
(adapter.getItem(position) as? RoomIcon)?.let {
getGameplayIconWidget()?.jump(it)
}
}
}
private fun getGameplayIconWidget(): RoomGameplayWidget? {
return roomView?.findWidget(
RoomGameplayWidget::class.simpleName ?: ""
) as? RoomGameplayWidget
}
fun loadData(list: List<RoomIcon>) {
adapter.setNewData(list)
if (list.size > 6) {
binding.recyclerView.isScrollbarFadingEnabled = false
binding.recyclerView.scrollBarFadeDuration = 0
} else {
binding.recyclerView.isScrollbarFadingEnabled = true
binding.recyclerView.scrollBarFadeDuration =
ViewConfiguration.getScrollBarFadeDuration()
}
}
}

View File

@@ -0,0 +1,119 @@
package com.chwl.app.avroom.gameplay
import android.content.Context
import android.util.AttributeSet
import android.view.LayoutInflater
import android.view.View
import androidx.core.view.isVisible
import androidx.databinding.DataBindingUtil
import com.chwl.app.R
import com.chwl.app.databinding.RoomGameplayWidgetBinding
import com.chwl.app.treasure_box.widget.GoldBoxHelper
import com.chwl.app.ui.utils.load
import com.chwl.app.ui.webview.CommonWebViewActivity
import com.chwl.app.ui.webview.room_banner.RoomWebDialogActivity
import com.chwl.app.utils.CommonJumpHelper
import com.chwl.core.room.bean.RoomIcon
import com.chwl.core.room.model.AvRoomModel
import com.chwl.core.support.room.FrameLayoutRoomWidget
import com.chwl.core.support.room.RoomContext
import com.chwl.core.support.room.RoomView
import com.example.lib_utils.ktx.singleClick
class RoomGameplayWidget : FrameLayoutRoomWidget {
private val binding: RoomGameplayWidgetBinding =
DataBindingUtil.inflate(
LayoutInflater.from(
context
), R.layout.room_gameplay_widget, this, true
)
private var isOpened = false
private var list: List<RoomIcon>? = null
constructor(context: Context) : super(context)
constructor(context: Context, attrs: AttributeSet?) : super(context, attrs)
constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int) : super(
context,
attrs,
defStyleAttr
)
constructor(
context: Context,
attrs: AttributeSet?,
defStyleAttr: Int,
defStyleRes: Int
) : super(context, attrs, defStyleAttr, defStyleRes)
init {
binding.ivSwitch.setOnClickListener {
switchUI(!isOpened)
}
binding.ivIcon.singleClick {
list?.getOrNull(0)?.let {
jump(it)
}
}
}
override fun onInitialize(roomView: RoomView, roomContext: RoomContext) {
super.onInitialize(roomView, roomContext)
refreshData()
}
private fun refreshData() {
val disposable = AvRoomModel.get().roomGamePlayList
.subscribe { list: List<RoomIcon> ->
loadData(list)
}
getCompositeDisposable().add(disposable)
}
fun switchUI(openListWidget: Boolean) {
this.isOpened = openListWidget
if (openListWidget) {
this.visibility = View.INVISIBLE
getGameplayListWidget()?.visibility = View.VISIBLE
} else {
this.visibility = View.VISIBLE
getGameplayListWidget()?.visibility = View.GONE
}
}
private fun loadData(list: List<RoomIcon>) {
this.list = list
this.isVisible = list.isNotEmpty()
val listWidget = getGameplayListWidget()
if (list.isEmpty()) {
listWidget?.isVisible = false
}
listWidget?.loadData(list)
binding.ivIcon.load(list.firstOrNull()?.icon)
}
fun jump(data: RoomIcon) {
if (data.isFindLove()) {
GoldBoxHelper.handleBoxClick(context)
} else {
val url = data.skipContent
if (data.skipType == 3 && !url.isNullOrEmpty()) {
if (data.showType == 2) {
RoomWebDialogActivity.start(context, url, false)
} else {
CommonWebViewActivity.start(context, url)
}
} else {
CommonJumpHelper.bannerJump(context, data)
}
}
}
private fun getGameplayListWidget(): RoomGameplayListWidget? {
return roomView?.findWidget(
RoomGameplayListWidget::class.simpleName ?: ""
) as? RoomGameplayListWidget
}
}

View File

@@ -0,0 +1,16 @@
package com.chwl.app.avroom.gameplay
import android.widget.ImageView
import com.chad.library.adapter.base.BaseQuickAdapter
import com.chad.library.adapter.base.BaseViewHolder
import com.chwl.app.R
import com.chwl.app.ui.utils.load
import com.chwl.core.room.bean.RoomIcon
class RoomPlayListAdapter :
BaseQuickAdapter<RoomIcon, BaseViewHolder>(R.layout.room_gameplay_item) {
override fun convert(helper: BaseViewHolder, item: RoomIcon?) {
helper.getView<ImageView>(R.id.iv_icon).load(item?.icon)
}
}

View File

@@ -5,7 +5,7 @@ import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import com.chwl.app.R
import com.chwl.app.databinding.DialogNewUserChargePrizeBinding
import com.chwl.app.treasure_box.widget.dialog.BaseBindingDialog
import com.chwl.app.base.BaseBindingDialog
import com.chwl.app.ui.utils.RVDelegate
import com.chwl.core.pay.bean.FirstChargeReward
import com.chwl.library.annatation.ActLayoutRes

View File

@@ -459,13 +459,6 @@ public class AvRoomPresenter extends BaseMvpPresenter<IAvRoomView> {
*/
@SuppressLint("CheckResult")
public void checkFirstCharge() {
AvRoomModel.get().getFirstCharge()
.compose(bindToLifecycle())
.subscribe(firstChargeInfo -> {
if (getMvpView() != null && firstChargeInfo.getNeedToShow()) {
getMvpView().showFirstChargeDialog(firstChargeInfo);
}
});
}
/**

View File

@@ -455,12 +455,12 @@ public class BaseRoomPresenter<V extends IBaseRoomView> extends BaseMvpPresenter
ChatRoomMessage firstMsg = IMNetEaseManager.get().getFirstMessageContent();
IMNetEaseManager.get().addCloseScreenMessages(firstMsg);
if (AvRoomDataManager.get().closeScreenBySAdmin()) {
contentText = "系統檢測涉嫌違規,予以關閉公屏消息警告";
contentText = ResUtil.getString(R.string.avroom_fragment_homepartyfragment_015);
} else {
contentText = "管理員已關閉聊天公屏";
contentText = ResUtil.getString(R.string.avroom_fragment_homepartyfragment_06);
}
} else {
contentText = "管理員已開啟聊天公屏";
contentText = ResUtil.getString(R.string.avroom_fragment_homepartyfragment_014);
}
RoomInfoAttachment attachment = new RoomInfoAttachment(CustomAttachment.CUSTOM_MSG_UPDATE_ROOM_INFO,
CustomAttachment.CUSTOM_MSG_UPDATE_ROOM_INFO_CLOSE_SCREEN);
@@ -496,10 +496,10 @@ public class BaseRoomPresenter<V extends IBaseRoomView> extends BaseMvpPresenter
.doOnNext(aBoolean -> getMvpView().showAttentionDialog())
.subscribe();
Observable.interval(1, 5, TimeUnit.MINUTES)
.compose(bindUntilEvent(PresenterEvent.DESTROY))
.takeWhile(aLong -> !AvRoomDataManager.get().isRoomFans && getMvpView() != null)
.subscribe(aLong -> getMvpView().noFollow2());
// Observable.interval(1, 5, TimeUnit.MINUTES)
// .compose(bindUntilEvent(PresenterEvent.DESTROY))
// .takeWhile(aLong -> !AvRoomDataManager.get().isRoomFans && getMvpView() != null)
// .subscribe(aLong -> getMvpView().noFollow2());
}
/**

View File

@@ -12,12 +12,10 @@ import com.netease.nimlib.sdk.chatroom.model.ChatRoomMessage;
import com.netease.nimlib.sdk.msg.constant.MsgTypeEnum;
import com.chwl.app.R;
import com.chwl.app.avroom.view.IHomePartyView;
import com.chwl.app.treasure_box.widget.GoldBoxHelper;
import com.chwl.app.utils.UserUtils;
import com.chwl.core.Constants;
import com.chwl.core.auth.AuthModel;
import com.chwl.core.bean.RoomQueueInfo;
import com.chwl.core.home.bean.BannerInfo;
import com.chwl.core.im.custom.bean.CustomAttachment;
import com.chwl.core.im.custom.bean.FaceAttachment;
import com.chwl.core.manager.AvRoomDataManager;
@@ -298,49 +296,4 @@ public class HomePartyPresenter extends BaseRoomPresenter<IHomePartyView> {
, e -> SingleToastUtil.showToast(e.getMessage()));
}
@SuppressLint("CheckResult")
public void getBannerList() {
mAvRoomModel.getRoomBanner()
.compose(bindToLifecycle())
.subscribe(bannerInfos -> {
// final boolean firstCharge = UserUtils.getUserInfo().isFirstCharge();
if (GoldBoxHelper.needIntegrateBoxEntrance()) {
// if (firstCharge) {
// BannerInfo bannerInfo = new BannerInfo();
// bannerInfo.setFirstCharge(true);
// bannerInfos.add(0, bannerInfo);
// }
// if (GoldBoxHelper.isShowRadish()) {
// BannerInfo bannerInfo = new BannerInfo();
// bannerInfo.setRadish(true);
// bannerInfos.add(firstCharge ? 1 : 0, bannerInfo);
// }
getMvpView().onShowBanner(bannerInfos);
// GoldBoxHelper.isHideBox()
// .subscribe(isHide -> {
// if (!isHide) {
// BannerInfo bannerInfo = new BannerInfo();
// bannerInfo.setBox(true);
// int index = 0;
// if (firstCharge) index++;
// if (GoldBoxHelper.isShowRadish()) index++;
// bannerInfos.add(index, bannerInfo);
// }
// getMvpView().onShowBanner(bannerInfos);
// }, throwable -> getMvpView().onShowBanner(bannerInfos));
} else {
// if(GoldBoxHelper.isShowFairy()){
// BannerInfo bannerInfo = new BannerInfo();
// bannerInfo.setFairy(true);
// bannerInfos.add(0, bannerInfo);
// }
// if (firstCharge) {
// BannerInfo bannerInfo = new BannerInfo();
// bannerInfo.setFirstCharge(true);
// bannerInfos.add(0, bannerInfo);
// }
getMvpView().onShowBanner(bannerInfos);
}
});
}
}

View File

@@ -2,15 +2,9 @@ package com.chwl.app.avroom.presenter;
import android.annotation.SuppressLint;
import com.orhanobut.logger.Logger;
import com.chwl.app.R;
import com.chwl.app.avroom.view.IHomePartyUserListView;
import com.chwl.app.base.BaseMvpPresenter;
import com.chwl.core.room.bean.OnlineChatMember;
import com.chwl.core.room.model.HomePartyUserListModel;
import com.chwl.library.utils.ResUtil;
import java.util.List;
/**
* <p> </p>
@@ -26,49 +20,17 @@ public class HomePartyUserListPresenter extends BaseMvpPresenter<IHomePartyUserL
mHomePartyUserListMode = new HomePartyUserListModel();
}
/**
* 分页获取房间成员第一页包含队列成员固定成员游客50人之后每一页获取游客50人
*
* @param page 页数
* @param time 固定成员列表用updateTime,
* 游客列表用进入enterTime
* 填0会使用当前服务器最新时间开始查询即第一页单位毫秒
*/
@SuppressLint("CheckResult")
public void requestChatMemberByPage(final int page, long time, List<OnlineChatMember> oldList) {
mHomePartyUserListMode.getOnLinePageMembers(page, time, oldList)
.subscribe(onlineChatMembers -> {
Logger.i(ResUtil.getString(R.string.avroom_presenter_homepartyuserlistpresenter_01), page, onlineChatMembers.size());
if (getMvpView() != null) {
getMvpView().onRequestChatMemberByPageSuccess(onlineChatMembers, page);
}
}, throwable -> {
throwable.printStackTrace();
Logger.i(ResUtil.getString(R.string.avroom_presenter_homepartyuserlistpresenter_02), page, throwable.getMessage());
if (getMvpView() != null) {
getMvpView().onRequestChatMemberByPageFail(throwable.getMessage(), page);
}
});
public void requestRoomOnlineList(long roomUid){
mHomePartyUserListMode.getRoomOnlineList(roomUid).compose(bindToLifecycle()).subscribe((data, throwable) -> {
if (getMvpView() != null) {
if (data != null) {
getMvpView().onRequestRoomOnlineListSuccess(data);
} else {
getMvpView().onRequestChatMemberByPageFail(throwable.getMessage(), 1);
}
}
});
}
public void onMemberDownUpMic(String account, boolean isUpMic, List<OnlineChatMember> dataList,
final int page) {
mHomePartyUserListMode.onMemberDownUpMic(account, isUpMic, dataList)
.subscribe(onlineChatMembers -> {
if (getMvpView() != null)
getMvpView().onRequestChatMemberByPageSuccess(onlineChatMembers, page);
});
}
public void onUpdateMemberManager(String account, List<OnlineChatMember> dataList,
boolean isRemoveManager, final int page) {
mHomePartyUserListMode.onUpdateMemberManager(account, isRemoveManager, dataList)
.subscribe(onlineChatMembers -> {
if (getMvpView() != null)
getMvpView().onRequestChatMemberByPageSuccess(onlineChatMembers, page);
});
}
}

View File

@@ -1,52 +0,0 @@
package com.chwl.app.avroom.presenter;
import com.chwl.app.R;
import com.chwl.app.base.BaseMvpPresenter;
import com.chwl.app.module.IRoomNewbieMessageView;
import com.chwl.app.module.RoomNewbieModel;
import com.chwl.core.bean.RoomNewbieMessageInfo;
import com.chwl.library.utils.ResUtil;
import io.reactivex.SingleObserver;
import io.reactivex.disposables.Disposable;
public class RoomNewbieHellowWordPresenter extends BaseMvpPresenter<IRoomNewbieMessageView> {
private int start = 0;
private int pageSize = 5;//发现萌新-打招呼列表
public void loadData(int start) {
RoomNewbieModel.get().getMessageList(start, pageSize)
.compose(bindToLifecycle()).subscribe(new SingleObserver<RoomNewbieMessageInfo>() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onSuccess(RoomNewbieMessageInfo messageInfos) {
if (messageInfos != null) {
if (mMvpView != null) {
mMvpView.getRoomNewbieMessageSuccess(messageInfos);
}
} else {
if (mMvpView != null) {
mMvpView.getRoomNewbieMessageFails(ResUtil.getString(R.string.avroom_presenter_roomnewbiehellowwordpresenter_01));
}
}
}
@Override
public void onError(Throwable e) {
if (mMvpView != null) {
mMvpView.getRoomNewbieMessageFails(e.getMessage());
}
}
});
}
public int getStart() {
return start;
}
}

View File

@@ -1,12 +1,8 @@
package com.chwl.app.avroom.presenter;
import android.annotation.SuppressLint;
import com.chwl.app.avroom.view.ISingleRoomView;
import com.chwl.app.treasure_box.widget.GoldBoxHelper;
import com.chwl.app.utils.UserUtils;
import com.chwl.core.home.bean.BannerInfo;
/**
* <p> </p>
@@ -16,50 +12,4 @@ import com.chwl.core.home.bean.BannerInfo;
*/
public class SingleRoomPresenter extends BaseRoomPresenter<ISingleRoomView> {
@SuppressLint("CheckResult")
public void getBannerList() {
mAvRoomModel.getRoomBanner()
.compose(bindToLifecycle())
.subscribe(bannerInfos -> {
// final boolean firstCharge = UserUtils.getUserInfo().isFirstCharge();
if (GoldBoxHelper.needIntegrateBoxEntrance()) {
// if (firstCharge) {
// BannerInfo bannerInfo = new BannerInfo();
// bannerInfo.setFirstCharge(true);
// bannerInfos.add(0, bannerInfo);
// }
// if (GoldBoxHelper.isShowRadish()) {
// BannerInfo bannerInfo = new BannerInfo();
// bannerInfo.setRadish(true);
// bannerInfos.add(firstCharge ? 1 : 0, bannerInfo);
// }
getMvpView().onShowBanner(bannerInfos);
// GoldBoxHelper.isHideBox()
// .subscribe(isHide -> {
// if (!isHide) {
// BannerInfo bannerInfo = new BannerInfo();
// bannerInfo.setBox(true);
// int index = 0;
// if (firstCharge) index++;
// if (GoldBoxHelper.isShowRadish()) index++;
// bannerInfos.add(index, bannerInfo);
// }
// getMvpView().onShowBanner(bannerInfos);
// }, throwable -> getMvpView().onShowBanner(bannerInfos));
} else {
// if(GoldBoxHelper.isShowFairy()){
// BannerInfo bannerInfo = new BannerInfo();
// bannerInfo.setFairy(true);
// bannerInfos.add(0, bannerInfo);
// }
// if (firstCharge) {
// BannerInfo bannerInfo = new BannerInfo();
// bannerInfo.setFirstCharge(true);
// bannerInfos.add(0, bannerInfo);
// }
getMvpView().onShowBanner(bannerInfos);
}
});
}
}

View File

@@ -1,90 +0,0 @@
package com.chwl.app.avroom.rank
import android.content.Context
import android.util.AttributeSet
import android.view.LayoutInflater
import androidx.core.view.isVisible
import androidx.databinding.DataBindingUtil
import com.chwl.app.R
import com.chwl.app.databinding.RoomRankWidgetBinding
import com.chwl.app.ui.utils.loadAvatar
import com.chwl.app.ui.webview.DialogWebViewActivity
import com.chwl.core.UriProvider
import com.chwl.core.room.bean.RoomContributeDataInfo
import com.chwl.core.room.bean.RoomContributeUserInfo
import com.chwl.core.room.model.RoomContributeListModel
import com.chwl.core.support.room.FrameLayoutRoomWidget
import com.chwl.core.support.room.RoomContext
import com.chwl.core.support.room.RoomView
import com.chwl.core.support.room.RoomWidget
import com.chwl.core.utils.net.RxHelper
import com.example.lib_utils.ktx.singleClick
/**
* 房间榜单入口
*/
class RoomRankWidget : FrameLayoutRoomWidget, RoomWidget {
private val binding: RoomRankWidgetBinding =
DataBindingUtil.inflate(
LayoutInflater.from(
context
), R.layout.room_rank_widget, this, true
)
constructor(context: Context) : super(context)
constructor(context: Context, attrs: AttributeSet?) : super(context, attrs)
constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int) : super(
context,
attrs,
defStyleAttr
)
constructor(
context: Context,
attrs: AttributeSet?,
defStyleAttr: Int,
defStyleRes: Int
) : super(context, attrs, defStyleAttr, defStyleRes)
init {
this.singleClick {
DialogWebViewActivity.start(context, UriProvider.getRoomRanking())
refreshData()
}
}
override fun onInitialize(roomView: RoomView, roomContext: RoomContext) {
super.onInitialize(roomView, roomContext)
refreshData()
}
override fun onUnbindContext() {
super.onUnbindContext()
updateView(null)
}
private fun refreshData() {
val disposable = RoomContributeListModel.get()
.getSingleRoomRanking(1, RoomContributeDataInfo.TYPE_ROOM_DAY_RANKING)
.compose(RxHelper.handleBeanData())
.subscribe { roomContributeDataInfo: RoomContributeDataInfo ->
updateView(roomContributeDataInfo.rankings)
}
getCompositeDisposable().add(disposable)
}
private fun updateView(list: List<RoomContributeUserInfo>?) {
arrayListOf(
binding.ivRank0, binding.ivRank1, binding.ivRank2
).forEachIndexed { index, imageView ->
val url = list?.getOrNull(index)?.avatar
if (url.isNullOrEmpty()) {
imageView.isVisible = false
} else {
imageView.loadAvatar(url)
imageView.isVisible = true
}
}
}
}

View File

@@ -9,6 +9,7 @@ import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentStatePagerAdapter;
import com.chwl.app.R;
import com.chwl.app.avroom.adapter.CommonVPAdapter;
import com.chwl.app.base.BaseViewBindingActivity;
import com.chwl.app.base.TitleBar;
import com.chwl.app.databinding.ActivityMyRecommendCardBinding;
@@ -49,7 +50,7 @@ public class MyRecommendCardActivity extends BaseViewBindingActivity<ActivityMyR
fragmentList.add(RecommendCardFragment.newInstance(RcmdCardType.HAS_USED));
//已失效
fragmentList.add(RecommendCardFragment.newInstance(RcmdCardType.INVALID));
binding.viewPager.setAdapter(new CardPagerAdapter(getSupportFragmentManager()));
binding.viewPager.setAdapter(new CommonVPAdapter(getSupportFragmentManager() ,getLifecycle(), fragmentList));
}
@Override
@@ -60,7 +61,7 @@ public class MyRecommendCardActivity extends BaseViewBindingActivity<ActivityMyR
@Override
public void performAction(View view) {
CommonWebViewActivity.start(context, UriProvider.JAVA_WEB_URL +
"/hiyoo/modules/recommend-card/help.html");
"/molistar/modules/recommend-card/help.html");
}
});
}
@@ -82,21 +83,4 @@ public class MyRecommendCardActivity extends BaseViewBindingActivity<ActivityMyR
ViewPagerHelper.bind(binding.indicator, binding.viewPager);
}
class CardPagerAdapter extends FragmentStatePagerAdapter {
public CardPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
return fragmentList.get(position);
}
@Override
public int getCount() {
return fragmentList.size();
}
}
}

View File

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

View File

@@ -1,84 +0,0 @@
package com.chwl.app.avroom.redpackage
import android.os.Bundle
import android.view.WindowManager
import android.view.animation.AnimationUtils
import com.chwl.app.R
import com.chwl.app.avroom.activity.AVRoomActivity
import com.chwl.app.base.BaseDialog
import com.chwl.app.common.widget.dialog.DialogManager
import com.chwl.app.databinding.DialogRedPackageGoRoomBinding
import com.chwl.app.ui.utils.ImageLoadUtils
import com.chwl.core.manager.AvRoomDataManager
import com.chwl.core.redpackage.bean.RedPackageNotifyInfo
import com.chwl.core.utils.extension.subAndReplaceDot
import com.chwl.library.utils.ResUtil
import org.greenrobot.eventbus.EventBus
class RedPackageGoRoomDialog : BaseDialog<DialogRedPackageGoRoomBinding>() {
private val redPackageNotifyInfo by lazy { arguments?.getSerializable(KEY_NOTIFY_INFO) as RedPackageNotifyInfo }
companion object {
private const val KEY_NOTIFY_INFO = "redPackageNotifyInfo"
private var dialogManager: DialogManager? = null
fun newInstance(redPackageNotifyInfo: RedPackageNotifyInfo): RedPackageGoRoomDialog {
return RedPackageGoRoomDialog().apply {
arguments = Bundle().apply {
putSerializable(KEY_NOTIFY_INFO, redPackageNotifyInfo)
}
}
}
}
override fun onStart() {
width = WindowManager.LayoutParams.MATCH_PARENT
height = WindowManager.LayoutParams.MATCH_PARENT
super.onStart()
}
override fun init() {
AnimationUtils.loadAnimation(context, R.anim.anim_all_red_package).apply {
binding?.clRed?.animation = this
start()
}
AnimationUtils.loadAnimation(context, R.anim.anim_all_red_package_in_btn).let {
binding?.ivGoRoom?.animation = it
it.start()
}
binding?.ivClose?.setOnClickListener { dismissAllowingStateLoss() }
binding?.ivGoRoom?.setOnClickListener {
val jump = {
AVRoomActivity.start(context, redPackageNotifyInfo.roomUid,
AVRoomActivity.FROM_TYPE_ALL_RED, redPackageNotifyInfo.sendUserNick, redPackageNotifyInfo)
dismissAllowingStateLoss()
EventBus.getDefault().post(RedPackageEvent())
}
// StatUtil.onEvent("gethongbao_get", ResUtil.getString(R.string.avroom_redpackage_redpackagegoroomdialog_01))
if (AvRoomDataManager.get().isOwnerOnMic && AvRoomDataManager.get().roomId != redPackageNotifyInfo.roomUid) {
//如果显示这个弹窗的时候,又收到了一个全服,再次点击进房抢的时候需要关闭前面的那个
dialogManager?.dismissDialog()
dialogManager = DialogManager(context)
dialogManager?.showOkCancelDialog(ResUtil.getString(R.string.avroom_redpackage_redpackagegoroomdialog_02), true, jump)
} else {
jump()
}
}
redPackageNotifyInfo.let {
ImageLoadUtils.loadAvatar(context, it.sendUserAvatar, binding?.ivAvatar)
binding?.tvContent?.text = it.redEnvelopeMessage
binding?.tvNickname?.text = it.sendUserNick.subAndReplaceDot()
binding?.tvRoomName?.text = it.roomTitle.subAndReplaceDot()
}
// StatUtil.onEvent("gethongbao", ResUtil.getString(R.string.avroom_redpackage_redpackagegoroomdialog_03))
}
override fun onDestroy() {
super.onDestroy()
dialogManager = null
}
}

View File

@@ -1,169 +0,0 @@
package com.chwl.app.avroom.redpackage
import android.content.Context
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.LifecycleOwner
import androidx.lifecycle.MutableLiveData
import com.chwl.app.avroom.activity.AVRoomActivity
import com.chwl.app.avroom.redpackage.open.RedPackageOpenDialog
import com.chwl.core.im.custom.bean.RedPackageAttachment
import com.chwl.core.manager.IMNetEaseManager
import com.chwl.core.manager.RoomEvent
import com.chwl.core.redpackage.RedPackageModel
import com.chwl.core.redpackage.bean.RedPackageNotifyInfo
import com.chwl.core.support.room.RoomContext
import com.chwl.core.support.room.RoomHandler
/**
* Created by Max on 2023/10/26 11:26
* Desc:红包处理器
**/
class RedPackageHandler : RoomHandler() {
// 入口图标-数据
val iconLiveData: MutableLiveData<RedPackageNotifyInfo?> = MutableLiveData()
/**
* 红包相关操作计数;目前的红包操作为:【正在打开当前房间的红包弹窗】。
* 展示时+1销毁时-1以此来判断是否正在进行红包操作
*/
private var operationCount: Int = 0
val inOperation get() = operationCount > 0
override fun onStart(context: RoomContext) {
super.onStart(context)
registerSignaling()
}
override fun onStop(context: RoomContext) {
super.onStop(context)
}
override fun onStateChanged(source: LifecycleOwner, event: Lifecycle.Event) {
super.onStateChanged(source, event)
if (event == Lifecycle.Event.ON_RESUME) {
requestLatestRoomRedPackage()
}
}
/**
* 尝试展示红包
* PS目前这个方法仅为了解决通过房间外的红包入口进入房间后需要查询该红包展示出来。
*/
fun tryShowRedPackage(redPackageId: Long) {
val disposable = RedPackageModel.getRedPackage(redPackageId)
.compose(bindToLifecycle())
.subscribe({ item ->
if (item.state != 3 && item.state != 6 && item.state != 4) {
roomView?.getActivity().let {
RedPackageOpenDialog.newInstance(item).show(it)
}
}
}, {})
}
/**
* 监听房间信令
*/
private fun registerSignaling() {
// TODO 临时方案不应在这里直接监听IM后续会统一分发出口
// 信令来源:新/旧版的厅内红包,非全服红包
IMNetEaseManager.get().chatRoomEventObservable
.compose<RoomEvent>(bindToLifecycle<RoomEvent>())
.filter {
it?.event == RoomEvent.RECEIVE_RED_PACKAGE && it?.chatRoomMessage?.attachment is RedPackageAttachment
}.map {
(it.chatRoomMessage.attachment as RedPackageAttachment).getRedPackageNotifyInfo()
}
.subscribe { data: RedPackageNotifyInfo ->
handleRoomRedPackage(data, true)
}
}
/**
* 查找最新的厅内红包(新/旧版的厅内红包,非全服红包)
*/
private fun requestLatestRoomRedPackage() {
val roomId = roomContext?.roomId ?: return
RedPackageModel.getLatestRoomRedPackage(roomId)
.compose(bindToLifecycle())
.subscribe({ data ->
handleRoomRedPackage(data, false)
}, {
if (it.message == "No RedPackage") {
updateIcon(null)
} else {
// 网络等原因的失败,不处理就好
}
})
}
/**
* 处理厅内红包,非全服红包
* @param isSignaling 是否来自信令?
*/
private fun handleRoomRedPackage(data: RedPackageNotifyInfo, isSignaling: Boolean) {
tryShowOpenDialog(data, isSignaling)
updateIcon(data)
}
/**
* 更新红包入口图标
*/
private fun updateIcon(data: RedPackageNotifyInfo?) {
iconLiveData.postValue(data)
}
/**
* 尝试展示红包领取弹窗
*/
private fun tryShowOpenDialog(data: RedPackageNotifyInfo, isSignaling: Boolean) {
val activity = roomView?.getActivity() ?: return
if (activity.isFinishing) {
return
}
if (!isSignaling) {
return
}
if (data.kind == 0 || (data.kind == 1 && data.validityType == 0)) {
//【旧版本-厅内红包kind=0】、【新版本-厅内无门槛-立即生效红包kind=1&validityType=0】
RedPackageOpenDialog.newInstance(data).show(activity)
}
}
/**
* 请求刷新Icon数据已过期
*/
fun requestRefreshIcon() {
// updateIcon(null)
requestLatestRoomRedPackage()
}
fun startOperation() {
operationCount++
}
fun stopOperation() {
operationCount--
}
/**
* 全服红包信令之前是在BaseActivity中处理的现在为了红包的一个需求暂且拦截到这里处理
*/
fun onAllServiceSignaling(context: Context, data: RedPackageNotifyInfo) {
if (context is AVRoomActivity) {
if (roomContext?.roomId == data.roomUid) {
RedPackageOpenDialog.newInstance(data).show(context)
} else {
if (!inOperation) {
RedPackageGoRoomDialog.newInstance(data).show(context)
} else {
// 需求:正在房间中领取红包时,不展示其他房间的全服红包
}
}
} else {
RedPackageGoRoomDialog.newInstance(data).show(context)
}
}
}

View File

@@ -1,239 +0,0 @@
package com.chwl.app.avroom.redpackage
import android.content.Context
import android.util.AttributeSet
import android.util.TypedValue
import android.view.LayoutInflater
import androidx.core.view.isVisible
import androidx.databinding.DataBindingUtil
import com.example.lib_utils.ServiceTime
import com.example.lib_utils.ktx.singleClick
import com.chwl.app.R
import com.chwl.app.avroom.redpackage.open.RedPackageOpenDialog
import com.chwl.app.common.widget.dialog.DialogManager
import com.chwl.app.databinding.RedPackageWidgetBinding
import com.chwl.core.redpackage.RedPackageModel
import com.chwl.core.redpackage.bean.RedPackageNotifyInfo
import com.chwl.core.support.room.FrameLayoutRoomWidget
import com.chwl.core.support.room.RoomContext
import com.chwl.core.support.room.RoomView
import com.chwl.core.support.room.RoomWidget
import com.chwl.library.utils.SingleToastUtil
import io.reactivex.Observable
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.disposables.CompositeDisposable
import io.reactivex.disposables.Disposable
import okhttp3.internal.toLongOrDefault
import java.text.SimpleDateFormat
import java.util.TimeZone
import java.util.concurrent.TimeUnit
/**
* Created by Max on 2023/10/24 16:37
* Desc:房间内的红包入口
**/
class RedPackageWidget : FrameLayoutRoomWidget, RoomWidget {
private var countDownDisposable: Disposable? = null
private var data: RedPackageNotifyInfo? = null
private val redPackageHandler: RedPackageHandler?
get() = RoomContext.get()
?.findAbility<RedPackageHandler>(RedPackageHandler::class.java.simpleName)
// 临时这样实现,后续优化进度弹窗
private var dialogManager: DialogManager? = null
// 倒计时格式(分:秒)
private val mmssFormat by lazy(LazyThreadSafetyMode.NONE) {
SimpleDateFormat("mm:ss").apply {
timeZone = TimeZone.getTimeZone("GMT+00:00")
}
}
private val binding: RedPackageWidgetBinding =
DataBindingUtil.inflate(
LayoutInflater.from(
context
), R.layout.red_package_widget, this, true
)
constructor(context: Context) : super(context)
constructor(context: Context, attrs: AttributeSet?) : super(context, attrs)
constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int) : super(
context,
attrs,
defStyleAttr
)
constructor(
context: Context,
attrs: AttributeSet?,
defStyleAttr: Int,
defStyleRes: Int
) : super(context, attrs, defStyleAttr, defStyleRes)
init {
// 默认不可见
this.isVisible = false
this.setBackgroundResource(R.drawable.red_package_widget_bg)
singleClick {
data?.let {
tryShowRedPackage(it)
}
}
}
/**
* 开始倒计时
* @param time 开抢时间
*/
private fun startCountDown(time: Long) {
val count = time - ServiceTime.time
if (count <= 0) {
switchUI(false)
return
}
countDownDisposable =
Observable.intervalRange(0, count / 1000, 0, 1000L, TimeUnit.MILLISECONDS)
.observeOn(AndroidSchedulers.mainThread())
.doOnNext {
val gap = time - ServiceTime.time
if (gap >= 0) {
binding.tvText.text = mmssFormat.format(gap)
}
}
.doOnComplete {
switchUI(false)
}
.subscribe()
}
/**
* 切换UI
* @param isCountDown 是否倒计时模式?否则为可抢红包模式
*/
private fun switchUI(isCountDown: Boolean) {
if (isCountDown) {
binding.tvText.setBackgroundResource(R.drawable.shape_99292929_8)
binding.tvText.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 10f)
} else {
binding.tvText.setBackgroundResource(R.drawable.red_package_widget_bg_text)
binding.tvText.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 9f)
binding.tvText.setText(R.string.red_package_widget_get)
}
}
override fun onStart(roomView: RoomView) {
super.onStart(roomView)
roomView.getActivity()?.let {
this.dialogManager = DialogManager(it)
this.dialogManager?.setCanceledOnClickOutside(false)
}
}
override fun onInitialize(roomView: RoomView, roomContext: RoomContext) {
super.onInitialize(roomView, roomContext)
val lifecycleOwner = roomView.getLifecycleOwner()
redPackageHandler?.iconLiveData?.observe(lifecycleOwner) {
loadData(it)
}
}
/**
* 更新数据
*/
private fun loadData(data: RedPackageNotifyInfo?) {
this.data = data
stopCountDown()
if (data != null) {
val num = data.redEnvelopeNum
if (num > 0) {
if (num > 99) {
binding.tvNum.text = "99+"
} else {
binding.tvNum.text = num.toString()
}
binding.tvNum.isVisible = true
} else {
binding.tvNum.isVisible = false
}
if (data.validityType == 1) {
// 限时生效
switchUI(true)
startCountDown(data.beginTime)
} else {
// 立即生效
switchUI(false)
}
this.isVisible = true
} else {
this.isVisible = false
}
}
/**
* 尝试展示红包
*/
private fun tryShowRedPackage(data: RedPackageNotifyInfo) {
dialogManager?.context?.let {
dialogManager?.showProgressDialog(it, false)
}
val disposable = RedPackageModel.getRedPackage(data.redEnvelopeId.toLongOrDefault(0))
.subscribe({ item ->
dialogManager?.dismissDialog()
when (item.state) {
3 -> {
redPackageHandler?.requestRefreshIcon()
SingleToastUtil.showToast(R.string.red_package_result_empty_tips)
}
4 -> {
val newData = item.result?.redEnvelopeVO
if (newData != null && newData.pickNum == newData.totalNum) {
redPackageHandler?.requestRefreshIcon()
SingleToastUtil.showToast(R.string.red_package_result_empty_tips)
} else {
roomView?.getActivity().let {
RedPackageOpenDialog.newInstance(item).show(it)
}
}
}
2, 6 -> {
redPackageHandler?.requestRefreshIcon()
SingleToastUtil.showToast(R.string.red_package_disabled_tips)
}
else -> {
roomView?.getActivity().let {
RedPackageOpenDialog.newInstance(item).show(it)
}
}
}
}, {
SingleToastUtil.showToast(it.message)
dialogManager?.dismissDialog()
})
getCompositeDisposable().add(disposable)
}
override fun onStop() {
super.onStop()
this.dialogManager?.dismissDialog()
this.dialogManager = null
}
override fun onUnbindContext() {
super.onUnbindContext()
loadData(null)
}
override fun onBindContext(roomContext: RoomContext) {
super.onBindContext(roomContext)
}
private fun stopCountDown() {
if (countDownDisposable?.isDisposed == false) {
countDownDisposable?.dispose()
}
}
}

View File

@@ -1,561 +0,0 @@
package com.chwl.app.avroom.redpackage.open
import android.animation.Animator
import android.animation.AnimatorListenerAdapter
import android.animation.ObjectAnimator
import android.animation.ValueAnimator
import android.annotation.SuppressLint
import android.os.Bundle
import android.view.View
import android.view.WindowManager
import android.view.animation.LinearInterpolator
import androidx.core.view.isVisible
import com.example.lib_utils.ServiceTime
import com.example.lib_utils.ktx.getColorById
import com.example.lib_utils.ktx.singleClick
import com.example.lib_utils.ktx.toStringRes
import com.example.lib_utils.log.ILog
import com.example.lib_utils.spannable.spannableBuilder
import com.trello.rxlifecycle3.android.FragmentEvent
import com.chwl.app.R
import com.chwl.app.avroom.redpackage.RedPackageHandler
import com.chwl.app.base.BaseDialog
import com.chwl.app.databinding.RedPackageOpenDialogBinding
import com.chwl.app.ui.utils.loadAvatar
import com.chwl.app.ui.widget.UserInfoDialog
import com.chwl.core.auth.AuthModel
import com.chwl.core.home.event.FollowRoomEvent
import com.chwl.core.home.event.OpenRoomMessageInputEvent
import com.chwl.core.home.event.ShareRoomEvent
import com.chwl.core.home.model.CollectionRoomModel
import com.chwl.core.manager.AvRoomDataManager
import com.chwl.core.pay.PayModel
import com.chwl.core.redpackage.*
import com.chwl.core.redpackage.bean.RedEnvelopeState
import com.chwl.core.redpackage.bean.RedPackageData
import com.chwl.core.redpackage.bean.RedPackageInfo
import com.chwl.core.redpackage.bean.RedPackageNotifyInfo
import com.chwl.core.support.config.Constants
import com.chwl.core.support.room.RoomContext
import com.chwl.library.annatation.ActLayoutRes
import com.chwl.library.utils.SingleToastUtil
import io.reactivex.Observable
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.disposables.Disposable
import org.greenrobot.eventbus.EventBus
import java.text.SimpleDateFormat
import java.util.TimeZone
import java.util.concurrent.TimeUnit
/**
* Created by Max on 2023/10/24 10:14
* Desc:领取红包
**/
@ActLayoutRes(R.layout.red_package_open_dialog)
class RedPackageOpenDialog : BaseDialog<RedPackageOpenDialogBinding>(), ILog {
private var btnAnimator: ObjectAnimator? = null
private var countDownDisposable: Disposable? = null
// 倒计时格式(分:秒)
private val mmssFormat by lazy(LazyThreadSafetyMode.NONE) {
SimpleDateFormat("mm:ss").apply {
timeZone = TimeZone.getTimeZone("GMT+00:00")
}
}
private val data by lazy(LazyThreadSafetyMode.NONE) {
arguments?.getSerializable(Constants.KEY_INTENT) as? RedPackageData
}
// 打开红包的结果
private var openResultRunnable: (() -> Unit)? = null
// 按钮动画是否有效(至少转过了一周期)
private var isValidOfBtnAnimator: Boolean = false
// 按钮执行函数
private var btnRunnable: (() -> Unit)? = null
// 打开红包接口请求中
private var opening = false
companion object {
/**
* 此入口来源仅限:【全服红包信令】、【厅内无门槛-立即生效红包信令】
*/
fun newInstance(data: RedPackageNotifyInfo): RedPackageOpenDialog {
/**
* 收到这两种信令直接展示即可,无需再次请求接口查询状态,
* 但由于信令和接口查询的数据格式不一致,所以这里做下转换,达到逻辑共用
*/
val item = RedPackageData(
amount = null,
avatar = data.sendUserAvatar,
beginTime = data.beginTime,
commissionAmount = null,
createTime = null,
duration = null,
endTime = null,
finish = true,
id = data.redEnvelopeId.toLongOrNull(),
kind = data.kind,
message = data.redEnvelopeMessage,
nick = data.sendUserNick,
num = null,
originalAmount = null,
position = null,
roomTitle = null,
roomUid = data.roomUid,
//红包状态 1 开抢中 2 过时 3 抢光了 4 抢到了 5 将要开始 6 超时已退还
state = null,
type = null,
updateTime = null,
userId = null,
validityType = data.validityType,
result = null
)
return newInstance(item)
}
fun newInstance(data: RedPackageData): RedPackageOpenDialog {
return RedPackageOpenDialog().apply {
arguments = Bundle().apply {
putSerializable(Constants.KEY_INTENT, data)
}
}
}
}
override fun onStart() {
width = WindowManager.LayoutParams.MATCH_PARENT
height = WindowManager.LayoutParams.WRAP_CONTENT
super.onStart()
}
override fun init() {
val data = this.data
if (data == null) {
dismissAllowingStateLoss()
return
}
dialog?.setCanceledOnTouchOutside(false)
binding.ivClose.singleClick {
dismissAllowingStateLoss()
}
binding.layoutBtn.singleClick {
btnRunnable?.invoke()
}
loadData(data)
}
/**
* 加载红包数据
*/
private fun loadData(data: RedPackageData) {
//红包状态 1 开抢中 2 过时 3 抢光了 4 抢到了 5 将要开始 6 超时已退还
if (data.state == 4) {
loadResult(data.result)
} else {
// else简单理解为可领取状态正常情况下在RedPackageWidget点击时有异常状态过滤
loadOpen(data)
}
}
/**
* 加载可领取数据
*/
private fun loadOpen(data: RedPackageData) {
switchResultViewVisible(false)
switchOpenViewVisible(true)
binding.ivSendAvatar.loadAvatar(data.avatar)
binding.tvSendName.text = data.nick
loadTips(data)
loadBtnState(data)
}
/**
* 加载红包提示
*/
private fun loadTips(data: RedPackageData) {
binding.tvOpenTips.isVisible = false
when (data.kind) {
0 -> {
loadTips(data.message)
}
1 -> {
binding.tvOpenTips.setText(R.string.red_package_quick_tips)
binding.tvOpenTips.isVisible = true
}
2 -> {
if (data.finish == true) {
binding.tvOpenTips.setText(R.string.red_package_complete_tips)
} else {
binding.tvOpenTips.spannableBuilder()
.appendText(
text = R.string.red_package_open_tips_follow.toStringRes(),
textColor = getColorById(R.color.color_FFF87A)
)
.appendText(text = R.string.red_package_open_tips_msg_end.toStringRes())
.apply()
}
binding.tvOpenTips.isVisible = true
}
3 -> {
if (data.finish == true) {
binding.tvOpenTips.setText(R.string.red_package_complete_tips)
} else {
binding.tvOpenTips.spannableBuilder()
.appendText(
text = R.string.red_package_open_tips_share.toStringRes(),
textColor = getColorById(R.color.color_FFF87A)
)
.appendText(text = R.string.red_package_open_tips_msg_end.toStringRes())
.apply()
}
binding.tvOpenTips.isVisible = true
}
4 -> {
if (data.finish == true) {
binding.tvOpenTips.setText(R.string.red_package_complete_tips)
} else {
binding.tvOpenTips.spannableBuilder()
.appendText(text = R.string.red_package_open_tips_msg1.toStringRes())
.appendText(
text = data.message ?: "",
textColor = getColorById(R.color.color_FFF87A)
)
.appendText(text = R.string.red_package_open_tips_msg_end.toStringRes())
.apply()
}
binding.tvOpenTips.isVisible = true
}
else -> {
loadTips(data.message)
}
}
}
/**
* 加载按钮状态
*/
private fun loadBtnState(data: RedPackageData) {
binding.groupBtnTime.isVisible = false
binding.ivBtnGet.isVisible = false
binding.tvBtnMsg.isVisible = false
btnRunnable = null
val gap = (data.beginTime ?: 0) - ServiceTime.time
// 开始了?
val started = gap < 0
if (data.kind == 0) {
// 旧厅内红包or全服红包
switchToOpenState()
return
}
if (data.kind == 1 || data.finish == true) {
if (started) {
switchToOpenState()
} else {
startCountDown(data.beginTime ?: 0)
}
} else {
binding.tvBtnMsg.isVisible = true
if (started) {
binding.tvBtnMsg.setText(R.string.red_package_open_btn_no)
btnRunnable = {
SingleToastUtil.showToast(R.string.red_package_open_no_tips)
}
} else {
when (data.kind) {
2 -> {
binding.tvBtnMsg.setText(R.string.red_package_open_btn_follow)
btnRunnable = {
dismissAllowingStateLoss()
showUserDialog(data.userId)
}
}
3 -> {
binding.tvBtnMsg.setText(R.string.red_package_open_btn_share)
btnRunnable = {
dismissAllowingStateLoss()
EventBus.getDefault().post(ShareRoomEvent())
}
}
4 -> {
binding.tvBtnMsg.setText(R.string.red_package_open_btn_msg)
btnRunnable = {
dismissAllowingStateLoss()
EventBus.getDefault().post(OpenRoomMessageInputEvent(data.message))
}
}
else -> {
binding.tvBtnMsg.text = ""
}
}
startTimerForUncompletedState(gap)
}
}
}
/**
* 开启定时器未完成状态更新倒计时结束时更新对应View状态
*/
private fun startTimerForUncompletedState(time: Long) {
val d = Observable.timer(time, TimeUnit.MILLISECONDS)
.compose(bindUntilEvent(FragmentEvent.DESTROY_VIEW))
.observeOn(AndroidSchedulers.mainThread())
.subscribe {
binding.tvBtnMsg.setText(R.string.red_package_open_btn_no)
btnRunnable = {
SingleToastUtil.showToast(R.string.red_package_open_no_tips)
}
}
}
/**
* 开始倒计时
* @param time 开抢时间
*/
private fun startCountDown(time: Long) {
stopCountDown()
val count = time - ServiceTime.time
if (count <= 0) {
switchToOpenState()
return
}
binding.groupBtnTime.isVisible = true
countDownDisposable =
Observable.intervalRange(0, count / 1000, 0, 1000L, TimeUnit.MILLISECONDS)
.observeOn(AndroidSchedulers.mainThread())
.doOnNext {
val gap = time - ServiceTime.time
if (gap >= 0) {
binding.tvBtnTime.text = mmssFormat.format(gap)
}
}
.doOnComplete {
switchToOpenState()
}
.subscribe()
}
private fun stopCountDown() {
if (countDownDisposable?.isDisposed == false) {
countDownDisposable?.dispose()
}
}
/**
* 切换为可抢状态
*/
private fun switchToOpenState() {
binding.tvBtnMsg.isVisible = false
binding.groupBtnTime.isVisible = false
binding.ivBtnGet.isVisible = true
btnRunnable = {
if (!opening) {
this.data?.let {
openRedPackage(it)
}
}
}
}
private fun loadTips(msg: String?) {
if (msg.isNullOrEmpty()) {
binding.tvOpenTips.isVisible = false
} else {
binding.tvOpenTips.text = msg
binding.tvOpenTips.isVisible = true
}
}
/**
* 打开红包
*/
private fun openRedPackage(data: RedPackageData) {
opening = true
openResultRunnable = null
startRedPacketAnim(binding.layoutBtn)
val d = RedPackageModel.openRedPackage(data.id ?: 0)
.compose(bindUntilEvent(FragmentEvent.DESTROY_VIEW)).subscribe({
if (isValidOfBtnAnimator) {
btnAnimator?.cancel()
onOpenSuccess(it)
} else {
openResultRunnable = {
onOpenSuccess(it)
}
}
}, {
if (isValidOfBtnAnimator) {
btnAnimator?.cancel()
onOpenFail(it)
} else {
openResultRunnable = {
onOpenFail(it)
}
}
})
}
/**
* 加载结果
*/
private fun loadResult(data: RedPackageInfo?) {
binding.layoutContent.setBackgroundResource(R.drawable.red_package_result_bg)
switchOpenViewVisible(false)
switchResultViewVisible(true)
binding.groupResultMoney.isVisible = false
binding.tvResultEmptyTips.isVisible = false
binding.ivResultSendAvatar.loadAvatar(data?.redEnvelopeVO?.userVO?.avatar)
binding.tvResultSendName.text = data?.redEnvelopeVO?.userVO?.nick ?: ""
val name = data?.redEnvelopeVO?.userVO?.nick ?: ""
if (name.length > 8) {
binding.tvResultSendName.text = name?.take(8) + "..的紅包"
} else {
binding.tvResultSendName.text = name + "的紅包"
}
binding.tvMessage.text = data?.redEnvelopeVO?.message
binding.tvCount.text = R.string.red_package_result_count_format.toStringRes()
.format(data?.redEnvelopeVO?.pickNum ?: 0, data?.redEnvelopeVO?.totalNum ?: 0)
val adapter = RedPackageResultAdapter()
binding.recyclerView.adapter = adapter
adapter.setNewData(data?.redEnvelopeItemVOs)
when (data?.redEnvelopeState) {
RedEnvelopeState.SUCCESS -> {
binding.tvMoney.text = data.currentUserAmount.toString().substringBefore(".")
binding.groupResultMoney.isVisible = true
}
RedEnvelopeState.TIME_OUT, RedEnvelopeState.REMAIN_ZERO, RedEnvelopeState.TIME_OUT_BACK -> {
binding.tvResultEmptyTips.isVisible = true
}
}
}
/**
* 打开红包响应成功
* @param data 结果
*/
private fun onOpenSuccess(data: RedPackageInfo) {
loadResult(data)
RoomContext.get()
?.findAbility<RedPackageHandler>(RedPackageHandler::class.simpleName)
?.requestRefreshIcon()
when (data.redEnvelopeState) {
RedEnvelopeState.SUCCESS -> {
// 下面这段是延续老代码保留的
if (!AvRoomDataManager.get().isRoomFans) {
AvRoomDataManager.get().roomUid.let {
CollectionRoomModel.get().followRoom("1", it)
.subscribe { _: String? ->
AvRoomDataManager.get().isRoomFans = true
EventBus.getDefault().post(FollowRoomEvent())
}
}
}
}
}
PayModel.get().getWalletInfo(AuthModel.get().currentUid).subscribe()
opening = false
}
/**
* 打开红包响应失败
*/
private fun onOpenFail(throwable: Throwable) {
switchToOpenState()
btnAnimator?.cancel()
SingleToastUtil.showToast(throwable.message)
opening = false
}
@SuppressLint("CheckResult")
private fun startRedPacketAnim(v: View) {
if (btnAnimator?.isRunning == true) {
btnAnimator?.cancel()
}
isValidOfBtnAnimator = false
btnAnimator = ObjectAnimator.ofFloat(v, "rotationY", 0f, 360f)
btnAnimator?.let {
it.duration = 600
it.repeatCount = ValueAnimator.INFINITE
it.repeatMode = ValueAnimator.RESTART
it.interpolator = LinearInterpolator()
it.addListener(object : AnimatorListenerAdapter() {
override fun onAnimationRepeat(animation: Animator) {
super.onAnimationRepeat(animation)
isValidOfBtnAnimator = true
if (openResultRunnable != null) {
animation.cancel()
openResultRunnable?.invoke()
}
}
})
it.start()
}
}
private fun switchResultViewVisible(isVisible: Boolean) {
binding.groupResult.isVisible = isVisible
binding.groupResultMoney.isVisible = isVisible
binding.tvResultEmptyTips.isVisible = isVisible
}
private fun switchOpenViewVisible(isVisible: Boolean) {
binding.groupOpen.isVisible = isVisible
binding.tvOpenTips.isVisible = isVisible
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
RoomContext.get()
?.findAbility<RedPackageHandler>(RedPackageHandler::class.simpleName)
?.startOperation()
super.onViewCreated(view, savedInstanceState)
}
override fun onDestroyView() {
super.onDestroyView()
btnAnimator?.cancel()
btnAnimator = null
stopCountDown()
RoomContext.get()
?.findAbility<RedPackageHandler>(RedPackageHandler::class.simpleName)
?.stopOperation()
}
override fun onPause() {
super.onPause()
dismissAllowingStateLoss()
}
private fun showUserDialog(uid: Long?) {
if (uid == null) {
return
}
activity?.let {
UserInfoDialog.showNewUserInfoDialog(
activity,
uid
)
}
}
}

View File

@@ -1,45 +0,0 @@
package com.chwl.app.avroom.redpackage.open
import android.view.View
import android.widget.ImageView
import androidx.core.view.isVisible
import com.chad.library.adapter.base.BaseQuickAdapter
import com.chad.library.adapter.base.BaseViewHolder
import com.chwl.app.R
import com.chwl.app.ui.utils.loadAvatar
import com.chwl.app.utils.UserUtils
import com.chwl.core.redpackage.bean.RedEnvelopeItemVO
import com.chwl.core.utils.extension.subAndReplaceDot
import com.chwl.library.utils.ResUtil
import java.text.SimpleDateFormat
import java.util.Locale
/**
* Created by Max on 2023/10/27 20:24
* Desc:红包领取结果
**/
class RedPackageResultAdapter :
BaseQuickAdapter<RedEnvelopeItemVO, BaseViewHolder>(R.layout.red_package_open_item_result) {
private val dateFormat = SimpleDateFormat(
ResUtil.getString(R.string.avroom_redpackage_redpackageopenadapter_01),
Locale.CHINA
)
override fun convert(helper: BaseViewHolder, item: RedEnvelopeItemVO) {
helper.getView<ImageView>(R.id.iv_avatar).loadAvatar(item.userVO.avatar)
val isSelf = item.userVO.uid == UserUtils.getUserUid()
helper.setText(
R.id.tv_name,
if (isSelf) ResUtil.getString(R.string.avroom_redpackage_redpackageopenadapter_02) else item.userVO.nick.subAndReplaceDot(
6
)
)
helper.setText(R.id.tv_money, item.amount.substringBefore("."))
try {
helper.setText(R.id.tv_time, dateFormat.format(item.createTime))
} catch (e: Exception) {
helper.setText(R.id.tv_time, "")
}
helper.getView<View>(R.id.v_line).isVisible = helper.bindingAdapterPosition != itemCount - 1
}
}

View File

@@ -1,284 +0,0 @@
package com.chwl.app.avroom.redpackage.send
import android.graphics.Color
import androidx.core.view.isVisible
import com.example.lib_utils.ktx.addDisableFilter
import com.example.lib_utils.ktx.getColorById
import com.example.lib_utils.ktx.singleClick
import com.example.lib_utils.ktx.toStringRes
import com.example.lib_utils.log.ILog
import com.chwl.app.R
import com.chwl.app.base.BaseBindingFragment
import com.chwl.app.databinding.RedPackagePrivateFragmentBinding
import com.chwl.app.pay.password.GiveGoldPassWordFragment
import com.chwl.app.pay.widget.GridPasswordNoFocusView
import com.chwl.app.ui.setting.ModifyPwdActivity
import com.chwl.app.ui.widget.magicindicator.buildins.UIUtil
import com.chwl.app.ui.widget.recyclerview.decoration.ColorDecoration
import com.chwl.core.auth.AuthModel
import com.chwl.core.initial.InitialModel
import com.chwl.core.manager.AvRoomDataManager
import com.chwl.core.pay.PayModel
import com.chwl.core.redpackage.RedPackageModel
import com.chwl.core.user.UserModel
import com.chwl.core.utils.extension.toIntOrDef
import com.chwl.library.annatation.ActLayoutRes
import com.chwl.library.utils.ResUtil
import com.chwl.library.utils.SingleToastUtil
import com.chwl.library.utils.codec.DESUtils
import okhttp3.internal.toLongOrDefault
import java.math.RoundingMode
import java.text.NumberFormat
/**
* Created by Max on 2023/10/23 12:14
* Desc: 厅内红包
**/
@ActLayoutRes(R.layout.red_package_private_fragment)
class PrivateRedPackageEditorFragment : BaseBindingFragment<RedPackagePrivateFragmentBinding>(),
ILog {
private var passWordFragment: GiveGoldPassWordFragment? = null
private var typeAdapter: RedPackageTypeItemAdapter? = null
// 生效时间类型 0 立即生效 1 限时生效
private var timeType = 0
override fun initiate() {
mBinding.etText.addDisableFilter(" ", "\n")
initTypeView()
updateTimeView(true)
initTips()
}
override fun onSetListener() {
super.onSetListener()
mBinding.tvNow.singleClick {
updateTimeView(true)
}
mBinding.tvDelay.singleClick {
updateTimeView(false)
}
mBinding.tvSend.singleClick {
checkSend()
}
}
private fun initTips() {
val time = InitialModel.get().cacheInitInfo?.redEnvelopeConfig?.endSecond
if (time != null) {
try {
val hour = NumberFormat.getInstance().apply {
maximumFractionDigits = 2
roundingMode = RoundingMode.FLOOR
}.format(time / 3600.0)
mBinding.tvTips.text = R.string.red_package_tips_format.toStringRes().format(hour)
} catch (e: Exception) {
e.printStackTrace()
}
}
}
private fun initTypeView() {
mBinding.recyclerView.addItemDecoration(
ColorDecoration(
Color.TRANSPARENT, UIUtil.dip2px(context, 6.0), 0, false
)
)
val list = ArrayList<RedPackageTypeItemAdapter.ItemData>()
list.add(
RedPackageTypeItemAdapter.ItemData(
1,
R.string.red_package_type_unlimited_name,
R.string.red_package_type_unlimited_tips
)
)
list.add(
RedPackageTypeItemAdapter.ItemData(
2,
R.string.red_package_type_follow_name,
R.string.red_package_type_follow_tips
)
)
list.add(
RedPackageTypeItemAdapter.ItemData(
3,
R.string.red_package_type_share_name,
R.string.red_package_type_share_tips
)
)
list.add(
RedPackageTypeItemAdapter.ItemData(
4,
R.string.red_package_type_msg_name,
R.string.red_package_type_msg_tips
)
)
val adapter = RedPackageTypeItemAdapter(list)
typeAdapter = adapter
adapter.setOnItemClickListener { _, view, position ->
adapter.select(position)
updateTypeView(adapter.getSelect()?.type)
}
mBinding.recyclerView.adapter = adapter
// 默认选择第一个
adapter.select(0)
updateTypeView(adapter.getSelect()?.type)
}
/**
* 更新红包类型对应的视图
*/
private fun updateTypeView(type: Int?) {
when (type) {
1 -> {
mBinding.tvNow.isVisible = true
mBinding.tvDelay.isVisible = true
mBinding.etText.isVisible = false
}
4 -> {
mBinding.tvNow.isVisible = false
mBinding.tvDelay.isVisible = false
mBinding.etText.isVisible = true
}
else -> {
mBinding.tvNow.isVisible = false
mBinding.tvDelay.isVisible = false
mBinding.etText.isVisible = false
}
}
}
/**
* 更新时间选项
*/
private fun updateTimeView(nowOrDelay: Boolean) {
if (nowOrDelay) {
timeType = 0
mBinding.tvNow.setBackgroundResource(R.drawable.red_package_bg_type_selected)
mBinding.tvDelay.setBackgroundResource(R.drawable.shape_f8f8fa_8)
mBinding.tvNow.setTextColor(mBinding.root.context.getColorById(R.color.color_FF285C))
mBinding.tvDelay.setTextColor(mBinding.root.context.getColorById(R.color.color_767585))
} else {
timeType = 1
mBinding.tvNow.setBackgroundResource(R.drawable.shape_f8f8fa_8)
mBinding.tvDelay.setBackgroundResource(R.drawable.red_package_bg_type_selected)
mBinding.tvNow.setTextColor(mBinding.root.context.getColorById(R.color.color_767585))
mBinding.tvDelay.setTextColor(mBinding.root.context.getColorById(R.color.color_FF285C))
}
}
private fun checkSend() {
val initInfo = InitialModel.get().cacheInitInfo
if (initInfo == null) {
SingleToastUtil.showToast(ResUtil.getString(R.string.avroom_redpackage_redpackagesenddialog_01))
return
}
val typeItem = typeAdapter?.getSelect()
if (typeItem?.type == 4) {
if (mBinding.etText.text.toString().trim().isEmpty()) {
toast(R.string.red_package_msg_empty_tips)
return
}
}
val minNum = initInfo.redEnvelopeConfig.roomRedEnvelopeMinNum
val maxNum = initInfo.redEnvelopeConfig.roomRedEnvelopeMaxNum
val minGold = initInfo.redEnvelopeConfig.roomRedEnvelopeMinAmount
val maxGold = initInfo.redEnvelopeConfig.roomRedEnvelopeMaxAmount
val rate =
if (initInfo.redEnvelopeConfig.exchangeDiamondsRate == 0.0) 0.68 else initInfo.redEnvelopeConfig.exchangeDiamondsRate
val redNum = mBinding?.etNum?.text.toString().toIntOrDef()
if (redNum < minNum || redNum > maxNum) {
SingleToastUtil.showToast("紅包數量不能小於${minNum}或大於${maxNum}!")
return
}
val goldNum = mBinding?.etMoney?.text.toString().toIntOrDef()
if (goldNum % 10 != 0) {
SingleToastUtil.showToast("鉆石數必須為10的倍數!")
return
}
if (goldNum < minGold || goldNum > maxGold) {
SingleToastUtil.showToast("鉆石數量不能小於${minGold}或大於${maxGold}!")
return
}
if (goldNum.toFloat() / redNum * rate < 0.1) {//單個手氣紅包價值不低於0.1水晶
SingleToastUtil.showToast("單個紅包金額過低")
return
}
UserModel.get().cacheLoginUserInfo?.let {
if (!it.isBindPaymentPwd) {
ModifyPwdActivity.start(context, ModifyPwdActivity.PAY_PWD)
return
}
}
GiveGoldPassWordFragment.newInstance(
childFragmentManager,
mBinding?.etMoney?.text.toString()
).apply {
setListener(object : GridPasswordNoFocusView.OnPasswordChangedListener {
override fun onTextChanged(psw: String?) {
val password = passWordFragment?.password?.password ?: ""
if (password.length == 6) {
send(password)
}
}
override fun onInputFinish(psw: String?) {
}
})
passWordFragment = this
}
}
/**
* 密码输入完成
*/
private fun send(password: String) {
dialogManager.showProgressDialog(context)
val kind = typeAdapter?.getSelect()?.type ?: 1
val message = if (kind == 4) {
mBinding.etText.text.trim().toString()
} else {
null
}
val validityType = if (kind == 1) {
timeType
} else {
// 非无门槛红包 默认限时
1
}
RedPackageModel.sendRedPackage(
goldNum = mBinding.etMoney.text.trim().toString().toLongOrDefault(0),
message = message,
num = mBinding.etNum.text.trim().toString().toLongOrDefault(0),
roomUId = AvRoomDataManager.get().mCurrentRoomInfo?.uid.toString(),
type = 1,
kind = kind,
validityType = validityType,
password = DESUtils.DESAndBase64(password)
)
.compose(bindToLifecycle())
.doOnError {
dialogManager.dismissDialog()
SingleToastUtil.showToast(it.message)
passWordFragment?.password?.clearPassword()
}
.subscribe { _ ->
PayModel.get().getWalletInfo(AuthModel.get().currentUid).subscribe()
dialogManager.dismissDialog()
SingleToastUtil.showToast("發送成功")
passWordFragment?.dismissAllowingStateLoss()
(parentFragment as? RedPackageSendDialog)?.dismissAllowingStateLoss()
}
}
override fun onDestroy() {
super.onDestroy()
passWordFragment?.dismissAllowingStateLoss()
passWordFragment = null
}
}

View File

@@ -1,157 +0,0 @@
package com.chwl.app.avroom.redpackage.send
import com.example.lib_utils.ktx.addDisableFilter
import com.example.lib_utils.ktx.setOnInputChangedListener
import com.example.lib_utils.ktx.singleClick
import com.example.lib_utils.ktx.toStringRes
import com.chwl.app.R
import com.chwl.app.base.BaseBindingFragment
import com.chwl.app.databinding.RedPackagePublicFragmentBinding
import com.chwl.app.pay.password.GiveGoldPassWordFragment
import com.chwl.app.pay.widget.GridPasswordNoFocusView
import com.chwl.app.ui.setting.ModifyPwdActivity
import com.chwl.core.auth.AuthModel
import com.chwl.core.initial.InitialModel
import com.chwl.core.initial.bean.InitInfo
import com.chwl.core.manager.AvRoomDataManager
import com.chwl.core.pay.PayModel
import com.chwl.core.redpackage.RedPackageModel
import com.chwl.core.user.UserModel
import com.chwl.core.utils.extension.toIntOrDef
import com.chwl.library.annatation.ActLayoutRes
import com.chwl.library.utils.SingleToastUtil
import com.chwl.library.utils.codec.DESUtils
import okhttp3.internal.toLongOrDefault
import java.math.RoundingMode
import java.text.NumberFormat
/**
* Created by Max on 2023/10/23 12:14
* Desc:全服红包
**/
@ActLayoutRes(R.layout.red_package_public_fragment)
class PublicRedPackageEditorFragment : BaseBindingFragment<RedPackagePublicFragmentBinding>() {
private var passWordFragment: GiveGoldPassWordFragment? = null
override fun initiate() {
initTips()
mBinding.etText.addDisableFilter("\n")
mBinding.etText.setOnInputChangedListener {
mBinding.tvTextLength.text =
R.string.red_package_result_count_format.toStringRes().format(this, 10)
true
}
mBinding.tvSend.singleClick {
checkSend()
}
}
private fun initTips() {
val time = InitialModel.get().cacheInitInfo?.redEnvelopeConfig?.endSecond
if (time != null) {
try {
val hour = NumberFormat.getInstance().apply {
maximumFractionDigits = 2
roundingMode = RoundingMode.FLOOR
}.format(time / 3600.0)
mBinding.tvTips.text = R.string.red_package_tips_format.toStringRes().format(hour)
} catch (e: Exception) {
e.printStackTrace()
}
}
}
private fun checkSend() {
val initInfo = InitialModel.get().cacheInitInfo ?: InitInfo()
val minNum = initInfo.redEnvelopeConfig.serverRedEnvelopeMinNum
val maxNum = initInfo.redEnvelopeConfig.serverRedEnvelopeMaxNum
val minGold = initInfo.redEnvelopeConfig.serverRedEnvelopeMinAmount
val maxGold = initInfo.redEnvelopeConfig.serverRedEnvelopeMaxAmount
val rate =
if (initInfo.redEnvelopeConfig.exchangeDiamondsRate == 0.0) 0.68 else initInfo.redEnvelopeConfig.exchangeDiamondsRate
val redNum = mBinding?.etNum?.text.toString().toIntOrDef()
if (redNum < minNum || redNum > maxNum) {
SingleToastUtil.showToast("紅包數量不能小於${minNum}或大於${maxNum}!")
return
}
val goldNum = mBinding?.etMoney?.text.toString().toIntOrDef()
if (goldNum % 100 != 0) {
SingleToastUtil.showToast("鉆石數必須為100的倍數!")
return
}
if (goldNum < minGold || goldNum > maxGold) {
SingleToastUtil.showToast("鉆石數量不能小於${minGold}或大於${maxGold}!")
return
}
if (goldNum.toFloat() / redNum * rate < 0.1) {//單個手氣紅包價值不低於0.1水晶
SingleToastUtil.showToast("單個紅包金額過低")
return
}
UserModel.get().cacheLoginUserInfo?.let {
if (!it.isBindPaymentPwd) {
ModifyPwdActivity.start(context, ModifyPwdActivity.PAY_PWD)
return
}
}
GiveGoldPassWordFragment.newInstance(
childFragmentManager,
mBinding?.etMoney?.text.toString()
).apply {
setListener(object : GridPasswordNoFocusView.OnPasswordChangedListener {
override fun onTextChanged(psw: String?) {
val password = passWordFragment?.password?.password ?: ""
if (password.length == 6) {
send(password)
}
}
override fun onInputFinish(psw: String?) {
}
})
passWordFragment = this
}
}
/**
* 密码输入完成
*/
private fun send(password: String) {
dialogManager.showProgressDialog(context)
var message = mBinding.etText.text.trim().toString()
if (message.isEmpty()) {
message = R.string.red_package_msg_def.toStringRes()
}
RedPackageModel.sendRedPackage(
goldNum = mBinding.etMoney.text.trim().toString().toLongOrDefault(0),
message = message,
num = mBinding.etNum.text.trim().toString().toLongOrDefault(0),
roomUId = AvRoomDataManager.get().mCurrentRoomInfo?.uid.toString(),
type = 2,
kind = 0,
validityType = 0,
password = DESUtils.DESAndBase64(password)
)
.compose(bindToLifecycle())
.doOnError {
dialogManager.dismissDialog()
SingleToastUtil.showToast(it.message)
passWordFragment?.password?.clearPassword()
}
.subscribe { _ ->
PayModel.get().getWalletInfo(AuthModel.get().currentUid).subscribe()
dialogManager.dismissDialog()
SingleToastUtil.showToast("發送成功")
passWordFragment?.dismissAllowingStateLoss()
(parentFragment as? RedPackageSendDialog)?.dismissAllowingStateLoss()
}
}
override fun onDestroy() {
super.onDestroy()
passWordFragment?.dismissAllowingStateLoss()
passWordFragment = null
}
}

View File

@@ -1,172 +0,0 @@
package com.chwl.app.avroom.redpackage.send
import android.annotation.SuppressLint
import android.os.Bundle
import android.view.Gravity
import android.view.WindowManager
import androidx.fragment.app.Fragment
import com.example.lib_utils.ktx.singleClick
import com.example.lib_utils.ktx.toStringRes
import com.chwl.app.R
import com.chwl.app.avroom.redpackage.RedPackageEvent
import com.chwl.app.base.BaseDialog
import com.chwl.app.common.ViewPagerAdapter
import com.chwl.app.databinding.RedPackageSendDialogBinding
import com.chwl.app.ui.pay.ChargeActivity
import com.chwl.app.ui.webview.CommonWebViewActivity
import com.chwl.app.ui.webview.DialogWebViewActivity
import com.chwl.app.ui.widget.magicindicator.ViewPagerHelper
import com.chwl.app.ui.widget.magicindicator.buildins.commonnavigator.CommonNavigator
import com.chwl.core.Constants
import com.chwl.core.UriProvider
import com.chwl.core.initial.InitialModel
import com.chwl.core.pay.PayModel
import com.chwl.core.pay.event.UpdateWalletInfoEvent
import com.chwl.core.redpackage.*
import com.chwl.library.annatation.ActLayoutRes
import com.chwl.library.common.util.DeviceUtil
import com.chwl.library.utils.AppMetaDataUtil
import com.chwl.library.utils.ResUtil
import com.chwl.library.utils.SingleToastUtil
import org.greenrobot.eventbus.EventBus
import org.greenrobot.eventbus.Subscribe
import org.greenrobot.eventbus.ThreadMode
/**
* Created by Max on 2023/10/23 12:14
* Desc:发红包
**/
@ActLayoutRes(R.layout.red_package_send_dialog)
class RedPackageSendDialog : BaseDialog<RedPackageSendDialogBinding>() {
private val permissionType: Int
get() = arguments?.getInt(com.chwl.core.support.config.Constants.KEY_INTENT)
?: 0
/**
* 是否有厅内红包权限
*/
private val haveRoomRedPackagePermission get() = (permissionType and 1) != 0
/**
* 是否有全服红包权限
*/
private val haveAllServicePackagePermission get() = (permissionType and 2) != 0
companion object {
/**
* 红包权限类型
*/
fun newInstance(permissionType: Int): RedPackageSendDialog {
return RedPackageSendDialog().apply {
this.arguments = Bundle().apply {
putInt(
com.chwl.core.support.config.Constants.KEY_INTENT,
permissionType
)
}
}
}
}
override fun onStart() {
gravity = Gravity.BOTTOM
width = WindowManager.LayoutParams.MATCH_PARENT
height = WindowManager.LayoutParams.WRAP_CONTENT
super.onStart()
}
@SuppressLint("SetTextI18n")
override fun init() {
EventBus.getDefault().register(this)
if (!haveRoomRedPackagePermission && !haveAllServicePackagePermission) {
SingleToastUtil.showToast(R.string.avroom_presenter_avroompresenter_04)
dismissAllowingStateLoss()
return
}
if (InitialModel.get().cacheInitInfo == null) {
InitialModel.get().init(true)
SingleToastUtil.showToast(ResUtil.getString(R.string.avroom_redpackage_redpackagesenddialog_01))
dismissAllowingStateLoss()
return
}
initView()
initEvent()
PayModel.get().currentWalletInfo?.let {
binding.tvBalance.text = it.diamondNum.toLong().toString()
}
}
private fun initView() {
val tabTitles = ArrayList<String>()
val fragments = ArrayList<Fragment>()
if (haveRoomRedPackagePermission) {
tabTitles.add(R.string.red_package_room.toStringRes())
fragments.add(PrivateRedPackageEditorFragment())
}
if (haveAllServicePackagePermission) {
tabTitles.add(R.string.red_package_public.toStringRes())
fragments.add(PublicRedPackageEditorFragment())
}
val topMagicIndicatorAdapter = TabIndicatorAdapter(context, tabTitles)
topMagicIndicatorAdapter.setOnItemSelectListener {
binding.viewPager.currentItem = it
}
val commonNavigator = CommonNavigator(context)
commonNavigator.isAdjustMode = true
commonNavigator.adapter = topMagicIndicatorAdapter
binding.tabLayout.navigator = commonNavigator
binding.viewPager.adapter = ViewPagerAdapter(
childFragmentManager,
fragments.toList(),
null
)
ViewPagerHelper.bind(binding.tabLayout, binding.viewPager)
}
private fun initEvent() {
binding.vTopBlank.singleClick {
dismissAllowingStateLoss()
}
binding.ivHelp.singleClick {
DialogWebViewActivity.start(
context,
UriProvider.getRedPacketRule()
)
}
binding.tvBalance.singleClick {
// if (AppMetaDataUtil.getChannelID() == Constants.GOOGLE) {
ChargeActivity.start(context)
// } else {
// CommonWebViewActivity.start(
// context, UriProvider.getOfficialPay(
// 4,
// DeviceUtil.getDeviceId(context)
// )
// )
// }
}
}
override fun onDestroy() {
super.onDestroy()
EventBus.getDefault().unregister(this)
}
@Subscribe(threadMode = ThreadMode.MAIN)
fun onWalletInfoUpdate(event: UpdateWalletInfoEvent?) {
if (!isViewLoaded) {
return
}
binding.tvBalance.text = PayModel.get().currentWalletInfo?.diamondNum?.toString()
?: "0"
}
@Subscribe(threadMode = ThreadMode.MAIN)
fun handleRedPackageDialog(event: RedPackageEvent?) {
dismissAllowingStateLoss()
}
}

View File

@@ -1,76 +0,0 @@
package com.chwl.app.avroom.redpackage.send
import com.chad.library.adapter.base.BaseQuickAdapter
import com.chad.library.adapter.base.BaseViewHolder
import com.example.lib_utils.ktx.getColorById
import com.chwl.app.R
import io.realm.internal.Keep
/**
* Created by Max on 2023/10/23 18:02
* Desc:
**/
class RedPackageTypeItemAdapter(list: List<ItemData>) :
BaseQuickAdapter<RedPackageTypeItemAdapter.ItemData, BaseViewHolder>(
R.layout.red_package_private_item_type,
list
) {
private var selectPosition = -1
@Keep
data class ItemData(
/**
* 红包种类 0 旧版本 1 无门槛红包 2 关注红包 3 分享红包 4 弹幕红包
*/
val type: Int, val name: Int, val tips: Int
)
override fun convert(helper: BaseViewHolder, item: ItemData) {
helper.setText(R.id.tv_name, item.name)
helper.setText(R.id.tv_tips, item.tips)
convertState(helper, item)
}
override fun convertPayloads(
helper: BaseViewHolder,
item: ItemData,
payloads: MutableList<Any>
) {
super.convertPayloads(helper, item, payloads)
convertState(helper, item)
}
private fun convertState(helper: BaseViewHolder, item: ItemData) {
if (helper.bindingAdapterPosition == selectPosition) {
helper.setBackgroundRes(R.id.layout_root, R.drawable.red_package_bg_type_selected)
helper.setTextColor(
R.id.tv_name,
helper.itemView.context.getColorById(R.color.color_FF285C)
)
helper.setTextColor(
R.id.tv_tips,
helper.itemView.context.getColorById(R.color.color_FF285C)
)
} else {
helper.setBackgroundRes(R.id.layout_root, R.drawable.shape_f8f8fa_8)
helper.setTextColor(
R.id.tv_name,
helper.itemView.context.getColorById(R.color.color_767585)
)
helper.setTextColor(
R.id.tv_tips,
helper.itemView.context.getColorById(R.color.color_94959C)
)
}
}
fun select(position: Int) {
this.selectPosition = position
notifyItemRangeChanged(0, itemCount, true)
}
fun getSelect(): ItemData? {
return data.getOrNull(selectPosition)
}
}

View File

@@ -1,115 +0,0 @@
package com.chwl.app.avroom.redpackage.send;
import android.content.Context;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
import android.widget.FrameLayout;
import androidx.appcompat.widget.AppCompatTextView;
import com.chwl.app.R;
import com.chwl.library.common.util.Utils;
import com.chwl.app.ui.widget.magicindicator.buildins.UIUtil;
import com.chwl.app.ui.widget.magicindicator.buildins.commonnavigator.abs.CommonNavigatorAdapter;
import com.chwl.app.ui.widget.magicindicator.buildins.commonnavigator.abs.IPagerIndicator;
import com.chwl.app.ui.widget.magicindicator.buildins.commonnavigator.abs.IPagerTitleView;
import com.chwl.app.ui.widget.magicindicator.buildins.commonnavigator.indicators.LinePagerIndicator;
import java.util.List;
/**
* @author jack
* @Description
* @Date 2018/11/1
*/
public class TabIndicatorAdapter extends CommonNavigatorAdapter {
private List<String> mTitleList;
private Context mContext;
public TabIndicatorAdapter(Context mContext, List<String> mTitleList ) {
this.mTitleList = mTitleList;
this.mContext = mContext;
}
@Override
public int getCount() {
return mTitleList == null ? 0 : mTitleList.size();
}
@Override
public IPagerTitleView getTitleView(Context context, int index) {
ContactsPagerTitleView categoryPagerTitleView = new ContactsPagerTitleView(context, mTitleList.get(index));
categoryPagerTitleView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (null != mOnItemSelectListener) {
mOnItemSelectListener.onItemSelect(index);
}
}
});
return categoryPagerTitleView;
}
@Override
public IPagerIndicator getIndicator(Context context) {
LinePagerIndicator indicator = new LinePagerIndicator(context);
indicator.setMode(LinePagerIndicator.MODE_EXACTLY);
indicator.setLineHeight(UIUtil.dip2px(mContext, 4));
indicator.setRoundRadius(UIUtil.dip2px(mContext, 4));
indicator.setLineWidth(UIUtil.dip2px(mContext, 12));
indicator.setColors(context.getResources().getColor(R.color.color_FF285C));
FrameLayout.LayoutParams lp = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
lp.topMargin = UIUtil.dip2px(mContext, 2);
indicator.setLayoutParams(lp);
return indicator;
}
private OnItemSelectListener mOnItemSelectListener;
public void setOnItemSelectListener(OnItemSelectListener onItemSelectListener) {
mOnItemSelectListener = onItemSelectListener;
}
public interface OnItemSelectListener {
void onItemSelect(int position);
}
class ContactsPagerTitleView extends AppCompatTextView implements IPagerTitleView {
public ContactsPagerTitleView(Context context, String tabInfo) {
super(context);
setHeight(Utils.dip2px(getContext(), 25));
setTextSize(18);
setText(tabInfo);
setGravity(Gravity.CENTER);
}
@Override
public void onSelected(int index, int totalCount) {
// setBackgroundResource(R.drawable.shape_bg_contact_indicator_item);
setTextColor(getResources().getColor(R.color.color_FF285C));
}
@Override
public void onDeselected(int index, int totalCount) {
// setBackgroundDrawable(null);
setTextColor(getResources().getColor(R.color.color_767585));
}
@Override
public void onLeave(int index, int totalCount, float leavePercent, boolean leftToRight) {
}
@Override
public void onEnter(int index, int totalCount, float enterPercent, boolean leftToRight) {
}
}
}

View File

@@ -13,14 +13,14 @@ import com.chad.library.adapter.base.diff.BaseQuickDiffCallback
import com.chwl.app.R
import com.chwl.app.avroom.bean.RoomAlbumPhotoInfo
import com.chwl.app.base.BaseViewBindingFragment
import com.chwl.app.community.photo.BigPhotoActivity
import com.chwl.app.community.photo.PagerOption
import com.chwl.app.community.utils.ObjectTypeHelper
import com.chwl.app.databinding.FragmentRoomAlbumBinding
import com.chwl.app.photo.BigPhotoActivity
import com.chwl.app.photo.PagerOption
import com.chwl.app.ui.utils.ImageLoadUtils
import com.chwl.app.ui.utils.ImageLoadUtilsV2
import com.chwl.app.ui.widget.ButtonItem
import com.chwl.app.ui.widget.recyclerview.decoration.GridSpacingItemNewDecoration
import com.chwl.app.utils.ObjectTypeHelper
import com.chwl.core.Constants
class RoomAlbumFragment : BaseViewBindingFragment<FragmentRoomAlbumBinding>() {

View File

@@ -251,7 +251,7 @@ class UploadRoomAlbumDialogFragment : BottomSheetDialogFragment() {
}
if (requestCode == 200) {
PhotoProvider.getResultPathListAsync(data) {
it?.let { paths ->
it?.mapNotNull { it.path }?.let { paths ->
compressPhotos(paths.toMutableList())
}
}

View File

@@ -68,7 +68,7 @@ class SingleRoomPKBoardView @JvmOverloads constructor(
.subscribe()
}
} else {
"主播已關閉對方房間的聲音".toast()
ResUtil.getString(R.string.close_other_room_sound).toast()
}
}
}

View File

@@ -9,6 +9,7 @@ import com.chwl.app.R
import com.chwl.app.ui.utils.ImageLoadUtils
import com.chwl.core.room.anotherroompk.SimpleRoomInfo
import com.chwl.core.utils.extension.subAndReplaceDot
import com.chwl.library.utils.ResUtil
class SingleRoomPKSearchAdapter :
BaseQuickAdapter<SimpleRoomInfo, BaseViewHolder>(R.layout.item_single_room_pk_search) {
@@ -21,13 +22,13 @@ class SingleRoomPKSearchAdapter :
val tvSelect = helper.getView<TextView>(R.id.tv_select)
tvSelect.isEnabled = !item.crossPking && item.valid
if (!item.valid) {
tvSelect.text = "離線"
tvSelect.text = ResUtil.getString(R.string.offline)
tvSelect.setTextColor("#80C6C6E9".toColorInt())
} else if (item.crossPking) {
tvSelect.text = "PK中"
tvSelect.text = tvSelect.context.getString(R.string.layout_item_home_tab_map_02)
tvSelect.setTextColor("#80C6C6E9".toColorInt())
} else {
tvSelect.text = "選擇"
tvSelect.text = ResUtil.getString(R.string.select)
tvSelect.setTextColor(Color.WHITE)
}
}

View File

@@ -3,6 +3,7 @@ package com.chwl.app.avroom.singleroompk
import android.annotation.SuppressLint
import android.os.Bundle
import androidx.core.view.isVisible
import com.chwl.app.R
import com.chwl.app.base.BaseDialog
import com.chwl.app.databinding.DialogSingleRoomPkReceivedBinding
import com.chwl.core.im.custom.bean.RoomPkBean
@@ -37,7 +38,7 @@ class SingleRoomPkReceivedDialog : BaseDialog<DialogSingleRoomPkReceivedBinding>
@SuppressLint("CheckResult")
override fun init() {
binding?.tvNick?.text = pkBean.inviteRoomTitle.subAndReplaceDot(7)
binding?.tvTime?.text = "${pkBean.pkDuration}分鐘"
binding?.tvTime?.text = "${pkBean.pkDuration}${getString(R.string.layout_activity_room_pk_create_010)}"
pkBean.pkDesc.ifNotNullOrEmpty {
binding?.tvDescTitle?.isVisible = true
binding?.tvDesc?.isVisible = true

View File

@@ -83,7 +83,4 @@ public interface IAvRoomView extends IMvpBaseView {
void recoverRoomMinWhenPmLimit(Throwable throwable);
void showNewUserDialog(GiftInfo giftInfo);
void showFirstChargeDialog(FirstChargeInfo firstChargeInfo);
}

View File

@@ -2,7 +2,7 @@ package com.chwl.app.avroom.view;
import com.chwl.core.room.bean.OnlineChatMember;
import com.chwl.core.room.bean.RoomOnlineUserBean;
import com.chwl.library.base.IMvpBaseView;
import java.util.List;
@@ -14,7 +14,7 @@ import java.util.List;
* @date 2017/12/8
*/
public interface IHomePartyUserListView extends IMvpBaseView {
void onRequestChatMemberByPageSuccess(List<OnlineChatMember> memberList, int page);
void onRequestRoomOnlineListSuccess(List<RoomOnlineUserBean> memberList);
void onRequestChatMemberByPageFail(String errorStr, int page);

View File

@@ -1,9 +1,7 @@
package com.chwl.app.avroom.view;
import com.chwl.core.home.bean.BannerInfo;
import com.chwl.core.room.bean.RoomInfo;
import java.util.List;
/**
* <p> 轰趴房View层 </p>
@@ -21,5 +19,4 @@ public interface IHomePartyView extends IBaseRoomView {
*/
void onGiftValueChangeMic(int micPosition, String uId, boolean isInviteUpMic, RoomInfo roomInfo);
void onShowBanner(List<BannerInfo> bannerInfos);
}

View File

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

View File

@@ -131,15 +131,6 @@ public class BottomView extends FrameLayout implements View.OnClickListener {
sendGift.setVisibility(GONE);
sendMsgInput.setVisibility(GONE);
}
UserModel.get().getCurrentUserInfo()
.compose(RxHelper.bindContext(getContext()))
.subscribe(userInfo -> {
if (userInfo.isFirstCharge()) {
sendGift.setImageResource(R.drawable.icon_room_send_gift_first_charge);
}
});
}
@Override

View File

@@ -23,6 +23,7 @@ import android.view.ViewGroup;
import android.widget.FrameLayout;
import android.widget.ImageView;
import com.example.lib_utils.UiUtils;
import com.netease.nim.uikit.common.util.log.LogUtil;
import com.netease.nimlib.sdk.chatroom.model.ChatRoomMessage;
import com.opensource.svgaplayer.SVGACallback;
@@ -651,6 +652,11 @@ public class GiftV2View extends FrameLayout implements GiftEffectView.GiftEffect
Keyframe keyTransX3 = (Keyframe.ofFloat(0.5f, center.x - senderPoint.x - giftWidth / 2));
Keyframe keyTransX4 = (Keyframe.ofFloat(0.8f, center.x - senderPoint.x - giftWidth / 2));
Keyframe keyTransX5 = (Keyframe.ofFloat(1f, receivePoint.x - senderPoint.x));
if (UiUtils.INSTANCE.isRtl(getContext())) {
keyTransX3 = (Keyframe.ofFloat(0.5f, senderPoint.x - center.x + giftWidth / 2));
keyTransX4 = (Keyframe.ofFloat(0.8f, senderPoint.x - center.x + giftWidth / 2));
keyTransX5 = (Keyframe.ofFloat(1f, senderPoint.x - receivePoint.x));
}
Keyframe keyTransY3 = (Keyframe.ofFloat(0.5f, center.y - senderPoint.y - giftHeight / 2));
Keyframe keyTransY4 = (Keyframe.ofFloat(0.8f, center.y - senderPoint.y - giftHeight / 2));
@@ -875,7 +881,7 @@ public class GiftV2View extends FrameLayout implements GiftEffectView.GiftEffect
SVGAImageView imageView = cleanView(super.borrowObject());
LayoutParams params = new LayoutParams(parent.giftWidth, parent.giftHeight);
imageView.setLayoutParams(params);
params.leftMargin = senderPoint.x;
params.setMarginStart(senderPoint.x);
params.topMargin = senderPoint.y;
imageView.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
if (parent.indexOfChild(imageView) == -1)
@@ -896,7 +902,7 @@ public class GiftV2View extends FrameLayout implements GiftEffectView.GiftEffect
SVGAImageView imageView = cleanView(super.borrowObject());
LayoutParams params = new LayoutParams(parent.giftWidth, parent.giftHeight);
imageView.setLayoutParams(params);
params.leftMargin = senderPoint.x;
params.setMarginStart(senderPoint.x);
params.topMargin = senderPoint.y;
imageView.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
imageView.setScaleX(1.5F);

View File

@@ -4,6 +4,7 @@ import static com.chwl.core.im.custom.bean.CustomAttachment.CUSTOM_MSG_FAIRY;
import static com.chwl.core.im.custom.bean.CustomAttachment.CUSTOM_MSG_GIFT_COMPOUND;
import static com.chwl.core.im.custom.bean.CustomAttachment.CUSTOM_MSG_RED_PACKAGE;
import static com.chwl.core.im.custom.bean.CustomAttachment.CUSTOM_MSG_ROOM_ALBUM;
import static com.chwl.core.im.custom.bean.CustomAttachment.CUSTOM_MSG_ROOM_TEMPLATE;
import static com.chwl.core.im.custom.bean.CustomAttachment.CUSTOM_MSG_SUB_BOX_ME;
import static com.chwl.core.im.custom.bean.CustomAttachment.CUSTOM_MSG_SUB_CONVERT_L1;
import static com.chwl.core.im.custom.bean.CustomAttachment.CUSTOM_MSG_SUB_CONVERT_L2;
@@ -18,6 +19,7 @@ import static com.chwl.core.im.custom.bean.CustomAttachment.CUSTOM_MSG_SUB_DRAW_
import static com.chwl.core.im.custom.bean.CustomAttachment.CUSTOM_MSG_SUB_DRAW_GIFT_L5;
import static com.chwl.core.im.custom.bean.CustomAttachment.CUSTOM_MSG_SUB_FANS_TEAM_JOIN;
import static com.chwl.core.im.custom.bean.CustomAttachment.CUSTOM_MSG_SUB_GIFT_COMPOUND;
import static com.chwl.core.im.custom.bean.CustomAttachment.CUSTOM_MSG_SUPER_LUCKY_GIFT_TEMPLATE;
import static com.chwl.core.redpackage.RedPackageTypeKt.ALL_DIAMOND;
import static com.chwl.core.redpackage.RedPackageTypeKt.ALL_GIFT;
import static com.chwl.core.redpackage.RedPackageTypeKt.ROOM_DIAMOND;
@@ -56,8 +58,13 @@ import androidx.recyclerview.widget.RecyclerView;
import androidx.recyclerview.widget.SimpleItemAnimator;
import com.bumptech.glide.request.target.Target;
import com.chwl.app.photo.BigPhotoActivity;
import com.chwl.app.photo.PagerOption;
import com.chwl.app.utils.ObjectTypeHelper;
import com.chwl.core.im.custom.bean.TemplateMessageAttachment;
import com.chwl.core.monsterhunting.bean.MonsterDataBean;
import com.chwl.core.utils.extension.StringExtensionKt;
import com.example.lib_utils.UiUtils;
import com.netease.nim.uikit.business.uinfo.UserInfoHelper;
import com.netease.nim.uikit.common.ui.span.RadiusBackgroundSpan;
import com.netease.nim.uikit.common.util.log.LogUtil;
@@ -79,9 +86,6 @@ import com.chwl.library.common.util.Utils;
import com.chwl.app.common.widget.CustomAutoWidthImageSpan;
import com.chwl.app.common.widget.CustomImageSpan;
import com.chwl.app.common.widget.OriginalDrawStatusClickSpan;
import com.chwl.app.community.photo.BigPhotoActivity;
import com.chwl.app.community.photo.PagerOption;
import com.chwl.app.community.utils.ObjectTypeHelper;
import com.chwl.app.ui.utils.ImageLoadUtils;
import com.chwl.app.ui.utils.ImageLoadUtilsV2;
import com.chwl.app.ui.widget.DividerItemDecoration;
@@ -252,6 +256,7 @@ public class MessageView extends FrameLayout {
private OnClick onClick;
private OnMsgLongClickListener onLongClickListener;
private TemplateMessageAdapter templateMessageAdapter;
public MessageView(Context context) {
this(context, null);
@@ -265,7 +270,6 @@ public class MessageView extends FrameLayout {
super(context, attr, i);
init(context);
}
public void setOnLongClickListener(OnMsgLongClickListener onLongClickListener) {
this.onLongClickListener = onLongClickListener;
}
@@ -435,6 +439,17 @@ public class MessageView extends FrameLayout {
}
private TemplateMessageAdapter getTemplateMessageAdapter() {
if (templateMessageAdapter == null) {
templateMessageAdapter = new TemplateMessageAdapter(uid -> {
if (clickConsumer != null) {
Single.just(String.valueOf(uid)).subscribe(clickConsumer);
}
});
}
return templateMessageAdapter;
}
public void onCurrentRoomReceiveNewMsg(List<ChatRoomMessage> messages) {
if (messages == null) return;
if (messages.size() == 1) {
@@ -585,6 +600,7 @@ public class MessageView extends FrameLayout {
}
public static class SpannableBuilder {
private SpannableStringBuilder builder;
private TextView textView;
@@ -616,6 +632,19 @@ public class MessageView extends FrameLayout {
builder.setSpan(imageSpan, start, builder.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
return this;
}
/**
* @param drawable -icon url
* @return -返回一個spannableStringBuilder
*/
public SpannableBuilder appendImg(String drawable, Object what) {
if (TextUtils.isEmpty(drawable)) return this;
int start = builder.length();
builder.append("-");
CustomImageSpan imageSpan = new CustomImageSpan(new ColorDrawable(Color.TRANSPARENT), textView, drawable);
builder.setSpan(imageSpan, start, builder.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
builder.setSpan(what, start, builder.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
return this;
}
/**
* @param drawable -icon url
@@ -632,6 +661,16 @@ public class MessageView extends FrameLayout {
return this;
}
public SpannableBuilder append(String drawable, int width, int height, Object what) {
if (TextUtils.isEmpty(drawable)) return this;
int start = builder.length();
builder.append("-");
CustomImageSpan imageSpan = new CustomImageSpan(new ColorDrawable(Color.TRANSPARENT), textView, drawable, width, height);
builder.setSpan(imageSpan, start, builder.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
builder.setSpan(what, start, builder.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
return this;
}
/**
* 文本和背景分離的情況
*/
@@ -673,6 +712,16 @@ public class MessageView extends FrameLayout {
return this;
}
public SpannableBuilder append(String imgUrl, int height, Object what) {
if (TextUtils.isEmpty(imgUrl)) return this;
int start = builder.length();
builder.append("-");
builder.setSpan(new CustomAutoWidthImageSpan(new ColorDrawable(Color.TRANSPARENT), textView, imgUrl, height)
, start, builder.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
builder.setSpan(what, start, builder.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
return this;
}
/**
* @param drawable -icon
* @param width 寬
@@ -793,6 +842,10 @@ public class MessageView extends FrameLayout {
tvContent.setOnClickListener(this);
tvContent.setOnLongClickListener(null);
tvContent.setTag(chatRoomMessage);
tvContent.setGravity(Gravity.START | Gravity.CENTER_VERTICAL);
if (UiUtils.INSTANCE.isRtl(tvContent.getContext())) {
tvContent.setTextDirection(View.TEXT_DIRECTION_RTL);
}
clearBackground(tvContent);
try {
if (chatRoomMessage.getMsgType() == MsgTypeEnum.tip) {
@@ -1031,6 +1084,20 @@ public class MessageView extends FrameLayout {
setFairyMsg(chatRoomMessage, tvContent);
} else if (first == CUSTOM_MSG_ROOM_ALBUM) {
setRoomAlbumMsg(chatRoomMessage, baseViewHolder);
} else if (first == CUSTOM_MSG_ROOM_TEMPLATE) {
TemplateMessageAttachment templateMessageAttachment = (TemplateMessageAttachment) chatRoomMessage.getAttachment();
if (templateMessageAttachment != null) {
getTemplateMessageAdapter().convert(tvContent, templateMessageAttachment.getTemplateMessage());
} else {
getTemplateMessageAdapter().convert(tvContent, null);
}
} else if (first == CUSTOM_MSG_SUPER_LUCKY_GIFT_TEMPLATE) {
TemplateMessageAttachment templateMessageAttachment = (TemplateMessageAttachment) chatRoomMessage.getAttachment();
if (templateMessageAttachment != null) {
getTemplateMessageAdapter().convert(tvContent, templateMessageAttachment.getTemplateMessage());
} else {
getTemplateMessageAdapter().convert(tvContent, null);
}
} else {
tvContent.setTextColor(Color.WHITE);
tvContent.setText(tvContent.getResources().getText(R.string.not_support_message_tip));
@@ -1069,7 +1136,7 @@ public class MessageView extends FrameLayout {
ImageLoadUtilsV2.loadImage2(ivUserLevel, mRoomAlbumMsgInfo.getUserLevel().getExperUrl(), Target.SIZE_ORIGINAL);
ImageLoadUtilsV2.loadImage2(ivUserCharm, mRoomAlbumMsgInfo.getUserLevel().getCharmUrl(), Target.SIZE_ORIGINAL);
tvNick.setText(user.getNick());
tvUnlock.setText("解鎖");
tvUnlock.setText(R.string.unlock_mic);
tvUnlock.setBackgroundResource(R.drawable.bg_9168fa_6);
if (roomPhoto.getType() == 1) {
@@ -1092,7 +1159,7 @@ public class MessageView extends FrameLayout {
if (isMyself || hadUnlock(roomPhoto.getId())) {
ImageLoadUtilsV2.loadImage(ivPhoto, roomPhoto.getPhotoUrl());
tvUnlock.setText("已解鎖");
tvUnlock.setText(R.string.unlocked);
tvUnlock.setBackgroundResource(R.drawable.bg_9e9ea8_6);
} else {
ImageLoadUtils.loadImageWithBlur(mContext, roomPhoto.getPhotoUrl(), ivPhoto, 25, 4);
@@ -1532,13 +1599,13 @@ public class MessageView extends FrameLayout {
case ALL_DIAMOND:
case ROOM_DIAMOND:
text.append(ResUtil.getString(R.string.avroom_widget_messageview_031), new ForegroundColorSpan(textColor))
.append((int) roomMsg.getAmount() + ResUtil.getString(R.string.avroom_widget_messageview_032), new ForegroundColorSpan(roomTipColor));
.append((int) roomMsg.getAmount() + ResUtil.getString(R.string.avroom_widget_messageview_027), new ForegroundColorSpan(roomTipColor));
tvContent.setText(text.build());
break;
case ALL_GIFT:
case ROOM_GIFT:
text.append(ResUtil.getString(R.string.avroom_widget_messageview_033), new ForegroundColorSpan(textColor))
.append((int) roomMsg.getAmount() + ResUtil.getString(R.string.avroom_widget_messageview_034), new ForegroundColorSpan(roomTipColor))
.append((int) roomMsg.getAmount() + ResUtil.getString(R.string.avroom_widget_messageview_027), new ForegroundColorSpan(roomTipColor))
.append(ResUtil.getString(R.string.avroom_widget_messageview_035), new ForegroundColorSpan(textColor));
tvContent.setText(text.build());
}
@@ -1934,15 +2001,15 @@ public class MessageView extends FrameLayout {
RoomBoxPrizeAttachment attachment = (RoomBoxPrizeAttachment) chatRoomMessage.getAttachment();
// 內容
SpannableBuilder text = new SpannableBuilder(tvContent)
.append(ResUtil.getString(R.string.avroom_widget_messageview_093), new ForegroundColorSpan(greyColor))
.append("厲害了 ", new ForegroundColorSpan(greyColor))
.append(attachment.getNick() + " ", new ForegroundColorSpan(roomTipColor))
.append(ResUtil.getString(R.string.treasure_in_find_love) + ResUtil.getString(R.string.avroom_widget_messageview_095), new ForegroundColorSpan(greyColor))
.append("通過歡樂砸蛋" + "獲得 ", new ForegroundColorSpan(greyColor))
.append(attachment.getPrizeName(), new ForegroundColorSpan(Color.WHITE));
if (attachment.getPrizeNum() > 1) {
text.append(" x" + attachment.getPrizeNum() + " ", new ForegroundColorSpan(roomTipColor));
}
if (attachment.getSecond() == CUSTOM_MSG_SUB_BOX_ME) {
text.append(ResUtil.getString(R.string.avroom_widget_messageview_096), new ForegroundColorSpan(Color.WHITE));
text.append("(僅自己可見)", new ForegroundColorSpan(Color.WHITE));
}
tvContent.setText(text.build());
}
@@ -2281,7 +2348,7 @@ public class MessageView extends FrameLayout {
builder.append(ResUtil.getString(R.string.avroom_widget_messageview_0120), new ForegroundColorSpan(roomTipNickColor));
} else {
builder.append(senderNick, new ForegroundColorSpan(roomTipNickColor))
.append(ResUtil.getString(R.string.avroom_widget_messageview_0121) + auctionAttachment.getAuctionInfo().getRivals().get(0).getAuctMoney() + ResUtil.getString(R.string.avroom_widget_messageview_0122));
.append(ResUtil.getString(R.string.avroom_widget_messageview_0121) + auctionAttachment.getAuctionInfo().getRivals().get(0).getAuctMoney() + ResUtil.getString(R.string.avroom_widget_messageview_027));
}
tvContent.setText(builder.build());
}
@@ -2381,7 +2448,7 @@ public class MessageView extends FrameLayout {
}
}
})
.append(ResUtil.getString(R.string.avroom_widget_messageview_0126), new ForegroundColorSpan(getResources().getColor(R.color.white)))
.append(ResUtil.getString(R.string.gift_message_01), new ForegroundColorSpan(getResources().getColor(R.color.white)))
.append(giftInfo == null ? "" : giftInfo.getGiftUrl(), giftLength, giftLength)
.append("X" + giftAttachment.getMultiGiftReceiveInfo().getGiftNum(), new ForegroundColorSpan(getResources().getColor(R.color.white)));
tvContent.setText(text.build());
@@ -2417,9 +2484,9 @@ public class MessageView extends FrameLayout {
}
}
})
.append(ResUtil.getString(R.string.avroom_widget_messageview_0127), new ForegroundColorSpan(getResources().getColor(R.color.white)));
.append(ResUtil.getString(R.string.gift_message_01), new ForegroundColorSpan(getResources().getColor(R.color.white)));
text.append(luckyGiftInfo.getGiftName() + ResUtil.getString(R.string.avroom_widget_messageview_0128), new ForegroundColorSpan(getResources().getColor(R.color.white)))
text.append(luckyGiftInfo.getGiftName() + ResUtil.getString(R.string.gift_message_02), new ForegroundColorSpan(getResources().getColor(R.color.white)))
.append(luckyGiftInfo.getUser().getNick(), new ForegroundColorSpan(roomTipNickColor), new OriginalDrawStatusClickSpan() {
@Override
public void onClick(@NonNull View widget) {
@@ -2428,10 +2495,10 @@ public class MessageView extends FrameLayout {
}
}
});
text.append(ResUtil.getString(R.string.avroom_widget_messageview_0129));
text.append(ResUtil.getString(R.string.gift_message_04));
for (GiftList luckyGiftList : luckyGiftInfo.getGiftList()) {
if (luckyGiftList.getGiftInfo() == null) continue;
text.append(ResUtil.getString(R.string.avroom_widget_messageview_0130) + luckyGiftList.getGiftInfo().getGoldPrice() + ResUtil.getString(R.string.avroom_widget_messageview_0131))
text.append(ResUtil.getString(R.string.gift_message_03) + luckyGiftList.getGiftInfo().getGoldPrice() + ResUtil.getString(R.string.gift_message_05))
.append(luckyGiftList.getGiftInfo().getGiftUrl(), giftLength, giftLength)
.append("X" + luckyGiftList.getGiftNum(), new ForegroundColorSpan(getResources().getColor(R.color.white)))
.append("");
@@ -2472,9 +2539,9 @@ public class MessageView extends FrameLayout {
}
}
})
.append(ResUtil.getString(R.string.avroom_widget_messageview_0132), new ForegroundColorSpan(getResources().getColor(R.color.white)));
.append(ResUtil.getString(R.string.gift_message_01), new ForegroundColorSpan(getResources().getColor(R.color.white)));
text.append(luckyGiftInfo.getGiftName() + ResUtil.getString(R.string.avroom_widget_messageview_0133), new ForegroundColorSpan(getResources().getColor(R.color.white)))
text.append(luckyGiftInfo.getGiftName() + ResUtil.getString(R.string.gift_message_02), new ForegroundColorSpan(getResources().getColor(R.color.white)))
.append(luckyGiftInfo.getUser().getNick(), new ForegroundColorSpan(roomTipNickColor), new OriginalDrawStatusClickSpan() {
@Override
public void onClick(@NonNull View widget) {
@@ -2483,10 +2550,10 @@ public class MessageView extends FrameLayout {
}
}
});
text.append(ResUtil.getString(R.string.avroom_widget_messageview_0134));
text.append(ResUtil.getString(R.string.gift_message_04));
for (GiftList luckyGiftList : luckyGiftInfo.getGiftList()) {
if (luckyGiftList.getGiftInfo() == null) continue;
text.append(ResUtil.getString(R.string.avroom_widget_messageview_0135) + luckyGiftList.getGiftInfo().getGoldPrice() + ResUtil.getString(R.string.avroom_widget_messageview_0136))
text.append(ResUtil.getString(R.string.gift_message_03) + luckyGiftList.getGiftInfo().getGoldPrice() + ResUtil.getString(R.string.gift_message_05))
.append(luckyGiftList.getGiftInfo().getGiftUrl(), giftLength, giftLength)
.append("X" + luckyGiftList.getGiftNum(), new ForegroundColorSpan(getResources().getColor(R.color.white)))
.append("");
@@ -2495,7 +2562,6 @@ public class MessageView extends FrameLayout {
Editable msg = text.builder;
msg.delete(msg.length() - 1, msg.length());
tvContent.setText(text.build());
tvContent.setOnClickListener(null);
tvContent.setMovementMethod(new LinkMovementMethod());
@@ -2522,7 +2588,7 @@ public class MessageView extends FrameLayout {
}
}
})
.append(ResUtil.getString(R.string.avroom_widget_messageview_0137), new ForegroundColorSpan(getResources().getColor(R.color.white)));
.append(ResUtil.getString(R.string.gift_message_06), new ForegroundColorSpan(getResources().getColor(R.color.white)));
for (GiftReceiver targetUser : attachment.getGiftMultiReceiverInfo().getTargetUsers()) {
text.append(targetUser.getNick(), new ForegroundColorSpan(roomTipNickColor), new OriginalDrawStatusClickSpan() {
@@ -2698,7 +2764,7 @@ public class MessageView extends FrameLayout {
}
}
})
.append(ResUtil.getString(R.string.avroom_widget_messageview_0149), new ForegroundColorSpan(getResources().getColor(R.color.white)))
.append(ResUtil.getString(R.string.gift_message_06), new ForegroundColorSpan(getResources().getColor(R.color.white)))
.append(targetNick, new ForegroundColorSpan(roomTipNickColor), new OriginalDrawStatusClickSpan() {
@Override
@@ -2895,7 +2961,7 @@ public class MessageView extends FrameLayout {
.append("【簽到瓜分百萬】哇塞,恭喜 ", new ForegroundColorSpan(greyColor))
.append(attachment.getNick() + " ", new ForegroundColorSpan(roomTipColor))
.append("簽到獲得 ", new ForegroundColorSpan(greyColor))
.append(attachment.getGoldNum() + "鉆石", new ForegroundColorSpan(roomTipColor))
.append(attachment.getGoldNum() + "金幣", new ForegroundColorSpan(roomTipColor))
.append("", new ForegroundColorSpan(greyColor));
tvContent.setText(text.build());
}

View File

@@ -16,6 +16,7 @@ import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.recyclerview.widget.RecyclerView;
import com.example.lib_utils.UiUtils;
import com.opensource.svgaplayer.SVGADrawable;
import com.opensource.svgaplayer.SVGAImageView;
import com.opensource.svgaplayer.SVGAParser;
@@ -98,7 +99,7 @@ public class MicroView extends LinearLayout implements View.OnLayoutChangeListen
public void bindAdapter(@NonNull BaseMicroViewAdapter adapter) {
if (adapter instanceof DatingMicroViewAdapter) {
if (datingItemDecoration == null) datingItemDecoration = new DatingItemDecoration();
if (datingItemDecoration == null) datingItemDecoration = new DatingItemDecoration(UiUtils.INSTANCE.isRtl(getContext()));
recyclerView.addItemDecoration(datingItemDecoration);
} else if (datingItemDecoration != null) {
recyclerView.removeItemDecoration(datingItemDecoration);
@@ -181,8 +182,15 @@ public class MicroView extends LinearLayout implements View.OnLayoutChangeListen
View view = child.findViewById(R.id.micro_layout);
if (view != null) child = view;
child.getLocationInWindow(location);
int x = (location[0] + child.getWidth() / 2) - giftWidth / 2;
int y = (location[1] + child.getHeight() / 2) - giftHeight / 2;
int x;
int y;
if (UiUtils.INSTANCE.isRtl(getContext())) {
location[0] = getWidth() - location[0];
x = (location[0] - child.getWidth() / 2) - giftWidth / 2;
}else{
x = (location[0] + child.getWidth() / 2) - giftWidth / 2;
}
y = (location[1] + child.getHeight() / 2) - giftHeight / 2;
Point point = new Point(x, y);
LogUtils.d("x= " + x + " y= " + y);
centerPoints.put(micPosition, point);

View File

@@ -151,8 +151,8 @@ class RoomEffectBoxView @JvmOverloads constructor(
.subscribe { roomEvent: RoomEvent? ->
if (roomEvent == null || AvRoomDataManager.get().isSelfGamePlaying) return@subscribe
when (roomEvent.event) {
RoomEvent.BOX_NOTIFY -> addBoxNotify(roomEvent.chatRoomMessage)
RoomEvent.BOX_NOTIFY_SVGA -> addBoxNotify(roomEvent.chatRoomMessage)
// RoomEvent.BOX_NOTIFY -> addBoxNotify(roomEvent.chatRoomMessage)
// RoomEvent.BOX_NOTIFY_SVGA -> addBoxNotify(roomEvent.chatRoomMessage)
RoomEvent.DATING_ALL_NOTIFY -> addDatingAllNotify(roomEvent.chatRoomMessage)
RoomEvent.RADISH_NOTIFY,
RoomEvent.RADISH_NOTIFY_SVGA -> addRadishNotify(roomEvent.chatRoomMessage)
@@ -305,143 +305,143 @@ class RoomEffectBoxView @JvmOverloads constructor(
*
* @param chatRoomMessage
*/
private fun addBoxNotify(chatRoomMessage: ChatRoomMessage) {
if (binding.clNotify.visibility == GONE) {
binding.clNotify.visibility = VISIBLE
}
messagesBox.add(chatRoomMessage)
if (boxDisposable == null || messagesBox.size == 1) {
boxDisposable = Observable.interval(0, PERIOD.toLong(), TimeUnit.MILLISECONDS)
.observeOn(AndroidSchedulers.mainThread())
.takeWhile { messagesBox.size > 0 && !mContext.isDestroyed() }
.subscribe {
if (binding.flBoxNotify.childCount == 0) {
val msg = messagesBox.removeAt(0)
val attachment = msg.attachment
if (attachment is CustomAttachment) {
if (attachment.second == CUSTOM_MSG_SUB_BOX_ALL_ROOM_NOTIFY) {
showBoxNotify(msg)
} else if(attachment.second == CUSTOM_MSG_SUB_BOX_ALL_ROOM_NOTIFY_BY_SVGA) {
showBoxNotifyBySVGA(msg)
}
// private fun addBoxNotify(chatRoomMessage: ChatRoomMessage) {
// if (binding.clNotify.visibility == GONE) {
// binding.clNotify.visibility = VISIBLE
// }
// messagesBox.add(chatRoomMessage)
// if (boxDisposable == null || messagesBox.size == 1) {
// boxDisposable = Observable.interval(0, PERIOD.toLong(), TimeUnit.MILLISECONDS)
// .observeOn(AndroidSchedulers.mainThread())
// .takeWhile { messagesBox.size > 0 && !mContext.isDestroyed() }
// .subscribe {
// if (binding.flBoxNotify.childCount == 0) {
// val msg = messagesBox.removeAt(0)
// val attachment = msg.attachment
// if (attachment is CustomAttachment) {
// if (attachment.second == CUSTOM_MSG_SUB_BOX_ALL_ROOM_NOTIFY) {
// showBoxNotify(msg)
// } else if(attachment.second == CUSTOM_MSG_SUB_BOX_ALL_ROOM_NOTIFY_BY_SVGA) {
// showBoxNotifyBySVGA(msg)
// }
//
// }
// }
// }
// }
// }
}
}
}
}
}
// private fun showBoxNotify(chatRoomMessage: ChatRoomMessage) {
// val attachment = chatRoomMessage.attachment as RoomBoxPrizeAttachment
// val textView =
// LayoutInflater.from(mContext).inflate(R.layout.layout_room_box_notify, null) as TextView
// val text = SpannableBuilder()
// .append(
// ResUtil.getString(R.string.avroom_widget_roomeffectview_08),
// ForegroundColorSpan(Color.WHITE)
// )
// .append(
// attachment.nick.subAndReplaceDot(8),
// ForegroundColorSpan(resources.getColor(R.color.notice_nick))
// )
// .append(
// ResUtil.getString(R.string.treasure_in_find_love) + ResUtil.getString(
// R.string.avroom_widget_roomeffectview_010
// ), ForegroundColorSpan(Color.WHITE)
// )
// .append(
// attachment.prizeName,
// ForegroundColorSpan(resources.getColor(R.color.notice_nick))
// )
// if (attachment.prizeNum > 1) {
// text.append("x" + attachment.prizeNum, ForegroundColorSpan(Color.WHITE))
// }
// textView.text = text.build()
// animationBox = AnimationUtils.loadAnimation(mContext, R.anim.anim_box_notify)
// binding.flBoxNotify.addView(textView)
// textView.startAnimation(animationBox)
// binding.flBoxNotify.postDelayed(
// {
// animationBox = AnimationUtils.loadAnimation(mContext, R.anim.anim_box_notify_close)
// textView.startAnimation(animationBox)
// },
// SHOW_TIME.toLong()
// )
// binding.flBoxNotify.postDelayed({
// binding.flBoxNotify.removeView(textView)
// }, CLOSE_TIME.toLong())
// }
private fun showBoxNotify(chatRoomMessage: ChatRoomMessage) {
val attachment = chatRoomMessage.attachment as RoomBoxPrizeAttachment
val textView =
LayoutInflater.from(mContext).inflate(R.layout.layout_room_box_notify, null) as TextView
val text = SpannableBuilder()
.append(
ResUtil.getString(R.string.avroom_widget_roomeffectview_08),
ForegroundColorSpan(Color.WHITE)
)
.append(
attachment.nick.subAndReplaceDot(8),
ForegroundColorSpan(resources.getColor(R.color.notice_nick))
)
.append(
ResUtil.getString(R.string.treasure_in_find_love) + ResUtil.getString(
R.string.avroom_widget_roomeffectview_010
), ForegroundColorSpan(Color.WHITE)
)
.append(
attachment.prizeName,
ForegroundColorSpan(resources.getColor(R.color.notice_nick))
)
if (attachment.prizeNum > 1) {
text.append("x" + attachment.prizeNum, ForegroundColorSpan(Color.WHITE))
}
textView.text = text.build()
animationBox = AnimationUtils.loadAnimation(mContext, R.anim.anim_box_notify)
binding.flBoxNotify.addView(textView)
textView.startAnimation(animationBox)
binding.flBoxNotify.postDelayed(
{
animationBox = AnimationUtils.loadAnimation(mContext, R.anim.anim_box_notify_close)
textView.startAnimation(animationBox)
},
SHOW_TIME.toLong()
)
binding.flBoxNotify.postDelayed({
binding.flBoxNotify.removeView(textView)
}, CLOSE_TIME.toLong())
}
private fun showBoxNotifyBySVGA(chatRoomMessage: ChatRoomMessage) {
val attachment = chatRoomMessage.attachment as RoomBoxPrizeAttachment
val text = SpannableBuilder()
.append(
ResUtil.getString(R.string.avroom_widget_roomeffectview_011),
ForegroundColorSpan(Color.WHITE)
)
.append(
StringUtils.abbreviate(attachment.nick, 8) + " ",
ForegroundColorSpan(resources.getColor(R.color.notice_nick))
)
.append(
ResUtil.getString(R.string.treasure_in_find_love) + ResUtil.getString(
R.string.avroom_widget_roomeffectview_013
), ForegroundColorSpan(Color.WHITE)
)
.append(
attachment.prizeName,
ForegroundColorSpan(resources.getColor(R.color.notice_nick))
)
if (attachment.prizeNum > 1) {
text.append("x" + attachment.prizeNum, ForegroundColorSpan(Color.WHITE))
}
val svgaImageView = SVGAImageView(mContext)
svgaImageView.loops = 1
svgaImageView.clearsAfterDetached = true
val params = LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT)
svgaImageView.layoutParams = params
svgaImageView.callback = object : SimpleSvgaCallback() {
override fun onFinished() {
animationBox = AnimationUtils.loadAnimation(mContext, R.anim.anim_box_notify_close)
animationBox!!.setAnimationListener(object : SimpleAnimationListener() {
override fun onAnimationEnd(animation: Animation?) {
binding.flBoxNotify.removeView(svgaImageView)
}
})
binding.flBoxNotify.startAnimation(animationBox)
}
}
animationBox = AnimationUtils.loadAnimation(mContext, R.anim.anim_box_notify)
binding.flBoxNotify.addView(svgaImageView)
binding.flBoxNotify.startAnimation(animationBox)
shareParser().decodeFromAssets("svga/box_notify.svga", object : SVGAParser.ParseCompletion {
override fun onComplete(videoItem: SVGAVideoEntity) {
val dynamicEntity = SVGADynamicEntity()
val textPaint = TextPaint()
textPaint.color = Color.WHITE //字體顏色
textPaint.textSize = 24f //字體大小
dynamicEntity.setDynamicText(
StaticLayout(
text.build(),
0,
text.build().length,
textPaint,
0,
Layout.Alignment.ALIGN_CENTER,
1.0f,
0.0f,
false
), "bg"
)
val drawable = SVGADrawable(videoItem, dynamicEntity)
svgaImageView.setImageDrawable(drawable)
svgaImageView.stepToFrame(0, true)
}
override fun onError() {}
}, null)
}
// private fun showBoxNotifyBySVGA(chatRoomMessage: ChatRoomMessage) {
// val attachment = chatRoomMessage.attachment as RoomBoxPrizeAttachment
// val text = SpannableBuilder()
// .append(
// ResUtil.getString(R.string.avroom_widget_roomeffectview_011),
// ForegroundColorSpan(Color.WHITE)
// )
// .append(
// StringUtils.abbreviate(attachment.nick, 8) + " ",
// ForegroundColorSpan(resources.getColor(R.color.notice_nick))
// )
// .append(
// ResUtil.getString(R.string.treasure_in_find_love) + ResUtil.getString(
// R.string.avroom_widget_roomeffectview_013
// ), ForegroundColorSpan(Color.WHITE)
// )
// .append(
// attachment.prizeName,
// ForegroundColorSpan(resources.getColor(R.color.notice_nick))
// )
// if (attachment.prizeNum > 1) {
// text.append("x" + attachment.prizeNum, ForegroundColorSpan(Color.WHITE))
// }
// val svgaImageView = SVGAImageView(mContext)
// svgaImageView.loops = 1
// svgaImageView.clearsAfterDetached = true
// val params = LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT)
// svgaImageView.layoutParams = params
// svgaImageView.callback = object : SimpleSvgaCallback() {
// override fun onFinished() {
// animationBox = AnimationUtils.loadAnimation(mContext, R.anim.anim_box_notify_close)
// animationBox!!.setAnimationListener(object : SimpleAnimationListener() {
// override fun onAnimationEnd(animation: Animation?) {
// binding.flBoxNotify.removeView(svgaImageView)
// }
// })
// binding.flBoxNotify.startAnimation(animationBox)
// }
// }
// animationBox = AnimationUtils.loadAnimation(mContext, R.anim.anim_box_notify)
// binding.flBoxNotify.addView(svgaImageView)
// binding.flBoxNotify.startAnimation(animationBox)
//
// shareParser().decodeFromAssets("svga/box_notify.svga", object : SVGAParser.ParseCompletion {
// override fun onComplete(videoItem: SVGAVideoEntity) {
// val dynamicEntity = SVGADynamicEntity()
// val textPaint = TextPaint()
// textPaint.color = Color.WHITE //字體顏色
// textPaint.textSize = 24f //字體大小
// dynamicEntity.setDynamicText(
// StaticLayout(
// text.build(),
// 0,
// text.build().length,
// textPaint,
// 0,
// Layout.Alignment.ALIGN_CENTER,
// 1.0f,
// 0.0f,
// false
// ), "bg"
// )
// val drawable = SVGADrawable(videoItem, dynamicEntity)
// svgaImageView.setImageDrawable(drawable)
// svgaImageView.stepToFrame(0, true)
// }
//
// override fun onError() {}
// }, null)
// }
/**
* 幸運池飄屏

View File

@@ -165,13 +165,13 @@ class RoomEffectView @JvmOverloads constructor(
.subscribe { roomEvent: RoomEvent? ->
if (roomEvent == null || AvRoomDataManager.get().isSelfGamePlaying) return@subscribe
when (roomEvent.event) {
RoomEvent.BOX_NOTIFY -> {//寻爱
addPlayNotify(RoomEvent.BOX_NOTIFY, roomEvent.chatRoomMessage)
}
RoomEvent.BOX_NOTIFY_SVGA -> {//寻爱svga
addPlayNotify(RoomEvent.BOX_NOTIFY_SVGA, roomEvent.chatRoomMessage)
}
// RoomEvent.BOX_NOTIFY -> {//寻爱
// addPlayNotify(RoomEvent.BOX_NOTIFY, roomEvent.chatRoomMessage)
// }
//
// RoomEvent.BOX_NOTIFY_SVGA -> {//寻爱svga
// addPlayNotify(RoomEvent.BOX_NOTIFY_SVGA, roomEvent.chatRoomMessage)
// }
RoomEvent.TAROT_NOTIFY,
RoomEvent.TAROT_NOTIFY_SVGA -> {
@@ -182,9 +182,9 @@ class RoomEffectView @JvmOverloads constructor(
addPlayNotify(roomEvent.event, roomEvent.chatRoomMessage)
}
RoomEvent.RECEIVE_ROOM_LUCKY_BAG_NOTICE, RoomEvent.RECEIVE_SERVICE_LUCKY_BAG_NOTICE ->//全服福袋
//廳內福袋
addPlayNotify(roomEvent.event, roomEvent.chatRoomMessage)
// RoomEvent.RECEIVE_ROOM_LUCKY_BAG_NOTICE, RoomEvent.RECEIVE_SERVICE_LUCKY_BAG_NOTICE ->//全服福袋
// //廳內福袋
// addPlayNotify(roomEvent.event, roomEvent.chatRoomMessage)
RoomEvent.LUCKY_SEA_GIFT_ROOM_NOTIFY -> {// 星级厨房房间飘屏通知
addPlayNotify(roomEvent.event, roomEvent.chatRoomMessage)
@@ -287,57 +287,57 @@ class RoomEffectView @JvmOverloads constructor(
}
when (messagesPlay[0].event) {
RoomEvent.BOX_NOTIFY -> {//寻爱
if ((mContext as AVRoomActivity).isTopActivity) {
isPlayAnim = true
val isPlay = onPlayAnimCallback?.invoke() ?: false
if (isPlay) {
margin(
binding.clNotify,
0,
UIUtil.dip2px(context, 180.0),
0,
0
)
} else {
margin(
binding.clNotify,
0,
UIUtil.dip2px(context, 60.0),
0,
0
)
}
showBoxNotify(
messagesPlay.removeAt(0)
)
}
}
RoomEvent.BOX_NOTIFY_SVGA -> {//寻爱
if ((mContext as AVRoomActivity).isTopActivity) {
isPlayAnim = true
val isPlay = onPlayAnimCallback?.invoke() ?: false
if (isPlay) {
margin(
binding.clNotify,
0,
UIUtil.dip2px(context, 180.0),
0,
0
)
} else {
margin(
binding.clNotify,
0,
UIUtil.dip2px(context, 60.0),
0,
0
)
}
showBoxNotifyBySVGA(messagesPlay.removeAt(0))
}
}
// RoomEvent.BOX_NOTIFY -> {//寻爱
// if ((mContext as AVRoomActivity).isTopActivity) {
// isPlayAnim = true
// val isPlay = onPlayAnimCallback?.invoke() ?: false
// if (isPlay) {
// margin(
// binding.clNotify,
// 0,
// UIUtil.dip2px(context, 180.0),
// 0,
// 0
// )
// } else {
// margin(
// binding.clNotify,
// 0,
// UIUtil.dip2px(context, 60.0),
// 0,
// 0
// )
// }
// showBoxNotify(
// messagesPlay.removeAt(0)
// )
// }
// }
//
// RoomEvent.BOX_NOTIFY_SVGA -> {//寻爱
// if ((mContext as AVRoomActivity).isTopActivity) {
// isPlayAnim = true
// val isPlay = onPlayAnimCallback?.invoke() ?: false
// if (isPlay) {
// margin(
// binding.clNotify,
// 0,
// UIUtil.dip2px(context, 180.0),
// 0,
// 0
// )
// } else {
// margin(
// binding.clNotify,
// 0,
// UIUtil.dip2px(context, 60.0),
// 0,
// 0
// )
// }
// showBoxNotifyBySVGA(messagesPlay.removeAt(0))
// }
// }
RoomEvent.TAROT_NOTIFY -> {
if ((mContext as AVRoomActivity).isTopActivity) {
@@ -966,49 +966,49 @@ class RoomEffectView @JvmOverloads constructor(
isPlayAnim = false
}, CLOSE_TIME.toLong())
}
private fun showBoxNotify(roomPlayBean: RoomPlayBean) {
val chatRoomMessage = roomPlayBean.chatRoomMessage
val attachment = chatRoomMessage.attachment as RoomBoxPrizeAttachment
val textView =
LayoutInflater.from(mContext).inflate(R.layout.layout_room_box_notify, null) as TextView
val text = SpannableBuilder()
.append(
ResUtil.getString(R.string.avroom_widget_roomeffectview_08),
ForegroundColorSpan(Color.WHITE)
)
.append(
attachment.nick.subAndReplaceDot(8),
ForegroundColorSpan(resources.getColor(R.color.notice_nick))
)
.append(
ResUtil.getString(R.string.treasure_in_find_love) + ResUtil.getString(
R.string.avroom_widget_roomeffectview_010
), ForegroundColorSpan(Color.WHITE)
)
.append(
attachment.prizeName,
ForegroundColorSpan(resources.getColor(R.color.notice_nick))
)
if (attachment.prizeNum > 1) {
text.append("x" + attachment.prizeNum, ForegroundColorSpan(Color.WHITE))
}
textView.text = text.build()
animationPlay = AnimationUtils.loadAnimation(mContext, R.anim.anim_box_notify)
binding.flPlayNotify.addView(textView)
textView.startAnimation(animationPlay)
binding.flPlayNotify.postDelayed(
{
animationPlay = AnimationUtils.loadAnimation(mContext, R.anim.anim_box_notify_close)
textView.startAnimation(animationPlay)
},
SHOW_TIME.toLong()
)
binding.flPlayNotify.postDelayed({
binding.flPlayNotify.removeView(textView)
isPlayAnim = false
}, CLOSE_TIME.toLong())
}
//
// private fun showBoxNotify(roomPlayBean: RoomPlayBean) {
// val chatRoomMessage = roomPlayBean.chatRoomMessage
// val attachment = chatRoomMessage.attachment as RoomBoxPrizeAttachment
// val textView =
// LayoutInflater.from(mContext).inflate(R.layout.layout_room_box_notify, null) as TextView
// val text = SpannableBuilder()
// .append(
// ResUtil.getString(R.string.avroom_widget_roomeffectview_08),
// ForegroundColorSpan(Color.WHITE)
// )
// .append(
// attachment.nick.subAndReplaceDot(8),
// ForegroundColorSpan(resources.getColor(R.color.notice_nick))
// )
// .append(
// ResUtil.getString(R.string.treasure_in_find_love) + ResUtil.getString(
// R.string.avroom_widget_roomeffectview_010
// ), ForegroundColorSpan(Color.WHITE)
// )
// .append(
// attachment.prizeName,
// ForegroundColorSpan(resources.getColor(R.color.notice_nick))
// )
// if (attachment.prizeNum > 1) {
// text.append("x" + attachment.prizeNum, ForegroundColorSpan(Color.WHITE))
// }
// textView.text = text.build()
// animationPlay = AnimationUtils.loadAnimation(mContext, R.anim.anim_box_notify)
// binding.flPlayNotify.addView(textView)
// textView.startAnimation(animationPlay)
// binding.flPlayNotify.postDelayed(
// {
// animationPlay = AnimationUtils.loadAnimation(mContext, R.anim.anim_box_notify_close)
// textView.startAnimation(animationPlay)
// },
// SHOW_TIME.toLong()
// )
// binding.flPlayNotify.postDelayed({
// binding.flPlayNotify.removeView(textView)
// isPlayAnim = false
// }, CLOSE_TIME.toLong())
// }
private fun showTarotNotifyBySVGA(roomPlayBean: RoomPlayBean) {
val chatRoomMessage = roomPlayBean.chatRoomMessage
@@ -1066,78 +1066,78 @@ class RoomEffectView @JvmOverloads constructor(
)
}
private fun showBoxNotifyBySVGA(roomPlayBean: RoomPlayBean) {
val chatRoomMessage = roomPlayBean.chatRoomMessage
val attachment = chatRoomMessage.attachment as RoomBoxPrizeAttachment
val text = SpannableBuilder()
.append(
ResUtil.getString(R.string.avroom_widget_roomeffectview_011),
ForegroundColorSpan(Color.WHITE)
)
.append(
StringUtils.abbreviate(attachment.nick, 8) + " ",
ForegroundColorSpan(resources.getColor(R.color.notice_nick))
)
.append(
ResUtil.getString(R.string.treasure_in_find_love) + ResUtil.getString(
R.string.avroom_widget_roomeffectview_013
), ForegroundColorSpan(Color.WHITE)
)
.append(
attachment.prizeName,
ForegroundColorSpan(resources.getColor(R.color.notice_nick))
)
if (attachment.prizeNum > 1) {
text.append("x" + attachment.prizeNum, ForegroundColorSpan(Color.WHITE))
}
val svgaImageView = SVGAImageView(mContext)
svgaImageView.loops = 1
svgaImageView.clearsAfterDetached = true
val params = LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT)
svgaImageView.layoutParams = params
svgaImageView.callback = object : SimpleSvgaCallback() {
override fun onFinished() {
animationPlay = AnimationUtils.loadAnimation(mContext, R.anim.anim_box_notify_close)
animationPlay!!.setAnimationListener(object : SimpleAnimationListener() {
override fun onAnimationEnd(animation: Animation?) {
binding.flPlayNotify.removeView(svgaImageView)
isPlayAnim = false
}
})
binding.flPlayNotify.startAnimation(animationPlay)
}
}
animationPlay = AnimationUtils.loadAnimation(mContext, R.anim.anim_box_notify)
binding.flPlayNotify.addView(svgaImageView)
binding.flPlayNotify.startAnimation(animationPlay)
shareParser().decodeFromAssets("svga/box_notify.svga", object : SVGAParser.ParseCompletion {
override fun onComplete(videoItem: SVGAVideoEntity) {
val dynamicEntity = SVGADynamicEntity()
val textPaint = TextPaint()
textPaint.color = Color.WHITE //字體顏色
textPaint.textSize = 24f //字體大小
dynamicEntity.setDynamicText(
StaticLayout(
text.build(),
0,
text.build().length,
textPaint,
0,
Layout.Alignment.ALIGN_CENTER,
1.0f,
0.0f,
false
), "bg"
)
val drawable = SVGADrawable(videoItem, dynamicEntity)
svgaImageView.setImageDrawable(drawable)
svgaImageView.stepToFrame(0, true)
}
override fun onError() {}
}, null)
}
// private fun showBoxNotifyBySVGA(roomPlayBean: RoomPlayBean) {
// val chatRoomMessage = roomPlayBean.chatRoomMessage
// val attachment = chatRoomMessage.attachment as RoomBoxPrizeAttachment
// val text = SpannableBuilder()
// .append(
// ResUtil.getString(R.string.avroom_widget_roomeffectview_011),
// ForegroundColorSpan(Color.WHITE)
// )
// .append(
// StringUtils.abbreviate(attachment.nick, 8) + " ",
// ForegroundColorSpan(resources.getColor(R.color.notice_nick))
// )
// .append(
// ResUtil.getString(R.string.treasure_in_find_love) + ResUtil.getString(
// R.string.avroom_widget_roomeffectview_013
// ), ForegroundColorSpan(Color.WHITE)
// )
// .append(
// attachment.prizeName,
// ForegroundColorSpan(resources.getColor(R.color.notice_nick))
// )
// if (attachment.prizeNum > 1) {
// text.append("x" + attachment.prizeNum, ForegroundColorSpan(Color.WHITE))
// }
// val svgaImageView = SVGAImageView(mContext)
// svgaImageView.loops = 1
// svgaImageView.clearsAfterDetached = true
// val params = LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT)
// svgaImageView.layoutParams = params
// svgaImageView.callback = object : SimpleSvgaCallback() {
// override fun onFinished() {
// animationPlay = AnimationUtils.loadAnimation(mContext, R.anim.anim_box_notify_close)
// animationPlay!!.setAnimationListener(object : SimpleAnimationListener() {
// override fun onAnimationEnd(animation: Animation?) {
// binding.flPlayNotify.removeView(svgaImageView)
// isPlayAnim = false
// }
// })
// binding.flPlayNotify.startAnimation(animationPlay)
// }
// }
// animationPlay = AnimationUtils.loadAnimation(mContext, R.anim.anim_box_notify)
// binding.flPlayNotify.addView(svgaImageView)
// binding.flPlayNotify.startAnimation(animationPlay)
//
// shareParser().decodeFromAssets("svga/box_notify.svga", object : SVGAParser.ParseCompletion {
// override fun onComplete(videoItem: SVGAVideoEntity) {
// val dynamicEntity = SVGADynamicEntity()
// val textPaint = TextPaint()
// textPaint.color = Color.WHITE //字體顏色
// textPaint.textSize = 24f //字體大小
// dynamicEntity.setDynamicText(
// StaticLayout(
// text.build(),
// 0,
// text.build().length,
// textPaint,
// 0,
// Layout.Alignment.ALIGN_CENTER,
// 1.0f,
// 0.0f,
// false
// ), "bg"
// )
// val drawable = SVGADrawable(videoItem, dynamicEntity)
// svgaImageView.setImageDrawable(drawable)
// svgaImageView.stepToFrame(0, true)
// }
//
// override fun onError() {}
// }, null)
// }
/**
* 幸運池飄屏

View File

@@ -0,0 +1,177 @@
package com.chwl.app.avroom.widget
import android.content.Context
import android.graphics.Color
import android.text.SpannableStringBuilder
import android.text.method.LinkMovementMethod
import android.text.style.ForegroundColorSpan
import android.view.View
import android.widget.TextView
import com.chwl.app.common.widget.OriginalDrawStatusClickSpan
import com.chwl.app.utils.CommonJumpHelper
import com.chwl.app.utils.SpannableBuilder
import com.chwl.core.home.bean.BannerInfo
import com.chwl.core.im.custom.bean.TemplateMessage
import com.chwl.core.im.custom.bean.TemplateMessage.TemplateNode
import com.chwl.core.im.custom.bean.TemplateMessage.Content
import com.example.lib_utils.UiUtils
class TemplateMessageAdapter(val listener: Listener?) {
/**
* 解析为文本子节点只支持TEXT类型
*/
fun parse(context: Context, attachment: TemplateMessage?): SpannableStringBuilder? {
val builder = SpannableBuilder()
if (attachment == null) {
return null
}
val nodeList = attachment.getNodeList()
nodeList.forEach {
if (it is TemplateNode.NormalNode) {
val textColor = parseColor(it.textColor)
if (textColor != null) {
builder.append(it.text, ForegroundColorSpan(textColor))
} else {
builder.append(it.text)
}
} else if (it is TemplateNode.SpecialNode) {
when (it.content.type) {
Content.TEXT -> {
val text = it.content.text?.getFirstText()
if (!text.isNullOrEmpty()) {
val textColor = parseColor(it.content.textColor)
val clickSpan = createClickSpan(context, it.content, listener)
val list = ArrayList<Any>()
if (textColor != null) {
list.add(ForegroundColorSpan(textColor))
}
if (clickSpan != null) {
list.add(clickSpan)
}
builder.append(text, *list.toArray())
}
}
}
}
}
return builder.build()
}
fun convert(textView: TextView, attachment: TemplateMessage?) {
if (attachment == null) {
textView.text = ""
return
}
val nodeList = attachment.getNodeList()
val textBuilder = MessageView.SpannableBuilder(textView)
nodeList.forEach {
if (it is TemplateNode.NormalNode) {
val textColor = parseColor(it.textColor)
if (textColor != null) {
textBuilder.append(it.text, ForegroundColorSpan(textColor))
} else {
textBuilder.append(it.text)
}
} else if (it is TemplateNode.SpecialNode) {
when (it.content.type) {
Content.TEXT -> {
val text = it.content.text?.getFirstText()
if (!text.isNullOrEmpty()) {
val textColor = parseColor(it.content.textColor)
val clickSpan = createClickSpan(textView.context, it.content, listener)
val list = ArrayList<Any>()
if (textColor != null) {
list.add(ForegroundColorSpan(textColor))
}
if (clickSpan != null) {
list.add(clickSpan)
}
textBuilder.append(text, *list.toArray())
}
}
TemplateMessage.Content.IMAGE -> {
val image = it.content.image
val width = it.content.width ?: 0
val height = it.content.height ?: 0
val clickSpan = createClickSpan(textView.context, it.content, listener)
if (height > 0 && width == 0) {
if (clickSpan != null) {
textBuilder.append(
image,
UiUtils.dip2px(height.toFloat()),
clickSpan
)
} else {
textBuilder.append(image, UiUtils.dip2px(height.toFloat()))
}
} else if (height > 0 && width > 0) {
if (clickSpan != null) {
textBuilder.append(
image,
UiUtils.dip2px(width.toFloat()),
UiUtils.dip2px(height.toFloat()), clickSpan
)
} else {
textBuilder.append(
image,
UiUtils.dip2px(width.toFloat()),
UiUtils.dip2px(height.toFloat())
)
}
} else {
if (clickSpan != null) {
textBuilder.appendImg(image, clickSpan)
} else {
textBuilder.appendImg(image)
}
}
}
}
}
}
textView.text = textBuilder.build()
textView.setOnClickListener(null)
textView.movementMethod = LinkMovementMethod()
}
private fun createClickSpan(
context: Context,
content: Content,
listener: Listener?
): OriginalDrawStatusClickSpan? {
val skipType = content.getSkipType()
val skipUri = content.getSkipUri()
if (skipType > 0 && !skipUri.isNullOrEmpty()) {
return object : OriginalDrawStatusClickSpan() {
override fun onClick(widget: View) {
if (skipType == BannerInfo.SKIP_TYPE_ROOM_USER_CARD) {
listener?.onShowUserCard(skipUri)
} else {
CommonJumpHelper.bannerJump(context, content)
}
}
}
} else {
return null
}
}
fun parseColor(color: String?): Int? {
if (color == null) {
return null
}
try {
return Color.parseColor(color)
} catch (e: java.lang.Exception) {
e.printStackTrace()
}
return null
}
interface Listener {
fun onShowUserCard(uid: String)
}
}

View File

@@ -8,6 +8,7 @@ import android.util.AttributeSet
import android.widget.ProgressBar
import com.netease.nim.uikit.common.util.sys.ScreenUtil
import com.chwl.app.R
import com.example.lib_utils.UiUtils
class VipProgressBar(context: Context, attrs: AttributeSet?) : ProgressBar(context, attrs) {
@@ -19,6 +20,10 @@ class VipProgressBar(context: Context, attrs: AttributeSet?) : ProgressBar(conte
private var mHeight = 0
private val leftPadding = ScreenUtil.dip2px(9f)
private var isRTL = false
init {
isRTL = UiUtils.isRtl(context)
}
override fun onSizeChanged(w: Int, h: Int, oldw: Int, oldh: Int) {
super.onSizeChanged(w, h, oldw, oldh)
mWidth = w
@@ -28,7 +33,10 @@ class VipProgressBar(context: Context, attrs: AttributeSet?) : ProgressBar(conte
@Synchronized
override fun onDraw(canvas: Canvas) {
super.onDraw(canvas)
val radio = progress * 1.0f / max
var radio = progress * 1.0f / max
if (isRTL) {
radio = 1 - radio
}
canvas.drawBitmap(
thumbBitmap,
(mWidth - leftPadding * 2) * radio - thumbWidth / 2f + leftPadding,

View File

@@ -4,19 +4,15 @@ import static com.chwl.core.Constants.DEBUG_MAX_UID;
import static com.chwl.core.im.custom.bean.CustomAttachment.CUSTOM_MESS_HEAD_NOBLE;
import static com.chwl.core.im.custom.bean.CustomAttachment.CUSTOM_MESS_SUB_OPENNOBLE;
import static com.chwl.core.im.custom.bean.CustomAttachment.CUSTOM_MESS_SUB_RENEWNOBLE;
import static com.chwl.core.im.custom.bean.CustomAttachment.CUSTOM_MSG_ALL_SERVICE_GIFT;
import static com.chwl.core.im.custom.bean.CustomAttachment.CUSTOM_MSG_BOX;
import static com.chwl.core.im.custom.bean.CustomAttachment.CUSTOM_MSG_FAIRY;
import static com.chwl.core.im.custom.bean.CustomAttachment.CUSTOM_MSG_HEADER_TYPE_GIFT;
import static com.chwl.core.im.custom.bean.CustomAttachment.CUSTOM_MSG_LUCKY_GIFT;
import static com.chwl.core.im.custom.bean.CustomAttachment.CUSTOM_MSG_LUCKY_GIFT_SERVER_ALL;
import static com.chwl.core.im.custom.bean.CustomAttachment.CUSTOM_MSG_LUCKY_SEA;
import static com.chwl.core.im.custom.bean.CustomAttachment.CUSTOM_MSG_LUCKY_SEA_GIFT_SERVER_ALL;
import static com.chwl.core.im.custom.bean.CustomAttachment.CUSTOM_MSG_NOTIFY_H5_SUB_WHOLE_SERVICE;
import static com.chwl.core.im.custom.bean.CustomAttachment.CUSTOM_MSG_RED_PACKAGE;
import static com.chwl.core.im.custom.bean.CustomAttachment.CUSTOM_MSG_SUB_BOX_ALL_ROOM_NOTIFY_BY_SVGA;
import static com.chwl.core.im.custom.bean.CustomAttachment.CUSTOM_MSG_SUB_DRAW_GIFT_L5;
import static com.chwl.core.im.custom.bean.CustomAttachment.CUSTOM_MSG_SUB_RED_PACKAGE_RECEIVE_ALL_DIAMOND;
import static com.chwl.core.im.custom.bean.CustomAttachment.CUSTOM_MSG_VIP;
import static com.chwl.core.im.custom.bean.CustomAttachment.CUSTOM_MSG_VIP_USER_ALL_UPGRADE;
import static com.chwl.library.utils.UIUtils.getActivityByContext;
@@ -27,6 +23,7 @@ import android.app.Dialog;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.res.Configuration;
import android.graphics.Color;
import android.graphics.Typeface;
import android.os.Build;
@@ -51,6 +48,8 @@ import androidx.fragment.app.FragmentManager;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.chwl.app.notify.GlobalNotifyManager;
import com.chwl.library.language.LanguageHelper;
import com.google.gson.Gson;
import com.netease.nim.uikit.common.util.log.LogUtil;
import com.netease.nimlib.sdk.NIMSDK;
@@ -67,10 +66,6 @@ import com.chwl.app.application.IReportConstants;
import com.chwl.app.application.ReportManager;
import com.chwl.app.application.App;
import com.chwl.app.avroom.activity.AVRoomActivity;
import com.chwl.app.avroom.firstcharge.FirstChargeDialog;
import com.chwl.app.avroom.redpackage.RedPackageGoRoomDialog;
import com.chwl.app.avroom.redpackage.RedPackageHandler;
import com.chwl.app.avroom.redpackage.open.RedPackageOpenDialog;
import com.chwl.app.common.LoadingFragment;
import com.chwl.app.common.NetworkErrorFragment;
import com.chwl.app.common.NoDataFragment;
@@ -91,7 +86,6 @@ import com.chwl.app.ui.widget.dialog.AllServiceGiftLevelDialog;
import com.chwl.app.ui.widget.dialog.AllServiceVipLevelUPDialog;
import com.chwl.app.ui.widget.dialog.OpenNobleGlobalNoticeDialog;
import com.chwl.app.utils.UserUtils;
import com.chwl.app.mentoring_relationship.dialog.GrabApprenticesNoticeDialog;
import com.chwl.core.XConstants;
import com.chwl.core.bean.BaseProtocol;
import com.chwl.core.gift.bean.LuckyBagNoticeInfo;
@@ -101,7 +95,6 @@ import com.chwl.core.im.custom.bean.PlayEffectInfo;
import com.chwl.core.im.custom.bean.RoomBoxPrizeInfo;
import com.chwl.core.im.custom.bean.RoomLuckySeaMsgBean;
import com.chwl.core.im.custom.bean.TarotMsgBean;
import com.chwl.core.manager.AvRoomDataManager;
import com.chwl.core.manager.IMNetEaseManager;
import com.chwl.core.manager.RoomEvent;
import com.chwl.core.mentoring_relationship.event.GrabApprenticesEvent;
@@ -112,10 +105,7 @@ import com.chwl.core.noble.bean.NobleInfo;
import com.chwl.core.noble.bean.NobleProtocol;
import com.chwl.core.pay.PayModel;
import com.chwl.core.pay.bean.WalletInfo;
import com.chwl.core.redpackage.bean.RedPackageNotifyInfo;
import com.chwl.core.room.bean.RoomInfo;
import com.chwl.core.room.model.AvRoomModel;
import com.chwl.core.support.room.RoomContext;
import com.chwl.core.treasurefairy.bean.FairyMsgInfoBean;
import com.chwl.core.user.UserModel;
import com.chwl.core.utils.net.RxHelper;
@@ -163,7 +153,6 @@ public abstract class BaseActivity extends RxAppCompatActivity
protected DefaultToolBar mToolBar;
protected CompositeDisposable mCompositeDisposable;
protected Context context;
protected volatile GrabApprenticesNoticeDialog dialog;
private DialogManager mDialogManager;
private BroadcastObserver broadcastObserver;
private OpenNobleGlobalNoticeDialog mNoticeDialog;
@@ -188,6 +177,7 @@ public abstract class BaseActivity extends RxAppCompatActivity
if (roomEvent == null) return;
onReceiveChatRoomEvent(roomEvent);
}));
GlobalNotifyManager.INSTANCE.bindActivity(this);
}
protected void onReceiveChatRoomEvent(RoomEvent roomEvent) {
@@ -527,6 +517,18 @@ public abstract class BaseActivity extends RxAppCompatActivity
}
@Override
protected void attachBaseContext(Context newBase) {
super.attachBaseContext(LanguageHelper.INSTANCE.wrapContext(newBase));
LanguageHelper.INSTANCE.wrapContext(newBase.getApplicationContext());
}
@Override
public void onConfigurationChanged(@NonNull Configuration newConfig) {
super.onConfigurationChanged(newConfig);
LanguageHelper.INSTANCE.changeLanguage(this, LanguageHelper.INSTANCE.getCurrentLanguage());
}
@SuppressLint("CheckResult")
@Override
protected void onResume() {
@@ -543,12 +545,6 @@ public abstract class BaseActivity extends RxAppCompatActivity
}, throwable -> {
});
RxBus.get()
.toFlowable(GrabApprenticesEvent.class)
.compose(bindUntilEvent(ActivityEvent.PAUSE))
.observeOn(AndroidSchedulers.mainThread())
.subscribe(this::onGrabApprenticesEvent);
IMNetEaseManager.get().getChatRoomEventObservable()
.compose(bindUntilEvent(ActivityEvent.PAUSE))
.observeOn(AndroidSchedulers.mainThread())
@@ -876,6 +872,10 @@ public abstract class BaseActivity extends RxAppCompatActivity
return rxPermissions.request(mPerms);
}
public RxPermissions getRxPermissions() {
return rxPermissions;
}
/**
* 接收到全局广播信息
*
@@ -940,29 +940,6 @@ public abstract class BaseActivity extends RxAppCompatActivity
}
}
break;
case CUSTOM_MSG_RED_PACKAGE:
if (baseProtocol.getSecond() == CUSTOM_MSG_SUB_RED_PACKAGE_RECEIVE_ALL_DIAMOND) {
if (this instanceof AddUserInfoActivity ||
UserUtils.getUserInfo() == null ||
AvRoomDataManager.get().isSelfGamePlaying())
return;
RedPackageNotifyInfo notifyInfo = new Gson().fromJson(String.valueOf(baseProtocol.getData()), RedPackageNotifyInfo.class);
RoomInfo roomInfo = AvRoomDataManager.get().mCurrentRoomInfo;
RoomContext roomContext = RoomContext.Companion.get();
RedPackageHandler redPackageHandler = null;
if (roomContext != null) {
redPackageHandler = roomContext.findAbility(RedPackageHandler.class.getSimpleName());
}
if (redPackageHandler != null) {
redPackageHandler.onAllServiceSignaling(this, notifyInfo);
} else {
if (roomInfo != null && roomInfo.getUid() == notifyInfo.getRoomUid() && context instanceof AVRoomActivity) {
RedPackageOpenDialog.Companion.newInstance(notifyInfo).show(BaseActivity.this);
} else {
RedPackageGoRoomDialog.Companion.newInstance(notifyInfo).show(this);
}
}
}
case CUSTOM_MSG_VIP:
if (baseProtocol.getSecond() == CUSTOM_MSG_VIP_USER_ALL_UPGRADE) {
VipMessageInfo vipMessageInfo = new Gson().fromJson(String.valueOf(baseProtocol.getData()), VipMessageInfo.class);
@@ -971,62 +948,62 @@ public abstract class BaseActivity extends RxAppCompatActivity
}
}
break;
case CUSTOM_MSG_HEADER_TYPE_GIFT:
if (!isValid() || getWindow().getDecorView().getVisibility() != View.VISIBLE) return;
if (this instanceof AddUserInfoActivity || this instanceof AVRoomActivity
// || this instanceof TreasureBoxActivity || this instanceof HomeFairyActivity
|| UserUtils.getUserInfo() == null)
return;
if (giftList == null) {
giftList = new LinkedList<>();
}
int second2 = baseProtocol.getSecond();
AllServiceGiftProtocol.DataBean data = JSON.parseObject(String.valueOf(baseProtocol.getData()), AllServiceGiftProtocol.DataBean.class);
if (data == null || data.getGiftUrl() == null) return;
giftList.add(data);
if (second2 == CUSTOM_MSG_ALL_SERVICE_GIFT) {
if (giftDialog != null && giftDialog.isShowing()) {
// 如果当前以及有礼物弹窗在展示,则需要等到他 dismiss 后再显示下一个
AllServiceGiftProtocol.DataBean dataBean = giftList.peekFirst();
if (dataBean != null) {
return;
} else {
giftDialog.dismiss();
}
} else {
showGiftDialog();
}
}
break;
case CUSTOM_MSG_BOX://寻爱之旅
if (!isValid() || getWindow().getDecorView().getVisibility() != View.VISIBLE) return;
if (this instanceof AddUserInfoActivity || this instanceof AVRoomActivity
// || this instanceof TreasureBoxActivity || this instanceof HomeFairyActivity
|| UserUtils.getUserInfo() == null)
return;
if (playEffectList == null) {
playEffectList = new LinkedList<>();
}
RoomBoxPrizeInfo roomBoxPrizeInfo = JSON.parseObject(String.valueOf(baseProtocol.getData()), RoomBoxPrizeInfo.class);
if (roomBoxPrizeInfo == null) return;
if (baseProtocol.getSecond() == CUSTOM_MSG_SUB_BOX_ALL_ROOM_NOTIFY_BY_SVGA) {
PlayEffectInfo playEffectInfo = new PlayEffectInfo();
playEffectInfo.setSecond(CUSTOM_MSG_SUB_BOX_ALL_ROOM_NOTIFY_BY_SVGA);
playEffectInfo.setRoomBoxPrizeInfo(roomBoxPrizeInfo);
playEffectList.add(playEffectInfo);
if (playEffectDialog != null && playEffectDialog.isShowing()) {
// 如果当前以及有礼物弹窗在展示,则需要等到他 dismiss 后再显示下一个
PlayEffectInfo dataBean = playEffectList.peekFirst();
if (dataBean != null) {
return;
} else {
playEffectDialog.dismiss();
}
} else {
showPlayEffectDialog();
}
}
break;
// case CUSTOM_MSG_HEADER_TYPE_GIFT:
// if (!isValid() || getWindow().getDecorView().getVisibility() != View.VISIBLE) return;
// if (this instanceof AddUserInfoActivity || this instanceof AVRoomActivity
//// || this instanceof TreasureBoxActivity || this instanceof HomeFairyActivity
// || UserUtils.getUserInfo() == null)
// return;
// if (giftList == null) {
// giftList = new LinkedList<>();
// }
// int second2 = baseProtocol.getSecond();
// AllServiceGiftProtocol.DataBean data = JSON.parseObject(String.valueOf(baseProtocol.getData()), AllServiceGiftProtocol.DataBean.class);
// if (data == null || data.getGiftUrl() == null) return;
// giftList.add(data);
// if (second2 == CUSTOM_MSG_ALL_SERVICE_GIFT) {
// if (giftDialog != null && giftDialog.isShowing()) {
// // 如果当前以及有礼物弹窗在展示,则需要等到他 dismiss 后再显示下一个
// AllServiceGiftProtocol.DataBean dataBean = giftList.peekFirst();
// if (dataBean != null) {
// return;
// } else {
// giftDialog.dismiss();
// }
// } else {
// showGiftDialog();
// }
// }
// break;
// case CUSTOM_MSG_BOX://寻爱之旅
// if (!isValid() || getWindow().getDecorView().getVisibility() != View.VISIBLE) return;
// if (this instanceof AddUserInfoActivity || this instanceof AVRoomActivity
//// || this instanceof TreasureBoxActivity || this instanceof HomeFairyActivity
// || UserUtils.getUserInfo() == null)
// return;
// if (playEffectList == null) {
// playEffectList = new LinkedList<>();
// }
// RoomBoxPrizeInfo roomBoxPrizeInfo = JSON.parseObject(String.valueOf(baseProtocol.getData()), RoomBoxPrizeInfo.class);
// if (roomBoxPrizeInfo == null) return;
// if (baseProtocol.getSecond() == CUSTOM_MSG_SUB_BOX_ALL_ROOM_NOTIFY_BY_SVGA) {
// PlayEffectInfo playEffectInfo = new PlayEffectInfo();
// playEffectInfo.setSecond(CUSTOM_MSG_SUB_BOX_ALL_ROOM_NOTIFY_BY_SVGA);
// playEffectInfo.setRoomBoxPrizeInfo(roomBoxPrizeInfo);
// playEffectList.add(playEffectInfo);
// if (playEffectDialog != null && playEffectDialog.isShowing()) {
// // 如果当前以及有礼物弹窗在展示,则需要等到他 dismiss 后再显示下一个
// PlayEffectInfo dataBean = playEffectList.peekFirst();
// if (dataBean != null) {
// return;
// } else {
// playEffectDialog.dismiss();
// }
// } else {
// showPlayEffectDialog();
// }
// }
// break;
case CustomAttachment.CUSTOM_MESS_TAROT:
if (!isValid() || getWindow().getDecorView().getVisibility() != View.VISIBLE) return;
if (this instanceof AddUserInfoActivity || this instanceof AVRoomActivity
@@ -1233,11 +1210,6 @@ public abstract class BaseActivity extends RxAppCompatActivity
public void onGrabApprenticesEvent(GrabApprenticesEvent event) {
if (!isTopActivity()) return;
if (dialog != null && dialog.isAdded()) {
dialog.dismiss();
}
dialog = new GrabApprenticesNoticeDialog();
dialog.show(getSupportFragmentManager());
}
public void onRoomEventReceived(RoomEvent roomEvent) {
@@ -1300,10 +1272,6 @@ public abstract class BaseActivity extends RxAppCompatActivity
.doOnError(throwable -> isShowingChargeDialog = false)
.subscribe(
userInfo -> {
if (userInfo.isFirstCharge()) {
isShowingChargeDialog = false;
FirstChargeDialog.start(context);
} else {
new DialogManager(context).showOkCancelDialog(getString(R.string.tips_need_charge),
new DialogManager.OkCancelDialogListener() {
@Override
@@ -1316,7 +1284,7 @@ public abstract class BaseActivity extends RxAppCompatActivity
if (goldWalletInfo != null) {
map.put(IReportConstants.ACCOUNT_BALANCE, goldWalletInfo.getDiamondNum());
}
map.put(IReportConstants.MODULE, IReportConstants.PEKO_PAY);
map.put(IReportConstants.MODULE, IReportConstants.MOLISTAR_PAY);
ReportManager.get().reportEvent(IReportConstants.PAYPAGE_SHOW, map);
// if (AppMetaDataUtil.getChannelID().equals(Constants.GOOGLE)) {
ChargeActivity.start(context);
@@ -1335,7 +1303,6 @@ public abstract class BaseActivity extends RxAppCompatActivity
isShowingChargeDialog = false;
}
});
}
}
);
@@ -1411,14 +1378,14 @@ public abstract class BaseActivity extends RxAppCompatActivity
JSONObject jsonObject;
try {
jsonObject = JSON.parseObject(contentStr);
if (jsonObject == null) return;
if (jsonObject.containsKey("body")) {
String body = jsonObject.getString("body");
if (TextUtils.isEmpty(body)) return;
baseMvpActivity.onReceivedNimBroadcastMessage(body);
}
} catch (Exception e) {
jsonObject = null;
}
if (jsonObject == null) return;
if (jsonObject.containsKey("body")) {
String body = jsonObject.getString("body");
if (TextUtils.isEmpty(body)) return;
baseMvpActivity.onReceivedNimBroadcastMessage(body);
e.printStackTrace();
}
}
}

View File

@@ -0,0 +1,91 @@
package com.chwl.app.base;
import android.content.Context;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.os.Bundle;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import androidx.appcompat.app.AppCompatDialog;
import androidx.databinding.DataBindingUtil;
import androidx.databinding.ViewDataBinding;
import com.chwl.library.annatation.ActLayoutRes;
import com.netease.nim.uikit.common.util.sys.ScreenUtil;
/**
* Created by huangmeng1 on 2018/4/12.
*/
public abstract class BaseBindingDialog<T extends ViewDataBinding> extends AppCompatDialog {
protected int width, height;
protected Context context;
protected int gravity;
public BaseBindingDialog(Context context) {
this(context, 0);
}
public BaseBindingDialog(Context context, int theme) {
super(context, theme);
this.context = context;
width = ScreenUtil.getDialogWidth();
height = WindowManager.LayoutParams.WRAP_CONTENT;
gravity = Gravity.CENTER;
}
protected T binding;
@Override
protected void onStart() {
super.onStart();
Window window = getWindow();
if (window != null) {
window.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
WindowManager.LayoutParams windowParams = window.getAttributes();
windowParams.width = width;
windowParams.height = height;
windowParams.dimAmount = 0.5f;
windowParams.gravity = gravity;
windowParams.x = 0;
windowParams.y = 0;
// window.addFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL);
window.setAttributes(windowParams);
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
View inflate = LayoutInflater.from(getContext()).inflate(getClass().getAnnotation(ActLayoutRes.class).value(), null);
setContentView(inflate.getRootView());
setCancelable(true);
setCanceledOnTouchOutside(true);
binding = DataBindingUtil.bind(inflate);
init();
}
protected abstract void init();
public void openDialog() {
try {
show();
} catch (Exception e) {
e.printStackTrace();
}
}
public void closeDialog() {
try {
dismiss();
} catch (Exception e) {
e.printStackTrace();
}
}
}

View File

@@ -9,7 +9,7 @@ import java.lang.reflect.ParameterizedType
abstract class BaseViewBindingFragment<T : ViewBinding> : BaseFragment() {
private var _binding: T? = null
protected var _binding: T? = null
val binding get() = _binding!!

View File

@@ -6,11 +6,14 @@ import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import com.chwl.core.utils.extension.toast
import com.chwl.library.net.rxnet.exception.ExceptionHandle
import io.reactivex.disposables.CompositeDisposable
import io.reactivex.disposables.Disposable
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.launch
open class BaseViewModel : ViewModel() {
private var compositeDisposable: CompositeDisposable? = null
private val _loadingLiveData by lazy { MutableLiveData<Boolean>() }
val loadingLiveData: LiveData<Boolean> = _loadingLiveData
@@ -40,5 +43,22 @@ open class BaseViewModel : ViewModel() {
}
}
private fun getCompositeDisposable(): CompositeDisposable {
var disposable = compositeDisposable
if (disposable == null) {
disposable = CompositeDisposable()
compositeDisposable = disposable
}
return disposable
}
protected fun addDisposable(disposable: Disposable) {
getCompositeDisposable().add(disposable)
}
override fun onCleared() {
super.onCleared()
compositeDisposable?.dispose()
compositeDisposable = null
}
}

View File

@@ -11,6 +11,7 @@ import android.content.res.TypedArray;
import android.graphics.drawable.Drawable;
import android.text.TextUtils;
import android.util.AttributeSet;
import android.util.LayoutDirection;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
@@ -20,9 +21,12 @@ import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.TextView;
import androidx.core.text.TextUtilsCompat;
import com.chwl.app.R;
import java.util.LinkedList;
import java.util.Locale;
/**
* 类描述:
@@ -446,18 +450,33 @@ public class TitleBar extends ViewGroup implements View.OnClickListener {
setMeasuredDimension(MeasureSpec.getSize(widthMeasureSpec), height);
}
@Override
protected void onLayout(boolean changed, int l, int t, int r, int b) {
mLeftLayout.layout(0, mStatusBarHeight, mLeftLayout.getMeasuredWidth(), mLeftLayout.getMeasuredHeight() + mStatusBarHeight);
mRightLayout.layout(mScreenWidth - mRightLayout.getMeasuredWidth(), mStatusBarHeight,
mScreenWidth, mRightLayout.getMeasuredHeight() + mStatusBarHeight);
if (mLeftLayout.getMeasuredWidth() > mRightLayout.getMeasuredWidth()) {
mCenterLayout.layout(mLeftLayout.getMeasuredWidth(), mStatusBarHeight,
mScreenWidth - mLeftLayout.getMeasuredWidth(), getMeasuredHeight());
if(TextUtilsCompat.getLayoutDirectionFromLocale(Locale.getDefault()) == LayoutDirection.RTL) {
mRightLayout.layout(0, mStatusBarHeight, mRightLayout.getMeasuredWidth(), mRightLayout.getMeasuredHeight() + mStatusBarHeight);
mLeftLayout.layout(mScreenWidth - mLeftLayout.getMeasuredWidth(), mStatusBarHeight,
mScreenWidth, mLeftLayout.getMeasuredHeight() + mStatusBarHeight);
if (mRightLayout.getMeasuredWidth() > mLeftLayout.getMeasuredWidth()) {
mCenterLayout.layout(mRightLayout.getMeasuredWidth(), mStatusBarHeight,
mScreenWidth - mRightLayout.getMeasuredWidth(), getMeasuredHeight());
} else {
mCenterLayout.layout(mLeftLayout.getMeasuredWidth(), mStatusBarHeight,
mScreenWidth - mLeftLayout.getMeasuredWidth(), getMeasuredHeight());
}
} else {
mCenterLayout.layout(mRightLayout.getMeasuredWidth(), mStatusBarHeight,
mScreenWidth - mRightLayout.getMeasuredWidth(), getMeasuredHeight());
mLeftLayout.layout(0, mStatusBarHeight, mLeftLayout.getMeasuredWidth(), mLeftLayout.getMeasuredHeight() + mStatusBarHeight);
mRightLayout.layout(mScreenWidth - mRightLayout.getMeasuredWidth(), mStatusBarHeight,
mScreenWidth, mRightLayout.getMeasuredHeight() + mStatusBarHeight);
if (mLeftLayout.getMeasuredWidth() > mRightLayout.getMeasuredWidth()) {
mCenterLayout.layout(mLeftLayout.getMeasuredWidth(), mStatusBarHeight,
mScreenWidth - mLeftLayout.getMeasuredWidth(), getMeasuredHeight());
} else {
mCenterLayout.layout(mRightLayout.getMeasuredWidth(), mStatusBarHeight,
mScreenWidth - mRightLayout.getMeasuredWidth(), getMeasuredHeight());
}
}
mDividerView.layout(0, getMeasuredHeight() - mDividerView.getMeasuredHeight(), getMeasuredWidth(), getMeasuredHeight());
}

View File

@@ -10,10 +10,8 @@ import com.chwl.app.base.TitleBar;
import com.chwl.app.bills.adapter.GiftExpendAdapter;
import com.chwl.app.databinding.ActivityBillsGiftBinding;
import com.chwl.app.ui.pay.ChargeActivity;
import com.chwl.app.ui.webview.CommonWebViewActivity;
import com.chwl.app.ui.widget.RecyclerViewNoBugLinearLayoutManager;
import com.chwl.core.Constants;
import com.chwl.core.UriProvider;
import com.chwl.core.bills.BillModel;
import com.chwl.core.bills.bean.BillItemEntity;
import com.chwl.core.bills.bean.ExpendInfo;
@@ -21,8 +19,6 @@ import com.chwl.core.bills.bean.ExpendListInfo;
import com.chwl.core.pay.PayModel;
import com.chwl.core.pay.bean.WalletInfo;
import com.chwl.library.annatation.ActLayoutRes;
import com.chwl.library.common.util.DeviceUtil;
import com.chwl.library.utils.AppMetaDataUtil;
import com.chwl.library.utils.ListUtils;
import com.chwl.library.utils.ResUtil;

View File

@@ -1,7 +1,6 @@
package com.chwl.app.bills.activities;
import android.annotation.SuppressLint;
import android.content.Intent;
import android.text.TextUtils;
import android.view.View;
import android.widget.ImageView;
@@ -13,10 +12,8 @@ import com.chwl.app.base.TitleBar;
import com.chwl.app.bills.adapter.GiftIncomeAdapter;
import com.chwl.app.databinding.ActivityBillsGiftBinding;
import com.chwl.app.ui.pay.ChargeActivity;
import com.chwl.app.ui.webview.CommonWebViewActivity;
import com.chwl.app.ui.widget.RecyclerViewNoBugLinearLayoutManager;
import com.chwl.core.Constants;
import com.chwl.core.UriProvider;
import com.chwl.core.bills.BillModel;
import com.chwl.core.bills.bean.BillItemEntity;
import com.chwl.core.bills.bean.IncomeInfo;
@@ -24,8 +21,6 @@ import com.chwl.core.bills.bean.IncomeListInfo;
import com.chwl.core.pay.PayModel;
import com.chwl.core.pay.bean.WalletInfo;
import com.chwl.library.annatation.ActLayoutRes;
import com.chwl.library.common.util.DeviceUtil;
import com.chwl.library.utils.AppMetaDataUtil;
import com.chwl.library.utils.ListUtils;
import com.chwl.library.utils.ResUtil;

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