마이 페이지

- 로그인 했을 때만 데이터를 조회하도록 수정
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,10 +56,44 @@ class MyPageFragment : BaseFragment<FragmentMyBinding>(FragmentMyBinding::inflat
override fun onStart() { override fun onStart() {
super.onStart() super.onStart()
if (SharedPreferenceManager.token.isNotBlank()) {
viewModel.getUserInfo() viewModel.getUserInfo()
} }
}
private fun setupView() { private fun setupView() {
binding.rlServiceCenter.setOnClickListener {
startActivity(
Intent(
requireActivity(),
ServiceCenterActivity::class.java
)
)
}
val ivHowToUseLp = binding.ivHowToUse.layoutParams as LinearLayout.LayoutParams
ivHowToUseLp.width = screenWidth
ivHowToUseLp.height = (200 * screenWidth) / 1080
binding.ivHowToUse.layoutParams = ivHowToUseLp
binding.ivHowToUse.setOnClickListener {
val url = "https://blog.naver.com/sodalive_official"
if (URLUtil.isValidUrl(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 { binding.ivSettings.setOnClickListener {
startActivity( startActivity(
Intent( Intent(
@ -127,15 +162,6 @@ class MyPageFragment : BaseFragment<FragmentMyBinding>(FragmentMyBinding::inflat
) )
} }
binding.rlServiceCenter.setOnClickListener {
startActivity(
Intent(
requireActivity(),
ServiceCenterActivity::class.java
)
)
}
binding.tvAuth.setOnClickListener { binding.tvAuth.setOnClickListener {
Auth.auth(requireActivity(), requireContext()) { Auth.auth(requireActivity(), requireContext()) {
val bootpayResponse = Gson().fromJson(it, BootpayResponse::class.java) val bootpayResponse = Gson().fromJson(it, BootpayResponse::class.java)
@ -199,15 +225,28 @@ class MyPageFragment : BaseFragment<FragmentMyBinding>(FragmentMyBinding::inflat
} }
) )
} }
} 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
val ivHowToUseLp = binding.ivHowToUse.layoutParams as LinearLayout.LayoutParams binding.rlAlarm.visibility = View.GONE
ivHowToUseLp.width = screenWidth binding.rlCoupon.visibility = View.GONE
ivHowToUseLp.height = (200 * screenWidth) / 1080 binding.llLockerContainer.visibility = View.GONE
binding.ivHowToUse.layoutParams = ivHowToUseLp binding.llReservationStatusContainer.visibility = View.GONE
binding.ivHowToUse.setOnClickListener {
val url = "https://blog.naver.com/sodalive_official" binding.llProfileLoginContainer.setOnClickListener {
if (URLUtil.isValidUrl(url)) { (requireActivity() as MainActivity).showLoginActivity()
startActivity(Intent(Intent.ACTION_VIEW, Uri.parse(url))) }
binding.llTotalCan.setOnClickListener {
(requireActivity() as MainActivity).showLoginActivity()
}
binding.tvChargeCan.setOnClickListener {
(requireActivity() as MainActivity).showLoginActivity()
} }
} }
} }

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"