마이 페이지

- 로그인 했을 때만 데이터를 조회하도록 수정
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.extensions.moneyFormat
import kr.co.vividnext.sodalive.following.FollowingCreatorActivity import kr.co.vividnext.sodalive.following.FollowingCreatorActivity
import kr.co.vividnext.sodalive.live.reservation_status.LiveReservationStatusActivity 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.alarm.AlarmListActivity
import kr.co.vividnext.sodalive.mypage.auth.Auth import kr.co.vividnext.sodalive.mypage.auth.Auth
import kr.co.vividnext.sodalive.mypage.auth.AuthVerifyRequest import kr.co.vividnext.sodalive.mypage.auth.AuthVerifyRequest
@ -55,78 +56,13 @@ class MyPageFragment : BaseFragment<FragmentMyBinding>(FragmentMyBinding::inflat
override fun onStart() { override fun onStart() {
super.onStart() super.onStart()
viewModel.getUserInfo()
if (SharedPreferenceManager.token.isNotBlank()) {
viewModel.getUserInfo()
}
} }
private fun setupView() { 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 { binding.rlServiceCenter.setOnClickListener {
startActivity( startActivity(
Intent( 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 val ivHowToUseLp = binding.ivHowToUse.layoutParams as LinearLayout.LayoutParams
ivHowToUseLp.width = screenWidth ivHowToUseLp.width = screenWidth
ivHowToUseLp.height = (200 * screenWidth) / 1080 ivHowToUseLp.height = (200 * screenWidth) / 1080
@ -210,6 +82,173 @@ class MyPageFragment : BaseFragment<FragmentMyBinding>(FragmentMyBinding::inflat
startActivity(Intent(Intent.ACTION_VIEW, Uri.parse(url))) 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") @SuppressLint("SetTextI18n", "NotifyDataSetChanged")

View File

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

View File

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

View File

@ -6,7 +6,6 @@ import com.orhanobut.logger.Logger
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers
import io.reactivex.rxjava3.schedulers.Schedulers import io.reactivex.rxjava3.schedulers.Schedulers
import kr.co.vividnext.sodalive.base.BaseViewModel import kr.co.vividnext.sodalive.base.BaseViewModel
import kr.co.vividnext.sodalive.common.SharedPreferenceManager
class ServiceCenterViewModel(val repository: FaqRepository) : BaseViewModel() { class ServiceCenterViewModel(val repository: FaqRepository) : BaseViewModel() {
@ -24,7 +23,7 @@ class ServiceCenterViewModel(val repository: FaqRepository) : BaseViewModel() {
fun getFaqCategories() { fun getFaqCategories() {
compositeDisposable.add( compositeDisposable.add(
repository.getCategories(token = "Bearer ${SharedPreferenceManager.token}") repository.getCategories()
.subscribeOn(Schedulers.io()) .subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread()) .observeOn(AndroidSchedulers.mainThread())
.subscribe( .subscribe(
@ -51,10 +50,7 @@ class ServiceCenterViewModel(val repository: FaqRepository) : BaseViewModel() {
fun getFaqs(category: String) { fun getFaqs(category: String) {
compositeDisposable.add( compositeDisposable.add(
repository.getFaqs( repository.getFaqs(category = category)
category = category,
token = "Bearer ${SharedPreferenceManager.token}"
)
.subscribeOn(Schedulers.io()) .subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread()) .observeOn(AndroidSchedulers.mainThread())
.subscribe( .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) loadingDialog = LoadingDialog(this, layoutInflater)
binding.etPassword.setOnEditorActionListener { _, actionId, _ -> 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"?> <?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:animateLayoutChanges="true" android:animateLayoutChanges="true"
android:background="@color/black"> android:background="@color/black">
<TextView <include
android:id="@+id/tv_toolbar" android:id="@+id/toolbar"
android:layout_width="0dp" layout="@layout/detail_toolbar" />
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="바로, 상담 가능한 크리에이터" />
<LinearLayout <LinearLayout
android:id="@+id/ll_login_container" android:id="@+id/ll_login_container"

View File

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