채널 상세

- 크리에이터가 아닌 유저의 채널에 접근했을 때는 팬톡과 유저 정보만 보이도록 수정
This commit is contained in:
klaus 2025-01-04 01:22:16 +09:00
parent b5546b4957
commit 87f02918f8
7 changed files with 63 additions and 26 deletions

View File

@ -15,6 +15,7 @@ import kr.co.vividnext.sodalive.databinding.ItemAuditionApplicantBinding
class AuditionApplicantListAdapter( class AuditionApplicantListAdapter(
private val onClickVote: (Int) -> Unit, private val onClickVote: (Int) -> Unit,
private val onClickNickname: (Long) -> Unit,
private val onClickPlayOrPause: (Int, Long, String) -> Unit private val onClickPlayOrPause: (Int, Long, String) -> Unit
) : ListAdapter<GetAuditionRoleApplicantItem, AuditionApplicantListAdapter.ViewHolder>(DiffCallback()) { ) : ListAdapter<GetAuditionRoleApplicantItem, AuditionApplicantListAdapter.ViewHolder>(DiffCallback()) {
@ -54,6 +55,8 @@ class AuditionApplicantListAdapter(
} }
binding.tvNickname.text = item.nickname binding.tvNickname.text = item.nickname
binding.tvNickname.setOnClickListener { onClickNickname(item.memberId) }
binding.tvCountVote.text = item.voteCount.toString() binding.tvCountVote.text = item.voteCount.toString()
binding.ivProfile.load(item.profileImageUrl) { binding.ivProfile.load(item.profileImageUrl) {
crossfade(true) crossfade(true)

View File

@ -12,6 +12,7 @@ data class GetAuditionApplicantListResponse(
@Keep @Keep
data class GetAuditionRoleApplicantItem( data class GetAuditionRoleApplicantItem(
@SerializedName("applicantId") val applicantId: Long, @SerializedName("applicantId") val applicantId: Long,
@SerializedName("memberId") val memberId: Long,
@SerializedName("nickname") val nickname: String, @SerializedName("nickname") val nickname: String,
@SerializedName("profileImageUrl") val profileImageUrl: String, @SerializedName("profileImageUrl") val profileImageUrl: String,
@SerializedName("voiceUrl") val voiceUrl: String, @SerializedName("voiceUrl") val voiceUrl: String,

View File

@ -24,6 +24,7 @@ import kr.co.vividnext.sodalive.common.Constants
import kr.co.vividnext.sodalive.common.LoadingDialog import kr.co.vividnext.sodalive.common.LoadingDialog
import kr.co.vividnext.sodalive.common.RealPathUtil import kr.co.vividnext.sodalive.common.RealPathUtil
import kr.co.vividnext.sodalive.databinding.ActivityAuditionRoleDetailBinding import kr.co.vividnext.sodalive.databinding.ActivityAuditionRoleDetailBinding
import kr.co.vividnext.sodalive.explorer.profile.UserProfileActivity
import kr.co.vividnext.sodalive.explorer.profile.creator_community.write.RecordingVoiceFragment import kr.co.vividnext.sodalive.explorer.profile.creator_community.write.RecordingVoiceFragment
import kr.co.vividnext.sodalive.extensions.dpToPx import kr.co.vividnext.sodalive.extensions.dpToPx
import org.koin.android.ext.android.inject import org.koin.android.ext.android.inject
@ -179,6 +180,13 @@ class AuditionRoleDetailActivity : BaseActivity<ActivityAuditionRoleDetailBindin
onClickPlayOrPause = { position, applicantId, voiceUrl -> onClickPlayOrPause = { position, applicantId, voiceUrl ->
mediaPlayerManager.toggleContent(position, applicantId, voiceUrl) mediaPlayerManager.toggleContent(position, applicantId, voiceUrl)
}, },
onClickNickname = { memberId ->
startActivity(
Intent(applicationContext, UserProfileActivity::class.java).apply {
putExtra(Constants.EXTRA_USER_ID, memberId)
}
)
},
onClickVote = { applicantId -> onClickVote = { applicantId ->
viewModel.voteApplicant( viewModel.voteApplicant(
applicantId, applicantId,

View File

@ -26,7 +26,9 @@ data class GetCreatorProfileResponse(
@SerializedName("seriesList") @SerializedName("seriesList")
val seriesList: List<GetSeriesListResponse.SeriesListItem>, val seriesList: List<GetSeriesListResponse.SeriesListItem>,
@SerializedName("isBlock") @SerializedName("isBlock")
val isBlock: Boolean val isBlock: Boolean,
@SerializedName("isCreatorRole")
val isCreator: Boolean
) )
@Keep @Keep

View File

@ -16,7 +16,9 @@ import android.view.inputmethod.InputMethodManager
import android.webkit.URLUtil import android.webkit.URLUtil
import android.widget.LinearLayout import android.widget.LinearLayout
import android.widget.Toast import android.widget.Toast
import androidx.annotation.OptIn
import androidx.appcompat.widget.PopupMenu import androidx.appcompat.widget.PopupMenu
import androidx.media3.common.util.UnstableApi
import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
import coil.load import coil.load
@ -52,11 +54,11 @@ import kr.co.vividnext.sodalive.extensions.dpToPx
import kr.co.vividnext.sodalive.extensions.loadUrl import kr.co.vividnext.sodalive.extensions.loadUrl
import kr.co.vividnext.sodalive.extensions.moneyFormat import kr.co.vividnext.sodalive.extensions.moneyFormat
import kr.co.vividnext.sodalive.live.LiveViewModel import kr.co.vividnext.sodalive.live.LiveViewModel
import kr.co.vividnext.sodalive.live.room.menu.MenuConfigActivity
import kr.co.vividnext.sodalive.live.reservation.complete.LiveReservationCompleteActivity import kr.co.vividnext.sodalive.live.reservation.complete.LiveReservationCompleteActivity
import kr.co.vividnext.sodalive.live.room.LiveRoomActivity import kr.co.vividnext.sodalive.live.room.LiveRoomActivity
import kr.co.vividnext.sodalive.live.room.dialog.LivePaymentDialog import kr.co.vividnext.sodalive.live.room.dialog.LivePaymentDialog
import kr.co.vividnext.sodalive.live.room.dialog.LiveRoomPasswordDialog import kr.co.vividnext.sodalive.live.room.dialog.LiveRoomPasswordDialog
import kr.co.vividnext.sodalive.live.room.menu.MenuConfigActivity
import kr.co.vividnext.sodalive.live.roulette.config.RouletteConfigActivity import kr.co.vividnext.sodalive.live.roulette.config.RouletteConfigActivity
import kr.co.vividnext.sodalive.report.CheersReportDialog import kr.co.vividnext.sodalive.report.CheersReportDialog
import kr.co.vividnext.sodalive.report.ProfileReportDialog import kr.co.vividnext.sodalive.report.ProfileReportDialog
@ -494,6 +496,7 @@ class UserProfileActivity : BaseActivity<ActivityUserProfileBinding>(
recyclerView.adapter = seriesAdapter recyclerView.adapter = seriesAdapter
} }
@OptIn(UnstableApi::class)
private fun setupAudioContentListView() { private fun setupAudioContentListView() {
binding.layoutUserProfileAudioContent.tvAll.setOnClickListener { binding.layoutUserProfileAudioContent.tvAll.setOnClickListener {
val intent = Intent(applicationContext, AudioContentActivity::class.java) val intent = Intent(applicationContext, AudioContentActivity::class.java)
@ -595,18 +598,23 @@ class UserProfileActivity : BaseActivity<ActivityUserProfileBinding>(
} }
viewModel.creatorProfileLiveData.observe(this) { viewModel.creatorProfileLiveData.observe(this) {
setCheers(it.cheers)
setSeriesList(it.seriesList)
setCreatorProfile(it.creator) setCreatorProfile(it.creator)
setAudioContentList(it.contentList) setCheers(it.cheers)
setLiveRoomList(it.liveRoomList)
setUserDonationRanking(it.userDonationRanking) if (it.isCreator) {
setActivitySummary(it.activitySummary) binding.layoutUserProfile.ivShare.visibility = View.VISIBLE
setCommunityPostList(it.communityPostList) setSeriesList(it.seriesList)
setAudioContentList(it.contentList)
setLiveRoomList(it.liveRoomList)
setUserDonationRanking(it.userDonationRanking)
setActivitySummary(it.activitySummary)
setCommunityPostList(it.communityPostList)
}
} }
} }
private fun setActivitySummary(activitySummary: GetCreatorActivitySummary) { private fun setActivitySummary(activitySummary: GetCreatorActivitySummary) {
binding.llActivitySummary.visibility = View.VISIBLE
binding.tvLiveCount.text = activitySummary.liveCount.moneyFormat() binding.tvLiveCount.text = activitySummary.liveCount.moneyFormat()
binding.tvLiveContributorCount.text = activitySummary.liveContributorCount.moneyFormat() binding.tvLiveContributorCount.text = activitySummary.liveContributorCount.moneyFormat()
binding.tvLiveTime.text = activitySummary.liveTime.moneyFormat() binding.tvLiveTime.text = activitySummary.liveTime.moneyFormat()

View File

@ -55,6 +55,7 @@
layout="@layout/layout_user_profile" /> layout="@layout/layout_user_profile" />
<LinearLayout <LinearLayout
android:id="@+id/ll_activity_summary"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginHorizontal="13.3dp" android:layout_marginHorizontal="13.3dp"
@ -62,7 +63,8 @@
android:background="@drawable/bg_round_corner_16_7_222222_3bb9f1" android:background="@drawable/bg_round_corner_16_7_222222_3bb9f1"
android:baselineAligned="false" android:baselineAligned="false"
android:gravity="center" android:gravity="center"
android:padding="13.3dp"> android:padding="13.3dp"
android:visibility="gone">
<RelativeLayout <RelativeLayout
android:layout_width="0dp" android:layout_width="0dp"
@ -209,7 +211,8 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginHorizontal="13.3dp" android:layout_marginHorizontal="13.3dp"
android:layout_marginTop="26.7dp" /> android:layout_marginTop="26.7dp"
android:visibility="gone" />
<include <include
android:id="@+id/layout_creator_channel_series" android:id="@+id/layout_creator_channel_series"
@ -238,26 +241,36 @@
android:layout_marginTop="26.7dp" android:layout_marginTop="26.7dp"
android:visibility="gone" /> android:visibility="gone" />
<include <LinearLayout
android:id="@+id/layout_user_profile_introduce" android:id="@+id/ll_user_profile_introduce"
layout="@layout/layout_user_profile_introduce"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginHorizontal="13.3dp" android:orientation="vertical"
android:layout_marginTop="26.7dp" /> android:visibility="gone">
<View <include
android:layout_width="match_parent" android:id="@+id/layout_user_profile_introduce"
android:layout_height="1dp" layout="@layout/layout_user_profile_introduce"
android:layout_marginHorizontal="13.3dp" android:layout_width="match_parent"
android:layout_marginVertical="26.7dp" android:layout_height="wrap_content"
android:background="@color/color_88909090" /> android:layout_marginHorizontal="13.3dp"
android:layout_marginTop="26.7dp" />
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:layout_marginHorizontal="13.3dp"
android:layout_marginTop="26.7dp"
android:background="@color/color_88909090" />
</LinearLayout>
<LinearLayout <LinearLayout
android:id="@+id/ll_user_profile_donation" android:id="@+id/ll_user_profile_donation"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:orientation="vertical"> android:layout_marginTop="26.7dp"
android:orientation="vertical"
android:visibility="gone">
<include <include
android:id="@+id/layout_user_profile_donation" android:id="@+id/layout_user_profile_donation"
@ -269,7 +282,7 @@
<View <View
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="6.7dp" android:layout_height="6.7dp"
android:layout_marginVertical="26.7dp" android:layout_marginTop="26.7dp"
android:background="@color/color_232323" /> android:background="@color/color_232323" />
</LinearLayout> </LinearLayout>
@ -277,7 +290,8 @@
android:id="@+id/layout_user_profile_fan_talk" android:id="@+id/layout_user_profile_fan_talk"
layout="@layout/layout_user_profile_fan_talk" layout="@layout/layout_user_profile_fan_talk"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" /> android:layout_height="wrap_content"
android:layout_marginTop="26.7dp" />
</LinearLayout> </LinearLayout>
</androidx.core.widget.NestedScrollView> </androidx.core.widget.NestedScrollView>
</RelativeLayout> </RelativeLayout>

View File

@ -58,7 +58,8 @@
android:layout_centerVertical="true" android:layout_centerVertical="true"
android:layout_marginStart="6.7dp" android:layout_marginStart="6.7dp"
android:contentDescription="@null" android:contentDescription="@null"
android:src="@drawable/btn_big_share" /> android:src="@drawable/btn_big_share"
android:visibility="gone" />
</RelativeLayout> </RelativeLayout>
<TextView <TextView