Ver código fonte

邀请用户上麦

DoggyZhang 1 semana atrás
pai
commit
e48af9ffed
19 arquivos alterados com 138 adições e 61 exclusões
  1. 1 2
      app/src/main/java/com/adealink/weparty/commonui/dialogfragment/RoomTextActionDialog.kt
  2. 0 14
      app/src/main/java/com/adealink/weparty/module/category/data/CategoryData.kt
  3. 1 1
      module/profile/src/main/java/com/adealink/weparty/profile/datasource/remote/ProfileHttpService.kt
  4. 8 1
      module/room/src/main/java/com/adealink/weparty/room/data/RoomData.kt
  5. 5 0
      module/room/src/main/java/com/adealink/weparty/room/datasource/remote/RoomHttpService.kt
  6. 9 5
      module/room/src/main/java/com/adealink/weparty/room/invite/InviteMicDialog.kt
  7. 4 1
      module/room/src/main/java/com/adealink/weparty/room/invite/viewmodel/InviteViewModel.kt
  8. 3 3
      module/room/src/main/java/com/adealink/weparty/room/member/RoomMemberDialog.kt
  9. 8 5
      module/room/src/main/java/com/adealink/weparty/room/member/RoomPlaymateFilterDialog.kt
  10. 4 4
      module/room/src/main/java/com/adealink/weparty/room/member/adapter/RoomMemberCategoryItemBinder.kt
  11. 6 1
      module/room/src/main/java/com/adealink/weparty/room/member/data/MemberData.kt
  12. 31 3
      module/room/src/main/java/com/adealink/weparty/room/member/viewmodel/RoomPlaymateSkillViewModel.kt
  13. 7 0
      module/room/src/main/java/com/adealink/weparty/room/micseat/decor/NameDecorView.kt
  14. 18 0
      module/room/src/main/java/com/adealink/weparty/room/micseat/dispatcenter/DispatchCenterHostSeatView.kt
  15. 18 0
      module/room/src/main/java/com/adealink/weparty/room/micseat/dispatcenter/DispatchCenterMemberSeatView.kt
  16. 2 10
      module/room/src/main/java/com/adealink/weparty/room/micseat/dispatcenter/DispatchCenterSeatView.kt
  17. 3 1
      module/room/src/main/java/com/adealink/weparty/room/micseat/dispatcenter/DispatchCenterSeatsTemplate.kt
  18. BIN
      module/room/src/main/res/drawable-xhdpi/room_dispatch_center_host_tag_ic.png
  19. 10 10
      module/room/src/main/res/layout/fragment_seats_template_dispatch_center.xml

+ 1 - 2
app/src/main/java/com/adealink/weparty/commonui/dialogfragment/RoomTextActionDialog.kt

@@ -1,6 +1,5 @@
 package com.adealink.weparty.commonui.dialogfragment
 
-import android.util.TypedValue
 import android.view.View
 import androidx.annotation.IdRes
 import androidx.annotation.StringRes
@@ -157,7 +156,7 @@ class RoomTextActionDialog : BottomDialogFragment(R.layout.dialog_room_action) {
         private var actionList = mutableListOf<BaseActionItem>()
         private var maxContentHeight = -1
 
-        private var showCancel: Boolean = false
+        private var showCancel: Boolean = true
 
         fun addTitle(title: String): Builder {
             this.title = title

+ 0 - 14
app/src/main/java/com/adealink/weparty/module/category/data/CategoryData.kt

@@ -1,14 +0,0 @@
-package com.adealink.weparty.module.category.data
-
-import com.google.gson.annotations.SerializedName
-
-data class CategoryData(
-    @SerializedName("id") val id: String,
-    @SerializedName("name") val name: String,
-    @SerializedName("list") val items: List<CategoryItem>
-)
-
-data class CategoryItem(
-    @SerializedName("id") val id: String,
-    @SerializedName("name") val name: String,
-)

+ 1 - 1
module/profile/src/main/java/com/adealink/weparty/profile/datasource/remote/ProfileHttpService.kt

@@ -62,6 +62,6 @@ interface ProfileHttpService {
     @POST("im/get/usernameNotes")
     suspend fun getUserNoteBy(@Body req: GetUserNoteReq): Rlt<Res<GetUserNoteRes>>
 
-    @POST("im/get/usernameNotes")
+    @POST("live/view/watching")
     suspend fun getLiveRoomInfo(@Body req: GetUserLiveRoomReq): Rlt<Res<GetUserLiveRoomRes>>
 }

+ 8 - 1
module/room/src/main/java/com/adealink/weparty/room/data/RoomData.kt

@@ -1,6 +1,7 @@
 package com.adealink.weparty.room.data
 
 import com.adealink.frame.network.data.PageReq
+import com.adealink.weparty.module.playmate.data.PlaymateCategoryData
 import com.adealink.weparty.module.profile.data.UserInfo
 import com.adealink.weparty.room.applymic.data.ApplyMicData
 import com.google.gson.annotations.GsonNullable
@@ -97,4 +98,10 @@ data class MemberUserData(
     @SerializedName("user") val user: UserInfo
 )
 
-data class MemberSpeaking(val uid: String, val speaking: Boolean = false)
+data class RoomPlaymateCategoryReq(
+    @SerializedName("id") val roomId: String,
+)
+
+data class RoomPlaymateCategoryRes(
+    @SerializedName("list") val categorys: List<PlaymateCategoryData>,
+)

+ 5 - 0
module/room/src/main/java/com/adealink/weparty/room/datasource/remote/RoomHttpService.kt

@@ -14,6 +14,8 @@ import com.adealink.weparty.room.data.CreateRoomRes
 import com.adealink.weparty.room.data.GetRoomMemberReq
 import com.adealink.weparty.room.data.GetRoomMemberRes
 import com.adealink.weparty.room.data.InviteMicReq
+import com.adealink.weparty.room.data.RoomPlaymateCategoryReq
+import com.adealink.weparty.room.data.RoomPlaymateCategoryRes
 import com.adealink.weparty.room.data.UpdateRoomInfoReq
 import retrofit2.http.Body
 import retrofit2.http.Core
@@ -54,4 +56,7 @@ interface RoomHttpService {
 
     @POST("live/viewer/list")
     suspend fun getRoomMembers(@Body req: GetRoomMemberReq): Rlt<Res<GetRoomMemberRes>>
+
+    @POST("live/mic/apply/category")
+    suspend fun getRoomPlaymateCategory(@Body req: RoomPlaymateCategoryReq): Rlt<Res<RoomPlaymateCategoryRes>>
 }

+ 9 - 5
module/room/src/main/java/com/adealink/weparty/room/invite/InviteMicDialog.kt

@@ -13,7 +13,7 @@ import com.adealink.weparty.commonui.ext.show
 import com.adealink.weparty.commonui.recycleview.adapter.MultiTypeListAdapter
 import com.adealink.weparty.commonui.toast.util.showFailedToast
 import com.adealink.weparty.commonui.widget.BottomDialogFragment
-import com.adealink.weparty.module.profile.data.UserPlaymateSkill
+import com.adealink.weparty.module.playmate.data.PlaymateCategoryData
 import com.adealink.weparty.room.R
 import com.adealink.weparty.room.databinding.DialogRoomInviteMicBinding
 import com.adealink.weparty.room.invite.adapter.RoomMemberViewBinder
@@ -34,12 +34,16 @@ class InviteMicDialog : BottomDialogFragment(R.layout.dialog_room_invite_mic) {
     private var enableFilter = false
 
     private var filterPlaymateCategory: List<String>? = null
-
+    private var filterPlaymate = false
     private var inviteMicIndex: Int? = null
     fun enableFilter(filter: Boolean) {
         this.enableFilter = filter
     }
 
+    fun filterPlaymate(filter: Boolean) {
+        this.filterPlaymate = filter
+    }
+
     fun inviteMicIndex(index: Int) {
         this.inviteMicIndex = index
     }
@@ -100,7 +104,7 @@ class InviteMicDialog : BottomDialogFragment(R.layout.dialog_room_invite_mic) {
 
     override fun loadData() {
         super.loadData()
-        inviteViewModel.pullMemberList(filterPlaymateCategory)
+        inviteViewModel.pullMemberList(filterPlaymate, filterPlaymateCategory)
     }
 
     private fun invite(item: RoomMemberItemData, position: Int) {
@@ -121,8 +125,8 @@ class InviteMicDialog : BottomDialogFragment(R.layout.dialog_room_invite_mic) {
     private fun showFilter() {
         RoomPlaymateFilterDialog().apply {
             setListener(object : RoomPlaymateFilterDialog.OnCategorySelectListener {
-                override fun onSelect(skill: UserPlaymateSkill) {
-                    notifyMemberListRefresh(skill.id)
+                override fun onSelect(skill: PlaymateCategoryData) {
+                    notifyMemberListRefresh(skill.code)
                 }
 
                 override fun onSelectAll() {

+ 4 - 1
module/room/src/main/java/com/adealink/weparty/room/invite/viewmodel/InviteViewModel.kt

@@ -49,11 +49,14 @@ class InviteViewModel : BaseViewModel() {
     private val pageHandler = PageHandler()
 
     private var roomId: String? = null
+    private var filterPlaymate: Boolean = false
     private var filterCategory: List<String>? = null
 
     fun pullMemberList(
+        filterPlaymate: Boolean = false,
         filterCategory: List<String>? = null
     ) {
+        this.filterPlaymate = filterPlaymate
         this.filterCategory = filterCategory
         this.roomId = roomService.joinController.getJoinedRoomId()
 
@@ -83,7 +86,7 @@ class InviteViewModel : BaseViewModel() {
                     roomId = roomId,
                     page = PageReq(size = pageHandler.pageSize, next = pageHandler.currentPage),
 
-                    filterPlaymate = !filterCategory.isNullOrEmpty(),
+                    filterPlaymate = filterPlaymate || !filterCategory.isNullOrEmpty(),
                     skillCategories = filterCategory
                 )
             )

+ 3 - 3
module/room/src/main/java/com/adealink/weparty/room/member/RoomMemberDialog.kt

@@ -27,7 +27,7 @@ import com.adealink.weparty.room.R
 import com.adealink.weparty.room.databinding.DialogRoomMemberBinding
 import com.adealink.weparty.room.member.adapter.RoomMemberCategoryItemBinder
 import com.adealink.weparty.room.member.comp.MemberBottomComp
-import com.adealink.weparty.room.member.data.PlaymateCategoryItemData
+import com.adealink.weparty.room.member.data.MemberPlaymateCategoryItemData
 
 @RouterUri(path = [Room.RoomMemberInfo.PATH], desc = "房间成员资料卡")
 class RoomMemberDialog : BottomDialogFragment(R.layout.dialog_room_member) {
@@ -42,7 +42,7 @@ class RoomMemberDialog : BottomDialogFragment(R.layout.dialog_room_member) {
 
     private val binding by viewBinding(DialogRoomMemberBinding::bind)
     private val profileViewModel by fastLazy { ProfileModule.getProfileViewModel(this) }
-    private val categoryAdapter by fastLazy { MultiTypeListAdapter<PlaymateCategoryItemData>() }
+    private val categoryAdapter by fastLazy { MultiTypeListAdapter<MemberPlaymateCategoryItemData>() }
 
     override fun onCreate(savedInstanceState: Bundle?) {
         super.onCreate(savedInstanceState)
@@ -98,7 +98,7 @@ class RoomMemberDialog : BottomDialogFragment(R.layout.dialog_room_member) {
             binding.vPlaymate.root.show()
             categoryAdapter.submitList(
                 userInfo?.skills?.map {
-                    PlaymateCategoryItemData(it)
+                    MemberPlaymateCategoryItemData(it)
                 } ?: emptyList()
             )
         }

+ 8 - 5
module/room/src/main/java/com/adealink/weparty/room/member/RoomPlaymateFilterDialog.kt

@@ -6,8 +6,9 @@ import androidx.recyclerview.widget.RecyclerView
 import com.adealink.frame.base.fastLazy
 import com.adealink.frame.mvvm.view.viewBinding
 import com.adealink.weparty.commonui.recycleview.adapter.MultiTypeListAdapter
+import com.adealink.weparty.commonui.toast.util.showFailedToast
 import com.adealink.weparty.commonui.widget.BottomDialogFragment
-import com.adealink.weparty.module.profile.data.UserPlaymateSkill
+import com.adealink.weparty.module.playmate.data.PlaymateCategoryData
 import com.adealink.weparty.room.R
 import com.adealink.weparty.room.databinding.DialogRoomPlaymateCategoryFilterBinding
 import com.adealink.weparty.room.member.adapter.RoomPlaymateAllCategoryItemBinder
@@ -62,7 +63,7 @@ class RoomPlaymateFilterDialog : BottomDialogFragment(R.layout.dialog_room_playm
                     PlaymateCategoryItemData(
                         skill
                     ).also {
-                        hasSelected = it.skill.id == currentSkillId
+                        hasSelected = it.skill.code == currentSkillId
                         it.selected = hasSelected
                     }
                 }
@@ -78,10 +79,12 @@ class RoomPlaymateFilterDialog : BottomDialogFragment(R.layout.dialog_room_playm
 
     override fun loadData() {
         super.loadData()
-        viewModel.loadRoomPlaymateSkill()
+        viewModel.loadRoomPlaymateSkill().observe(viewLifecycleOwner) {
+            showFailedToast(it)
+        }
     }
 
-    private fun select(skill: UserPlaymateSkill) {
+    private fun select(skill: PlaymateCategoryData) {
         listener?.onSelect(skill)
         dismiss()
     }
@@ -93,7 +96,7 @@ class RoomPlaymateFilterDialog : BottomDialogFragment(R.layout.dialog_room_playm
 
 
     interface OnCategorySelectListener {
-        fun onSelect(skill: UserPlaymateSkill)
+        fun onSelect(skill: PlaymateCategoryData)
 
         fun onSelectAll()
     }

+ 4 - 4
module/room/src/main/java/com/adealink/weparty/room/member/adapter/RoomMemberCategoryItemBinder.kt

@@ -6,18 +6,18 @@ import com.adealink.frame.util.onClick
 import com.adealink.weparty.commonui.recycleview.adapter.BindingViewHolder
 import com.adealink.weparty.commonui.recycleview.adapter.multitype.ItemViewBinder
 import com.adealink.weparty.room.databinding.LayoutRoomMemberPlaymateCategoryItemBinding
-import com.adealink.weparty.room.member.data.PlaymateCategoryItemData
+import com.adealink.weparty.room.member.data.MemberPlaymateCategoryItemData
 
 class RoomMemberCategoryItemBinder(
-    private val onClick: (item: PlaymateCategoryItemData) -> Unit
-) : ItemViewBinder<PlaymateCategoryItemData, BindingViewHolder<LayoutRoomMemberPlaymateCategoryItemBinding>>() {
+    private val onClick: (item: MemberPlaymateCategoryItemData) -> Unit
+) : ItemViewBinder<MemberPlaymateCategoryItemData, BindingViewHolder<LayoutRoomMemberPlaymateCategoryItemBinding>>() {
     override fun onCreateViewHolder(inflater: LayoutInflater, parent: ViewGroup): BindingViewHolder<LayoutRoomMemberPlaymateCategoryItemBinding> {
         return BindingViewHolder(
             LayoutRoomMemberPlaymateCategoryItemBinding.inflate(inflater, parent, false)
         )
     }
 
-    override fun onBindViewHolder(holder: BindingViewHolder<LayoutRoomMemberPlaymateCategoryItemBinding>, item: PlaymateCategoryItemData) {
+    override fun onBindViewHolder(holder: BindingViewHolder<LayoutRoomMemberPlaymateCategoryItemBinding>, item: MemberPlaymateCategoryItemData) {
         holder.binding.root.onClick {
             onClick.invoke(item)
         }

+ 6 - 1
module/room/src/main/java/com/adealink/weparty/room/member/data/MemberData.kt

@@ -1,13 +1,18 @@
 package com.adealink.weparty.room.member.data
 
 import com.adealink.weparty.commonui.recycleview.diffutil.BaseListItemData
+import com.adealink.weparty.module.playmate.data.PlaymateCategoryData
 import com.adealink.weparty.module.profile.data.UserPlaymateSkill
 
 
 sealed class BasePlaymateCategoryItem : BaseListItemData
 
-data class PlaymateCategoryItemData(
+data class MemberPlaymateCategoryItemData(
     val skill: UserPlaymateSkill
+) : BasePlaymateCategoryItem()
+
+data class PlaymateCategoryItemData(
+    val skill: PlaymateCategoryData
 ) : BasePlaymateCategoryItem() {
     var selected: Boolean = false
 }

+ 31 - 3
module/room/src/main/java/com/adealink/weparty/room/member/viewmodel/RoomPlaymateSkillViewModel.kt

@@ -1,18 +1,46 @@
 package com.adealink.weparty.room.member.viewmodel
 
+import androidx.lifecycle.LiveData
 import androidx.lifecycle.MutableLiveData
+import com.adealink.frame.base.Rlt
+import com.adealink.frame.base.fastLazy
+import com.adealink.frame.mvvm.livedata.OnceMutableLiveData
 import com.adealink.frame.mvvm.viewmodel.BaseViewModel
-import com.adealink.weparty.module.profile.data.UserPlaymateSkill
+import com.adealink.weparty.App
+import com.adealink.weparty.module.playmate.data.PlaymateCategoryData
+import com.adealink.weparty.room.data.RoomPlaymateCategoryReq
+import com.adealink.weparty.room.datasource.remote.RoomHttpService
+import com.adealink.weparty.room.sdk.service.roomService
 import kotlinx.coroutines.launch
 
 class RoomPlaymateSkillViewModel : BaseViewModel() {
 
-    val skillListLD = MutableLiveData<List<UserPlaymateSkill>>()
+    private val roomHttpService by fastLazy {
+        App.instance.networkService.getHttpService(RoomHttpService::class.java)
+    }
+
+    val skillListLD = MutableLiveData<List<PlaymateCategoryData>>()
 
-    fun loadRoomPlaymateSkill() {
+    fun loadRoomPlaymateSkill(): LiveData<Rlt<Any>> {
+        val liveData = OnceMutableLiveData<Rlt<Any>>()
         viewModelScope.launch {
+            val roomId = roomService.joinController.getJoinedRoomId()
+            if (roomId.isNullOrEmpty()) {
+                return@launch
+            }
+            val rlt = roomHttpService.getRoomPlaymateCategory(RoomPlaymateCategoryReq(roomId))
+            when (rlt) {
+                is Rlt.Failed -> {
+                    //Ntd.
+                }
 
+                is Rlt.Success -> {
+                    skillListLD.send(rlt.data.data?.categorys ?: emptyList())
+                }
+            }
+            liveData.send(rlt)
         }
+        return liveData
     }
 
 

+ 7 - 0
module/room/src/main/java/com/adealink/weparty/room/micseat/decor/NameDecorView.kt

@@ -9,6 +9,7 @@ import androidx.appcompat.widget.AppCompatTextView
 import androidx.constraintlayout.widget.ConstraintLayout
 import androidx.core.widget.TextViewCompat
 import com.adealink.frame.aab.util.getCompatColor
+import com.adealink.frame.aab.util.getCompatDrawable
 import com.adealink.frame.util.DisplayUtil.dp2px
 import com.adealink.weparty.commonui.ext.dp
 import com.adealink.weparty.module.room.data.MicIndex
@@ -18,6 +19,7 @@ import com.adealink.weparty.R as APP_R
 
 class NameDecorView(
     dynamicLayers: DecorDynamicLayers,
+    val isHost: Boolean = false,
     val topMargin: Int = 6.dp()
 ) : BaseDecorView<AppCompatTextView>(R.id.id_mic_seat_name_decor, dynamicLayers),
     INameDecorApi,
@@ -48,6 +50,11 @@ class NameDecorView(
                 TypedValue.COMPLEX_UNIT_DIP
             )
         }
+        if (isHost) {
+            view.setCompoundDrawablesWithIntrinsicBounds(getCompatDrawable(R.drawable.room_dispatch_center_host_tag_ic), null, null, null)
+        } else {
+            view.setCompoundDrawablesWithIntrinsicBounds(null, null, null, null)
+        }
     }
 
     override fun getLayoutParams(): ConstraintLayout.LayoutParams {

+ 18 - 0
module/room/src/main/java/com/adealink/weparty/room/micseat/dispatcenter/DispatchCenterHostSeatView.kt

@@ -0,0 +1,18 @@
+package com.adealink.weparty.room.micseat.dispatcenter
+
+import android.content.Context
+import android.util.AttributeSet
+import com.adealink.weparty.room.micseat.decor.NameDecorView
+
+class DispatchCenterHostSeatView @JvmOverloads constructor(
+    context: Context,
+    attrs: AttributeSet? = null,
+    defStyleAttr: Int = 0,
+) : DispatchCenterSeatView(context, attrs, defStyleAttr) {
+
+    override fun initViews() {
+        super.initViews()
+        addDecorView(NameDecorView(dynamicLayers, isHost = true))
+    }
+
+}

+ 18 - 0
module/room/src/main/java/com/adealink/weparty/room/micseat/dispatcenter/DispatchCenterMemberSeatView.kt

@@ -0,0 +1,18 @@
+package com.adealink.weparty.room.micseat.dispatcenter
+
+import android.content.Context
+import android.util.AttributeSet
+import com.adealink.weparty.room.micseat.decor.NameDecorView
+
+class DispatchCenterMemberSeatView @JvmOverloads constructor(
+    context: Context,
+    attrs: AttributeSet? = null,
+    defStyleAttr: Int = 0,
+) : DispatchCenterSeatView(context, attrs, defStyleAttr) {
+
+    override fun initViews() {
+        super.initViews()
+        addDecorView(NameDecorView(dynamicLayers))
+    }
+
+}

+ 2 - 10
module/room/src/main/java/com/adealink/weparty/room/micseat/dispatcenter/DispatchCenterSeatView.kt

@@ -2,18 +2,10 @@ package com.adealink.weparty.room.micseat.dispatcenter
 
 import android.content.Context
 import android.util.AttributeSet
-import com.adealink.weparty.room.micseat.decor.NameDecorView
 import com.adealink.weparty.room.micseat.defaults.DefaultSeatView
 
-class DispatchCenterSeatView @JvmOverloads constructor(
+abstract class DispatchCenterSeatView @JvmOverloads constructor(
     context: Context,
     attrs: AttributeSet? = null,
     defStyleAttr: Int = 0,
-) : DefaultSeatView(context, attrs, defStyleAttr) {
-
-    override fun initViews() {
-        super.initViews()
-        addDecorView(NameDecorView(dynamicLayers))
-    }
-
-}
+) : DefaultSeatView(context, attrs, defStyleAttr)

+ 3 - 1
module/room/src/main/java/com/adealink/weparty/room/micseat/dispatcenter/DispatchCenterSeatsTemplate.kt

@@ -105,12 +105,13 @@ class DispatchCenterSeatsTemplate :
                 } else {
                     //操作他人麦位
                     actionList.add(Pair(R.id.id_mic_operate_member_info, getCompatString(R.string.room_mic_operate_member_info)))
+                    actionList.add(Pair(R.id.id_mic_operate_kick, getCompatString(R.string.room_mic_operate_kick)))
+                    actionList.add(Pair(R.id.id_mic_operate_lock, getCompatString(R.string.room_mic_operate_lock)))
                     if (seatView.micSeatInfo?.isRemoteMute() == true) {
                         actionList.add(Pair(R.id.id_mic_operate_un_mute, getCompatString(R.string.room_mic_operate_un_mute)))
                     } else {
                         actionList.add(Pair(R.id.id_mic_operate_mute, getCompatString(R.string.room_mic_operate_mute)))
                     }
-                    actionList.add(Pair(R.id.id_mic_operate_kick, getCompatString(R.string.room_mic_operate_kick)))
                 }
             } else {
                 //"我"是普通身份
@@ -163,6 +164,7 @@ class DispatchCenterSeatsTemplate :
                             }
                             InviteMicDialog().apply {
                                 inviteMicIndex(inviteIndex)
+                                filterPlaymate(seatView.micIndex.index != MIC_HOST && seatView.micIndex.index != MIC_GUEST)
                                 enableFilter(seatView.micIndex.index != MIC_HOST && seatView.micIndex.index != MIC_GUEST)
                             }.show(childFragmentManager)
                         }

BIN
module/room/src/main/res/drawable-xhdpi/room_dispatch_center_host_tag_ic.png


+ 10 - 10
module/room/src/main/res/layout/fragment_seats_template_dispatch_center.xml

@@ -30,7 +30,7 @@
         app:layout_constraintTop_toTopOf="@id/mic_1" />
 
     <!-- 主持 -->
-    <com.adealink.weparty.room.micseat.dispatcenter.DispatchCenterSeatView
+    <com.adealink.weparty.room.micseat.dispatcenter.DispatchCenterHostSeatView
         android:id="@+id/mic_host"
         android:layout_width="0dp"
         android:layout_height="wrap_content"
@@ -56,7 +56,7 @@
         app:layout_constraintTop_toTopOf="@id/mic_host" />
 
     <!-- 嘉宾 -->
-    <com.adealink.weparty.room.micseat.dispatcenter.DispatchCenterSeatView
+    <com.adealink.weparty.room.micseat.dispatcenter.DispatchCenterMemberSeatView
         android:id="@+id/mic_guest"
         android:layout_width="0dp"
         android:layout_height="wrap_content"
@@ -73,7 +73,7 @@
         app:barrierDirection="bottom"
         app:constraint_referenced_ids="mic_host, mic_guest" />
 
-    <com.adealink.weparty.room.micseat.dispatcenter.DispatchCenterSeatView
+    <com.adealink.weparty.room.micseat.dispatcenter.DispatchCenterMemberSeatView
         android:id="@+id/mic_1"
         style="@style/MemberMicSeatStyle"
         app:layout_constraintEnd_toStartOf="@+id/mic_2"
@@ -81,7 +81,7 @@
         app:layout_constraintTop_toBottomOf="@id/barrier_mic_owner"
         tools:layout_height="80dp" />
 
-    <com.adealink.weparty.room.micseat.dispatcenter.DispatchCenterSeatView
+    <com.adealink.weparty.room.micseat.dispatcenter.DispatchCenterMemberSeatView
         android:id="@+id/mic_2"
         style="@style/MemberMicSeatStyle"
         app:layout_constraintEnd_toStartOf="@+id/mic_3"
@@ -89,7 +89,7 @@
         app:layout_constraintTop_toTopOf="@+id/mic_1"
         tools:layout_height="80dp" />
 
-    <com.adealink.weparty.room.micseat.dispatcenter.DispatchCenterSeatView
+    <com.adealink.weparty.room.micseat.dispatcenter.DispatchCenterMemberSeatView
         android:id="@+id/mic_3"
         style="@style/MemberMicSeatStyle"
         app:layout_constraintEnd_toStartOf="@+id/mic_4"
@@ -97,7 +97,7 @@
         app:layout_constraintTop_toTopOf="@+id/mic_1"
         tools:layout_height="80dp" />
 
-    <com.adealink.weparty.room.micseat.dispatcenter.DispatchCenterSeatView
+    <com.adealink.weparty.room.micseat.dispatcenter.DispatchCenterMemberSeatView
         android:id="@+id/mic_4"
         style="@style/MemberMicSeatStyle"
         app:layout_constraintEnd_toEndOf="parent"
@@ -105,7 +105,7 @@
         app:layout_constraintTop_toTopOf="@+id/mic_1"
         tools:layout_height="80dp" />
 
-    <com.adealink.weparty.room.micseat.dispatcenter.DispatchCenterSeatView
+    <com.adealink.weparty.room.micseat.dispatcenter.DispatchCenterMemberSeatView
         android:id="@+id/mic_5"
         style="@style/MemberMicSeatStyle"
         android:layout_marginTop="12dp"
@@ -114,7 +114,7 @@
         app:layout_constraintTop_toBottomOf="@+id/mic_1"
         tools:layout_height="80dp" />
 
-    <com.adealink.weparty.room.micseat.dispatcenter.DispatchCenterSeatView
+    <com.adealink.weparty.room.micseat.dispatcenter.DispatchCenterMemberSeatView
         android:id="@+id/mic_6"
         style="@style/MemberMicSeatStyle"
         app:layout_constraintEnd_toStartOf="@+id/mic_7"
@@ -122,7 +122,7 @@
         app:layout_constraintTop_toTopOf="@id/mic_5"
         tools:layout_height="80dp" />
 
-    <com.adealink.weparty.room.micseat.dispatcenter.DispatchCenterSeatView
+    <com.adealink.weparty.room.micseat.dispatcenter.DispatchCenterMemberSeatView
         android:id="@+id/mic_7"
         style="@style/MemberMicSeatStyle"
         app:layout_constraintEnd_toStartOf="@+id/mic_8"
@@ -130,7 +130,7 @@
         app:layout_constraintTop_toTopOf="@id/mic_5"
         tools:layout_height="80dp" />
 
-    <com.adealink.weparty.room.micseat.dispatcenter.DispatchCenterSeatView
+    <com.adealink.weparty.room.micseat.dispatcenter.DispatchCenterMemberSeatView
         android:id="@+id/mic_8"
         style="@style/MemberMicSeatStyle"
         app:layout_constraintEnd_toEndOf="parent"