Skip to content

Commit

Permalink
[feat] : DoAndroidFragment 서버통신 ui state 관찰, ViewModelFactory를 사용하여 D…
Browse files Browse the repository at this point in the history
…oAndroidViewModel 초기화
  • Loading branch information
chanubc committed Jan 2, 2024
1 parent 2ba0067 commit ddef6cb
Showing 1 changed file with 23 additions and 23 deletions.
Original file line number Diff line number Diff line change
@@ -1,30 +1,33 @@
package org.sopt.dosopttemplate.ui.doandroid

import android.os.Bundle
import android.util.Log
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.Toast
import androidx.fragment.app.Fragment
import androidx.fragment.app.viewModels
import androidx.lifecycle.lifecycleScope
import com.google.android.material.carousel.CarouselLayoutManager
import com.google.android.material.carousel.CarouselSnapHelper
import com.google.android.material.carousel.HeroCarouselStrategy
import kotlinx.coroutines.launch
import org.sopt.dosopttemplate.databinding.FragmentDoAndroidBinding
import org.sopt.dosopttemplate.network.doandroid.ResponseReqresDto
import org.sopt.dosopttemplate.network.reqresApiFactory.ServicePool.reqresService
import org.sopt.dosopttemplate.ui.doandroid.adapter.CarouselHeroAdapter
import org.sopt.dosopttemplate.ui.doandroid.adapter.CarouselUserAdapter
import org.sopt.dosopttemplate.ui.home.HomeViewModel
import retrofit2.Call
import retrofit2.Callback
import retrofit2.Response
import org.sopt.dosopttemplate.utils.UiState
import org.sopt.dosopttemplate.utils.ViewModelFactory

class DoAndroidFragment : Fragment() {
private var _binding: FragmentDoAndroidBinding? = null

private val viewModel by viewModels<HomeViewModel>()

private val doAndroidViewModel: DoAndroidViewModel by viewModels {
ViewModelFactory()
}

private lateinit var carouselOriginalAdapter: CarouselUserAdapter

private val binding: FragmentDoAndroidBinding
Expand All @@ -48,26 +51,23 @@ class DoAndroidFragment : Fragment() {
}

private fun initUserApi() {
reqresService.getUserList(1).enqueue(object : Callback<ResponseReqresDto> {
override fun onResponse(
call: Call<ResponseReqresDto>,
response: Response<ResponseReqresDto>,
) {
if (response.isSuccessful) {
val data = response.body() ?: return

data.let {
carouselOriginalAdapter.setCarouselList(it.data)
doAndroidViewModel.getReqresUserList(1)
lifecycleScope.launch {
doAndroidViewModel.reqresUserState.collect {
when (it) {
is UiState.Success -> {
val reqresData = it.data
carouselOriginalAdapter.setCarouselList(reqresData)
}
} else {
Log.d("userlist", "fail")
}
}

override fun onFailure(call: Call<ResponseReqresDto>, t: Throwable) {
Log.e("doandroid", "Error: ${t.message}")
is UiState.Error -> {
Toast.makeText(requireContext(), "서버 연결실패", Toast.LENGTH_SHORT).show()
}

is UiState.Loading -> {}
}
}
})
}
}

private fun initHeroCarousel() = with(binding) {
Expand Down

0 comments on commit ddef6cb

Please sign in to comment.