feat: 콘텐츠 수정

- 태그 수정 기능 추가
- 포인트 사용여부 수정 기능 추가
This commit is contained in:
2025-06-04 20:03:42 +09:00
parent 19c39f636d
commit 3bda97b0a7
4 changed files with 206 additions and 0 deletions

View File

@@ -101,6 +101,9 @@ class AudioContentModifyActivity : BaseActivity<ActivityAudioContentModifyBindin
.createIntent { imageResult.launch(it) }
}
binding.llAvailablePoint.setOnClickListener { viewModel.setAvailablePoint(true) }
binding.llNotAvailablePoint.setOnClickListener { viewModel.setAvailablePoint(false) }
binding.llCommentNo.setOnClickListener { viewModel.setAvailableComment(false) }
binding.llCommentYes.setOnClickListener { viewModel.setAvailableComment(true) }
@@ -152,6 +155,15 @@ class AudioContentModifyActivity : BaseActivity<ActivityAudioContentModifyBindin
}
)
compositeDisposable.add(
binding.etTag.textChanges().skip(1)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe {
viewModel.tags = it.toString()
}
)
viewModel.toastLiveData.observe(this) {
it?.let { Toast.makeText(applicationContext, it, Toast.LENGTH_LONG).show() }
}
@@ -164,6 +176,14 @@ class AudioContentModifyActivity : BaseActivity<ActivityAudioContentModifyBindin
}
}
viewModel.isAvailablePointLiveData.observe(this) {
if (it) {
checkAvailablePoint()
} else {
checkNotAvailablePoint()
}
}
viewModel.isAvailableCommentLiveData.observe(this) {
if (it) {
binding.ivCommentYes.visibility = View.VISIBLE
@@ -284,5 +304,53 @@ class AudioContentModifyActivity : BaseActivity<ActivityAudioContentModifyBindin
viewModel.detailLiveData.observe(this) {
binding.etDetail.setText(it)
}
viewModel.tagsLiveData.observe(this) {
binding.etTag.setText(it)
}
}
private fun checkAvailablePoint() {
binding.ivAvailablePoint.visibility = View.VISIBLE
binding.tvAvailablePoint.setTextColor(
ContextCompat.getColor(
applicationContext,
R.color.color_eeeeee
)
)
binding.llAvailablePoint.setBackgroundResource(R.drawable.bg_round_corner_6_7_3bb9f1)
binding.ivNotAvailablePoint.visibility = View.GONE
binding.tvNotAvailablePoint.setTextColor(
ContextCompat.getColor(
applicationContext,
R.color.color_3bb9f1
)
)
binding.llNotAvailablePoint.setBackgroundResource(
R.drawable.bg_round_corner_6_7_13181b
)
}
private fun checkNotAvailablePoint() {
binding.ivNotAvailablePoint.visibility = View.VISIBLE
binding.tvNotAvailablePoint.setTextColor(
ContextCompat.getColor(
applicationContext,
R.color.color_eeeeee
)
)
binding.llNotAvailablePoint.setBackgroundResource(R.drawable.bg_round_corner_6_7_3bb9f1)
binding.ivAvailablePoint.visibility = View.GONE
binding.tvAvailablePoint.setTextColor(
ContextCompat.getColor(
applicationContext,
R.color.color_3bb9f1
)
)
binding.llAvailablePoint.setBackgroundResource(
R.drawable.bg_round_corner_6_7_13181b
)
}
}

View File

@@ -46,6 +46,10 @@ class AudioContentModifyViewModel(
val detailLiveData: LiveData<String>
get() = _detailLiveData
private val _tagsLiveData = MutableLiveData("")
val tagsLiveData: LiveData<String>
get() = _tagsLiveData
private val _coverImageLiveData = MutableLiveData("")
val coverImageLiveData: LiveData<String>
get() = _coverImageLiveData
@@ -54,12 +58,18 @@ class AudioContentModifyViewModel(
val isAdultShowUiLiveData: LiveData<Boolean>
get() = _isAdultShowUiLiveData
private val _isAvailablePointLiveData = MutableLiveData(false)
val isAvailablePointLiveData: LiveData<Boolean>
get() = _isAvailablePointLiveData
lateinit var getRealPathFromURI: (Uri) -> String?
var contentId: Long = 0
var title: String? = null
var detail: String? = null
var tags: String? = null
var coverImageUri: Uri? = null
var isPointAvailable: Boolean? = null
fun setAdult(isAdult: Boolean) {
_isAdultLiveData.postValue(isAdult)
@@ -69,6 +79,11 @@ class AudioContentModifyViewModel(
_isAvailableCommentLiveData.postValue(isAvailableComment)
}
fun setAvailablePoint(isAvailablePoint: Boolean) {
isPointAvailable = isAvailablePoint
_isAvailablePointLiveData.value = isAvailablePoint
}
fun getAudioContentDetail(audioContentId: Long, onFailure: (() -> Unit)? = null) {
this.contentId = audioContentId
_isLoading.value = true
@@ -85,10 +100,12 @@ class AudioContentModifyViewModel(
if (it.success && it.data != null) {
_titleLiveData.value = it.data.title
_detailLiveData.value = it.data.detail
_tagsLiveData.value = it.data.tag
_coverImageLiveData.value = it.data.coverImageUrl
_isAvailableCommentLiveData.value = it.data.isCommentAvailable
_isAdultLiveData.value = it.data.isAdult
_isAdultShowUiLiveData.value = !it.data.isAdult
_isAvailablePointLiveData.value = it.data.isAvailableUsePoint
} else {
if (it.message != null) {
_toastLiveData.postValue(it.message)
@@ -125,7 +142,13 @@ class AudioContentModifyViewModel(
contentId = contentId,
title = title,
detail = detail,
tags = if (tags != _tagsLiveData.value!!) {
tags
} else {
null
},
isAdult = _isAdultLiveData.value!!,
isPointAvailable = isPointAvailable,
isCommentAvailable = _isAvailableCommentLiveData.value!!
)

View File

@@ -8,6 +8,8 @@ data class ModifyAudioContentRequest(
@SerializedName("contentId") val contentId: Long,
@SerializedName("title") val title: String?,
@SerializedName("detail") val detail: String?,
@SerializedName("tags") val tags: String?,
@SerializedName("isAdult") val isAdult: Boolean,
@SerializedName("isPointAvailable") val isPointAvailable: Boolean?,
@SerializedName("isCommentAvailable") val isCommentAvailable: Boolean
)