parent
4e14765e94
commit
ee396b3102
|
@ -29,7 +29,7 @@ class AuditionApplicantListAdapter(
|
||||||
oldItem: GetAuditionRoleApplicantItem,
|
oldItem: GetAuditionRoleApplicantItem,
|
||||||
newItem: GetAuditionRoleApplicantItem
|
newItem: GetAuditionRoleApplicantItem
|
||||||
): Boolean {
|
): Boolean {
|
||||||
return oldItem == newItem
|
return oldItem == newItem && oldItem.voteCount == newItem.voteCount
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -41,6 +41,7 @@ class AuditionApplicantListAdapter(
|
||||||
binding.ivPlayOrPause.setOnClickListener { onClickPlayOrPause(position) }
|
binding.ivPlayOrPause.setOnClickListener { onClickPlayOrPause(position) }
|
||||||
|
|
||||||
binding.tvNickname.text = item.nickname
|
binding.tvNickname.text = item.nickname
|
||||||
|
binding.tvCountVote.text = item.voteCount.toString()
|
||||||
binding.ivProfile.load(item.profileImageUrl) {
|
binding.ivProfile.load(item.profileImageUrl) {
|
||||||
crossfade(true)
|
crossfade(true)
|
||||||
placeholder(R.drawable.bg_placeholder)
|
placeholder(R.drawable.bg_placeholder)
|
||||||
|
@ -49,9 +50,9 @@ class AuditionApplicantListAdapter(
|
||||||
|
|
||||||
binding.ivPlayOrPause.setImageResource(
|
binding.ivPlayOrPause.setImageResource(
|
||||||
if (position == currentPlayingIndex) {
|
if (position == currentPlayingIndex) {
|
||||||
R.drawable.ic_audition_play
|
|
||||||
} else {
|
|
||||||
R.drawable.ic_audition_pause
|
R.drawable.ic_audition_pause
|
||||||
|
} else {
|
||||||
|
R.drawable.ic_audition_play
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,5 +15,5 @@ data class GetAuditionRoleApplicantItem(
|
||||||
@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,
|
||||||
@SerializedName("voteCount") var voteCount: Long
|
@SerializedName("voteCount") val voteCount: Long
|
||||||
)
|
)
|
||||||
|
|
|
@ -40,6 +40,7 @@ class AuditionRoleDetailActivity : BaseActivity<ActivityAuditionRoleDetailBindin
|
||||||
private var isOpenInformation = false
|
private var isOpenInformation = false
|
||||||
private var reApplication = false
|
private var reApplication = false
|
||||||
private var isDeleteAudioFile = false
|
private var isDeleteAudioFile = false
|
||||||
|
private var isShowNotifyVote = true
|
||||||
|
|
||||||
private val selectAudioActivityResultLauncher = registerForActivityResult(
|
private val selectAudioActivityResultLauncher = registerForActivityResult(
|
||||||
ActivityResultContracts.StartActivityForResult()
|
ActivityResultContracts.StartActivityForResult()
|
||||||
|
@ -141,7 +142,20 @@ class AuditionRoleDetailActivity : BaseActivity<ActivityAuditionRoleDetailBindin
|
||||||
|
|
||||||
adapter = AuditionApplicantListAdapter(
|
adapter = AuditionApplicantListAdapter(
|
||||||
onClickPlayOrPause = {},
|
onClickPlayOrPause = {},
|
||||||
onClickVote = { viewModel.voteApplicant(it) }
|
onClickVote = {
|
||||||
|
if (isShowNotifyVote) {
|
||||||
|
SodaDialog(
|
||||||
|
activity = this@AuditionRoleDetailActivity,
|
||||||
|
layoutInflater = layoutInflater,
|
||||||
|
"투표 안내",
|
||||||
|
"첫 투표 무료 - 이후 투표 유료 (하루에 총 11번 투표 가능)",
|
||||||
|
confirmButtonTitle = "확인",
|
||||||
|
confirmButtonClick = { isShowNotifyVote = false }
|
||||||
|
).show(screenWidth)
|
||||||
|
} else {
|
||||||
|
viewModel.voteApplicant(it)
|
||||||
|
}
|
||||||
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
val recyclerView = binding.rvApplicant
|
val recyclerView = binding.rvApplicant
|
||||||
|
|
|
@ -228,7 +228,6 @@ class AuditionRoleDetailViewModel(private val repository: AuditionRepository) :
|
||||||
{
|
{
|
||||||
_isLoading.value = false
|
_isLoading.value = false
|
||||||
if (it.success) {
|
if (it.success) {
|
||||||
_applicantListLiveData.value = emptyList()
|
|
||||||
page = 1
|
page = 1
|
||||||
isLast = false
|
isLast = false
|
||||||
getAuditionRoleDetail(auditionRoleId = auditionRoleId)
|
getAuditionRoleDetail(auditionRoleId = auditionRoleId)
|
||||||
|
@ -266,11 +265,10 @@ class AuditionRoleDetailViewModel(private val repository: AuditionRepository) :
|
||||||
}
|
}
|
||||||
|
|
||||||
fun voteApplicant(position: Int) {
|
fun voteApplicant(position: Int) {
|
||||||
val updatedList = _applicantListLiveData.value?.toMutableList()
|
val applicantId = _applicantListLiveData.value?.get(position)?.applicantId
|
||||||
val applicantId = updatedList?.get(position)?.applicantId
|
|
||||||
|
|
||||||
if (applicantId != null) {
|
if (applicantId != null) {
|
||||||
_isLoading.value = false
|
_isLoading.value = true
|
||||||
val request = VoteAuditionApplicantRequest(
|
val request = VoteAuditionApplicantRequest(
|
||||||
applicantId = applicantId,
|
applicantId = applicantId,
|
||||||
timezone = TimeZone.getDefault().id
|
timezone = TimeZone.getDefault().id
|
||||||
|
@ -286,7 +284,14 @@ class AuditionRoleDetailViewModel(private val repository: AuditionRepository) :
|
||||||
.subscribe(
|
.subscribe(
|
||||||
{
|
{
|
||||||
if (it.success) {
|
if (it.success) {
|
||||||
updatedList[position].voteCount += 1
|
val updatedList =
|
||||||
|
_applicantListLiveData.value?.mapIndexed { index, item ->
|
||||||
|
if (index == position) {
|
||||||
|
item.copy(voteCount = item.voteCount + 1)
|
||||||
|
} else {
|
||||||
|
item
|
||||||
|
}
|
||||||
|
}
|
||||||
_applicantListLiveData.value = updatedList!!
|
_applicantListLiveData.value = updatedList!!
|
||||||
} else {
|
} else {
|
||||||
if (it.message != null) {
|
if (it.message != null) {
|
||||||
|
@ -310,7 +315,12 @@ class AuditionRoleDetailViewModel(private val repository: AuditionRepository) :
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun addApplicantList(itemList: List<GetAuditionRoleApplicantItem>) {
|
private fun addApplicantList(itemList: List<GetAuditionRoleApplicantItem>) {
|
||||||
val updatedList = _applicantListLiveData.value?.toMutableList() ?: mutableListOf()
|
val updatedList = if (page == 1) {
|
||||||
|
mutableListOf()
|
||||||
|
} else {
|
||||||
|
_applicantListLiveData.value?.toMutableList() ?: mutableListOf()
|
||||||
|
}
|
||||||
|
|
||||||
updatedList.addAll(itemList)
|
updatedList.addAll(itemList)
|
||||||
_applicantListLiveData.value = updatedList
|
_applicantListLiveData.value = updatedList
|
||||||
}
|
}
|
||||||
|
|
|
@ -185,12 +185,11 @@
|
||||||
<androidx.recyclerview.widget.RecyclerView
|
<androidx.recyclerview.widget.RecyclerView
|
||||||
android:id="@+id/rv_applicant"
|
android:id="@+id/rv_applicant"
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
android:layout_height="0dp"
|
android:layout_height="match_parent"
|
||||||
android:layout_marginTop="12dp"
|
android:layout_marginTop="12dp"
|
||||||
android:clipToPadding="false"
|
android:clipToPadding="false"
|
||||||
android:paddingHorizontal="13.3dp"
|
android:paddingHorizontal="13.3dp"
|
||||||
android:paddingBottom="12dp"
|
android:paddingBottom="12dp"
|
||||||
app:layout_constraintBottom_toBottomOf="parent"
|
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toBottomOf="@+id/ll_applicant_count" />
|
app:layout_constraintTop_toBottomOf="@+id/ll_applicant_count" />
|
||||||
|
|
|
@ -13,6 +13,7 @@
|
||||||
android:layout_width="40dp"
|
android:layout_width="40dp"
|
||||||
android:layout_height="40dp"
|
android:layout_height="40dp"
|
||||||
android:contentDescription="@null"
|
android:contentDescription="@null"
|
||||||
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toTopOf="parent" />
|
app:layout_constraintTop_toTopOf="parent" />
|
||||||
|
|
||||||
|
@ -45,9 +46,9 @@
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:gravity="center"
|
android:gravity="center"
|
||||||
android:orientation="vertical"
|
android:orientation="vertical"
|
||||||
app:layout_constraintBottom_toBottomOf="@+id/iv_profile"
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
app:layout_constraintTop_toTopOf="@+id/iv_profile"
|
app:layout_constraintTop_toTopOf="parent"
|
||||||
tools:ignore="UseCompoundDrawables">
|
tools:ignore="UseCompoundDrawables">
|
||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
|
|
Loading…
Reference in New Issue