From ea22c7244c40358f22f1fadd798eaa62dc1aab00 Mon Sep 17 00:00:00 2001 From: klaus Date: Tue, 5 Aug 2025 02:04:49 +0900 Subject: [PATCH] =?UTF-8?q?feat(ui):=20=EC=BA=90=EB=A6=AD=ED=84=B0=20?= =?UTF-8?q?=ED=83=AD=20-=20loadingDialog,=20Toast=20=EB=9D=BC=EC=9D=B4?= =?UTF-8?q?=EB=B8=8C=20=EB=8D=B0=EC=9D=B4=ED=84=B0=20=EC=98=B5=EC=A0=80?= =?UTF-8?q?=EB=B2=84=20=EC=97=B0=EA=B2=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../chat/character/CharacterAdapter.kt | 1 - .../chat/character/CharacterTabFragment.kt | 19 +++++++++++++++++++ .../chat/character/CharacterTabViewModel.kt | 3 +++ 3 files changed, 22 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/kr/co/vividnext/sodalive/chat/character/CharacterAdapter.kt b/app/src/main/java/kr/co/vividnext/sodalive/chat/character/CharacterAdapter.kt index bc381474..869e9e6b 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/chat/character/CharacterAdapter.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/chat/character/CharacterAdapter.kt @@ -6,7 +6,6 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import androidx.recyclerview.widget.RecyclerView -import coil.transform.RoundedCornersTransformation import com.bumptech.glide.Glide import com.bumptech.glide.load.resource.bitmap.RoundedCorners import com.bumptech.glide.request.RequestOptions diff --git a/app/src/main/java/kr/co/vividnext/sodalive/chat/character/CharacterTabFragment.kt b/app/src/main/java/kr/co/vividnext/sodalive/chat/character/CharacterTabFragment.kt index d54d38cb..9e6c8697 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/chat/character/CharacterTabFragment.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/chat/character/CharacterTabFragment.kt @@ -6,6 +6,7 @@ import android.net.Uri import android.os.Bundle import android.view.View import android.widget.LinearLayout +import android.widget.Toast import androidx.annotation.OptIn import androidx.core.content.ContextCompat import androidx.media3.common.util.UnstableApi @@ -23,6 +24,7 @@ import kr.co.vividnext.sodalive.chat.character.curation.CurationSectionAdapter import kr.co.vividnext.sodalive.chat.character.recent.RecentCharacter import kr.co.vividnext.sodalive.chat.character.recent.RecentCharacterAdapter import kr.co.vividnext.sodalive.common.Constants +import kr.co.vividnext.sodalive.common.LoadingDialog import kr.co.vividnext.sodalive.common.SharedPreferenceManager import kr.co.vividnext.sodalive.databinding.FragmentCharacterTabBinding import kr.co.vividnext.sodalive.explorer.profile.UserProfileActivity @@ -43,15 +45,19 @@ class CharacterTabFragment : BaseFragment( private lateinit var popularCharacterAdapter: CharacterAdapter private lateinit var newCharacterAdapter: CharacterAdapter private lateinit var curationSectionAdapter: CurationSectionAdapter + private lateinit var loadingDialog: LoadingDialog override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) setupView() + observeViewModel() viewModel.fetchData() } private fun setupView() { + loadingDialog = LoadingDialog(requireActivity(), layoutInflater) + setupBanner() setupRecentCharactersRecyclerView() setupPopularCharactersRecyclerView() @@ -376,6 +382,19 @@ class CharacterTabFragment : BaseFragment( } } + private fun observeViewModel() { + viewModel.isLoading.observe(viewLifecycleOwner) { + if (it) { + loadingDialog.show(screenWidth) + } else { + loadingDialog.dismiss() + } + } + + viewModel.toastLiveData.observe(viewLifecycleOwner) { + it?.let { Toast.makeText(requireActivity(), it, Toast.LENGTH_LONG).show() } + } + } private fun onRecentCharacterClick(character: RecentCharacter) { // TODO: 최근 대화한 캐릭터 클릭 처리 diff --git a/app/src/main/java/kr/co/vividnext/sodalive/chat/character/CharacterTabViewModel.kt b/app/src/main/java/kr/co/vividnext/sodalive/chat/character/CharacterTabViewModel.kt index 4102106a..92e7137b 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/chat/character/CharacterTabViewModel.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/chat/character/CharacterTabViewModel.kt @@ -63,6 +63,9 @@ class CharacterTabViewModel( _popularCharacters.value = data.popularCharacters _newCharacters.value = data.newCharacters _curationSections.value = data.curationSections + } else { + _toastLiveData.value = + it.message ?: "알 수 없는 오류가 발생했습니다. 다시 시도해 주세요." } }, {