마이페이지 탭 - 구매내역 추가

This commit is contained in:
klaus 2023-08-20 23:37:17 +09:00
parent 875d8361f3
commit bb7476f640
3 changed files with 66 additions and 3 deletions

View File

@ -2,22 +2,29 @@ package kr.co.vividnext.sodalive.mypage
import android.annotation.SuppressLint import android.annotation.SuppressLint
import android.content.Intent import android.content.Intent
import android.graphics.Rect
import android.net.Uri import android.net.Uri
import android.os.Bundle import android.os.Bundle
import android.view.View import android.view.View
import android.webkit.URLUtil import android.webkit.URLUtil
import android.widget.LinearLayout import android.widget.LinearLayout
import android.widget.Toast import android.widget.Toast
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import coil.load import coil.load
import coil.transform.CircleCropTransformation import coil.transform.CircleCropTransformation
import com.google.gson.Gson import com.google.gson.Gson
import kr.co.vividnext.sodalive.R 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.base.BaseFragment
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.LoadingDialog
import kr.co.vividnext.sodalive.common.SharedPreferenceManager import kr.co.vividnext.sodalive.common.SharedPreferenceManager
import kr.co.vividnext.sodalive.databinding.FragmentMyBinding import kr.co.vividnext.sodalive.databinding.FragmentMyBinding
import kr.co.vividnext.sodalive.explorer.profile.UserProfileActivity 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.extensions.moneyFormat
import kr.co.vividnext.sodalive.live.reservation_status.LiveReservationStatusActivity import kr.co.vividnext.sodalive.live.reservation_status.LiveReservationStatusActivity
import kr.co.vividnext.sodalive.mypage.auth.Auth import kr.co.vividnext.sodalive.mypage.auth.Auth
@ -36,6 +43,7 @@ class MyPageFragment : BaseFragment<FragmentMyBinding>(FragmentMyBinding::inflat
private val viewModel: MyPageViewModel by inject() private val viewModel: MyPageViewModel by inject()
private lateinit var loadingDialog: LoadingDialog private lateinit var loadingDialog: LoadingDialog
private lateinit var orderListAdapter: AudioContentOrderListAdapter
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState) super.onViewCreated(view, savedInstanceState)
@ -51,6 +59,42 @@ class MyPageFragment : BaseFragment<FragmentMyBinding>(FragmentMyBinding::inflat
} }
private fun setupView() { 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 { binding.ivSettings.setOnClickListener {
startActivity( startActivity(
Intent( Intent(
@ -146,7 +190,7 @@ class MyPageFragment : BaseFragment<FragmentMyBinding>(FragmentMyBinding::inflat
} }
} }
@SuppressLint("SetTextI18n") @SuppressLint("SetTextI18n", "NotifyDataSetChanged")
private fun bindData() { private fun bindData() {
viewModel.toastLiveData.observe(viewLifecycleOwner) { viewModel.toastLiveData.observe(viewLifecycleOwner) {
it?.let { Toast.makeText(requireContext(), it, Toast.LENGTH_LONG).show() } it?.let { Toast.makeText(requireContext(), it, Toast.LENGTH_LONG).show() }
@ -211,7 +255,24 @@ class MyPageFragment : BaseFragment<FragmentMyBinding>(FragmentMyBinding::inflat
} }
binding.tvTotalCan.text = (it.chargeCan + it.rewardCan).moneyFormat() 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
}
} }
} }
} }

View File

@ -1,6 +1,7 @@
package kr.co.vividnext.sodalive.mypage package kr.co.vividnext.sodalive.mypage
import com.google.gson.annotations.SerializedName import com.google.gson.annotations.SerializedName
import kr.co.vividnext.sodalive.audio_content.order.GetAudioContentOrderListResponse
data class MyPageResponse( data class MyPageResponse(
@SerializedName("nickname") val nickname: String, @SerializedName("nickname") val nickname: String,
@ -14,4 +15,5 @@ data class MyPageResponse(
@SerializedName("liveReservationCount") val liveReservationCount: Int, @SerializedName("liveReservationCount") val liveReservationCount: Int,
@SerializedName("likeCount") val likeCount: Int, @SerializedName("likeCount") val likeCount: Int,
@SerializedName("isAuth") val isAuth: Boolean, @SerializedName("isAuth") val isAuth: Boolean,
@SerializedName("orderList") val orderList: GetAudioContentOrderListResponse
) )

View File

@ -258,7 +258,7 @@
android:textSize="14.7sp" /> android:textSize="14.7sp" />
<TextView <TextView
android:id="@+id/tv_reservation_suda" android:id="@+id/tv_reservation_live"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:fontFamily="@font/gmarket_sans_medium" android:fontFamily="@font/gmarket_sans_medium"