Skip to content

Commit

Permalink
[FEAT/#114] 프로필 뷰 서버통신 완료
Browse files Browse the repository at this point in the history
  • Loading branch information
crownjoe committed Jan 14, 2024
1 parent 5c96987 commit 2d2fb39
Show file tree
Hide file tree
Showing 5 changed files with 82 additions and 9 deletions.
2 changes: 1 addition & 1 deletion app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,7 @@

<activity
android:name="com.going.presentation.entertrip.invitetrip.invitecode.CreateTripActivity"
android:exported="false"
android:exported="true"
android:screenOrientation="portrait" />

<activity
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,8 @@ class AuthInterceptor @Inject constructor(
originalRequest
}

//val authRequest = originalRequest.newAuthBuilder().build()

val response = chain.proceed(authRequest)

when (response.code) {
Expand Down Expand Up @@ -80,6 +82,7 @@ class AuthInterceptor @Inject constructor(

private fun Request.newAuthBuilder() =
this.newBuilder().addHeader(AUTHORIZATION, "$BEARER ${dataStore.accessToken}")
//this.newBuilder().addHeader(AUTHORIZATION, "$BEARER eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiI0MCIsImlhdCI6MTcwNTI1NjkwNCwiZXhwIjoxNzA1ODYxNzA0fQ.m8yWjfOb3e_tL1o_GuuwPU7ZUpNjFhKKKBWLRQHv0qc")

companion object {
private const val CODE_TOKEN_EXPIRED = 401
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,18 @@ package com.going.presentation.setting
import android.content.Intent
import android.net.Uri
import android.os.Bundle
import androidx.activity.viewModels
import com.going.presentation.R
import com.going.presentation.databinding.ActivitySettingBinding
import com.going.presentation.tripdashboard.profile.ProfileActivity
import com.going.presentation.tripdashboard.profile.ProfileViewModel
import com.going.ui.base.BaseActivity
import com.going.ui.extension.setOnSingleClickListener
import dagger.hilt.android.AndroidEntryPoint

@AndroidEntryPoint
class SettingActivity : BaseActivity<ActivitySettingBinding>(R.layout.activity_setting) {
private val profileViewModel by viewModels<ProfileViewModel>()

private var quitDialog: SettingQuitDialogFragment? = null
private var logoutDialog: SettingLogoutDialogFragment? = null
Expand All @@ -37,6 +41,9 @@ class SettingActivity : BaseActivity<ActivitySettingBinding>(R.layout.activity_s

private fun initProfileClickListener() {
binding.btnSettingProfile.setOnSingleClickListener {
Intent(this, ProfileActivity::class.java).apply {
startActivity(this)
}
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,29 +5,61 @@ import android.text.SpannableString
import android.text.Spanned
import android.text.style.BulletSpan
import androidx.activity.viewModels
import androidx.lifecycle.flowWithLifecycle
import androidx.lifecycle.lifecycleScope
import com.going.presentation.R
import com.going.presentation.databinding.ActivityProfileBinding
import com.going.ui.base.BaseActivity
import com.going.ui.extension.UiState
import com.going.ui.extension.toast
import dagger.hilt.android.AndroidEntryPoint
import kotlinx.coroutines.flow.launchIn
import kotlinx.coroutines.flow.onEach

@AndroidEntryPoint
class ProfileActivity :
BaseActivity<ActivityProfileBinding>(R.layout.activity_profile) {
private val profileViewModel by viewModels<ProfileViewModel>()

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)

bindProfileInfo()
getUserInfo()
observeUserInfoState()
}

private fun bindProfileInfo() {
private fun getUserInfo() {
profileViewModel.getUserInfoState()
}

private fun observeUserInfoState() {
profileViewModel.userInfoState.flowWithLifecycle(lifecycle).onEach { state ->
when (state) {
is UiState.Loading -> return@onEach
is UiState.Success -> bindProfileInfo(
state.data.name,
state.data.intro,
state.data.result
)

is UiState.Failure -> toast(state.msg)
is UiState.Empty -> return@onEach
}
}.launchIn(lifecycleScope)
}

private fun bindProfileInfo(name: String, intro: String, number: Int) {
with(binding) {
profileViewModel.mockProfileResult.apply {
tvProfileName.text = name
tvProfileOneLine.text = intro
profileViewModel.mockProfileResult[number].apply {
ivProfile.setImageResource(resultImage)
tvProfileType.text = profileTitle
tvProfileSubType.text = profileSubTitle

tvProfileTag1.text = tags[0]
tvProfileTag2.text = tags[1]
tvProfileTag3.text = tags[2]
tvProfileTag1.text = getString(R.string.tag, tags[0])
tvProfileTag2.text = getString(R.string.tag, tags[1])
tvProfileTag3.text = getString(R.string.tag, tags[2])

tvFirstDescriptionTitle.text = profileBoxInfo[0].title
tvFirstDescriptionFirstText.text =
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,42 @@
package com.going.presentation.tripdashboard.profile

import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import com.going.domain.entity.ProfileMock
import com.going.domain.entity.request.UserProfileRequestModel
import com.going.domain.repository.ProfileRepository
import com.going.presentation.R
import com.going.ui.extension.UiState
import dagger.hilt.android.lifecycle.HiltViewModel
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.StateFlow
import kotlinx.coroutines.launch
import javax.inject.Inject

class ProfileViewModel : ViewModel() {
val mockTendencyResult: List<ProfileMock> = listOf(
@HiltViewModel
class ProfileViewModel @Inject constructor(
private val profileRepository: ProfileRepository,
) : ViewModel() {

private val _userInfoState = MutableStateFlow<UiState<UserProfileRequestModel>>(UiState.Empty)
val userInfoState: StateFlow<UiState<UserProfileRequestModel>> = _userInfoState

val profileId = MutableLiveData(0)

fun getUserInfoState() {
viewModelScope.launch {
_userInfoState.value = UiState.Loading
profileRepository.getUserProfile().onSuccess {
profileId.value = it.result
_userInfoState.value = UiState.Success(it)
}.onFailure {
_userInfoState.value = UiState.Failure(it.message.toString())
}
}
}

val mockProfileResult: List<ProfileMock> = listOf(
ProfileMock(
resultImage = R.drawable.img_tendency_result_srp,
profileTitle = "배려심 넘치는 든든잉",
Expand Down

0 comments on commit 2d2fb39

Please sign in to comment.