From bb7476f64065de0187efa66e7112d397128cc7ce Mon Sep 17 00:00:00 2001 From: klaus Date: Sun, 20 Aug 2023 23:37:17 +0900 Subject: [PATCH] =?UTF-8?q?=EB=A7=88=EC=9D=B4=ED=8E=98=EC=9D=B4=EC=A7=80?= =?UTF-8?q?=20=ED=83=AD=20-=20=EA=B5=AC=EB=A7=A4=EB=82=B4=EC=97=AD=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sodalive/mypage/MyPageFragment.kt | 65 ++++++++++++++++++- .../sodalive/mypage/MyPageResponse.kt | 2 + app/src/main/res/layout/fragment_my.xml | 2 +- 3 files changed, 66 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/kr/co/vividnext/sodalive/mypage/MyPageFragment.kt b/app/src/main/java/kr/co/vividnext/sodalive/mypage/MyPageFragment.kt index 623f454..c1a4b8e 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/mypage/MyPageFragment.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/mypage/MyPageFragment.kt @@ -2,22 +2,29 @@ package kr.co.vividnext.sodalive.mypage import android.annotation.SuppressLint import android.content.Intent +import android.graphics.Rect import android.net.Uri import android.os.Bundle import android.view.View import android.webkit.URLUtil import android.widget.LinearLayout import android.widget.Toast +import androidx.recyclerview.widget.LinearLayoutManager +import androidx.recyclerview.widget.RecyclerView import coil.load import coil.transform.CircleCropTransformation import com.google.gson.Gson import kr.co.vividnext.sodalive.R +import kr.co.vividnext.sodalive.audio_content.detail.AudioContentDetailActivity +import kr.co.vividnext.sodalive.audio_content.order.AudioContentOrderListActivity +import kr.co.vividnext.sodalive.audio_content.order.AudioContentOrderListAdapter import kr.co.vividnext.sodalive.base.BaseFragment 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.FragmentMyBinding import kr.co.vividnext.sodalive.explorer.profile.UserProfileActivity +import kr.co.vividnext.sodalive.extensions.dpToPx import kr.co.vividnext.sodalive.extensions.moneyFormat import kr.co.vividnext.sodalive.live.reservation_status.LiveReservationStatusActivity import kr.co.vividnext.sodalive.mypage.auth.Auth @@ -36,6 +43,7 @@ class MyPageFragment : BaseFragment(FragmentMyBinding::inflat private val viewModel: MyPageViewModel by inject() private lateinit var loadingDialog: LoadingDialog + private lateinit var orderListAdapter: AudioContentOrderListAdapter override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) @@ -51,6 +59,42 @@ class MyPageFragment : BaseFragment(FragmentMyBinding::inflat } private fun setupView() { + orderListAdapter = AudioContentOrderListAdapter { + startActivity( + Intent(requireContext(), AudioContentDetailActivity::class.java) + .apply { putExtra(Constants.EXTRA_AUDIO_CONTENT_ID, it) } + ) + } + + binding.rvOrderList.layoutManager = LinearLayoutManager( + requireContext(), + LinearLayoutManager.VERTICAL, + false + ) + + binding.rvOrderList.addItemDecoration(object : RecyclerView.ItemDecoration() { + override fun getItemOffsets( + outRect: Rect, + view: View, + parent: RecyclerView, + state: RecyclerView.State + ) { + super.getItemOffsets(outRect, view, parent, state) + + when (parent.getChildAdapterPosition(view)) { + orderListAdapter.itemCount - 1 -> { + outRect.bottom = 0 + } + + else -> { + outRect.bottom = 13.3f.dpToPx().toInt() + } + } + } + }) + + binding.rvOrderList.adapter = orderListAdapter + binding.ivSettings.setOnClickListener { startActivity( Intent( @@ -146,7 +190,7 @@ class MyPageFragment : BaseFragment(FragmentMyBinding::inflat } } - @SuppressLint("SetTextI18n") + @SuppressLint("SetTextI18n", "NotifyDataSetChanged") private fun bindData() { viewModel.toastLiveData.observe(viewLifecycleOwner) { it?.let { Toast.makeText(requireContext(), it, Toast.LENGTH_LONG).show() } @@ -211,7 +255,24 @@ class MyPageFragment : BaseFragment(FragmentMyBinding::inflat } binding.tvTotalCan.text = (it.chargeCan + it.rewardCan).moneyFormat() - binding.tvReservationSuda.text = "${it.liveReservationCount}" + binding.tvReservationLive.text = "${it.liveReservationCount}" + + if (it.orderList.totalCount > 0) { + binding.llOrderList.visibility = View.VISIBLE + orderListAdapter.items.addAll(it.orderList.items) + orderListAdapter.notifyDataSetChanged() + + binding.tvAllOrderList.setOnClickListener { + startActivity( + Intent( + requireContext(), + AudioContentOrderListActivity::class.java + ) + ) + } + } else { + binding.llOrderList.visibility = View.GONE + } } } } diff --git a/app/src/main/java/kr/co/vividnext/sodalive/mypage/MyPageResponse.kt b/app/src/main/java/kr/co/vividnext/sodalive/mypage/MyPageResponse.kt index 04e8f01..b9432c6 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/mypage/MyPageResponse.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/mypage/MyPageResponse.kt @@ -1,6 +1,7 @@ package kr.co.vividnext.sodalive.mypage import com.google.gson.annotations.SerializedName +import kr.co.vividnext.sodalive.audio_content.order.GetAudioContentOrderListResponse data class MyPageResponse( @SerializedName("nickname") val nickname: String, @@ -14,4 +15,5 @@ data class MyPageResponse( @SerializedName("liveReservationCount") val liveReservationCount: Int, @SerializedName("likeCount") val likeCount: Int, @SerializedName("isAuth") val isAuth: Boolean, + @SerializedName("orderList") val orderList: GetAudioContentOrderListResponse ) diff --git a/app/src/main/res/layout/fragment_my.xml b/app/src/main/res/layout/fragment_my.xml index 21db53d..d7fbb9f 100644 --- a/app/src/main/res/layout/fragment_my.xml +++ b/app/src/main/res/layout/fragment_my.xml @@ -258,7 +258,7 @@ android:textSize="14.7sp" />