diff --git a/app/src/main/java/com/yizhuan/erban/avroom/activity/AVRoomActivity.java b/app/src/main/java/com/yizhuan/erban/avroom/activity/AVRoomActivity.java index 56b9f9f57..8ec312de9 100644 --- a/app/src/main/java/com/yizhuan/erban/avroom/activity/AVRoomActivity.java +++ b/app/src/main/java/com/yizhuan/erban/avroom/activity/AVRoomActivity.java @@ -49,6 +49,7 @@ import com.opensource.svgaplayer.SVGAVideoEntity; import com.orhanobut.logger.Logger; import com.tencent.bugly.crashreport.CrashReport; import com.yizhuan.erban.R; +import com.yizhuan.erban.avroom.dialog.NewUserGiftDialog; import com.yizhuan.erban.avroom.dialog.SingleRoomTipDialog; import com.yizhuan.erban.avroom.fragment.FakeSingleRoomFragment; import com.yizhuan.erban.avroom.fragment.HomePartyFragment; @@ -81,6 +82,7 @@ import com.yizhuan.xchat_android_core.auth.AuthModel; import com.yizhuan.xchat_android_core.auth.event.LogoutEvent; import com.yizhuan.xchat_android_core.bean.BaseProtocol; import com.yizhuan.xchat_android_core.channel_page.bean.HelloMessageInfo; +import com.yizhuan.xchat_android_core.gift.bean.GiftInfo; import com.yizhuan.xchat_android_core.gift.bean.LuckyBagNoticeInfo; import com.yizhuan.xchat_android_core.im.custom.bean.RoomPKAttachment; import com.yizhuan.xchat_android_core.im.custom.bean.RoomPkBean; @@ -1020,6 +1022,7 @@ public class AVRoomActivity extends BaseMvpActivity() { + + override fun init() { + + binding.ivClose.setOnClickListener { + dismissAllowingStateLoss() + } + binding.ivGift.load(giftInfo.giftUrl) + binding.tvGiftName.text = "${giftInfo.giftName}*1" + + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/yizhuan/erban/avroom/presenter/AvRoomPresenter.java b/app/src/main/java/com/yizhuan/erban/avroom/presenter/AvRoomPresenter.java index fcbb47006..d8bd7494e 100644 --- a/app/src/main/java/com/yizhuan/erban/avroom/presenter/AvRoomPresenter.java +++ b/app/src/main/java/com/yizhuan/erban/avroom/presenter/AvRoomPresenter.java @@ -22,6 +22,7 @@ import com.yizhuan.erban.avroom.activity.AVRoomActivity; import com.yizhuan.erban.avroom.view.IAvRoomView; import com.yizhuan.erban.base.BaseMvpPresenter; import com.yizhuan.xchat_android_core.Constants; +import com.yizhuan.xchat_android_core.DemoCache; import com.yizhuan.xchat_android_core.auth.AuthModel; import com.yizhuan.xchat_android_core.bean.RoomMicInfo; import com.yizhuan.xchat_android_core.bean.RoomQueueInfo; @@ -437,6 +438,25 @@ public class AvRoomPresenter extends BaseMvpPresenter { } + /** + * 检查是否需要显示新用户礼弹窗 + */ + @SuppressLint("CheckResult") + public void checkNewUserGift() { + if (AvRoomDataManager.get().mCurrentRoomInfo == null || !DemoCache.readNewUserGift()) + return; + + Single.timer(3, TimeUnit.SECONDS) + .flatMap(aLong -> AvRoomModel.get().getNewUserGift()) + .compose(bindToLifecycle()) + .subscribe(giftInfo -> { + DemoCache.saveNewUserGift(false); + if (getMvpView() != null && !TextUtils.isEmpty(giftInfo.getGiftUrl())) { + getMvpView().showNewUserDialog(giftInfo); + } + }); + + } private void startGetOnlineMemberNumberJob() { Observable.interval(1, 10, TimeUnit.SECONDS, Schedulers.from(ThreadPoolManager.instance().getScheduleExecutor())) diff --git a/app/src/main/java/com/yizhuan/erban/avroom/view/IAvRoomView.java b/app/src/main/java/com/yizhuan/erban/avroom/view/IAvRoomView.java index 0b4ea1095..191ea9183 100644 --- a/app/src/main/java/com/yizhuan/erban/avroom/view/IAvRoomView.java +++ b/app/src/main/java/com/yizhuan/erban/avroom/view/IAvRoomView.java @@ -2,6 +2,7 @@ package com.yizhuan.erban.avroom.view; import com.yizhuan.xchat_android_core.channel_page.bean.HelloMessageInfo; +import com.yizhuan.xchat_android_core.gift.bean.GiftInfo; import com.yizhuan.xchat_android_core.home.bean.BannerInfo; import com.yizhuan.xchat_android_core.monsterhunting.bean.MonsterInfo; import com.yizhuan.xchat_android_core.redPacket.bean.ActionDialogInfo; @@ -83,4 +84,6 @@ public interface IAvRoomView extends IMvpBaseView { * @param throwable - */ void recoverRoomMinWhenPmLimit(Throwable throwable); + + void showNewUserDialog(GiftInfo giftInfo); } diff --git a/app/src/main/res/drawable-xhdpi/bg_new_user_gift.png b/app/src/main/res/drawable-xhdpi/bg_new_user_gift.png new file mode 100644 index 000000000..446263484 Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/bg_new_user_gift.png differ diff --git a/app/src/main/res/drawable-xhdpi/ic_new_user_close.png b/app/src/main/res/drawable-xhdpi/ic_new_user_close.png new file mode 100644 index 000000000..bd338582e Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/ic_new_user_close.png differ diff --git a/app/src/main/res/drawable/shape_white_12dp_round.xml b/app/src/main/res/drawable/shape_white_12dp_round.xml new file mode 100644 index 000000000..6f9adde8f --- /dev/null +++ b/app/src/main/res/drawable/shape_white_12dp_round.xml @@ -0,0 +1,8 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_new_user_gift.xml b/app/src/main/res/layout/dialog_new_user_gift.xml new file mode 100644 index 000000000..19d5778d4 --- /dev/null +++ b/app/src/main/res/layout/dialog_new_user_gift.xml @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/core/src/main/java/com/yizhuan/xchat_android_core/DemoCache.java b/core/src/main/java/com/yizhuan/xchat_android_core/DemoCache.java index f1544f1b1..1e86819c0 100644 --- a/core/src/main/java/com/yizhuan/xchat_android_core/DemoCache.java +++ b/core/src/main/java/com/yizhuan/xchat_android_core/DemoCache.java @@ -63,6 +63,7 @@ public class DemoCache { private static final String KEY_AT_MSG_UUID = "AtMsgUuid"; private static final String KEY_BGM_SINGLE_CYCLE = "key_bgm_single_cycle"; private static final String KEY_SINGLE_ROOM_TIP = "key_single_room_tip"; + private static final String KEY_NEW_USER_GIFT = "key_new_user_gift"; /** * 保存网页域名 */ @@ -356,5 +357,13 @@ public class DemoCache { return SettingsPref.instance(BasicConfig.INSTANCE.getAppContext()).getBoolean(KEY_SINGLE_ROOM_TIP, true); } + public static void saveNewUserGift(boolean value) { + SettingsPref.instance(BasicConfig.INSTANCE.getAppContext()).putBoolean(KEY_SINGLE_ROOM_TIP , value); + } + + public static Boolean readNewUserGift() { + return SettingsPref.instance(BasicConfig.INSTANCE.getAppContext()).getBoolean(KEY_SINGLE_ROOM_TIP, true); + } + } diff --git a/core/src/main/java/com/yizhuan/xchat_android_core/room/model/AvRoomModel.java b/core/src/main/java/com/yizhuan/xchat_android_core/room/model/AvRoomModel.java index bfe118a58..902927780 100644 --- a/core/src/main/java/com/yizhuan/xchat_android_core/room/model/AvRoomModel.java +++ b/core/src/main/java/com/yizhuan/xchat_android_core/room/model/AvRoomModel.java @@ -25,6 +25,7 @@ import com.yizhuan.xchat_android_core.auth.AuthModel; import com.yizhuan.xchat_android_core.bean.response.ServiceResult; import com.yizhuan.xchat_android_core.decoration.car.bean.CarInfo; import com.yizhuan.xchat_android_core.decoration.headwear.bean.HeadWearInfo; +import com.yizhuan.xchat_android_core.gift.bean.GiftInfo; import com.yizhuan.xchat_android_core.home.bean.HomeRoomInfo; import com.yizhuan.xchat_android_core.initial.InitialModel; import com.yizhuan.xchat_android_core.initial.bean.InitInfo; @@ -628,6 +629,13 @@ public class AvRoomModel extends RoomBaseModel implements IAvRoomModel { .compose(RxHelper.handleSchedulers()); } + @Override + public Single getNewUserGift() { + return mRoomService.getNewUserGift(AvRoomDataManager.get().getRoomUid()) + .compose(RxHelper.handleBeanData()) + .compose(RxHelper.handleSchedulers()); + } + /** * 公屏历史消息 */ diff --git a/core/src/main/java/com/yizhuan/xchat_android_core/room/model/RoomBaseModel.java b/core/src/main/java/com/yizhuan/xchat_android_core/room/model/RoomBaseModel.java index d85297b0c..0c9fa7454 100644 --- a/core/src/main/java/com/yizhuan/xchat_android_core/room/model/RoomBaseModel.java +++ b/core/src/main/java/com/yizhuan/xchat_android_core/room/model/RoomBaseModel.java @@ -28,6 +28,7 @@ import com.yizhuan.xchat_android_core.bean.RoomQueueInfo; import com.yizhuan.xchat_android_core.bean.response.ServiceResult; import com.yizhuan.xchat_android_core.decoration.headwear.bean.HeadWearInfo; import com.yizhuan.xchat_android_core.exception.ErrorThrowable; +import com.yizhuan.xchat_android_core.gift.bean.GiftInfo; import com.yizhuan.xchat_android_core.home.bean.BannerInfo; import com.yizhuan.xchat_android_core.home.bean.HomeRoomInfo; import com.yizhuan.xchat_android_core.manager.AvRoomDataManager; @@ -1146,6 +1147,15 @@ public class RoomBaseModel extends BaseModel implements IRoomBaseModel { @GET("/single/broadcast/room/page") Single getNextSingleRoomInfo(@Query("roomUid") long roomUid); + /** + * 获取新用户进房礼物 + * + * @param roomUid + * @return + */ + @GET("/gift/newUser/inRoom") + Single> getNewUserGift(@Query("roomUid") long roomUid); + } } diff --git a/core/src/main/java/com/yizhuan/xchat_android_core/room/model/inteface/IAvRoomModel.java b/core/src/main/java/com/yizhuan/xchat_android_core/room/model/inteface/IAvRoomModel.java index ca78fabb2..8c20ef0f2 100644 --- a/core/src/main/java/com/yizhuan/xchat_android_core/room/model/inteface/IAvRoomModel.java +++ b/core/src/main/java/com/yizhuan/xchat_android_core/room/model/inteface/IAvRoomModel.java @@ -4,6 +4,7 @@ import com.google.gson.JsonElement; import com.netease.nimlib.sdk.chatroom.model.EnterChatRoomResultData; import com.yizhuan.xchat_android_core.base.IModel; import com.yizhuan.xchat_android_core.bean.response.ServiceResult; +import com.yizhuan.xchat_android_core.gift.bean.GiftInfo; import com.yizhuan.xchat_android_core.home.bean.BannerInfo; import com.yizhuan.xchat_android_core.home.bean.HomeRoomInfo; import com.yizhuan.xchat_android_core.room.activitytimer.TimerBean; @@ -180,5 +181,7 @@ public interface IAvRoomModel extends IModel { Single getNextSingleRoomInfo(); + Single getNewUserGift(); + void loadMessageHistory(long startTime); }