fix(dm): 채팅방 입력과 프로필 표시를 보정한다
This commit is contained in:
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user