package com.covalima.rekomendasaunaihan.ui.favorito import android.content.Intent import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import android.widget.Toast import androidx.fragment.app.Fragment import androidx.recyclerview.widget.GridLayoutManager import com.covalima.rekomendasaunaihan.databinding.FragmentFavoritoBinding import com.covalima.rekomendasaunaihan.model.ApiResponse import com.covalima.rekomendasaunaihan.model.Favorito import com.covalima.rekomendasaunaihan.network.ApiClient import com.covalima.rekomendasaunaihan.ui.detail.DetailAihanActivity import com.covalima.rekomendasaunaihan.util.DeviceUtil import retrofit2.Call import retrofit2.Callback import retrofit2.Response /** * "Lista Favoritu" — hatudu hotu-hotu ai-han ne'ebé utilizadór (device * ne'e) marka favoritu husi rezultadu rekomendasaun (ikon fuik/heart), * atu nune'e bele haree fila later. */ class FavoritoFragment : Fragment() { private var _binding: FragmentFavoritoBinding? = null private val binding get() = _binding!! private lateinit var adapter: FavoritoAdapter override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? ): View { _binding = FragmentFavoritoBinding.inflate(inflater, container, false) return binding.root } override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) adapter = FavoritoAdapter(emptyList()) { fav -> val intent = Intent(requireContext(), DetailAihanActivity::class.java) intent.putExtra("id_aihan", fav.idAihan) startActivity(intent) } binding.rvFavoritu.layoutManager = GridLayoutManager(requireContext(), 2) binding.rvFavoritu.adapter = adapter binding.swipeRefresh.setOnRefreshListener { loadFavoritu() } loadFavoritu() } override fun onResume() { super.onResume() // Rekarrega kada dala fragment ne'e sai visível fali (sr: hafoin // aumenta favoritu foun husi pájina rezultadu rekomendasaun) loadFavoritu() } private fun loadFavoritu() { binding.progressBar.visibility = View.VISIBLE binding.tvEmpty.visibility = View.GONE val deviceId = DeviceUtil.getDeviceId(requireContext()) ApiClient.apiService.getListFavorito(deviceId).enqueue(object : Callback>> { override fun onResponse( call: Call>>, response: Response>> ) { binding.progressBar.visibility = View.GONE binding.swipeRefresh.isRefreshing = false val data = response.body()?.data if (data.isNullOrEmpty()) { binding.tvEmpty.visibility = View.VISIBLE } else { binding.tvEmpty.visibility = View.GONE adapter.updateData(data) } } override fun onFailure(call: Call>>, t: Throwable) { binding.progressBar.visibility = View.GONE binding.swipeRefresh.isRefreshing = false binding.tvEmpty.visibility = View.VISIBLE Toast.makeText(requireContext(), "Konesaun falha: ${t.message}", Toast.LENGTH_SHORT).show() } }) } override fun onDestroyView() { super.onDestroyView() _binding = null } }