Skip to content

Commit 4cdce4d

Browse files
authored
Merge pull request #150 from SOLPLY/feature/#149-mypage-withdraw
[Feature/#149] 마이페이지 구현 완료
2 parents 37001fc + 39a6e2c commit 4cdce4d

File tree

38 files changed

+894
-56
lines changed

38 files changed

+894
-56
lines changed

app/build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@ dependencies {
5959
implementation(projects.data.search)
6060
implementation(projects.local.main)
6161
implementation(projects.local.oauth)
62+
implementation(projects.local.mypage)
6263
implementation(projects.local.place)
6364
implementation(projects.remote.oauth)
6465
implementation(projects.remote.onboarding)

core/designsystem/src/main/java/com/teamsolply/solply/designsystem/component/button/SolplyButton.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ import androidx.compose.foundation.layout.Box
66
import androidx.compose.foundation.layout.PaddingValues
77
import androidx.compose.foundation.layout.fillMaxWidth
88
import androidx.compose.foundation.layout.padding
9-
import androidx.compose.foundation.layout.width
109
import androidx.compose.foundation.shape.CircleShape
1110
import androidx.compose.material3.Icon
1211
import androidx.compose.material3.Text

data/mypage/build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,5 +7,6 @@ android {
77
}
88

99
dependencies {
10+
implementation(projects.core.datastore)
1011
implementation(projects.domain.mypage)
1112
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
package com.teamsolply.solply.mypage.datasource
2+
3+
interface MypageLocalDataSource {
4+
suspend fun saveAutoSignIn(autoSignIn: Boolean)
5+
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,19 @@
11
package com.teamsolply.solply.mypage.datasource
22

3+
import com.teamsolply.solply.mypage.dto.request.DeleteUserRequestDto
34
import com.teamsolply.solply.mypage.dto.response.GetPersonaListResponseDto
45
import com.teamsolply.solply.mypage.dto.response.GetUserInfoResponseDto
6+
import com.teamsolply.solply.mypage.dto.response.GetWithdrawListResponseDto
57
import com.teamsolply.solply.mypage.dto.response.NicknameDuplicateResponseDto
68
import com.teamsolply.solply.mypage.dto.response.PlaceListResponseDto
9+
import com.teamsolply.solply.network.model.NullableBaseResponse
710

811
interface MypageRemoteDataSource {
912
suspend fun getUserInfo(): GetUserInfoResponseDto
1013
suspend fun getPlaceList(townId: Long): PlaceListResponseDto
1114
suspend fun getPersonaList(): GetPersonaListResponseDto
1215
suspend fun checkNicknameDuplicate(nickname: String): NicknameDuplicateResponseDto
16+
suspend fun getWithdrawList(): GetWithdrawListResponseDto
17+
suspend fun deleteUser(deleteUserRequestDto: DeleteUserRequestDto): NullableBaseResponse<Unit>
18+
suspend fun getReportPlaceList(userId: Long): PlaceListResponseDto
1319
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package com.teamsolply.solply.mypage.dto.request
2+
3+
import com.teamsolply.solply.mypage.model.WithdrawType
4+
import kotlinx.serialization.SerialName
5+
import kotlinx.serialization.Serializable
6+
7+
@Serializable
8+
data class DeleteUserRequestDto(
9+
@SerialName("withdrawReason")
10+
val withdrawType: WithdrawType,
11+
12+
@SerialName("reasonText")
13+
val reasonText: String
14+
)
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package com.teamsolply.solply.mypage.dto.response
2+
3+
import com.teamsolply.solply.mypage.model.WithdrawType
4+
import kotlinx.serialization.SerialName
5+
import kotlinx.serialization.Serializable
6+
7+
@Serializable
8+
data class GetWithdrawListResponseDto(
9+
@SerialName("description")
10+
val withdrawList: List<WithdrawResponseDto>
11+
)
12+
13+
@Serializable
14+
data class WithdrawResponseDto(
15+
@SerialName("withdrawType")
16+
val withdrawType: WithdrawType,
17+
18+
@SerialName("description")
19+
val description: String
20+
)

data/mypage/src/main/java/com/teamsolply/solply/mypage/dto/response/PlaceListResponseDto.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,9 @@ data class PlaceResponseDto(
1919
@SerialName("placeName")
2020
val placeName: String,
2121

22+
@SerialName("townId")
23+
val townId: Long,
24+
2225
@SerialName("thumbnailImageUrl")
2326
val imageUrl: String,
2427

data/mypage/src/main/java/com/teamsolply/solply/mypage/repository/MypageRepositoryImpl.kt

Lines changed: 50 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,19 @@
11
package com.teamsolply.solply.mypage.repository
22

3-
import android.util.Log
3+
import com.teamsolply.solply.mypage.datasource.MypageLocalDataSource
44
import com.teamsolply.solply.mypage.datasource.MypageRemoteDataSource
5+
import com.teamsolply.solply.mypage.dto.request.DeleteUserRequestDto
56
import com.teamsolply.solply.mypage.dto.response.toDomain
67
import com.teamsolply.solply.mypage.model.PersonaEntity
78
import com.teamsolply.solply.mypage.model.PlaceInfoEntity
89
import com.teamsolply.solply.mypage.model.UserInfo
10+
import com.teamsolply.solply.mypage.model.WithdrawEntity
11+
import com.teamsolply.solply.mypage.model.WithdrawType
912
import javax.inject.Inject
1013

1114
class MypageRepositoryImpl @Inject constructor(
12-
private val mypageRemoteDataSource: MypageRemoteDataSource
15+
private val mypageRemoteDataSource: MypageRemoteDataSource,
16+
private val mypageLocalDataSource: MypageLocalDataSource
1317
) : MypageRepository {
1418
override suspend fun getUserInfo(): Result<UserInfo> = runCatching {
1519
mypageRemoteDataSource.getUserInfo()
@@ -26,15 +30,31 @@ class MypageRepositoryImpl @Inject constructor(
2630
placeName = place.placeName,
2731
placeType = place.tag,
2832
imageUrls = place.imageUrl,
29-
isSaved = place.isSaved
33+
isSaved = place.isSaved,
34+
townId = place.townId
3035
)
3136
}
3237
}
3338

39+
override suspend fun getReportPlaceList(userId: Long): Result<List<PlaceInfoEntity>> =
40+
runCatching {
41+
mypageRemoteDataSource.getReportPlaceList(userId = userId).placeList
42+
}.mapCatching { placeList ->
43+
placeList.map { place ->
44+
PlaceInfoEntity(
45+
placeId = place.placeId,
46+
placeName = place.placeName,
47+
placeType = place.tag,
48+
imageUrls = place.imageUrl,
49+
isSaved = place.isSaved,
50+
townId = place.townId
51+
)
52+
}
53+
}
54+
3455
override suspend fun getPersonaList(): Result<List<PersonaEntity>> = runCatching {
3556
mypageRemoteDataSource.getPersonaList().personaDtoList
3657
}.mapCatching { personaList ->
37-
Log.d("persona: ", "repo impl start")
3858
personaList.map { persona ->
3959
PersonaEntity(
4060
personaType = persona.personaType,
@@ -46,4 +66,30 @@ class MypageRepositoryImpl @Inject constructor(
4666
override suspend fun checkNicknameDuplicate(nickname: String): Result<Boolean> = runCatching {
4767
mypageRemoteDataSource.checkNicknameDuplicate(nickname = nickname).isDuplicated
4868
}
69+
70+
override suspend fun getWithdrawList(): Result<List<WithdrawEntity>> = runCatching {
71+
mypageRemoteDataSource.getWithdrawList().withdrawList
72+
}.mapCatching { list ->
73+
list.map { reason ->
74+
WithdrawEntity(
75+
withdrawType = reason.withdrawType,
76+
description = reason.description
77+
)
78+
}
79+
}
80+
81+
override suspend fun deleteUser(withdrawType: WithdrawType, reason: String): Result<Unit> =
82+
runCatching {
83+
mypageRemoteDataSource.deleteUser(
84+
DeleteUserRequestDto(
85+
withdrawType = withdrawType,
86+
reasonText = reason
87+
)
88+
)
89+
}
90+
91+
override suspend fun saveAutoSignIn(autoSignIn: Boolean): Result<Unit> =
92+
runCatching {
93+
mypageLocalDataSource.saveAutoSignIn(autoSignIn)
94+
}
4995
}

domain/mypage/build.gradle.kts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
plugins {
22
alias(libs.plugins.solply.java.library)
3+
alias(libs.plugins.kotlin.serialization)
34
}
45

56
dependencies {
67
implementation(projects.core.model)
78
implementation(libs.bundles.coroutine)
9+
implementation(libs.kotlinx.serialization.json)
810
}

0 commit comments

Comments
 (0)