feat: 커뮤니티 댓글
- 유료 커뮤니티 구매시 비밀 댓글 쓰기 기능 추가
This commit is contained in:
		@@ -35,8 +35,8 @@ android {
 | 
				
			|||||||
        applicationId "kr.co.vividnext.sodalive"
 | 
					        applicationId "kr.co.vividnext.sodalive"
 | 
				
			||||||
        minSdk 23
 | 
					        minSdk 23
 | 
				
			||||||
        targetSdk 34
 | 
					        targetSdk 34
 | 
				
			||||||
        versionCode 170
 | 
					        versionCode 171
 | 
				
			||||||
        versionName "1.37.3"
 | 
					        versionName "1.37.2"
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    buildTypes {
 | 
					    buildTypes {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -88,6 +88,7 @@ object Constants {
 | 
				
			|||||||
    const val EXTRA_COMMUNITY_POST_ID = "community_post_id"
 | 
					    const val EXTRA_COMMUNITY_POST_ID = "community_post_id"
 | 
				
			||||||
    const val EXTRA_COMMUNITY_CREATOR_ID = "community_creator_id"
 | 
					    const val EXTRA_COMMUNITY_CREATOR_ID = "community_creator_id"
 | 
				
			||||||
    const val EXTRA_COMMUNITY_POST_COMMENT = "community_post_comment_id"
 | 
					    const val EXTRA_COMMUNITY_POST_COMMENT = "community_post_comment_id"
 | 
				
			||||||
 | 
					    const val EXTRA_COMMUNITY_EXIST_ORDERED = "community_exist_ordered"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    const val EXTRA_ALARM_ID = "alarm_id"
 | 
					    const val EXTRA_ALARM_ID = "alarm_id"
 | 
				
			||||||
    const val EXTRA_ROULETTE_AVAILABLE_ACTIVE = "roulette_available_active"
 | 
					    const val EXTRA_ROULETTE_AVAILABLE_ACTIVE = "roulette_available_active"
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -51,12 +51,14 @@ class CreatorCommunityRepository(private val api: CreatorCommunityApi) {
 | 
				
			|||||||
        postId: Long,
 | 
					        postId: Long,
 | 
				
			||||||
        comment: String,
 | 
					        comment: String,
 | 
				
			||||||
        parentId: Long? = null,
 | 
					        parentId: Long? = null,
 | 
				
			||||||
 | 
					        isSecret: Boolean = false,
 | 
				
			||||||
        token: String
 | 
					        token: String
 | 
				
			||||||
    ) = api.createCommunityPostComment(
 | 
					    ) = api.createCommunityPostComment(
 | 
				
			||||||
        request = CreateCommunityPostCommentRequest(
 | 
					        request = CreateCommunityPostCommentRequest(
 | 
				
			||||||
            comment = comment,
 | 
					            comment = comment,
 | 
				
			||||||
            postId = postId,
 | 
					            postId = postId,
 | 
				
			||||||
            parentId = parentId
 | 
					            parentId = parentId,
 | 
				
			||||||
 | 
					            isSecret = isSecret
 | 
				
			||||||
        ),
 | 
					        ),
 | 
				
			||||||
        authHeader = token
 | 
					        authHeader = token
 | 
				
			||||||
    )
 | 
					    )
 | 
				
			||||||
@@ -66,13 +68,14 @@ class CreatorCommunityRepository(private val api: CreatorCommunityApi) {
 | 
				
			|||||||
        authHeader = token
 | 
					        authHeader = token
 | 
				
			||||||
    )
 | 
					    )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    fun getCommentReplyList(commentId: Long, page: Int, size: Int, token: String) = api.getCommentReplyList(
 | 
					    fun getCommentReplyList(commentId: Long, page: Int, size: Int, token: String) =
 | 
				
			||||||
        commentId = commentId,
 | 
					        api.getCommentReplyList(
 | 
				
			||||||
        page = page,
 | 
					            commentId = commentId,
 | 
				
			||||||
        size = size,
 | 
					            page = page,
 | 
				
			||||||
        timezone = TimeZone.getDefault().id,
 | 
					            size = size,
 | 
				
			||||||
        authHeader = token
 | 
					            timezone = TimeZone.getDefault().id,
 | 
				
			||||||
    )
 | 
					            authHeader = token
 | 
				
			||||||
 | 
					        )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    fun createCommunityPost(
 | 
					    fun createCommunityPost(
 | 
				
			||||||
        audioFile: MultipartBody.Part?,
 | 
					        audioFile: MultipartBody.Part?,
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -4,7 +4,10 @@ import android.annotation.SuppressLint
 | 
				
			|||||||
import android.content.Intent
 | 
					import android.content.Intent
 | 
				
			||||||
import android.graphics.Rect
 | 
					import android.graphics.Rect
 | 
				
			||||||
import android.os.Bundle
 | 
					import android.os.Bundle
 | 
				
			||||||
 | 
					import android.os.Handler
 | 
				
			||||||
 | 
					import android.os.Looper
 | 
				
			||||||
import android.view.View
 | 
					import android.view.View
 | 
				
			||||||
 | 
					import android.view.inputmethod.InputMethodManager
 | 
				
			||||||
import android.widget.Toast
 | 
					import android.widget.Toast
 | 
				
			||||||
import androidx.activity.result.contract.ActivityResultContracts
 | 
					import androidx.activity.result.contract.ActivityResultContracts
 | 
				
			||||||
import androidx.recyclerview.widget.LinearLayoutManager
 | 
					import androidx.recyclerview.widget.LinearLayoutManager
 | 
				
			||||||
@@ -29,8 +32,10 @@ class CreatorCommunityAllActivity : BaseActivity<ActivityCreatorCommunityAllBind
 | 
				
			|||||||
    private lateinit var loadingDialog: LoadingDialog
 | 
					    private lateinit var loadingDialog: LoadingDialog
 | 
				
			||||||
    private lateinit var adapter: CreatorCommunityAllAdapter
 | 
					    private lateinit var adapter: CreatorCommunityAllAdapter
 | 
				
			||||||
    private lateinit var mediaPlayerManager: CreatorCommunityMediaPlayerManager
 | 
					    private lateinit var mediaPlayerManager: CreatorCommunityMediaPlayerManager
 | 
				
			||||||
 | 
					    private lateinit var imm: InputMethodManager
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private var creatorId: Long = 0
 | 
					    private var creatorId: Long = 0
 | 
				
			||||||
 | 
					    private val handler = Handler(Looper.getMainLooper())
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private val modifyResult = registerForActivityResult(
 | 
					    private val modifyResult = registerForActivityResult(
 | 
				
			||||||
        ActivityResultContracts.StartActivityForResult()
 | 
					        ActivityResultContracts.StartActivityForResult()
 | 
				
			||||||
@@ -74,23 +79,28 @@ class CreatorCommunityAllActivity : BaseActivity<ActivityCreatorCommunityAllBind
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    override fun setupView() {
 | 
					    override fun setupView() {
 | 
				
			||||||
        loadingDialog = LoadingDialog(this, layoutInflater)
 | 
					        loadingDialog = LoadingDialog(this, layoutInflater)
 | 
				
			||||||
 | 
					        imm = getSystemService(INPUT_METHOD_SERVICE) as InputMethodManager
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        binding.toolbar.tvBack.text = "커뮤니티"
 | 
					        binding.toolbar.tvBack.text = "커뮤니티"
 | 
				
			||||||
        binding.toolbar.tvBack.setOnClickListener { finish() }
 | 
					        binding.toolbar.tvBack.setOnClickListener { finish() }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        adapter = CreatorCommunityAllAdapter(
 | 
					        adapter = CreatorCommunityAllAdapter(
 | 
				
			||||||
            screenWidth = screenWidth,
 | 
					            screenWidth = screenWidth,
 | 
				
			||||||
            onClickLike = { viewModel.communityPostLike(it) },
 | 
					            onClickLike = { viewModel.communityPostLike(it) },
 | 
				
			||||||
            writeComment = { postId, parentId, comment ->
 | 
					            writeComment = { postId, parentId, comment, isSecret ->
 | 
				
			||||||
 | 
					                hideKeyboard()
 | 
				
			||||||
                viewModel.registerComment(
 | 
					                viewModel.registerComment(
 | 
				
			||||||
                    comment,
 | 
					                    comment,
 | 
				
			||||||
                    postId,
 | 
					                    postId,
 | 
				
			||||||
                    parentId
 | 
					                    parentId,
 | 
				
			||||||
 | 
					                    isSecret
 | 
				
			||||||
                )
 | 
					                )
 | 
				
			||||||
            },
 | 
					            },
 | 
				
			||||||
            showCommentBottomSheetDialog = {
 | 
					            showCommentBottomSheetDialog = { postId, existOrdered ->
 | 
				
			||||||
                val dialog = CreatorCommunityCommentFragment(
 | 
					                val dialog = CreatorCommunityCommentFragment(
 | 
				
			||||||
                    creatorId = creatorId,
 | 
					                    creatorId = creatorId,
 | 
				
			||||||
                    postId = it
 | 
					                    postId = postId,
 | 
				
			||||||
 | 
					                    existOrdered = existOrdered
 | 
				
			||||||
                )
 | 
					                )
 | 
				
			||||||
                dialog.show(
 | 
					                dialog.show(
 | 
				
			||||||
                    supportFragmentManager,
 | 
					                    supportFragmentManager,
 | 
				
			||||||
@@ -223,4 +233,13 @@ class CreatorCommunityAllActivity : BaseActivity<ActivityCreatorCommunityAllBind
 | 
				
			|||||||
            adapter.notifyDataSetChanged()
 | 
					            adapter.notifyDataSetChanged()
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private fun hideKeyboard() {
 | 
				
			||||||
 | 
					        handler.postDelayed({
 | 
				
			||||||
 | 
					            imm.hideSoftInputFromWindow(
 | 
				
			||||||
 | 
					                window.decorView.applicationWindowToken,
 | 
				
			||||||
 | 
					                InputMethodManager.HIDE_NOT_ALWAYS
 | 
				
			||||||
 | 
					            )
 | 
				
			||||||
 | 
					        }, 100)
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -31,8 +31,8 @@ import java.util.regex.Pattern
 | 
				
			|||||||
class CreatorCommunityAllAdapter(
 | 
					class CreatorCommunityAllAdapter(
 | 
				
			||||||
    private val screenWidth: Int,
 | 
					    private val screenWidth: Int,
 | 
				
			||||||
    private val onClickLike: (Long) -> Unit,
 | 
					    private val onClickLike: (Long) -> Unit,
 | 
				
			||||||
    private val writeComment: (Long, Long?, String) -> Unit,
 | 
					    private val writeComment: (Long, Long?, String, Boolean) -> Unit,
 | 
				
			||||||
    private val showCommentBottomSheetDialog: (Long) -> Unit,
 | 
					    private val showCommentBottomSheetDialog: (Long, Boolean) -> Unit,
 | 
				
			||||||
    private val onClickModify: (Long) -> Unit,
 | 
					    private val onClickModify: (Long) -> Unit,
 | 
				
			||||||
    private val onClickDelete: (Long) -> Unit,
 | 
					    private val onClickDelete: (Long) -> Unit,
 | 
				
			||||||
    private val onClickReport: (Long) -> Unit,
 | 
					    private val onClickReport: (Long) -> Unit,
 | 
				
			||||||
@@ -133,7 +133,8 @@ class CreatorCommunityAllAdapter(
 | 
				
			|||||||
                item.postId,
 | 
					                item.postId,
 | 
				
			||||||
                item.commentCount,
 | 
					                item.commentCount,
 | 
				
			||||||
                item.isCommentAvailable,
 | 
					                item.isCommentAvailable,
 | 
				
			||||||
                comment = item.firstComment
 | 
					                comment = item.firstComment,
 | 
				
			||||||
 | 
					                existOrdered = item.existOrdered
 | 
				
			||||||
            )
 | 
					            )
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -154,7 +155,8 @@ class CreatorCommunityAllAdapter(
 | 
				
			|||||||
            postId: Long,
 | 
					            postId: Long,
 | 
				
			||||||
            commentCount: Int,
 | 
					            commentCount: Int,
 | 
				
			||||||
            isCommentAvailable: Boolean,
 | 
					            isCommentAvailable: Boolean,
 | 
				
			||||||
            comment: GetCommunityPostCommentListItem?
 | 
					            comment: GetCommunityPostCommentListItem?,
 | 
				
			||||||
 | 
					            existOrdered: Boolean
 | 
				
			||||||
        ) {
 | 
					        ) {
 | 
				
			||||||
            if (isCommentAvailable) {
 | 
					            if (isCommentAvailable) {
 | 
				
			||||||
                binding.llComment.visibility = View.VISIBLE
 | 
					                binding.llComment.visibility = View.VISIBLE
 | 
				
			||||||
@@ -172,8 +174,14 @@ class CreatorCommunityAllAdapter(
 | 
				
			|||||||
                binding.tvCommentText.text = comment.comment
 | 
					                binding.tvCommentText.text = comment.comment
 | 
				
			||||||
                binding.tvCommentText.visibility = View.VISIBLE
 | 
					                binding.tvCommentText.visibility = View.VISIBLE
 | 
				
			||||||
                binding.rlInputComment.visibility = View.GONE
 | 
					                binding.rlInputComment.visibility = View.GONE
 | 
				
			||||||
 | 
					                binding.tvSecret.visibility = View.GONE
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                binding.llComment.setOnClickListener { showCommentBottomSheetDialog(postId) }
 | 
					                binding.llComment.setOnClickListener {
 | 
				
			||||||
 | 
					                    showCommentBottomSheetDialog(
 | 
				
			||||||
 | 
					                        postId,
 | 
				
			||||||
 | 
					                        existOrdered
 | 
				
			||||||
 | 
					                    )
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
            } else {
 | 
					            } else {
 | 
				
			||||||
                binding.tvCommentText.visibility = View.GONE
 | 
					                binding.tvCommentText.visibility = View.GONE
 | 
				
			||||||
                binding.rlInputComment.visibility = View.VISIBLE
 | 
					                binding.rlInputComment.visibility = View.VISIBLE
 | 
				
			||||||
@@ -185,8 +193,18 @@ class CreatorCommunityAllAdapter(
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
                binding.ivCommentSend.setOnClickListener {
 | 
					                binding.ivCommentSend.setOnClickListener {
 | 
				
			||||||
                    val inputComment = binding.etComment.text.toString()
 | 
					                    val inputComment = binding.etComment.text.toString()
 | 
				
			||||||
 | 
					                    val isSecret = binding.tvSecret.isSelected
 | 
				
			||||||
                    binding.etComment.setText("")
 | 
					                    binding.etComment.setText("")
 | 
				
			||||||
                    writeComment(postId, null, inputComment)
 | 
					                    writeComment(postId, null, inputComment, isSecret)
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                if (existOrdered) {
 | 
				
			||||||
 | 
					                    binding.tvSecret.visibility = View.VISIBLE
 | 
				
			||||||
 | 
					                    binding.tvSecret.setOnClickListener {
 | 
				
			||||||
 | 
					                        binding.tvSecret.isSelected = !binding.tvSecret.isSelected
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                } else {
 | 
				
			||||||
 | 
					                    binding.tvSecret.visibility = View.GONE
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                binding.llComment.setOnClickListener {}
 | 
					                binding.llComment.setOnClickListener {}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -144,7 +144,12 @@ class CreatorCommunityAllViewModel(
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    fun registerComment(comment: String, postId: Long, parentId: Long? = null) {
 | 
					    fun registerComment(
 | 
				
			||||||
 | 
					        comment: String,
 | 
				
			||||||
 | 
					        postId: Long,
 | 
				
			||||||
 | 
					        parentId: Long? = null,
 | 
				
			||||||
 | 
					        isSecret: Boolean = false
 | 
				
			||||||
 | 
					    ) {
 | 
				
			||||||
        if (!_isLoading.value!!) {
 | 
					        if (!_isLoading.value!!) {
 | 
				
			||||||
            _isLoading.value = true
 | 
					            _isLoading.value = true
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
@@ -154,6 +159,7 @@ class CreatorCommunityAllViewModel(
 | 
				
			|||||||
                postId = postId,
 | 
					                postId = postId,
 | 
				
			||||||
                comment = comment,
 | 
					                comment = comment,
 | 
				
			||||||
                parentId = parentId,
 | 
					                parentId = parentId,
 | 
				
			||||||
 | 
					                isSecret = isSecret,
 | 
				
			||||||
                token = "Bearer ${SharedPreferenceManager.token}"
 | 
					                token = "Bearer ${SharedPreferenceManager.token}"
 | 
				
			||||||
            )
 | 
					            )
 | 
				
			||||||
                .subscribeOn(Schedulers.io())
 | 
					                .subscribeOn(Schedulers.io())
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -7,5 +7,6 @@ import com.google.gson.annotations.SerializedName
 | 
				
			|||||||
data class CreateCommunityPostCommentRequest(
 | 
					data class CreateCommunityPostCommentRequest(
 | 
				
			||||||
    @SerializedName("comment") val comment: String,
 | 
					    @SerializedName("comment") val comment: String,
 | 
				
			||||||
    @SerializedName("postId") val postId: Long,
 | 
					    @SerializedName("postId") val postId: Long,
 | 
				
			||||||
    @SerializedName("parentId") val parentId: Long?
 | 
					    @SerializedName("parentId") val parentId: Long?,
 | 
				
			||||||
 | 
					    @SerializedName("isSecret") val isSecret: Boolean = false
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -15,7 +15,8 @@ import kr.co.vividnext.sodalive.explorer.profile.creator_community.GetCommunityP
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
class CreatorCommunityCommentFragment(
 | 
					class CreatorCommunityCommentFragment(
 | 
				
			||||||
    private val creatorId: Long,
 | 
					    private val creatorId: Long,
 | 
				
			||||||
    private val postId: Long
 | 
					    private val postId: Long,
 | 
				
			||||||
 | 
					    private val existOrdered: Boolean
 | 
				
			||||||
) : BottomSheetDialogFragment() {
 | 
					) : BottomSheetDialogFragment() {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private lateinit var binding: DialogAudioContentCommentBinding
 | 
					    private lateinit var binding: DialogAudioContentCommentBinding
 | 
				
			||||||
@@ -51,7 +52,8 @@ class CreatorCommunityCommentFragment(
 | 
				
			|||||||
        val commentListFragmentTag = "COMMENT_LIST_FRAGMENT"
 | 
					        val commentListFragmentTag = "COMMENT_LIST_FRAGMENT"
 | 
				
			||||||
        val commentListFragment = CreatorCommunityCommentListFragment.newInstance(
 | 
					        val commentListFragment = CreatorCommunityCommentListFragment.newInstance(
 | 
				
			||||||
            creatorId = creatorId,
 | 
					            creatorId = creatorId,
 | 
				
			||||||
            postId = postId
 | 
					            postId = postId,
 | 
				
			||||||
 | 
					            existOrdered = existOrdered
 | 
				
			||||||
        )
 | 
					        )
 | 
				
			||||||
        val fragmentTransaction = childFragmentManager.beginTransaction()
 | 
					        val fragmentTransaction = childFragmentManager.beginTransaction()
 | 
				
			||||||
        fragmentTransaction.add(R.id.fl_container, commentListFragment, commentListFragmentTag)
 | 
					        fragmentTransaction.add(R.id.fl_container, commentListFragment, commentListFragmentTag)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -35,6 +35,7 @@ class CreatorCommunityCommentListFragment : BaseFragment<FragmentAudioContentCom
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    private var creatorId: Long = 0
 | 
					    private var creatorId: Long = 0
 | 
				
			||||||
    private var postId: Long = 0
 | 
					    private var postId: Long = 0
 | 
				
			||||||
 | 
					    private var existOrdered: Boolean = false
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    override fun onCreateView(
 | 
					    override fun onCreateView(
 | 
				
			||||||
        inflater: LayoutInflater,
 | 
					        inflater: LayoutInflater,
 | 
				
			||||||
@@ -43,6 +44,7 @@ class CreatorCommunityCommentListFragment : BaseFragment<FragmentAudioContentCom
 | 
				
			|||||||
    ): View? {
 | 
					    ): View? {
 | 
				
			||||||
        creatorId = arguments?.getLong(Constants.EXTRA_COMMUNITY_CREATOR_ID) ?: 0
 | 
					        creatorId = arguments?.getLong(Constants.EXTRA_COMMUNITY_CREATOR_ID) ?: 0
 | 
				
			||||||
        postId = arguments?.getLong(Constants.EXTRA_COMMUNITY_POST_ID) ?: 0
 | 
					        postId = arguments?.getLong(Constants.EXTRA_COMMUNITY_POST_ID) ?: 0
 | 
				
			||||||
 | 
					        existOrdered = arguments?.getBoolean(Constants.EXTRA_COMMUNITY_EXIST_ORDERED) == true
 | 
				
			||||||
        return super.onCreateView(inflater, container, savedInstanceState)
 | 
					        return super.onCreateView(inflater, container, savedInstanceState)
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -73,8 +75,20 @@ class CreatorCommunityCommentListFragment : BaseFragment<FragmentAudioContentCom
 | 
				
			|||||||
        binding.ivCommentSend.setOnClickListener {
 | 
					        binding.ivCommentSend.setOnClickListener {
 | 
				
			||||||
            hideKeyboard()
 | 
					            hideKeyboard()
 | 
				
			||||||
            val comment = binding.etComment.text.toString()
 | 
					            val comment = binding.etComment.text.toString()
 | 
				
			||||||
 | 
					            val isSecret = binding.tvSecret.isSelected
 | 
				
			||||||
 | 
					            viewModel.registerComment(postId, comment, isSecret = isSecret)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            binding.etComment.setText("")
 | 
					            binding.etComment.setText("")
 | 
				
			||||||
            viewModel.registerComment(postId, comment)
 | 
					            binding.tvSecret.isSelected = false
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if (existOrdered) {
 | 
				
			||||||
 | 
					            binding.tvSecret.visibility = View.VISIBLE
 | 
				
			||||||
 | 
					            binding.tvSecret.setOnClickListener {
 | 
				
			||||||
 | 
					                binding.tvSecret.isSelected = !binding.tvSecret.isSelected
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        } else {
 | 
				
			||||||
 | 
					            binding.tvSecret.visibility = View.GONE
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        adapter = CreatorCommunityCommentAdapter(
 | 
					        adapter = CreatorCommunityCommentAdapter(
 | 
				
			||||||
@@ -210,10 +224,15 @@ class CreatorCommunityCommentListFragment : BaseFragment<FragmentAudioContentCom
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    companion object {
 | 
					    companion object {
 | 
				
			||||||
        fun newInstance(creatorId: Long, postId: Long): CreatorCommunityCommentListFragment {
 | 
					        fun newInstance(
 | 
				
			||||||
 | 
					            creatorId: Long,
 | 
				
			||||||
 | 
					            postId: Long,
 | 
				
			||||||
 | 
					            existOrdered: Boolean
 | 
				
			||||||
 | 
					        ): CreatorCommunityCommentListFragment {
 | 
				
			||||||
            val args = Bundle()
 | 
					            val args = Bundle()
 | 
				
			||||||
            args.putLong(Constants.EXTRA_COMMUNITY_CREATOR_ID, creatorId)
 | 
					            args.putLong(Constants.EXTRA_COMMUNITY_CREATOR_ID, creatorId)
 | 
				
			||||||
            args.putLong(Constants.EXTRA_COMMUNITY_POST_ID, postId)
 | 
					            args.putLong(Constants.EXTRA_COMMUNITY_POST_ID, postId)
 | 
				
			||||||
 | 
					            args.putBoolean(Constants.EXTRA_COMMUNITY_EXIST_ORDERED, existOrdered)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            val fragment = CreatorCommunityCommentListFragment()
 | 
					            val fragment = CreatorCommunityCommentListFragment()
 | 
				
			||||||
            fragment.arguments = args
 | 
					            fragment.arguments = args
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -87,7 +87,12 @@ class CreatorCommunityCommentListViewModel(
 | 
				
			|||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    fun registerComment(postId: Long, comment: String, commentId: Long? = null) {
 | 
					    fun registerComment(
 | 
				
			||||||
 | 
					        postId: Long,
 | 
				
			||||||
 | 
					        comment: String,
 | 
				
			||||||
 | 
					        commentId: Long? = null,
 | 
				
			||||||
 | 
					        isSecret: Boolean = false
 | 
				
			||||||
 | 
					    ) {
 | 
				
			||||||
        if (!_isLoading.value!!) {
 | 
					        if (!_isLoading.value!!) {
 | 
				
			||||||
            _isLoading.value = true
 | 
					            _isLoading.value = true
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
@@ -97,6 +102,7 @@ class CreatorCommunityCommentListViewModel(
 | 
				
			|||||||
                postId = postId,
 | 
					                postId = postId,
 | 
				
			||||||
                comment = comment,
 | 
					                comment = comment,
 | 
				
			||||||
                parentId = commentId,
 | 
					                parentId = commentId,
 | 
				
			||||||
 | 
					                isSecret = isSecret,
 | 
				
			||||||
                token = "Bearer ${SharedPreferenceManager.token}"
 | 
					                token = "Bearer ${SharedPreferenceManager.token}"
 | 
				
			||||||
            )
 | 
					            )
 | 
				
			||||||
                .subscribeOn(Schedulers.io())
 | 
					                .subscribeOn(Schedulers.io())
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,5 +1,6 @@
 | 
				
			|||||||
<?xml version="1.0" encoding="utf-8"?>
 | 
					<?xml version="1.0" encoding="utf-8"?>
 | 
				
			||||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 | 
					<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 | 
				
			||||||
 | 
					    xmlns:app="http://schemas.android.com/apk/res-auto"
 | 
				
			||||||
    xmlns:tools="http://schemas.android.com/tools"
 | 
					    xmlns:tools="http://schemas.android.com/tools"
 | 
				
			||||||
    android:layout_width="match_parent"
 | 
					    android:layout_width="match_parent"
 | 
				
			||||||
    android:layout_height="wrap_content"
 | 
					    android:layout_height="wrap_content"
 | 
				
			||||||
@@ -141,29 +142,50 @@
 | 
				
			|||||||
        android:padding="10.3dp"
 | 
					        android:padding="10.3dp"
 | 
				
			||||||
        android:visibility="gone">
 | 
					        android:visibility="gone">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        <LinearLayout
 | 
					        <RelativeLayout
 | 
				
			||||||
            android:layout_width="match_parent"
 | 
					            android:layout_width="match_parent"
 | 
				
			||||||
            android:layout_height="wrap_content"
 | 
					            android:layout_height="wrap_content">
 | 
				
			||||||
            android:orientation="horizontal">
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
            <TextView
 | 
					            <LinearLayout
 | 
				
			||||||
                android:layout_width="wrap_content"
 | 
					                android:layout_width="wrap_content"
 | 
				
			||||||
                android:layout_height="wrap_content"
 | 
					                android:layout_height="wrap_content"
 | 
				
			||||||
                android:fontFamily="@font/gmarket_sans_medium"
 | 
					                android:orientation="horizontal"
 | 
				
			||||||
                android:text="댓글"
 | 
					                tools:ignore="RelativeOverlap">
 | 
				
			||||||
                android:textColor="@color/white"
 | 
					
 | 
				
			||||||
                android:textSize="12sp" />
 | 
					                <TextView
 | 
				
			||||||
 | 
					                    android:layout_width="wrap_content"
 | 
				
			||||||
 | 
					                    android:layout_height="wrap_content"
 | 
				
			||||||
 | 
					                    android:fontFamily="@font/gmarket_sans_medium"
 | 
				
			||||||
 | 
					                    android:text="댓글"
 | 
				
			||||||
 | 
					                    android:textColor="@color/white"
 | 
				
			||||||
 | 
					                    android:textSize="12sp" />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                <TextView
 | 
				
			||||||
 | 
					                    android:id="@+id/tv_comment_count"
 | 
				
			||||||
 | 
					                    android:layout_width="wrap_content"
 | 
				
			||||||
 | 
					                    android:layout_height="wrap_content"
 | 
				
			||||||
 | 
					                    android:layout_marginStart="5.3dp"
 | 
				
			||||||
 | 
					                    android:fontFamily="@font/gmarket_sans_medium"
 | 
				
			||||||
 | 
					                    android:textColor="@color/color_909090"
 | 
				
			||||||
 | 
					                    android:textSize="12sp"
 | 
				
			||||||
 | 
					                    tools:text="1,204" />
 | 
				
			||||||
 | 
					            </LinearLayout>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            <TextView
 | 
					            <TextView
 | 
				
			||||||
                android:id="@+id/tv_comment_count"
 | 
					                android:id="@+id/tv_secret"
 | 
				
			||||||
                android:layout_width="wrap_content"
 | 
					                android:layout_width="wrap_content"
 | 
				
			||||||
                android:layout_height="wrap_content"
 | 
					                android:layout_height="wrap_content"
 | 
				
			||||||
                android:layout_marginStart="5.3dp"
 | 
					                android:layout_alignParentEnd="true"
 | 
				
			||||||
 | 
					                android:button="@null"
 | 
				
			||||||
 | 
					                android:drawablePadding="8dp"
 | 
				
			||||||
                android:fontFamily="@font/gmarket_sans_medium"
 | 
					                android:fontFamily="@font/gmarket_sans_medium"
 | 
				
			||||||
                android:textColor="@color/color_909090"
 | 
					                android:gravity="center"
 | 
				
			||||||
                android:textSize="12sp"
 | 
					                android:text="비밀댓글"
 | 
				
			||||||
                tools:text="1,204" />
 | 
					                android:textColor="@color/color_selected_secret"
 | 
				
			||||||
        </LinearLayout>
 | 
					                android:textSize="12.5sp"
 | 
				
			||||||
 | 
					                android:visibility="gone"
 | 
				
			||||||
 | 
					                app:drawableStartCompat="@drawable/ic_select_square" />
 | 
				
			||||||
 | 
					        </RelativeLayout>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        <LinearLayout
 | 
					        <LinearLayout
 | 
				
			||||||
            android:layout_width="match_parent"
 | 
					            android:layout_width="match_parent"
 | 
				
			||||||
@@ -238,7 +260,7 @@
 | 
				
			|||||||
        android:background="@drawable/bg_round_corner_5_3_333333"
 | 
					        android:background="@drawable/bg_round_corner_5_3_333333"
 | 
				
			||||||
        android:gravity="center"
 | 
					        android:gravity="center"
 | 
				
			||||||
        android:orientation="vertical"
 | 
					        android:orientation="vertical"
 | 
				
			||||||
        android:visibility="visible">
 | 
					        android:visibility="gone">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        <ImageView
 | 
					        <ImageView
 | 
				
			||||||
            android:layout_width="wrap_content"
 | 
					            android:layout_width="wrap_content"
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user