feat(ui): 캐릭터 탭
- loadingDialog, Toast 라이브 데이터 옵저버 연결
This commit is contained in:
		@@ -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
 | 
			
		||||
 
 | 
			
		||||
@@ -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<FragmentCharacterTabBinding>(
 | 
			
		||||
    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<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) {
 | 
			
		||||
        // TODO: 최근 대화한 캐릭터 클릭 처리
 | 
			
		||||
 
 | 
			
		||||
@@ -63,6 +63,9 @@ class CharacterTabViewModel(
 | 
			
		||||
                            _popularCharacters.value = data.popularCharacters
 | 
			
		||||
                            _newCharacters.value = data.newCharacters
 | 
			
		||||
                            _curationSections.value = data.curationSections
 | 
			
		||||
                        } else {
 | 
			
		||||
                            _toastLiveData.value =
 | 
			
		||||
                                it.message ?: "알 수 없는 오류가 발생했습니다. 다시 시도해 주세요."
 | 
			
		||||
                        }
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user