From 433aeadd292805b5697eb3dd269c3b698f82520f Mon Sep 17 00:00:00 2001 From: huangjian Date: Thu, 28 Apr 2022 17:51:30 +0800 Subject: [PATCH] =?UTF-8?q?=E6=88=BF=E9=97=B4=E6=9B=B4=E5=A4=9A=E5=BC=B9?= =?UTF-8?q?=E7=AA=97=E5=A2=9E=E5=8A=A0=E6=8E=A8=E8=8D=90=E6=88=BF=E9=97=B4?= =?UTF-8?q?=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../erban/avroom/adapter/ExitRoomAdapter.kt | 24 +++ .../avroom/dialog/ExitRoomPopupWindow.kt | 199 ++++++++++++++++++ .../avroom/fragment/HomePartyFragment.java | 83 +------- .../main/res/drawable-xhdpi/ic_room_exit.png | Bin 0 -> 3055 bytes .../main/res/drawable-xhdpi/ic_room_mini.png | Bin 0 -> 2917 bytes .../res/drawable-xhdpi/ic_room_report.png | Bin 0 -> 3392 bytes .../drawable/bg_item_recommend_onlien_num.xml | 10 + .../res/drawable/bg_item_recommend_room.xml | 10 + app/src/main/res/layout/dialog_exit_room.xml | 108 ++++++++++ app/src/main/res/layout/item_exit_room.xml | 72 +++++++ app/src/main/res/values/styles.xml | 5 + .../room/model/AvRoomModel.java | 8 + .../room/model/RoomBaseModel.java | 9 + .../room/model/inteface/IAvRoomModel.java | 3 + 14 files changed, 453 insertions(+), 78 deletions(-) create mode 100644 app/src/main/java/com/yizhuan/erban/avroom/adapter/ExitRoomAdapter.kt create mode 100644 app/src/main/java/com/yizhuan/erban/avroom/dialog/ExitRoomPopupWindow.kt create mode 100644 app/src/main/res/drawable-xhdpi/ic_room_exit.png create mode 100644 app/src/main/res/drawable-xhdpi/ic_room_mini.png create mode 100644 app/src/main/res/drawable-xhdpi/ic_room_report.png create mode 100644 app/src/main/res/drawable/bg_item_recommend_onlien_num.xml create mode 100644 app/src/main/res/drawable/bg_item_recommend_room.xml create mode 100644 app/src/main/res/layout/dialog_exit_room.xml create mode 100644 app/src/main/res/layout/item_exit_room.xml diff --git a/app/src/main/java/com/yizhuan/erban/avroom/adapter/ExitRoomAdapter.kt b/app/src/main/java/com/yizhuan/erban/avroom/adapter/ExitRoomAdapter.kt new file mode 100644 index 000000000..0953a5f23 --- /dev/null +++ b/app/src/main/java/com/yizhuan/erban/avroom/adapter/ExitRoomAdapter.kt @@ -0,0 +1,24 @@ +package com.yizhuan.erban.avroom.adapter + +import android.graphics.Color +import com.chad.library.adapter.base.BaseQuickAdapter +import com.chad.library.adapter.base.BaseViewHolder +import com.yizhuan.erban.R +import com.yizhuan.erban.ui.utils.ImageLoadUtils +import com.yizhuan.erban.ui.widget.LivingIconView +import com.yizhuan.xchat_android_core.home.bean.HomeRoomInfo + +class ExitRoomAdapter : + BaseQuickAdapter(R.layout.item_exit_room) { + + override fun convert(helper: BaseViewHolder, item: HomeRoomInfo) { + + ImageLoadUtils.loadImage(mContext, item.avatar, helper.getView(R.id.iv_avatar)) + ImageLoadUtils.loadImage(mContext, item.tagPict, helper.getView(R.id.iv_tag)) + helper.setText(R.id.tv_online_num, item.onlineNum.toString()) + .setText(R.id.tv_title, item.title) + val livingIconView = helper.getView(R.id.liv_living_icon) + livingIconView.setColor(Color.WHITE) + livingIconView.start() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/yizhuan/erban/avroom/dialog/ExitRoomPopupWindow.kt b/app/src/main/java/com/yizhuan/erban/avroom/dialog/ExitRoomPopupWindow.kt new file mode 100644 index 000000000..960863a4d --- /dev/null +++ b/app/src/main/java/com/yizhuan/erban/avroom/dialog/ExitRoomPopupWindow.kt @@ -0,0 +1,199 @@ +package com.yizhuan.erban.avroom.dialog + +import android.annotation.SuppressLint +import android.content.Context +import android.graphics.Bitmap +import android.graphics.Color +import android.graphics.drawable.ColorDrawable +import android.view.LayoutInflater +import android.view.View +import android.view.WindowManager +import android.widget.ImageView +import android.widget.PopupWindow +import android.widget.TextView +import androidx.core.view.drawToBitmap +import androidx.core.view.isGone +import androidx.core.view.isVisible +import androidx.recyclerview.widget.LinearLayoutManager +import androidx.recyclerview.widget.RecyclerView +import com.netease.nim.uikit.common.util.sys.ScreenUtil +import com.yizhuan.erban.R +import com.yizhuan.erban.UIHelper +import com.yizhuan.erban.avroom.activity.AVRoomActivity +import com.yizhuan.erban.avroom.adapter.ExitRoomAdapter +import com.yizhuan.erban.avroom.presenter.HomePartyPresenter +import com.yizhuan.erban.common.widget.dialog.DialogManager.LambdaOkDialogListener +import com.yizhuan.erban.common.widget.dialog.DialogManager.OkCancelDialogListener +import com.yizhuan.erban.ui.utils.RVDelegate +import com.yizhuan.erban.utils.FastBlur +import com.yizhuan.xchat_android_constants.XChatConstants +import com.yizhuan.xchat_android_core.home.bean.HomeRoomInfo +import com.yizhuan.xchat_android_core.manager.AvRoomDataManager +import com.yizhuan.xchat_android_core.room.model.AvRoomModel +import com.yizhuan.xchat_android_library.annatation.ActLayoutRes +import io.reactivex.disposables.Disposable + + +@ActLayoutRes(R.layout.dialog_exit_room) +class ExitRoomPopupWindow(val avRoomActivity: AVRoomActivity, val rootView: View) : PopupWindow() { + + companion object { + + @JvmStatic + fun newInstance(avRoomActivity: AVRoomActivity, rootView: View): ExitRoomPopupWindow { + return ExitRoomPopupWindow(avRoomActivity, rootView) + } + } + + private val recyclerView: RecyclerView + private val llEmpty: View + private val tvReport: TextView + private val tvMiniRoom: TextView + private val tvExitRoom: TextView + + private var disposable: Disposable? = null + + private val exitRoomAdapter = ExitRoomAdapter() + private lateinit var rvDelegate: RVDelegate + + init { + contentView = LayoutInflater.from(avRoomActivity).inflate(R.layout.dialog_exit_room, null) + width = ScreenUtil.dip2px(250f) + height = WindowManager.LayoutParams.MATCH_PARENT + isFocusable = true + recyclerView = contentView.findViewById(R.id.recycler_view) + llEmpty = contentView.findViewById(R.id.ll_empty) + tvReport = contentView.findViewById(R.id.tv_report) + tvMiniRoom = contentView.findViewById(R.id.tv_mini_room) + tvExitRoom = contentView.findViewById(R.id.tv_exit_room) + initView() + isClippingEnabled = false + } + + private fun initView() { + + animationStyle = R.style.style_anim_right_in_out + setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT)) + + contentView.findViewById(R.id.tv_more).setOnClickListener { + //HomeMoreRoomActivity.start(context) + } + + tvReport.setOnClickListener { + val roomInfo = AvRoomDataManager.get().mCurrentRoomInfo ?: return@setOnClickListener + UIHelper.showReportPage(avRoomActivity, roomInfo.uid, XChatConstants.REPORT_TYPE_ROOM) + dismiss() + } + + tvExitRoom.setOnClickListener { + handleExitRoom() + dismiss() + } + + tvMiniRoom.setOnClickListener { + if (AvRoomDataManager.get().isSelfGamePlaying) { + avRoomActivity.dialogManager.showOkCancelDialog( + "游戏中最小化房间默认逃跑,确定进行此操作?", false + ) { + avRoomActivity.toBack() + dismiss() + } + return@setOnClickListener + } + avRoomActivity.onBackPressed() + dismiss() + } + + rvDelegate = RVDelegate.Builder() + .setLayoutManager(LinearLayoutManager(avRoomActivity)) + .setRecyclerView(recyclerView) + .setAdapter(exitRoomAdapter) + .build() + + exitRoomAdapter.setOnItemClickListener { _, _, position -> + exitRoomAdapter.getItem(position)?.let { + AVRoomActivity.start(avRoomActivity, it.uid) + dismiss() + } + } + + disposable = AvRoomModel.get() + .getRecommendRoomList(AvRoomDataManager.get().roomId.toString()) + .subscribe( + { + llEmpty.isVisible = it.isNullOrEmpty() + recyclerView.isGone = it.isNullOrEmpty() + rvDelegate.setNewData(it) + }, + { + llEmpty.isVisible = true + recyclerView.isVisible = true + } + ) + + setOnDismissListener { + disposable?.dispose() + } + + val bitmap = rootView.drawToBitmap() + val bitmapX = bitmap.width + val bitmapY = bitmap.height + val bitmap1 = Bitmap.createBitmap( + bitmap, + bitmapX - ScreenUtil.dip2px(250f), + 0, + ScreenUtil.dip2px(250f), + bitmapY + ) + blur(bitmap1, contentView.findViewById(R.id.iv_blur)) + } + + private fun blur(bkg: Bitmap, view: ImageView) { + val scaleFactor = 8 + var overlay = + Bitmap.createScaledBitmap(bkg, bkg.width / scaleFactor, bkg.height / scaleFactor, false) + overlay = FastBlur.blur(overlay, 5, true) //高斯模糊 + view.setImageBitmap(overlay) + } + + private fun handleExitRoom() { + if (AvRoomDataManager.get().isSelfGamePlaying) { + avRoomActivity.dialogManager.showOkCancelDialog("游戏中退出房间默认逃跑,确定进行此操作?", false, + OkCancelDialogListener { avRoomActivity.toBack() }) + return + } + if (AvRoomDataManager.get().isOpenKTV && AvRoomDataManager.get().isOwnerOnMic) { + avRoomActivity.dialogManager.showOkCancelDialog("KTV模式下退出房间会移除您已点的所有歌曲,确定进行此操作?", + false, + OkCancelDialogListener { avRoomActivity.toBack() }) + return + } + if ((AvRoomDataManager.get().isQueuingMicro || AvRoomDataManager.get().isOpenPKMode) + && AvRoomDataManager.get().myIsInQueue + ) { + avRoomActivity.dialogManager.showOkCancelDialog("退出房间将会取消你的报名,确定进行此操作?", false, + LambdaOkDialogListener { avRoomActivity.toBack() }) + return + } + if (AvRoomDataManager.get().haveStartDragon) { + avRoomActivity.dialogManager.showOkCancelDialog( + "你正在交友匹配中,此操作代表你放弃本局匹配展示,确定进行此操作?", + false, + object : OkCancelDialogListener { + override fun onCancel() {} + + @SuppressLint("CheckResult") + override fun onOk() { + avRoomActivity.giveUpDragonBar() + .subscribe { s: String? -> + HomePartyPresenter().cancelDragon() + avRoomActivity.toBack() + } + } + }) + } else { + avRoomActivity.toBack() + } + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/yizhuan/erban/avroom/fragment/HomePartyFragment.java b/app/src/main/java/com/yizhuan/erban/avroom/fragment/HomePartyFragment.java index f4532cde8..cf1969a0d 100644 --- a/app/src/main/java/com/yizhuan/erban/avroom/fragment/HomePartyFragment.java +++ b/app/src/main/java/com/yizhuan/erban/avroom/fragment/HomePartyFragment.java @@ -3,6 +3,7 @@ package com.yizhuan.erban.avroom.fragment; import android.annotation.SuppressLint; import android.content.Intent; import android.os.Bundle; +import android.view.Gravity; import android.view.View; import android.view.ViewConfiguration; import android.view.ViewStub; @@ -25,6 +26,7 @@ import com.yizhuan.erban.UIHelper; import com.yizhuan.erban.avroom.activity.AVRoomActivity; import com.yizhuan.erban.avroom.activity.RoomOnlineUserActivity; import com.yizhuan.erban.avroom.adapter.SelectGameAdapter; +import com.yizhuan.erban.avroom.dialog.ExitRoomPopupWindow; import com.yizhuan.erban.avroom.presenter.HomePartyPresenter; import com.yizhuan.erban.avroom.widget.GiftV2View; import com.yizhuan.erban.base.BaseFragment; @@ -492,7 +494,9 @@ public class HomePartyFragment extends BaseFragment implements View.OnClickListe public void onClick(View v) { switch (v.getId()) { case R.id.room_more: - showMoreItems(); + View view = requireActivity().findViewById(android.R.id.content); + ExitRoomPopupWindow.newInstance((AVRoomActivity) requireActivity(), view) + .showAtLocation(gameMainBinding.getRoot(), Gravity.END, 0, 0); break; case R.id.ll_room_info: RoomOnlineUserActivity.start(getActivity()); @@ -563,83 +567,6 @@ public class HomePartyFragment extends BaseFragment implements View.OnClickListe StatisticManager.Instance().onEvent(StatisticsProtocol.Event.EVENT_ROOM_SHARE_CLICK, "语音房_分享"); } - /** - * 房间右上角更多 - */ - @SuppressLint("CheckResult") - private void showMoreItems() { - List buttonItems = new ArrayList<>(); - - ButtonItem buttonItem1 = new ButtonItem("退出房间", new ButtonItem.OnClickListener() { - @Override - public void onClick() { - if (AvRoomDataManager.get().isSelfGamePlaying()) { - getDialogManager().showOkCancelDialog("游戏中退出房间默认逃跑,确定进行此操作?", false, - () -> ((AVRoomActivity) getActivity()).toBack()); - return; - } - if (AvRoomDataManager.get().isOpenKTV() && AvRoomDataManager.get().isOwnerOnMic()) { - getDialogManager().showOkCancelDialog("KTV模式下退出房间会移除您已点的所有歌曲,确定进行此操作?", false, - () -> ((AVRoomActivity) getActivity()).toBack()); - return; - } - if ((AvRoomDataManager.get().isQueuingMicro() || AvRoomDataManager.get().isOpenPKMode()) - && AvRoomDataManager.get().myIsInQueue) { - getDialogManager().showOkCancelDialog("退出房间将会取消你的报名,确定进行此操作?", false, - (DialogManager.LambdaOkDialogListener) () -> - ((AVRoomActivity) getActivity()).toBack()); - return; - } - if (AvRoomDataManager.get().haveStartDragon) { - getDialogManager().showOkCancelDialog("你正在交友匹配中,此操作代表你放弃本局匹配展示,确定进行此操作?", false, new DialogManager.OkCancelDialogListener() { - @Override - public void onCancel() { - } - - @Override - public void onOk() { - ((AVRoomActivity) getActivity()).giveUpDragonBar().subscribe(s -> { - new HomePartyPresenter().cancelDragon(); - ((AVRoomActivity) getActivity()).toBack(); - }); - } - }); - } else { - ((AVRoomActivity) getActivity()).toBack(); - } - } - }); - ButtonItem buttonItem2 = new ButtonItem("最小化房间", new ButtonItem.OnClickListener() { - @Override - public void onClick() { - if (AvRoomDataManager.get().isSelfGamePlaying()) { - getDialogManager().showOkCancelDialog("游戏中最小化房间默认逃跑,确定进行此操作?", false, - () -> ((AVRoomActivity) getActivity()).toBack()); - return; - } - getActivity().onBackPressed(); - } - }); - ButtonItem buttonItem3 = new ButtonItem("举报房间", new ButtonItem.OnClickListener() { - @Override - public void onClick() { - RoomInfo roomInfo = AvRoomDataManager.get().mCurrentRoomInfo; - if (roomInfo == null) { - return; - } - UIHelper.showReportPage(mContext, roomInfo.getUid(), XChatConstants.REPORT_TYPE_ROOM); - } - }); - //buttonItems.add(buttonItem0); - buttonItems.add(buttonItem1); - buttonItems.add(buttonItem2); - buttonItems.add(buttonItem3); - DialogManager dialogManager = ((BaseMvpActivity) getActivity()).getDialogManager(); - if (dialogManager != null) { - dialogManager.showCommonPopupDialog(buttonItems, "取消"); - } - } - @Override public void onInAppSharingItemClick() { shareDialog.dismiss(); diff --git a/app/src/main/res/drawable-xhdpi/ic_room_exit.png b/app/src/main/res/drawable-xhdpi/ic_room_exit.png new file mode 100644 index 0000000000000000000000000000000000000000..3d8461a2ce81efd781b96b8d6f53ed95b2c2ccc4 GIT binary patch literal 3055 zcmVPx=sYygZRCr$Popmx#xT5 zoHOT~IpefJ81Fs$=(>`wWBRA$%bMC3y6`+n|8UM7 zO1(MP^`ijhy}yE_>q)xy2qLd9?+}^)lyt6h?vlQZrQTl@Fq=^~G|^YI?^MRLxE^td zs64CWj4Q%4(^1T(8*PB-Yk}3=C5Xy1nRO*}+~9zD?=i)1D(T9poY=7I|0U^f&N-F{ zgVA7s*{otlp{uru&Sl08HQNRO%#4a#NMd$vBQeW%4`GyK2h4lVg7>%`sH;+6JapS0 z=Nt?0Y?Ku+?>!>$`q@UeGa5R_Ifqe_g|Yx<`s!w8u4ft84r>JSe{T-G)*CSIJ%RQZbu_a!%eiW zI_s8`7)%B$+<3U9?@ZcTC_G>2G~t3BX`_kZ+Gux7@yH(!BK#j?qYW3-X*f#>`#As z0-emVxwP;_fK7QB>C7GKj-#BzbAZ{p>#mb!I28Yr+r`g#LcA_(0!E73PVvUyPtu!> zMemaIt7LZ7al@Q9zX=#%0oqQW??(PlvT+~1p$~O|bMCY-_9K8FPZ9p0_twHGhahb7&) z!NL8K9?}!ApDcJ$Pm=UXNwi-B@gn^ZYcT-EZha!kH4@vE5PdgaFt`s$`eIMOo-XM% z3)(nc(#zP>TnST%NM95HyMZLOveriE7r<(6uplz~PDxEY6_3BI4&xpSlDF6n(YTFs zOur?kqYc1Fw&tE403(B!;w3c^vmSlYe35=F>2;DWUNhJfz-a19lHMojzKwRzGQCOd zjxp(gbM6#ZvHpU2P5tzJNpF+Xrr1d;V1PkU7utVh0~z!jFUgp6SdUpKrK!xv92k8+ zWdVb}F6li91M31kAlNJ|S`-^Eb2Xu@nvKFrFN@oCjbv zc{pAw>ABI9F{>V*C<=3k#Lxz!@tcih#iz^@k^_L$HueJ;d55)>XF#d5{WcIr2F6Ag z$}z*}7vlpXB+za%in@%c?>z?r><+dD>DyS}`_UQSi5ej^j#p(B zT%gBv(5Zd-!~GWn7$!Z{)yAf#zWALvd%KP+7hv>{Gx%Q7K)UMHuFn$gy9B^+`cfx% zYJM@56c8pA5gQ0){({$>l@RG$dhDRW(06a9MflSxVL}D#Q2U$(A@dJbV)Yg5kq=y-!ekAD) zJ(vdYya0hH9ZObLX_^@wwV3sIIEc#y>T5c)=nX~;MnW48|1tm=7vl?bws|~C12!}3 zYgstsK_H1W5FU>cOLJsNe`J$=I{M!UlAbrh*k%joT3l1H2!j`|mxNxcfe@{XFHm0* z+x3}duBlp_zps|`%;-tTW_o|uC(C@_Ya7{FpO^H(%zd0CA@+X|41}y9KYzX z8VHwJoLBOSky5{B;gwnfm{?+nn%EJIhvDRr5ktqv9v5nAAR_x%uw5T%7Qn=mt|dj_ z-I5*=Jxyv_Kvzbry04io@B>M28ls~XZO&2z$egMriL|NQF~!O39V^WY5671qzE;+A zNP^OII0=Vdz4x`Gxv}dL2E|FEKUTRtu0mi6O!%`F@{`<7gF`C5VP?9e6o>S@&`#T zD%Ag?Zst<8Ytmy377_g!N$gkT+zGfK^#O64);JKK)p8YS#xc@DLDQya^4{rqMK z6N|NYJi;?#En+ps1ZXT`huXu%-ZK{K&4Mymg;wnY^F<)P>P5ilNN61!@FJMmf2?NKw#W&Y-dZ~g*6Lfc3|FT0U~3i0>ndE zyk*vAS*@GWNz=yYXx0_sVGvbBtMQ<>J&&1ohzt-lM)WRf7o&sOH8w5Ylx~34T=wC? zlHR_eb|Zz3eaRMB~Y{Qt&)B^Hd5CA%CZmP&8s1c zY7xKiJg{4`Pq=>-4n&n%ERW?`X^w4mVHKNYn^3xlEGG00R$UIl>SU+qsvVs<`blkL zb?G7l46pg76bHM%CBxtyVIxHfv7rI41wqnZrrcQQ+IGdk475!vzlSKt!X>7Lga|q- z?8-rxv4-QD!`DdoA^o7Okx~ewxo+B(-!s5ii%bPB$AIZ@pJ@dy4Ya9*?0A5sm5_~e z*;J&tJZM;k=|!3iv>M%2uDf>2|Bo2l?VKYp*_nC+7U?v? zF%+kq=x7e?leD+ZInC>smj$rN?fscvaAU x0Lgdw&Fz4J?%@-D<9(p+NBA778K5Q){tw>XNA_}@QcVB=002ovPDHLkV1i}v%@zOv literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xhdpi/ic_room_mini.png b/app/src/main/res/drawable-xhdpi/ic_room_mini.png new file mode 100644 index 0000000000000000000000000000000000000000..72d81c320a095fa1bdb0a58636a9b6c19b5063c8 GIT binary patch literal 2917 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 P00000NkvXXu0mjf#Q~BQ literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xhdpi/ic_room_report.png b/app/src/main/res/drawable-xhdpi/ic_room_report.png new file mode 100644 index 0000000000000000000000000000000000000000..8699fe22daa4a4e3fe007e6687a49723da3384d8 GIT binary patch literal 3392 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 + + + + diff --git a/app/src/main/res/drawable/bg_item_recommend_room.xml b/app/src/main/res/drawable/bg_item_recommend_room.xml new file mode 100644 index 000000000..64da614a6 --- /dev/null +++ b/app/src/main/res/drawable/bg_item_recommend_room.xml @@ -0,0 +1,10 @@ + + + + + diff --git a/app/src/main/res/layout/dialog_exit_room.xml b/app/src/main/res/layout/dialog_exit_room.xml new file mode 100644 index 000000000..bb50f073d --- /dev/null +++ b/app/src/main/res/layout/dialog_exit_room.xml @@ -0,0 +1,108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_exit_room.xml b/app/src/main/res/layout/item_exit_room.xml new file mode 100644 index 000000000..4eb082a6f --- /dev/null +++ b/app/src/main/res/layout/item_exit_room.xml @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index 8a6eda7d8..930331a52 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -561,4 +561,9 @@ @color/color_black_333333 + + 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 655f20bab..b61f3ba97 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 @@ -20,6 +20,7 @@ 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.home.bean.BannerInfo; +import com.yizhuan.xchat_android_core.home.bean.HomeRoomInfo; import com.yizhuan.xchat_android_core.level.UserLevelVo; import com.yizhuan.xchat_android_core.manager.AvRoomDataManager; import com.yizhuan.xchat_android_core.manager.IMNetEaseManager; @@ -631,4 +632,11 @@ public class AvRoomModel extends RoomBaseModel implements IAvRoomModel { .compose(RxHelper.handleStringData()) .compose(RxHelper.handleSchAndExce()); } + + @Override + public Single> getRecommendRoomList(String roomId) { + return mRoomService.getRecommendRoomList(roomId) + .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 18d41c265..b67b83964 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 @@ -29,6 +29,7 @@ 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.home.bean.BannerInfo; +import com.yizhuan.xchat_android_core.home.bean.HomeRoomInfo; import com.yizhuan.xchat_android_core.manager.AvRoomDataManager; import com.yizhuan.xchat_android_core.manager.IMNetEaseManager; import com.yizhuan.xchat_android_core.room.activitytimer.TimerBean; @@ -1126,6 +1127,14 @@ public class RoomBaseModel extends BaseModel implements IRoomBaseModel { Single> cleanScreen(@Field("roomUid") long roomUid, @Field("uid") long uid); + /** + * 房内推荐房间列表 + * + * @return + */ + @GET("/roominsiderecommend/recommendRoomList") + Single>> getRecommendRoomList(@Query("roomId") String roomId); + } } 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 6f8ec29d8..450b4167f 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 @@ -5,6 +5,7 @@ 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.home.bean.BannerInfo; +import com.yizhuan.xchat_android_core.home.bean.HomeRoomInfo; import com.yizhuan.xchat_android_core.room.activitytimer.TimerBean; import com.yizhuan.xchat_android_core.room.bean.BroadcastInfo; import com.yizhuan.xchat_android_core.room.bean.RoomInfo; @@ -174,4 +175,6 @@ public interface IAvRoomModel extends IModel { Single sendRoomBroadcast(String msg, long roomId); Single cleanScreen(long roomUid, long uid); + + Single> getRecommendRoomList(String roomId); }