Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/develop' into feature/#76-happy-…
Browse files Browse the repository at this point in the history
…user-routine-post-server

# Conflicts:
#	app/src/main/java/com/sopetit/softie/di/RepositoryModule.kt
#	app/src/main/java/com/sopetit/softie/di/RetrofitServiceModule.kt
  • Loading branch information
pump9918 committed Jan 17, 2024
2 parents 719be2a + fcfe197 commit 21c7c05
Show file tree
Hide file tree
Showing 28 changed files with 264 additions and 74 deletions.
1 change: 0 additions & 1 deletion app/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@ android {
versionName = "1.0"
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
buildConfigField("String", "BASE_URL", getApiKey("BASE_URL"))
buildConfigField("String", "ACCESS_TOKEN", getApiKey("ACCESS_TOKEN"))
buildConfigField("String", "KAKAO_NATIVE_APP_KEY", getApiKey("KAKAO_NATIVE_APP_KEY"))
manifestPlaceholders["KAKAO_REDIRECT_SCHEME"] = getApiKey("KAKAO_REDIRECT_SCHEME")
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package com.sopetit.softie.data.entity.request

import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable

@Serializable
data class PostMemberRequest(
@SerialName("dollType")
val dollType: String,
@SerialName("name")
val name: String,
@SerialName("routines")
val routines: ArrayList<Int>
)
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@ class AuthRepositoryImpl @Inject constructor(
private val authDataSource: AuthDataSource,
private val localDataSource: LocalDataSource
) : AuthRepository {
override suspend fun deleteAuth(): Result<Unit> = runCatching { authDataSource.deleteAuth() }

override suspend fun postLogin(socialPlatform: String): Result<Token> =
kotlin.runCatching { authDataSource.postLogin(socialPlatform) }.map { response ->
requireNotNull(response.data).toToken()
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.sopetit.softie.data.repositoryImpl

import com.sopetit.softie.data.entity.request.PostMemberRequest
import com.sopetit.softie.data.source.MemberDataSource
import com.sopetit.softie.domain.entity.CottonCount
import com.sopetit.softie.domain.entity.Home
Expand All @@ -18,4 +19,7 @@ class MemberRepositoryImpl @Inject constructor(
runCatching { memberDataSource.patchCotton(cottonType) }.map { response ->
requireNotNull(response.data).toCottonCount()
}

override suspend fun postMember(request: PostMemberRequest): Result<Unit> =
runCatching { memberDataSource.postMember(request) }
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,15 @@ import com.sopetit.softie.data.entity.BaseResponse
import com.sopetit.softie.data.entity.request.LoginRequest
import com.sopetit.softie.data.entity.response.LoginResponse
import retrofit2.http.Body
import retrofit2.http.DELETE
import retrofit2.http.POST

interface AuthService {
@POST("api/v1/auth")
suspend fun postLogin(
@Body body: LoginRequest
): BaseResponse<LoginResponse>

@DELETE("/api/v1/auth")
suspend fun deleteAuth(): BaseResponse<Unit>
}
Original file line number Diff line number Diff line change
@@ -1,10 +1,13 @@
package com.sopetit.softie.data.service

import com.sopetit.softie.data.entity.BaseResponse
import com.sopetit.softie.data.entity.request.PostMemberRequest
import com.sopetit.softie.data.entity.response.CottonCountResponse
import com.sopetit.softie.data.entity.response.HomeResponse
import retrofit2.http.Body
import retrofit2.http.GET
import retrofit2.http.PATCH
import retrofit2.http.POST
import retrofit2.http.Path

interface MemberService {
Expand All @@ -13,4 +16,7 @@ interface MemberService {

@PATCH("api/v1/members/{cottonType}")
suspend fun patchCotton(@Path("cottonType") cottonType: String): BaseResponse<CottonCountResponse>

@POST("/api/v1/members")
suspend fun postMember(@Body request: PostMemberRequest): BaseResponse<Unit>
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,9 @@ import javax.inject.Inject
class AuthDataSource @Inject constructor(
private val authService: AuthService
) {

suspend fun deleteAuth(): BaseResponse<Unit> = authService.deleteAuth()

suspend fun postLogin(socialType: String): BaseResponse<LoginResponse> =
authService.postLogin(LoginRequest(socialType))
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package com.sopetit.softie.data.source

import com.sopetit.softie.data.entity.BaseResponse
import com.sopetit.softie.data.entity.request.PostMemberRequest
import com.sopetit.softie.data.entity.response.CottonCountResponse
import com.sopetit.softie.data.entity.response.HomeResponse
import com.sopetit.softie.data.service.MemberService
Expand All @@ -12,4 +13,7 @@ class MemberDataSource @Inject constructor(
suspend fun getHome(): BaseResponse<HomeResponse> = memberService.getHome()
suspend fun patchCotton(cottonType: String): BaseResponse<CottonCountResponse> =
memberService.patchCotton(cottonType)

suspend fun postMember(request: PostMemberRequest): BaseResponse<Unit> =
memberService.postMember(request)
}
12 changes: 6 additions & 6 deletions app/src/main/java/com/sopetit/softie/di/RepositoryModule.kt
Original file line number Diff line number Diff line change
Expand Up @@ -27,12 +27,6 @@ abstract class RepositoryModule {
memberRepositoryImpl: MemberRepositoryImpl
): MemberRepository

@Binds
@Singleton
abstract fun bindToAuthRepository(
authRepositoryImpl: AuthRepositoryImpl
): AuthRepository

@Binds
@Singleton
abstract fun bindToDailyRoutineRepository(
Expand All @@ -56,4 +50,10 @@ abstract class RepositoryModule {
abstract fun bindToMemberHappinessRoutineRepository(
memberHappinessRoutineRepositoryImpl: MemberHappinessRoutineRepositoryImpl
): MemberHappinessRoutineRepository

@Binds
@Singleton
abstract fun bindToAuthRepository(
authRepositoryImpl: AuthRepositoryImpl
): AuthRepository
}
Original file line number Diff line number Diff line change
Expand Up @@ -19,10 +19,6 @@ object RetrofitServiceModule {
fun providesMemberService(@RetrofitModule.SoftieType retrofit: Retrofit): MemberService =
retrofit.create(MemberService::class.java)

@Provides
fun providesAuthService(@RetrofitModule.SoftieType retrofit: Retrofit): AuthService =
retrofit.create(AuthService::class.java)

@Provides
fun providesHappinessRoutineService(@RetrofitModule.SoftieType retrofit: Retrofit): HappinessRoutineService =
retrofit.create(HappinessRoutineService::class.java)
Expand All @@ -35,6 +31,10 @@ object RetrofitServiceModule {
fun providesDollService(@RetrofitModule.SoftieType retrofit: Retrofit): DollService =
retrofit.create(DollService::class.java)

@Provides
fun providesAuthService(@RetrofitModule.SoftieType retrofit: Retrofit): AuthService =
retrofit.create(AuthService::class.java)

@Provides
fun providesMemberHappinessRoutineService(@RetrofitModule.SoftieType retrofit: Retrofit): MemberHappinessRoutineService =
retrofit.create(MemberHappinessRoutineService::class.java)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
package com.sopetit.softie.domain.repository

import com.sopetit.softie.domain.entity.Token

interface AuthRepository {

suspend fun deleteAuth(): Result<Unit>
suspend fun postLogin(socialPlatform: String): Result<Token>
fun getSignedUp(): Boolean
fun initToken(accessToken: String, refreshToken: String)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,12 @@
package com.sopetit.softie.domain.repository

import com.sopetit.softie.data.entity.request.PostMemberRequest
import com.sopetit.softie.domain.entity.CottonCount
import com.sopetit.softie.domain.entity.Home

interface MemberRepository {
suspend fun getHome(): Result<Home>
suspend fun patchCotton(cottonType: String): Result<CottonCount>

suspend fun postMember(request: PostMemberRequest): Result<Unit>
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package com.sopetit.softie.domain.usecase.auth

import com.sopetit.softie.domain.repository.AuthRepository
import javax.inject.Inject

class DeleteAuthUseCase @Inject constructor(
private val authRepository: AuthRepository
) {

suspend operator fun invoke() = authRepository.deleteAuth()
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package com.sopetit.softie.domain.usecase.member

import com.sopetit.softie.data.entity.request.PostMemberRequest
import com.sopetit.softie.domain.repository.MemberRepository
import javax.inject.Inject

class PostMemberUseCase @Inject constructor(
private val memberRepository: MemberRepository
) {

suspend operator fun invoke(request: PostMemberRequest) = memberRepository.postMember(request)
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import coil.load
import com.sopetit.softie.R
import com.sopetit.softie.databinding.FragmentHappyRoutineBinding
import com.sopetit.softie.ui.happyroutine.list.HappyAddListActivity
import com.sopetit.softie.ui.onboarding.OnboardingViewModel.Companion.BROWN
import com.sopetit.softie.util.binding.BindingFragment
import dagger.hilt.android.AndroidEntryPoint

Expand All @@ -25,7 +26,7 @@ class HappyRoutineFragment :

sharedPreferences =
this.requireActivity().getSharedPreferences("user", Context.MODE_PRIVATE)
val bearType = sharedPreferences.getString("bearType", "BROWN")
val bearType = sharedPreferences.getString("bearType", BROWN)

initSetBearFace(bearType)
setCardEnter()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,10 @@ import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import com.sopetit.softie.domain.usecase.doll.GetDollUseCase
import com.sopetit.softie.ui.onboarding.OnboardingViewModel.Companion.BROWN
import com.sopetit.softie.ui.onboarding.OnboardingViewModel.Companion.GRAY
import com.sopetit.softie.ui.onboarding.OnboardingViewModel.Companion.RED
import com.sopetit.softie.ui.onboarding.OnboardingViewModel.Companion.WHITE
import dagger.hilt.android.lifecycle.HiltViewModel
import kotlinx.coroutines.launch
import timber.log.Timber
Expand All @@ -21,11 +25,11 @@ class HappyRoutineViewModel @Inject constructor(
fun setDollFace(type: String) {
viewModelScope.launch {
when (type) {
"BROWN" -> getDollUseCase.invoke(type)
"GRAY" -> getDollUseCase.invoke(type)
"PANDA" -> getDollUseCase.invoke(type)
"RED" -> getDollUseCase.invoke(type)
else -> getDollUseCase.invoke("BROWN")
BROWN -> getDollUseCase.invoke(type)
GRAY -> getDollUseCase.invoke(type)
WHITE -> getDollUseCase.invoke(type)
RED -> getDollUseCase.invoke(type)
else -> getDollUseCase.invoke(BROWN)
}.onSuccess { response ->
_bearFace.value = response
Timber.d("곰돌이 서버 통신 성공 -> $response")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,10 @@ import androidx.fragment.app.viewModels
import com.sopetit.softie.R
import com.sopetit.softie.databinding.FragmentHomeBinding
import com.sopetit.softie.domain.entity.Cotton
import com.sopetit.softie.ui.onboarding.OnboardingViewModel.Companion.BROWN
import com.sopetit.softie.ui.onboarding.OnboardingViewModel.Companion.GRAY
import com.sopetit.softie.ui.onboarding.OnboardingViewModel.Companion.RED
import com.sopetit.softie.ui.onboarding.OnboardingViewModel.Companion.WHITE
import com.sopetit.softie.ui.setting.SettingActivity
import com.sopetit.softie.util.binding.BindingFragment
import com.sopetit.softie.util.setStatusBarColor
Expand Down Expand Up @@ -41,16 +45,16 @@ class HomeFragment : BindingFragment<FragmentHomeBinding>(R.layout.fragment_home
sharedPreferences =
this.requireActivity().getSharedPreferences("user", Context.MODE_PRIVATE)
sharedPreferences.edit()
.putString("bearType", viewModel.homeResponse.value?.dollType ?: "BROWN").commit()
.putString("bearType", viewModel.homeResponse.value?.dollType ?: BROWN).commit()
}

private fun setUserLottieList() {
viewModel.getHome()
userLottieList = when (viewModel.homeResponse.value?.dollType) {
"BROWN" -> brownBearLottieList
"GRAY" -> grayBearLottieList
"RED" -> redBearLottieList
"PANDA" -> pandaBearLottieList
BROWN -> brownBearLottieList
GRAY -> grayBearLottieList
RED -> redBearLottieList
WHITE -> pandaBearLottieList
else -> brownBearLottieList
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,8 +47,8 @@ class OnboardingViewModel @Inject constructor(
val layoutTranslucent: LiveData<Boolean>
get() = _layoutTranslucent

private val _selectedBearType: MutableLiveData<Int> = MutableLiveData()
val selectedBearType: LiveData<Int> get() = _selectedBearType
private val _selectedBearType: MutableLiveData<String> = MutableLiveData()
val selectedBearType: LiveData<String> get() = _selectedBearType

private val _bearNickname: MutableLiveData<String> = MutableLiveData("")
val bearNickname: LiveData<String> get() = _bearNickname
Expand Down Expand Up @@ -89,21 +89,21 @@ class OnboardingViewModel @Inject constructor(
_layoutTranslucent.value = boolean
}

fun setSelectedBearType(bearType: Int) {
fun setSelectedBearType(bearType: String) {
_selectedBearType.value = bearType
}

fun setBearNickname(nickname: String) {
_bearNickname.value = nickname
}

fun setDollFace(type: Int) {
fun setDollFace(type: String) {
viewModelScope.launch {
when (type) {
BROWN_BEAR -> getDollUseCase.invoke(BROWN)
GRAY_BEAR -> getDollUseCase.invoke(GRAY)
PANDA_BEAR -> getDollUseCase.invoke(WHITE)
RED_BEAR -> getDollUseCase.invoke(RED)
BROWN -> getDollUseCase.invoke(BROWN)
GRAY -> getDollUseCase.invoke(GRAY)
WHITE -> getDollUseCase.invoke(WHITE)
RED -> getDollUseCase.invoke(RED)
else -> getDollUseCase.invoke(BROWN)
}.onSuccess { response ->
_bearFace.value = response
Expand All @@ -115,12 +115,7 @@ class OnboardingViewModel @Inject constructor(
}

companion object {
const val NONE = 0
const val BROWN_BEAR = 1
const val GRAY_BEAR = 2
const val PANDA_BEAR = 3
const val RED_BEAR = 4

const val NONE = ""
const val BROWN = "BROWN"
const val GRAY = "GRAY"
const val WHITE = "WHITE"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,11 @@ import androidx.lifecycle.ViewModelProvider
import com.sopetit.softie.R
import com.sopetit.softie.databinding.FragmentOnboardingBearNamingBinding
import com.sopetit.softie.ui.onboarding.OnboardingViewModel
import com.sopetit.softie.ui.onboarding.OnboardingViewModel.Companion.BROWN_BEAR
import com.sopetit.softie.ui.onboarding.OnboardingViewModel.Companion.GRAY_BEAR
import com.sopetit.softie.ui.onboarding.OnboardingViewModel.Companion.BROWN
import com.sopetit.softie.ui.onboarding.OnboardingViewModel.Companion.GRAY
import com.sopetit.softie.ui.onboarding.OnboardingViewModel.Companion.NONE
import com.sopetit.softie.ui.onboarding.OnboardingViewModel.Companion.PANDA_BEAR
import com.sopetit.softie.ui.onboarding.OnboardingViewModel.Companion.RED_BEAR
import com.sopetit.softie.ui.onboarding.OnboardingViewModel.Companion.RED
import com.sopetit.softie.ui.onboarding.OnboardingViewModel.Companion.WHITE
import com.sopetit.softie.util.binding.BindingFragment

class BearNamingFragment :
Expand All @@ -34,10 +34,10 @@ class BearNamingFragment :
private fun setLottieFile() {
when (activityViewModel.selectedBearType.value) {
NONE -> setLottieAnimation(R.raw.brown_hello)
BROWN_BEAR -> setLottieAnimation(R.raw.brown_hello)
GRAY_BEAR -> setLottieAnimation(R.raw.gray_hello)
RED_BEAR -> setLottieAnimation(R.raw.red_hello)
PANDA_BEAR -> setLottieAnimation(R.raw.panda_hello)
BROWN -> setLottieAnimation(R.raw.brown_hello)
GRAY -> setLottieAnimation(R.raw.gray_hello)
RED -> setLottieAnimation(R.raw.red_hello)
WHITE -> setLottieAnimation(R.raw.panda_hello)
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import androidx.lifecycle.ViewModelProvider
import com.sopetit.softie.R
import com.sopetit.softie.databinding.FragmentOnboardingBearSelectionBinding
import com.sopetit.softie.ui.onboarding.OnboardingViewModel
import com.sopetit.softie.ui.onboarding.OnboardingViewModel.Companion.BROWN_BEAR
import com.sopetit.softie.ui.onboarding.OnboardingViewModel.Companion.BROWN
import com.sopetit.softie.util.binding.BindingFragment
import dagger.hilt.android.AndroidEntryPoint

Expand All @@ -31,7 +31,7 @@ class BearSelectionFragment :
private fun initChangeFragment() {
binding.btnBearSelection.setOnClickListener {
activityViewModel.changeBearNameChoiceView()
activityViewModel.setSelectedBearType(viewModel.selectedBearType.value ?: BROWN_BEAR)
activityViewModel.setSelectedBearType(viewModel.selectedBearType.value ?: BROWN)

activityViewModel.selectedBearType.observe(viewLifecycleOwner) {
activityViewModel.setDollFace(it)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,10 @@ import javax.inject.Inject

@HiltViewModel
class BearSelectionViewModel @Inject constructor() : ViewModel() {
private val _selectedBearType: MutableLiveData<Int> = MutableLiveData(NONE)
val selectedBearType: LiveData<Int> get() = _selectedBearType
private val _selectedBearType: MutableLiveData<String> = MutableLiveData(NONE)
val selectedBearType: LiveData<String> get() = _selectedBearType

fun selectBearType(dollType: Int) {
fun selectBearType(dollType: String) {
val isSameBearSelected = _selectedBearType.value == dollType

if (isSameBearSelected) _selectedBearType.value = NONE
Expand Down
Loading

0 comments on commit 21c7c05

Please sign in to comment.