마이 페이지

- 로그인 했을 때만 데이터를 조회하도록 수정
This commit is contained in:
klaus 2025-03-22 04:55:31 +09:00
parent 70fe5a4441
commit 3b3327be7b
8 changed files with 231 additions and 180 deletions

View File

@ -23,6 +23,7 @@ import kr.co.vividnext.sodalive.explorer.profile.UserProfileActivity
import kr.co.vividnext.sodalive.extensions.moneyFormat
import kr.co.vividnext.sodalive.following.FollowingCreatorActivity
import kr.co.vividnext.sodalive.live.reservation_status.LiveReservationStatusActivity
import kr.co.vividnext.sodalive.main.MainActivity
import kr.co.vividnext.sodalive.mypage.alarm.AlarmListActivity
import kr.co.vividnext.sodalive.mypage.auth.Auth
import kr.co.vividnext.sodalive.mypage.auth.AuthVerifyRequest
@ -55,78 +56,13 @@ class MyPageFragment : BaseFragment<FragmentMyBinding>(FragmentMyBinding::inflat
override fun onStart() {
super.onStart()
viewModel.getUserInfo()
if (SharedPreferenceManager.token.isNotBlank()) {
viewModel.getUserInfo()
}
}
private fun setupView() {
binding.ivSettings.setOnClickListener {
startActivity(
Intent(
requireActivity(),
SettingsActivity::class.java
)
)
}
binding.ivEdit.setOnClickListener {
startActivity(
Intent(
requireActivity(),
ProfileUpdateActivity::class.java
)
)
}
if (SharedPreferenceManager.userId == 17958L) {
binding.llCan.visibility = View.GONE
} else {
binding.llCan.visibility = View.VISIBLE
binding.llTotalCan.setOnClickListener {
startActivity(
Intent(
requireActivity(),
CanStatusActivity::class.java
)
)
}
binding.tvChargeCan.setOnClickListener {
startActivity(
Intent(
requireActivity(),
CanChargeActivity::class.java
)
)
}
}
binding.rlCoupon.setOnClickListener {
startActivity(
Intent(
requireActivity(),
CanCouponActivity::class.java
)
)
}
binding.rlAlarm.setOnClickListener {
startActivity(
Intent(
requireActivity(),
AlarmListActivity::class.java
)
)
}
binding.llReservationLive.setOnClickListener {
startActivity(
Intent(
requireActivity(),
LiveReservationStatusActivity::class.java
)
)
}
binding.rlServiceCenter.setOnClickListener {
startActivity(
Intent(
@ -136,70 +72,6 @@ class MyPageFragment : BaseFragment<FragmentMyBinding>(FragmentMyBinding::inflat
)
}
binding.tvAuth.setOnClickListener {
Auth.auth(requireActivity(), requireContext()) {
val bootpayResponse = Gson().fromJson(it, BootpayResponse::class.java)
val request = AuthVerifyRequest(receiptId = bootpayResponse.data.receiptId)
requireActivity().runOnUiThread {
viewModel.authVerify(request) {
startActivity(
Intent(
requireContext(),
SplashActivity::class.java
).apply {
addFlags(
Intent.FLAG_ACTIVITY_CLEAR_TASK or
Intent.FLAG_ACTIVITY_NEW_TASK
)
}
)
requireActivity().finish()
}
}
}
}
if (SharedPreferenceManager.role == MemberRole.CREATOR.name) {
binding.tvMyChannel.visibility = View.VISIBLE
binding.tvMyChannel.setOnClickListener {
startActivity(
Intent(
requireContext(),
UserProfileActivity::class.java
).apply {
putExtra(
Constants.EXTRA_USER_ID,
SharedPreferenceManager.userId
)
}
)
}
} else {
binding.tvMyChannel.visibility = View.GONE
}
binding.tvFollowingList.setOnClickListener {
startActivity(Intent(requireContext(), FollowingCreatorActivity::class.java))
}
binding.tvBlockMemberList.setOnClickListener {
startActivity(Intent(requireContext(), BlockMemberActivity::class.java))
}
binding.tvOrderList.setOnClickListener {
startActivity(
Intent(requireContext(), AudioContentBoxActivity::class.java)
)
}
binding.tvPlaylist.setOnClickListener {
startActivity(
Intent(requireContext(), AudioContentBoxActivity::class.java).apply {
putExtra(Constants.EXTRA_START_TAB_POSITION, 1)
}
)
}
val ivHowToUseLp = binding.ivHowToUse.layoutParams as LinearLayout.LayoutParams
ivHowToUseLp.width = screenWidth
ivHowToUseLp.height = (200 * screenWidth) / 1080
@ -210,6 +82,173 @@ class MyPageFragment : BaseFragment<FragmentMyBinding>(FragmentMyBinding::inflat
startActivity(Intent(Intent.ACTION_VIEW, Uri.parse(url)))
}
}
if (SharedPreferenceManager.token.isNotBlank()) {
binding.ivSettings.visibility = View.VISIBLE
binding.llProfileContainer.visibility = View.VISIBLE
binding.llProfileLoginContainer.visibility = View.GONE
binding.llFollowingMemberListContainer.visibility = View.VISIBLE
binding.rlAlarm.visibility = View.VISIBLE
binding.rlCoupon.visibility = View.VISIBLE
binding.llLockerContainer.visibility = View.VISIBLE
binding.llReservationStatusContainer.visibility = View.VISIBLE
binding.ivSettings.setOnClickListener {
startActivity(
Intent(
requireActivity(),
SettingsActivity::class.java
)
)
}
binding.ivEdit.setOnClickListener {
startActivity(
Intent(
requireActivity(),
ProfileUpdateActivity::class.java
)
)
}
if (SharedPreferenceManager.userId == 17958L) {
binding.llCan.visibility = View.GONE
} else {
binding.llCan.visibility = View.VISIBLE
binding.llTotalCan.setOnClickListener {
startActivity(
Intent(
requireActivity(),
CanStatusActivity::class.java
)
)
}
binding.tvChargeCan.setOnClickListener {
startActivity(
Intent(
requireActivity(),
CanChargeActivity::class.java
)
)
}
}
binding.rlCoupon.setOnClickListener {
startActivity(
Intent(
requireActivity(),
CanCouponActivity::class.java
)
)
}
binding.rlAlarm.setOnClickListener {
startActivity(
Intent(
requireActivity(),
AlarmListActivity::class.java
)
)
}
binding.llReservationLive.setOnClickListener {
startActivity(
Intent(
requireActivity(),
LiveReservationStatusActivity::class.java
)
)
}
binding.tvAuth.setOnClickListener {
Auth.auth(requireActivity(), requireContext()) {
val bootpayResponse = Gson().fromJson(it, BootpayResponse::class.java)
val request = AuthVerifyRequest(receiptId = bootpayResponse.data.receiptId)
requireActivity().runOnUiThread {
viewModel.authVerify(request) {
startActivity(
Intent(
requireContext(),
SplashActivity::class.java
).apply {
addFlags(
Intent.FLAG_ACTIVITY_CLEAR_TASK or
Intent.FLAG_ACTIVITY_NEW_TASK
)
}
)
requireActivity().finish()
}
}
}
}
if (SharedPreferenceManager.role == MemberRole.CREATOR.name) {
binding.tvMyChannel.visibility = View.VISIBLE
binding.tvMyChannel.setOnClickListener {
startActivity(
Intent(
requireContext(),
UserProfileActivity::class.java
).apply {
putExtra(
Constants.EXTRA_USER_ID,
SharedPreferenceManager.userId
)
}
)
}
} else {
binding.tvMyChannel.visibility = View.GONE
}
binding.tvFollowingList.setOnClickListener {
startActivity(Intent(requireContext(), FollowingCreatorActivity::class.java))
}
binding.tvBlockMemberList.setOnClickListener {
startActivity(Intent(requireContext(), BlockMemberActivity::class.java))
}
binding.tvOrderList.setOnClickListener {
startActivity(
Intent(requireContext(), AudioContentBoxActivity::class.java)
)
}
binding.tvPlaylist.setOnClickListener {
startActivity(
Intent(requireContext(), AudioContentBoxActivity::class.java).apply {
putExtra(Constants.EXTRA_START_TAB_POSITION, 1)
}
)
}
} else {
binding.tvTotalCan.text = "0"
binding.ivSettings.visibility = View.GONE
binding.llProfileContainer.visibility = View.GONE
binding.llProfileLoginContainer.visibility = View.VISIBLE
binding.llFollowingMemberListContainer.visibility = View.GONE
binding.rlAlarm.visibility = View.GONE
binding.rlCoupon.visibility = View.GONE
binding.llLockerContainer.visibility = View.GONE
binding.llReservationStatusContainer.visibility = View.GONE
binding.llProfileLoginContainer.setOnClickListener {
(requireActivity() as MainActivity).showLoginActivity()
}
binding.llTotalCan.setOnClickListener {
(requireActivity() as MainActivity).showLoginActivity()
}
binding.tvChargeCan.setOnClickListener {
(requireActivity() as MainActivity).showLoginActivity()
}
}
}
@SuppressLint("SetTextI18n", "NotifyDataSetChanged")

View File

@ -3,18 +3,12 @@ package kr.co.vividnext.sodalive.mypage.service_center
import io.reactivex.rxjava3.core.Single
import kr.co.vividnext.sodalive.common.ApiResponse
import retrofit2.http.GET
import retrofit2.http.Header
import retrofit2.http.Query
interface FaqApi {
@GET("/faq")
fun getFaqs(
@Query("category") category: String,
@Header("Authorization") authHeader: String
): Single<ApiResponse<List<Faq>>>
fun getFaqs(@Query("category") category: String): Single<ApiResponse<List<Faq>>>
@GET("/faq/category")
fun getFaqCategories(
@Header("Authorization") authHeader: String
): Single<ApiResponse<List<String>>>
fun getFaqCategories(): Single<ApiResponse<List<String>>>
}

View File

@ -1,9 +1,6 @@
package kr.co.vividnext.sodalive.mypage.service_center
class FaqRepository(private val api: FaqApi) {
fun getCategories(token: String) = api.getFaqCategories(authHeader = token)
fun getFaqs(category: String, token: String) = api.getFaqs(
category = category,
authHeader = token
)
fun getCategories() = api.getFaqCategories()
fun getFaqs(category: String) = api.getFaqs(category = category)
}

View File

@ -6,7 +6,6 @@ import com.orhanobut.logger.Logger
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers
import io.reactivex.rxjava3.schedulers.Schedulers
import kr.co.vividnext.sodalive.base.BaseViewModel
import kr.co.vividnext.sodalive.common.SharedPreferenceManager
class ServiceCenterViewModel(val repository: FaqRepository) : BaseViewModel() {
@ -24,7 +23,7 @@ class ServiceCenterViewModel(val repository: FaqRepository) : BaseViewModel() {
fun getFaqCategories() {
compositeDisposable.add(
repository.getCategories(token = "Bearer ${SharedPreferenceManager.token}")
repository.getCategories()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(
@ -51,10 +50,7 @@ class ServiceCenterViewModel(val repository: FaqRepository) : BaseViewModel() {
fun getFaqs(category: String) {
compositeDisposable.add(
repository.getFaqs(
category = category,
token = "Bearer ${SharedPreferenceManager.token}"
)
repository.getFaqs(category = category)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(

View File

@ -52,7 +52,8 @@ class LoginActivity : BaseActivity<ActivityLoginBinding>(ActivityLoginBinding::i
}
}
binding.tvToolbar.text = "로그인"
binding.toolbar.tvBack.text = "로그인"
binding.toolbar.tvBack.setOnClickListener { finish() }
loadingDialog = LoadingDialog(this, layoutInflater)
binding.etPassword.setOnEditorActionListener { _, actionId, _ ->

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

View File

@ -1,26 +1,14 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:animateLayoutChanges="true"
android:background="@color/black">
<TextView
android:id="@+id/tv_toolbar"
android:layout_width="0dp"
android:layout_height="51.7dp"
android:background="@color/black"
android:fontFamily="@font/gmarket_sans_bold"
android:gravity="center_vertical"
android:paddingHorizontal="16.7dp"
android:textColor="@color/color_eeeeee"
android:textSize="18.3sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:text="바로, 상담 가능한 크리에이터" />
<include
android:id="@+id/toolbar"
layout="@layout/detail_toolbar" />
<LinearLayout
android:id="@+id/ll_login_container"

View File

@ -33,7 +33,8 @@
android:layout_alignParentEnd="true"
android:layout_centerVertical="true"
android:contentDescription="@null"
android:src="@drawable/ic_settings" />
android:src="@drawable/ic_settings"
android:visibility="gone" />
</RelativeLayout>
<androidx.core.widget.NestedScrollView
@ -53,11 +54,34 @@
android:paddingBottom="40dp">
<LinearLayout
android:id="@+id/ll_profile_login_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/bg_round_corner_16_7_222222"
android:gravity="center"
android:paddingVertical="24dp">
<TextView
android:id="@+id/tv_login"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:drawablePadding="6dp"
android:fontFamily="@font/gmarket_sans_medium"
android:gravity="center_vertical"
android:text="Login"
android:textSize="32sp"
app:drawableStartCompat="@drawable/ic_logo_circle_gray" />
</LinearLayout>
<LinearLayout
android:id="@+id/ll_profile_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/bg_round_corner_16_7_222222"
android:gravity="center_vertical"
android:padding="20dp">
android:padding="20dp"
android:visibility="gone">
<ImageView
android:id="@+id/iv_profile"
@ -115,7 +139,8 @@
android:layout_height="wrap_content"
android:layout_marginEnd="10dp"
android:contentDescription="@null"
android:src="@drawable/ic_website_circle" />
android:src="@drawable/ic_website_circle"
android:visibility="gone" />
<ImageView
android:id="@+id/iv_blog"
@ -123,7 +148,8 @@
android:layout_height="wrap_content"
android:layout_marginEnd="10dp"
android:contentDescription="@null"
android:src="@drawable/ic_blog_circle" />
android:src="@drawable/ic_blog_circle"
android:visibility="gone" />
<ImageView
android:id="@+id/iv_instagram"
@ -131,14 +157,16 @@
android:layout_height="wrap_content"
android:layout_marginEnd="10dp"
android:contentDescription="@null"
android:src="@drawable/ic_instagram_circle" />
android:src="@drawable/ic_instagram_circle"
android:visibility="gone" />
<ImageView
android:id="@+id/iv_youtube"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:contentDescription="@null"
android:src="@drawable/ic_youtube_circle" />
android:src="@drawable/ic_youtube_circle"
android:visibility="gone" />
</LinearLayout>
</LinearLayout>
@ -159,9 +187,11 @@
android:visibility="gone" />
<LinearLayout
android:id="@+id/ll_following_member_list_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="26.7dp">
android:layout_marginTop="26.7dp"
android:visibility="gone">
<TextView
android:id="@+id/tv_following_list"
@ -180,10 +210,10 @@
android:id="@+id/tv_block_member_list"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="10.7dp"
android:layout_weight="1"
android:background="@drawable/bg_round_corner_6_7_13181b_3bb9f1"
android:fontFamily="@font/gmarket_sans_bold"
android:layout_marginStart="10.7dp"
android:gravity="center"
android:paddingVertical="13.3dp"
android:text="차단 리스트"
@ -260,7 +290,8 @@
android:layout_marginTop="13.3dp"
android:background="@drawable/bg_round_corner_6_7_13181b"
android:paddingHorizontal="13.3dp"
android:paddingVertical="20dp">
android:paddingVertical="20dp"
android:visibility="gone">
<TextView
android:id="@+id/tv_alarm"
@ -297,7 +328,8 @@
android:layout_marginTop="13.3dp"
android:background="@drawable/bg_round_corner_6_7_13181b"
android:paddingHorizontal="13.3dp"
android:paddingVertical="20dp">
android:paddingVertical="20dp"
android:visibility="gone">
<TextView
android:id="@+id/tv_coupon"
@ -328,10 +360,12 @@
</RelativeLayout>
<LinearLayout
android:id="@+id/ll_locker_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="40dp"
android:orientation="vertical">
android:orientation="vertical"
android:visibility="gone">
<TextView
android:layout_width="wrap_content"
@ -377,10 +411,12 @@
</LinearLayout>
<LinearLayout
android:id="@+id/ll_reservation_status_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="40dp"
android:orientation="vertical">
android:orientation="vertical"
android:visibility="gone">
<TextView
android:layout_width="wrap_content"