feat(character-main): 최근 대화한 캐릭터

- 이미지 표시 및 클릭 이벤트 적용
This commit is contained in:
2025-08-14 01:04:53 +09:00
parent d3a64d8359
commit 012437e599
5 changed files with 9 additions and 12 deletions

View File

@@ -11,6 +11,7 @@ import androidx.core.content.ContextCompat
import androidx.media3.common.util.UnstableApi import androidx.media3.common.util.UnstableApi
import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
import com.google.gson.Gson
import com.zhpan.bannerview.BaseBannerAdapter import com.zhpan.bannerview.BaseBannerAdapter
import com.zhpan.indicator.enums.IndicatorSlideMode import com.zhpan.indicator.enums.IndicatorSlideMode
import com.zhpan.indicator.enums.IndicatorStyle import com.zhpan.indicator.enums.IndicatorStyle
@@ -19,8 +20,8 @@ import kr.co.vividnext.sodalive.base.BaseFragment
import kr.co.vividnext.sodalive.chat.character.curation.CurationSectionAdapter import kr.co.vividnext.sodalive.chat.character.curation.CurationSectionAdapter
import kr.co.vividnext.sodalive.chat.character.detail.CharacterDetailActivity import kr.co.vividnext.sodalive.chat.character.detail.CharacterDetailActivity
import kr.co.vividnext.sodalive.chat.character.detail.CharacterDetailActivity.Companion.EXTRA_CHARACTER_ID import kr.co.vividnext.sodalive.chat.character.detail.CharacterDetailActivity.Companion.EXTRA_CHARACTER_ID
import kr.co.vividnext.sodalive.chat.character.recent.RecentCharacter
import kr.co.vividnext.sodalive.chat.character.recent.RecentCharacterAdapter import kr.co.vividnext.sodalive.chat.character.recent.RecentCharacterAdapter
import kr.co.vividnext.sodalive.chat.talk.room.ChatRoomActivity
import kr.co.vividnext.sodalive.common.LoadingDialog import kr.co.vividnext.sodalive.common.LoadingDialog
import kr.co.vividnext.sodalive.common.SharedPreferenceManager import kr.co.vividnext.sodalive.common.SharedPreferenceManager
import kr.co.vividnext.sodalive.databinding.FragmentCharacterTabBinding import kr.co.vividnext.sodalive.databinding.FragmentCharacterTabBinding
@@ -30,7 +31,6 @@ import kr.co.vividnext.sodalive.mypage.MyPageViewModel
import kr.co.vividnext.sodalive.mypage.auth.Auth import kr.co.vividnext.sodalive.mypage.auth.Auth
import kr.co.vividnext.sodalive.mypage.auth.AuthVerifyRequest import kr.co.vividnext.sodalive.mypage.auth.AuthVerifyRequest
import kr.co.vividnext.sodalive.splash.SplashActivity import kr.co.vividnext.sodalive.splash.SplashActivity
import com.google.gson.Gson
import org.koin.android.ext.android.inject import org.koin.android.ext.android.inject
// 캐릭터 탭 프래그먼트 // 캐릭터 탭 프래그먼트
@@ -412,8 +412,8 @@ class CharacterTabFragment : BaseFragment<FragmentCharacterTabBinding>(
} }
} }
private fun onRecentCharacterClick(character: RecentCharacter) { private fun onRecentCharacterClick(roomId: Long) {
// TODO: 최근 대화한 캐릭터 클릭 처리 startActivity(ChatRoomActivity.newIntent(requireContext(), roomId))
} }
private fun onCharacterClick(characterId: Long) { private fun onCharacterClick(characterId: Long) {

View File

@@ -137,8 +137,6 @@ class CharacterDetailActivity : BaseActivity<ActivityCharacterDetailBinding>(
// 2-1) 채팅방 생성 성공 처리 (이벤트) // 2-1) 채팅방 생성 성공 처리 (이벤트)
state.chatRoomId?.let { roomId -> state.chatRoomId?.let { roomId ->
showToast("채팅방이 생성되었습니다. (ID: $roomId)")
// 생성된 채팅방으로 이동 처리
startActivity(ChatRoomActivity.newIntent(this, roomId)) startActivity(ChatRoomActivity.newIntent(this, roomId))
viewModel.consumeChatRoomCreated() viewModel.consumeChatRoomCreated()
} }

View File

@@ -5,7 +5,7 @@ import com.google.gson.annotations.SerializedName
@Keep @Keep
data class RecentCharacter( data class RecentCharacter(
@SerializedName("id") val id: String, @SerializedName("roomId") val roomId: Long,
@SerializedName("name") val name: String, @SerializedName("name") val name: String,
@SerializedName("profileImageUrl") val profileImageUrl: String @SerializedName("imageUrl") val imageUrl: String
) )

View File

@@ -13,7 +13,7 @@ import kr.co.vividnext.sodalive.extensions.dpToPx
class RecentCharacterAdapter( class RecentCharacterAdapter(
private var characters: List<RecentCharacter> = emptyList(), private var characters: List<RecentCharacter> = emptyList(),
private val onCharacterClick: (RecentCharacter) -> Unit = {} private val onCharacterClick: (Long) -> Unit = {}
) : RecyclerView.Adapter<RecentCharacterAdapter.ViewHolder>() { ) : RecyclerView.Adapter<RecentCharacterAdapter.ViewHolder>() {
inner class ViewHolder( inner class ViewHolder(
@@ -23,7 +23,7 @@ class RecentCharacterAdapter(
fun bind(character: RecentCharacter) { fun bind(character: RecentCharacter) {
binding.tvName.text = character.name binding.tvName.text = character.name
Glide.with(context) Glide.with(context)
.load(character.profileImageUrl) .load(character.imageUrl)
.apply( .apply(
RequestOptions().transform( RequestOptions().transform(
RoundedCorners( RoundedCorners(
@@ -33,7 +33,7 @@ class RecentCharacterAdapter(
) )
.into(binding.ivProfile) .into(binding.ivProfile)
binding.root.setOnClickListener { onCharacterClick(character) } binding.root.setOnClickListener { onCharacterClick(character.roomId) }
} }
} }

View File

@@ -9,7 +9,6 @@
android:id="@+id/iv_profile" android:id="@+id/iv_profile"
android:layout_width="76dp" android:layout_width="76dp"
android:layout_height="76dp" android:layout_height="76dp"
android:background="@color/color_777777"
android:contentDescription="@null" android:contentDescription="@null"
android:scaleType="centerCrop" /> android:scaleType="centerCrop" />