Skip to content
Merged
Show file tree
Hide file tree
Changes from 13 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
19 changes: 3 additions & 16 deletions app/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -26,11 +26,12 @@ android {

testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
buildConfigField("String", "BASE_URL", properties["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 @@ -52,9 +53,6 @@ android {
kotlinOptions {
jvmTarget = "11"
}
buildFeatures {
compose = true
}
buildFeatures {
compose = true
buildConfig = true
Expand All @@ -63,14 +61,13 @@ android {
getByName("debug") {
keyAlias = "androiddebugkey"
keyPassword = "android"
storeFile = File("${project.rootDir.absolutePath}/keystore/debug.keystore")//project.rootProject.file("debug.keystore")
storeFile = File("${project.rootDir.absolutePath}/keystore/debug.keystore")
storePassword = "android"
}
}
}

dependencies {

testImplementation(libs.junit)
androidTestImplementation(platform(libs.androidx.compose.bom))
androidTestImplementation(libs.bundles.test)
Expand All @@ -91,32 +88,22 @@ dependencies {
ksp(libs.hilt.compiler)

implementation(libs.coil.compose)

implementation(libs.timber)

implementation(libs.accompanist.systemuicontroller)

implementation(libs.androidx.datastore.preferences)

//카카오
implementation(libs.kakaoMaps)
implementation(libs.v2.all)

//실시간 위치
implementation(libs.play.services.location)

//로띠 - 애니메이션
implementation(libs.lottie.compose)

// 네이버
implementation(libs.bundles.naverMaps)

//구글
implementation(libs.androidx.credentials)
implementation(libs.googleid)
implementation(libs.androidx.credentials.play.services.auth)
coreLibraryDesugaring(libs.desugar.jdk.libs)

// 암호화
implementation(libs.androidx.security)
}
2 changes: 1 addition & 1 deletion app/src/main/java/com/paw/key/data/di/NetworkModule.kt
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ object NetworkModule {
client: OkHttpClient,
converterFactory: Converter.Factory
): Retrofit = Retrofit.Builder()
.baseUrl(BuildConfig.BASE_URL)
.baseUrl(if (BuildConfig.DEBUG) BuildConfig.DEBUG_BASE_URL else BuildConfig.BASE_URL) //BuildConfig.BASE_URL)
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 받으면 적용되어있..?을 겁니다 ㅎㅎ

.addConverterFactory(converterFactory)
.client(client)
.build()
Expand Down
16 changes: 16 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 @@ -8,6 +8,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.PetProfileRepositoryImpl
Expand Down Expand Up @@ -37,6 +40,7 @@ import com.paw.key.domain.repository.home.RegionCurrentRepository
import com.paw.key.domain.repository.image.ImageRepository
import com.paw.key.domain.repository.list.PostsListRepository
import com.paw.key.domain.repository.login.AuthRepository
import com.paw.key.domain.repository.mypage.MypageRepository
import com.paw.key.domain.repository.petprofile.PetProfileRepository
import com.paw.key.domain.repository.sharedwalk.SharedWalkRepository
import com.paw.key.domain.repository.user.UserRepository
Expand Down Expand Up @@ -66,6 +70,12 @@ interface RepositoryModule {
impl: GoogleAuthDataSourceImpl,
): GoogleAuthDataSource

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

@Binds
abstract fun bindKakaoAuthDataSource(
impl: KakaoAuthDataSourceImpl
Expand Down Expand Up @@ -189,4 +199,10 @@ interface RepositoryModule {
abstract fun bindLocalStorageRepository(
impl: LocalStorageRepositoryImpl
): LocalStorageRepository

@Binds
@Singleton
fun bindMypageRepository(
impl: MypageRepositoryImpl
): MypageRepository
}
7 changes: 7 additions & 0 deletions app/src/main/java/com/paw/key/data/di/ServiceModule.kt
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import com.paw.key.data.service.home.HomeRegionService
import com.paw.key.data.service.image.ImageService
import com.paw.key.data.service.list.PostsListService
import com.paw.key.data.service.login.LoginService
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.walkcourse.WalkCourseService
Expand Down Expand Up @@ -109,4 +110,10 @@ object ServiceModule {
@Singleton
fun provideImageService(retrofit: Retrofit): ImageService =
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 가 존재해야합니다!

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

Loading
Loading