Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 2 additions & 4 deletions app/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -28,11 +28,12 @@ android {
buildConfigField("String", "BASE_URL", properties["base.url"].toString())
buildConfigField("String", "DEBUG_BASE_URL", properties["debug.base.url"].toString())

buildConfigField("String", "DEBUG_BASE_URL", properties["debug.base.url"].toString()) // ✅ 여기로
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

이것도 아마 pull 하면 생길..듯?합니다

buildConfigField("String", "KAKAO_NATIVE_KEY", properties["kakao.native.key"].toString())
buildConfigField("String", "KAKAO_REST_API_KEY", properties["kakao.rest.api"].toString())
buildConfigField("String", "NAVERMAP_CLIENT_SECRET", properties["NAVERMAP_CLIENT_SECRET"].toString())
buildConfigField("String", "NAVERMAP_CLIENT_ID", properties["NAVERMAP_CLIENT_ID"].toString())
buildConfigField("String","GOOGLE_WEB_CLIENT_ID",properties["google.client.id"].toString())
buildConfigField("String", "GOOGLE_WEB_CLIENT_ID", properties["google.client.id"].toString())

manifestPlaceholders["KAKAO_NATIVE_KEY"] = properties["kakao.native.key"].toString()
}
Expand All @@ -54,9 +55,6 @@ android {
kotlinOptions {
jvmTarget = "11"
}
buildFeatures {
compose = true
}
buildFeatures {
compose = true
buildConfig = true
Expand Down
17 changes: 17 additions & 0 deletions app/src/main/java/com/paw/key/data/di/RepositoryModule.kt
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,9 @@ import com.paw.key.data.remote.datasource.datasourceimpl.KakaoAuthDataSourceImpl
import com.paw.key.data.remote.datasource.login.AuthRemoteDataSource
import com.paw.key.data.remote.datasource.login.GoogleAuthDataSource
import com.paw.key.data.remote.datasource.login.KakaoAuthDataSource
import com.paw.key.data.remote.datasource.mypage.MypageDataSource
import com.paw.key.data.remote.datasource.mypage.MypageDataSourceImpl
import com.paw.key.data.repository.mypage.MypageRepositoryImpl
import com.paw.key.data.repositoryimpl.ArchivedListRepositoryImpl
import com.paw.key.data.repositoryimpl.LikeRepositoryImpl
import com.paw.key.data.repositoryimpl.RegionRepositoryImpl
Expand All @@ -30,6 +33,7 @@ import com.paw.key.domain.repository.home.RegionCurrentRepository
import com.paw.key.domain.repository.image.ImageRepository
import com.paw.key.domain.repository.localstorage.LocalStorageRepository
import com.paw.key.domain.repository.login.AuthRepository
import com.paw.key.domain.repository.mypage.MypageRepository
import com.paw.key.domain.repository.posts.PostsRepository
import com.paw.key.domain.repository.user.UserRepository
import com.paw.key.domain.repository.walk.WalkRepository
Expand All @@ -56,6 +60,12 @@ interface RepositoryModule {
impl: GoogleAuthDataSourceImpl,
): GoogleAuthDataSource

@Binds
@Singleton
fun bindMypageDataSource(
impl: MypageDataSourceImpl
): MypageDataSource

@Binds
abstract fun bindKakaoAuthDataSource(
impl: KakaoAuthDataSourceImpl
Expand Down Expand Up @@ -137,6 +147,12 @@ interface RepositoryModule {
impl: LocalStorageRepositoryImpl
): LocalStorageRepository

@Binds
@Singleton
fun bindMypageRepository(
impl: MypageRepositoryImpl
): MypageRepository

@Binds
@Singleton
fun bindWalkListRepository(
Expand All @@ -148,4 +164,5 @@ interface RepositoryModule {
fun bindWalkRepository(
impl: WalkRepositoryImpl
) : WalkRepository

}
9 changes: 8 additions & 1 deletion app/src/main/java/com/paw/key/data/di/ServiceModule.kt
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import com.paw.key.data.service.image.S3Service
import com.paw.key.data.service.login.LoginService
import com.paw.key.data.service.posts.PostsService
import com.paw.key.data.service.region.RegionService
import com.paw.key.data.service.mypage.MypageService
import com.paw.key.data.service.sharedwalk.SharedWalkService
import com.paw.key.data.service.user.UserService
import com.paw.key.data.service.walk.WalkService
Expand Down Expand Up @@ -47,7 +48,7 @@ object ServiceModule {
fun provideHomeRegionService(retrofit: Retrofit): HomeRegionService =
retrofit.create()

//마이페이지

@Provides
@Singleton
fun provideSavedListService(retrofit: Retrofit): SavedListService =
Expand Down Expand Up @@ -97,4 +98,10 @@ object ServiceModule {
@Singleton
fun providePostsService(retrofit: Retrofit): PostsService =
retrofit.create()


@Provides
@Singleton
fun provideMypageService(retrofit: Retrofit): MypageService =
retrofit.create()
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package com.paw.key.data.dto.request.mypage

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

@Serializable
data class UpdateUserRequestDto(
@SerialName("name") val name: String,
@SerialName("birth") val birth: String,
@SerialName("gender") val gender: String,
)

@Serializable
data class UpdatePetRequestDto(
@SerialName("name") val name: String,
@SerialName("birth") val birth: String,
@SerialName("gender") val gender: String,
@SerialName("isNeutered") val isNeutered: Boolean,
@SerialName("breedId") val breedId: Int,
@SerialName("imageId") val imageId: Int,
)
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
package com.paw.key.data.dto.response.mypage

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

@Serializable
data class RoutePostListResponseDto(
@SerialName("posts") val posts: List<RoutePostDto>,
)

@Serializable
data class RoutePostDto(
@SerialName("postId") val postId: Int,
@SerialName("regionName") val regionName: String,
@SerialName("title") val title: String,
@SerialName("date") val date: String,
@SerialName("durationMinutes") val durationMinutes: Int,
@SerialName("isLiked") val isLiked: Boolean,
@SerialName("imageUrl") val imageUrl: String,
)

@Serializable
data class ReviewPostListResponseDto(
@SerialName("posts") val posts: List<ReviewPostDto>,
)

@Serializable
data class ReviewPostDto(
@SerialName("postId") val postId: Int,
@SerialName("title") val title: String,
@SerialName("regionName") val regionName: String,
@SerialName("date") val date: String,
@SerialName("categoryOptionSummary") val categoryOptionSummary: List<String>,
)
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
package com.paw.key.data.remote.datasource.mypage

import com.paw.key.data.dto.request.mypage.UpdatePetRequestDto
import com.paw.key.data.dto.request.mypage.UpdateUserRequestDto
import com.paw.key.data.dto.response.BaseResponse
import com.paw.key.data.dto.response.mypage.ReviewPostListResponseDto
import com.paw.key.data.dto.response.mypage.RoutePostListResponseDto
import com.paw.key.data.service.mypage.MypageService
import javax.inject.Inject

class MypageDataSourceImpl @Inject constructor(
private val mypageService: MypageService,
) : MypageDataSource {

override suspend fun updateUser(body: UpdateUserRequestDto): BaseResponse<Unit> =
mypageService.updateUser(body)

override suspend fun updatePet(body: UpdatePetRequestDto): BaseResponse<Unit> =
mypageService.updatePet(body)

override suspend fun getMyRoutes(): BaseResponse<RoutePostListResponseDto> =
mypageService.getMyRoutes()

override suspend fun getLikedPosts(): BaseResponse<RoutePostListResponseDto> =
mypageService.getLikedPosts()

override suspend fun getMyReviews(): BaseResponse<ReviewPostListResponseDto> =
mypageService.getMyReviews()
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package com.paw.key.data.remote.datasource.mypage

import com.paw.key.data.dto.request.mypage.UpdatePetRequestDto
import com.paw.key.data.dto.request.mypage.UpdateUserRequestDto
import com.paw.key.data.dto.response.BaseResponse
import com.paw.key.data.dto.response.mypage.ReviewPostListResponseDto
import com.paw.key.data.dto.response.mypage.RoutePostListResponseDto

interface MypageDataSource {
suspend fun updateUser(body: UpdateUserRequestDto): BaseResponse<Unit>
suspend fun updatePet(body: UpdatePetRequestDto): BaseResponse<Unit>
suspend fun getMyRoutes(): BaseResponse<RoutePostListResponseDto>
suspend fun getLikedPosts(): BaseResponse<RoutePostListResponseDto>
suspend fun getMyReviews(): BaseResponse<ReviewPostListResponseDto>
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
package com.paw.key.data.repository.mypage

import com.paw.key.core.util.suspendRunCatching
import com.paw.key.data.dto.request.mypage.UpdatePetRequestDto
import com.paw.key.data.dto.request.mypage.UpdateUserRequestDto
import com.paw.key.data.remote.datasource.mypage.MypageDataSource
import com.paw.key.domain.entity.mypage.ReviewPostEntity
import com.paw.key.domain.entity.mypage.RoutePostEntity
import com.paw.key.domain.entity.mypage.toEntity
import com.paw.key.domain.repository.mypage.MypageRepository
import javax.inject.Inject

class MypageRepositoryImpl @Inject constructor(
private val dataSource: MypageDataSource,
) : MypageRepository {

override suspend fun updateUser(name: String, birth: String, gender: String): Result<Unit> =
suspendRunCatching {
dataSource.updateUser(UpdateUserRequestDto(name = name, birth = birth, gender = gender))
}

override suspend fun updatePet(
name: String,
birth: String,
gender: String,
isNeutered: Boolean,
breedId: Int,
imageId: Int,
): Result<Unit> = suspendRunCatching {
dataSource.updatePet(
UpdatePetRequestDto(
name = name,
birth = birth,
gender = gender,
isNeutered = isNeutered,
breedId = breedId,
imageId = imageId,
)
)
}

override suspend fun getMyRoutes(): Result<List<RoutePostEntity>> =
suspendRunCatching {
dataSource.getMyRoutes().data?.posts?.map { it.toEntity() } ?: emptyList()
}

override suspend fun getLikedPosts(): Result<List<RoutePostEntity>> =
suspendRunCatching {
dataSource.getLikedPosts().data?.posts?.map { it.toEntity() } ?: emptyList()
}

override suspend fun getMyReviews(): Result<List<ReviewPostEntity>> =
suspendRunCatching {
dataSource.getMyReviews().data?.posts?.map { it.toEntity() } ?: emptyList()
}
}
32 changes: 32 additions & 0 deletions app/src/main/java/com/paw/key/data/service/mypage/MypageService.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
package com.paw.key.data.service.mypage

import com.paw.key.data.dto.request.mypage.UpdatePetRequestDto
import com.paw.key.data.dto.request.mypage.UpdateUserRequestDto
import com.paw.key.data.dto.response.BaseResponse
import com.paw.key.data.dto.response.mypage.ReviewPostListResponseDto
import com.paw.key.data.dto.response.mypage.RoutePostListResponseDto
import retrofit2.http.Body
import retrofit2.http.GET
import retrofit2.http.PATCH

interface MypageService {

@PATCH("users/me")
suspend fun updateUser(
@Body body: UpdateUserRequestDto,
): BaseResponse<Unit>

@PATCH("pets/me")
suspend fun updatePet(
@Body body: UpdatePetRequestDto,
): BaseResponse<Unit>

@GET("users/me/routes")
suspend fun getMyRoutes(): BaseResponse<RoutePostListResponseDto>

@GET("users/me/likes")
suspend fun getLikedPosts(): BaseResponse<RoutePostListResponseDto>

@GET("users/me/reviews")
suspend fun getMyReviews(): BaseResponse<ReviewPostListResponseDto>
}
40 changes: 40 additions & 0 deletions app/src/main/java/com/paw/key/domain/entity/mypage/MypageEntity.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
package com.paw.key.domain.entity.mypage

import com.paw.key.data.dto.response.mypage.ReviewPostDto
import com.paw.key.data.dto.response.mypage.RoutePostDto

data class RoutePostEntity(
val postId: Int,
val regionName: String,
val title: String,
val date: String,
val durationMinutes: Int,
val isLiked: Boolean,
val imageUrl: String,
)

data class ReviewPostEntity(
val postId: Int,
val title: String,
val regionName: String,
val date: String,
val categoryOptionSummary: List<String>,
)

fun RoutePostDto.toEntity() = RoutePostEntity(
postId = postId,
regionName = regionName,
title = title,
date = date,
durationMinutes = durationMinutes,
isLiked = isLiked,
imageUrl = imageUrl,
)

fun ReviewPostDto.toEntity() = ReviewPostEntity(
postId = postId,
title = title,
regionName = regionName,
date = date,
categoryOptionSummary = categoryOptionSummary,
)
Comment on lines +24 to +40
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

우리 이제 클린이라 dto안에 toEntity 가 존재해야합니다!

의존성 바뀌었어요 도하하~

Original file line number Diff line number Diff line change
Expand Up @@ -11,4 +11,4 @@ data class PetProfileEntity(
val breed: String,
val dbtiName: String?,
val dbtiDescription: String?,
)
)
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package com.paw.key.domain.repository.mypage

import com.paw.key.domain.entity.mypage.ReviewPostEntity
import com.paw.key.domain.entity.mypage.RoutePostEntity

interface MypageRepository {
suspend fun updateUser(name: String, birth: String, gender: String): Result<Unit>
suspend fun updatePet(name: String, birth: String, gender: String, isNeutered: Boolean, breedId: Int, imageId: Int): Result<Unit>
suspend fun getMyRoutes(): Result<List<RoutePostEntity>>
suspend fun getLikedPosts(): Result<List<RoutePostEntity>>
suspend fun getMyReviews(): Result<List<ReviewPostEntity>>
}

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ import com.paw.key.presentation.ui.home.navigation.navigateHomeLocationSetting
import com.paw.key.presentation.ui.login.navigation.navigateLogin
import com.paw.key.presentation.ui.mypage.main.navigation.navigateMyPage
import com.paw.key.presentation.ui.mypage.route.courseinfo.model.CourseType
import com.paw.key.presentation.ui.mypage.route.courseinfo.navigation.navigateCourseInfo
import com.paw.key.presentation.ui.mypage.route.courseinfo.navigation.navigateToCourseInfo
import com.paw.key.presentation.ui.mypage.route.petinfo.navigation.navigatePetProfile
import com.paw.key.presentation.ui.mypage.route.petinfo.navigation.navigatePetProfileList
import com.paw.key.presentation.ui.mypage.route.userinfo.navigation.navigateUserProfile
Expand Down Expand Up @@ -98,7 +98,7 @@ class MainNavigator(
courseType: CourseType,
navOptions: NavOptions? = null,
) {
navController.navigateCourseInfo(courseType = courseType, navOptions = navOptions)
navController.navigateToCourseInfo(courseType = courseType, navOptions = navOptions)
}

// Todo : 나중에 로직 플로우 확인하고 수정예정
Expand Down
Loading