fix(dm): 채팅방 입력과 프로필 표시를 보정한다

This commit is contained in:
2026-07-11 22:03:16 +09:00
parent 30f7bd7556
commit d436efdc66
2 changed files with 102 additions and 11 deletions
@@ -4,15 +4,15 @@ import android.content.Context
import android.content.Intent
import android.text.Editable
import android.text.TextWatcher
import android.view.View
import android.view.inputmethod.EditorInfo
import android.view.inputmethod.InputMethodManager
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import androidx.recyclerview.widget.SimpleItemAnimator
import coil.transform.CircleCropTransformation
import kr.co.vividnext.sodalive.R
import kr.co.vividnext.sodalive.base.BaseActivity
import kr.co.vividnext.sodalive.common.LoadingDialog
import kr.co.vividnext.sodalive.common.SharedPreferenceManager
import kr.co.vividnext.sodalive.databinding.ActivityDmChatRoomBinding
import kr.co.vividnext.sodalive.extensions.loadUrl
import kr.co.vividnext.sodalive.v2.main.chat.dm.model.DmChatRoomUiState
@@ -25,6 +25,7 @@ class DmChatRoomActivity : BaseActivity<ActivityDmChatRoomBinding>(
private val viewModel: DmChatRoomViewModel by viewModel()
private val messageAdapter = DmChatMessageAdapter { localId -> viewModel.retry(localId) }
private val loadingDialog: LoadingDialog by lazy { LoadingDialog(this, layoutInflater) }
private lateinit var layoutManager: LinearLayoutManager
private var roomId: Long = 0L
private var creatorId: Long = 0L
@@ -119,6 +120,9 @@ class DmChatRoomActivity : BaseActivity<ActivityDmChatRoomBinding>(
viewModel.roomOpenedEventLiveData.observe(this) {
if (it.consume() == true) connectRealtimeIfStarted()
}
viewModel.isRealtimeConnectingLiveData.observe(this) { isConnecting ->
updateRealtimeLoadingDialog(isConnecting)
}
}
private fun bindContent(state: DmChatRoomUiState.Content) {
@@ -129,7 +133,7 @@ class DmChatRoomActivity : BaseActivity<ActivityDmChatRoomBinding>(
error(R.drawable.ic_placeholder_profile)
transformations(CircleCropTransformation())
}
binding.ivBackgroundProfile.loadUrl(state.opponentProfileImageUrl) {
binding.ivBackgroundProfile.loadUrl(SharedPreferenceManager.profileImage) {
placeholder(R.drawable.ic_placeholder_profile)
error(R.drawable.ic_placeholder_profile)
}
@@ -143,10 +147,10 @@ class DmChatRoomActivity : BaseActivity<ActivityDmChatRoomBinding>(
val text = binding.etMessage.text?.toString().orEmpty()
if (text.isBlank()) return
viewModel.sendText(text)
binding.etMessage.setText("")
setSendButtonEnabled(false)
hideKeyboard(binding.etMessage)
if (viewModel.sendText(text)) {
binding.etMessage.setText("")
setSendButtonEnabled(false)
}
}
private fun setSendButtonEnabled(enabled: Boolean) {
@@ -182,10 +186,12 @@ class DmChatRoomActivity : BaseActivity<ActivityDmChatRoomBinding>(
viewModel.connectRealtime()
}
private fun hideKeyboard(view: View) {
val imm = getSystemService(INPUT_METHOD_SERVICE) as? InputMethodManager
imm?.hideSoftInputFromWindow(view.windowToken, 0)
view.clearFocus()
private fun updateRealtimeLoadingDialog(isConnecting: Boolean) {
if (isConnecting) {
loadingDialog.show(screenWidth)
} else {
loadingDialog.dismiss()
}
}
companion object {