Skip to content

Commit 152802a

Browse files
authored
Merge pull request #75 from Team-Sopetit/feature/#68-feat-happy-adddetail-server
#68 [feat] 행복 루틴 추가하기(상세) 뷰 API 연결
2 parents 7348b01 + 0ce044c commit 152802a

22 files changed

+219
-304
lines changed

app/src/main/AndroidManifest.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,12 +45,12 @@
4545
</activity>
4646

4747
<activity
48-
android:name=".ui.happyroutine.addlist.HappyAddListActivity"
48+
android:name=".ui.happyroutine.list.HappyAddListActivity"
4949
android:exported="false"
5050
android:screenOrientation="portrait" />
5151

5252
<activity
53-
android:name=".ui.happyroutine.adddetail.HappyDetailActivity"
53+
android:name=".ui.happyroutine.detail.HappyDetailActivity"
5454
android:exported="false"
5555
android:screenOrientation="portrait" />
5656

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
package com.sopetit.softie.data.entity.response
2+
3+
import com.sopetit.softie.domain.entity.HappyCard
4+
import kotlinx.serialization.SerialName
5+
import kotlinx.serialization.Serializable
6+
7+
@Serializable
8+
data class HappyCardResponse(
9+
@SerialName("title")
10+
val title: String,
11+
@SerialName("name")
12+
val name: String,
13+
@SerialName("nameColor")
14+
val nameColor: String,
15+
@SerialName("iconImageUrl")
16+
val iconImageUrl: String,
17+
@SerialName("contentImageUrl")
18+
val contentImageUrl: String,
19+
@SerialName("subRoutines")
20+
val subRoutines: List<SubRoutines>
21+
) {
22+
@Serializable
23+
data class SubRoutines(
24+
@SerialName("subRoutineId")
25+
val subRoutineId: Int,
26+
@SerialName("content")
27+
val content: String,
28+
@SerialName("detailContent")
29+
val detailContent: String,
30+
@SerialName("timeTaken")
31+
val timeTaken: String,
32+
@SerialName("place")
33+
val place: String
34+
)
35+
36+
fun toHappyCard() = HappyCard(
37+
title = this.title,
38+
name = this.name,
39+
nameColor = this.nameColor,
40+
iconImageUrl = this.iconImageUrl,
41+
contentImageUrl = this.contentImageUrl,
42+
subRoutines = this.subRoutines.map { subRoutine ->
43+
HappyCard.SubRoutines(
44+
subRoutineId = subRoutine.subRoutineId,
45+
content = subRoutine.content,
46+
detailContent = subRoutine.detailContent,
47+
timeTaken = subRoutine.timeTaken,
48+
place = subRoutine.place,
49+
contentImageUrl = contentImageUrl
50+
)
51+
}
52+
)
53+
}

app/src/main/java/com/sopetit/softie/data/repositoryImpl/HappinessRoutineRepositoryImpl.kt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.sopetit.softie.data.repositoryImpl
22

33
import com.sopetit.softie.data.source.HappinessRoutineDataSource
4+
import com.sopetit.softie.domain.entity.HappyCard
45
import com.sopetit.softie.domain.entity.HappyChip
56
import com.sopetit.softie.domain.entity.HappyContent
67
import com.sopetit.softie.domain.repository.HappinessRoutineRepository
@@ -9,6 +10,13 @@ import javax.inject.Inject
910
class HappinessRoutineRepositoryImpl @Inject constructor(
1011
private val happinessRoutineDataSource: HappinessRoutineDataSource
1112
) : HappinessRoutineRepository {
13+
override suspend fun getHappyCard(routineId: String): Result<HappyCard> =
14+
runCatching {
15+
happinessRoutineDataSource.getHappyCard(routineId)
16+
}.map {
17+
requireNotNull(it.data).toHappyCard()
18+
}
19+
1220
override suspend fun getHappyChip(): Result<List<HappyChip>> =
1321
runCatching { happinessRoutineDataSource.getHappyChip() }.map { response ->
1422
requireNotNull(response.data).toHappyChip()

app/src/main/java/com/sopetit/softie/data/service/HappinessRoutineService.kt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,19 @@
11
package com.sopetit.softie.data.service
22

33
import com.sopetit.softie.data.entity.BaseResponse
4+
import com.sopetit.softie.data.entity.response.HappyCardResponse
45
import com.sopetit.softie.data.entity.response.HappyChipResponse
56
import com.sopetit.softie.data.entity.response.HappyContentResponse
67
import retrofit2.http.GET
8+
import retrofit2.http.Path
79
import retrofit2.http.Query
810

911
interface HappinessRoutineService {
12+
@GET("api/v1/routines/happiness/routine/{routineId}")
13+
suspend fun getHappyCard(
14+
@Path("routineId") routineId: String
15+
): BaseResponse<HappyCardResponse>
16+
1017
@GET("api/v1/routines/happiness/themes")
1118
suspend fun getHappyChip(): BaseResponse<HappyChipResponse>
1219

app/src/main/java/com/sopetit/softie/data/source/HappinessRoutineDataSource.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.sopetit.softie.data.source
22

33
import com.sopetit.softie.data.entity.BaseResponse
4+
import com.sopetit.softie.data.entity.response.HappyCardResponse
45
import com.sopetit.softie.data.entity.response.HappyChipResponse
56
import com.sopetit.softie.data.entity.response.HappyContentResponse
67
import com.sopetit.softie.data.service.HappinessRoutineService
@@ -9,6 +10,8 @@ import javax.inject.Inject
910
class HappinessRoutineDataSource @Inject constructor(
1011
private val happinessRoutineService: HappinessRoutineService
1112
) {
13+
suspend fun getHappyCard(routineId: String): BaseResponse<HappyCardResponse> =
14+
happinessRoutineService.getHappyCard(routineId)
1215
suspend fun getHappyChip(): BaseResponse<HappyChipResponse> =
1316
happinessRoutineService.getHappyChip()
1417

app/src/main/java/com/sopetit/softie/di/RepositoryModule.kt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,12 @@ abstract class RepositoryModule {
2323
memberRepositoryImpl: MemberRepositoryImpl
2424
): MemberRepository
2525

26+
/*@Binds
27+
@Singleton
28+
abstract fun bindToHappyCardRepository(
29+
happinessRoutineRepositoryImpl: HappinessRoutineRepositoryImpl
30+
): HappinessRoutineRepository*/
31+
2632
@Binds
2733
@Singleton
2834
abstract fun bindToDailyRoutineRepository(

app/src/main/java/com/sopetit/softie/di/RetrofitServiceModule.kt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,15 +17,15 @@ object RetrofitServiceModule {
1717
fun providesMemberService(@RetrofitModule.SoftieType retrofit: Retrofit): MemberService =
1818
retrofit.create(MemberService::class.java)
1919

20+
@Provides
21+
fun providesHappinessRoutineService(@RetrofitModule.SoftieType retrofit: Retrofit): HappinessRoutineService =
22+
retrofit.create(HappinessRoutineService::class.java)
23+
2024
@Provides
2125
fun providesDailyRoutineService(@RetrofitModule.SoftieType retrofit: Retrofit): DailyRoutineService =
2226
retrofit.create(DailyRoutineService::class.java)
2327

2428
@Provides
2529
fun providesDollService(@RetrofitModule.SoftieType retrofit: Retrofit): DollService =
2630
retrofit.create(DollService::class.java)
27-
28-
@Provides
29-
fun providesHappinessRoutineService(@RetrofitModule.SoftieType retrofit: Retrofit): HappinessRoutineService =
30-
retrofit.create(HappinessRoutineService::class.java)
3131
}
Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,19 @@
11
package com.sopetit.softie.domain.entity
22

3-
import androidx.annotation.DrawableRes
4-
53
data class HappyCard(
6-
val categoryId: Int,
4+
val title: String,
75
val name: String,
86
val nameColor: String,
9-
val title: String,
10-
@DrawableRes val iconImageUrl: Int,
11-
val routines: List<Routines>
7+
val iconImageUrl: String,
8+
val contentImageUrl: String,
9+
val subRoutines: List<SubRoutines>
1210
) {
13-
data class Routines(
14-
val routineId: Int,
15-
@DrawableRes val cardImageUrl: Int,
11+
data class SubRoutines(
12+
val subRoutineId: Int,
1613
val content: String,
17-
val detailTitle: String,
1814
val detailContent: String,
19-
val detailTime: String,
20-
val detailPlace: String
15+
val timeTaken: String,
16+
val place: String,
17+
val contentImageUrl: String
2118
)
2219
}
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
package com.sopetit.softie.domain.repository
22

3+
import com.sopetit.softie.domain.entity.HappyCard
34
import com.sopetit.softie.domain.entity.HappyChip
45
import com.sopetit.softie.domain.entity.HappyContent
56

67
interface HappinessRoutineRepository {
8+
suspend fun getHappyCard(routineId: String): Result<HappyCard>
79
suspend fun getHappyChip(): Result<List<HappyChip>>
810
suspend fun getHappyContent(themeId: Int): Result<List<HappyContent>>
911
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package com.sopetit.softie.domain.usecase
2+
3+
import com.sopetit.softie.domain.repository.HappinessRoutineRepository
4+
import javax.inject.Inject
5+
6+
class GetHappyCardUseCase @Inject constructor(
7+
private val happinessRoutineRepository: HappinessRoutineRepository
8+
) {
9+
suspend operator fun invoke(routineId: String) =
10+
happinessRoutineRepository.getHappyCard(routineId)
11+
}

0 commit comments

Comments
 (0)