feat(ui): 캐릭터 탭
- loadingDialog, Toast 라이브 데이터 옵저버 연결
This commit is contained in:
@@ -6,7 +6,6 @@ import android.view.LayoutInflater
|
|||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import androidx.recyclerview.widget.RecyclerView
|
import androidx.recyclerview.widget.RecyclerView
|
||||||
import coil.transform.RoundedCornersTransformation
|
|
||||||
import com.bumptech.glide.Glide
|
import com.bumptech.glide.Glide
|
||||||
import com.bumptech.glide.load.resource.bitmap.RoundedCorners
|
import com.bumptech.glide.load.resource.bitmap.RoundedCorners
|
||||||
import com.bumptech.glide.request.RequestOptions
|
import com.bumptech.glide.request.RequestOptions
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ import android.net.Uri
|
|||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.widget.LinearLayout
|
import android.widget.LinearLayout
|
||||||
|
import android.widget.Toast
|
||||||
import androidx.annotation.OptIn
|
import androidx.annotation.OptIn
|
||||||
import androidx.core.content.ContextCompat
|
import androidx.core.content.ContextCompat
|
||||||
import androidx.media3.common.util.UnstableApi
|
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.RecentCharacter
|
||||||
import kr.co.vividnext.sodalive.chat.character.recent.RecentCharacterAdapter
|
import kr.co.vividnext.sodalive.chat.character.recent.RecentCharacterAdapter
|
||||||
import kr.co.vividnext.sodalive.common.Constants
|
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.common.SharedPreferenceManager
|
||||||
import kr.co.vividnext.sodalive.databinding.FragmentCharacterTabBinding
|
import kr.co.vividnext.sodalive.databinding.FragmentCharacterTabBinding
|
||||||
import kr.co.vividnext.sodalive.explorer.profile.UserProfileActivity
|
import kr.co.vividnext.sodalive.explorer.profile.UserProfileActivity
|
||||||
@@ -43,15 +45,19 @@ class CharacterTabFragment : BaseFragment<FragmentCharacterTabBinding>(
|
|||||||
private lateinit var popularCharacterAdapter: CharacterAdapter
|
private lateinit var popularCharacterAdapter: CharacterAdapter
|
||||||
private lateinit var newCharacterAdapter: CharacterAdapter
|
private lateinit var newCharacterAdapter: CharacterAdapter
|
||||||
private lateinit var curationSectionAdapter: CurationSectionAdapter
|
private lateinit var curationSectionAdapter: CurationSectionAdapter
|
||||||
|
private lateinit var loadingDialog: LoadingDialog
|
||||||
|
|
||||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||||
super.onViewCreated(view, savedInstanceState)
|
super.onViewCreated(view, savedInstanceState)
|
||||||
setupView()
|
setupView()
|
||||||
|
observeViewModel()
|
||||||
|
|
||||||
viewModel.fetchData()
|
viewModel.fetchData()
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun setupView() {
|
private fun setupView() {
|
||||||
|
loadingDialog = LoadingDialog(requireActivity(), layoutInflater)
|
||||||
|
|
||||||
setupBanner()
|
setupBanner()
|
||||||
setupRecentCharactersRecyclerView()
|
setupRecentCharactersRecyclerView()
|
||||||
setupPopularCharactersRecyclerView()
|
setupPopularCharactersRecyclerView()
|
||||||
@@ -376,6 +382,19 @@ class CharacterTabFragment : BaseFragment<FragmentCharacterTabBinding>(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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) {
|
private fun onRecentCharacterClick(character: RecentCharacter) {
|
||||||
// TODO: 최근 대화한 캐릭터 클릭 처리
|
// TODO: 최근 대화한 캐릭터 클릭 처리
|
||||||
|
|||||||
@@ -63,6 +63,9 @@ class CharacterTabViewModel(
|
|||||||
_popularCharacters.value = data.popularCharacters
|
_popularCharacters.value = data.popularCharacters
|
||||||
_newCharacters.value = data.newCharacters
|
_newCharacters.value = data.newCharacters
|
||||||
_curationSections.value = data.curationSections
|
_curationSections.value = data.curationSections
|
||||||
|
} else {
|
||||||
|
_toastLiveData.value =
|
||||||
|
it.message ?: "알 수 없는 오류가 발생했습니다. 다시 시도해 주세요."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user