diff --git a/app/build.gradle.kts b/app/build.gradle.kts
index 547e7f99b..08fb01b13 100644
--- a/app/build.gradle.kts
+++ b/app/build.gradle.kts
@@ -17,8 +17,15 @@ android {
namespace = "com.eatssu.android"
compileSdk = 35
- // S8: API 28
- // S21: API 33
+ /**
+ * 현재 팀 내 안드로이드 OS 버전
+ * 진 S8: 9 (sdk 28)
+ * 진 S21: 14 (sdk 33)
+ * 윤소: 9
+ * 유리: 10
+ * 제훈: 14
+ */
+
defaultConfig {
applicationId = "com.eatssu.android"
minSdk = 23
@@ -114,6 +121,7 @@ android {
dependencies {
implementation(project(":core:design-system"))
+ implementation(project(":core:design-system"))
implementation(libs.androidx.core.ktx)
implementation(libs.androidx.appcompat)
@@ -126,6 +134,27 @@ dependencies {
implementation(libs.androidx.activity.ktx)
implementation(libs.androidx.fragment.ktx)
+ // Compose
+ implementation(libs.androidx.activity.compose)
+ implementation(libs.androidx.compose.animation)
+ implementation(libs.androidx.compose.ui.tooling)
+ implementation(libs.androidx.compose.lifecycle.viewmodel)
+ implementation(libs.androidx.compose.lifecycle.runtime)
+ implementation(platform(libs.androidx.compose.bom))
+ implementation(libs.androidx.compose.ui)
+ implementation(libs.androidx.compose.ui.graphics)
+ implementation(libs.androidx.compose.ui.tooling.preview)
+ implementation(libs.androidx.compose.material3)
+ implementation(libs.compose.theme.adapter)
+ implementation(libs.accompanist.appcompat.theme)
+ androidTestImplementation(libs.androidx.compose.bom)
+ debugImplementation(libs.androidx.compose.ui.test.manifest)
+
+ // navigation
+ implementation(libs.androidx.navigation.fragment)
+ implementation(libs.androidx.navigation.ui)
+ implementation(libs.androidx.navigation.compose)
+
//glance
implementation(libs.androidx.glance)
implementation(libs.androidx.glance.preview)
@@ -153,6 +182,9 @@ dependencies {
implementation(libs.glide)
kapt(libs.glide.compiler)
+ //coil: 이미지 로딩
+ implementation(libs.coil.compose)
+
//compressor: 이미지 압축
implementation(libs.compressor)
@@ -170,6 +202,7 @@ dependencies {
kapt(libs.androidx.hilt.compiler)
implementation(libs.androidx.hilt.common)
implementation(libs.androidx.hilt.work)
+ implementation(libs.hilt.navigation.compose)
// ViewModel and LiveData
implementation(libs.androidx.lifecycle.viewmodel.ktx)
@@ -189,27 +222,6 @@ dependencies {
// OSS
implementation(libs.oss.licenses)
- // Compose
- implementation(libs.androidx.activity.compose)
- implementation(libs.androidx.compose.animation)
- implementation(libs.androidx.compose.ui.tooling)
- implementation(libs.androidx.compose.lifecycle.viewmodel)
- implementation(libs.androidx.compose.lifecycle.runtime)
- implementation(platform(libs.androidx.compose.bom))
- implementation(libs.androidx.compose.ui)
- implementation(libs.androidx.compose.ui.graphics)
- implementation(libs.androidx.compose.ui.tooling.preview)
- implementation(libs.androidx.compose.material3)
-// androidTestImplementation(libs.androidx.compose.ui.test.junit4)
- implementation(libs.compose.theme.adapter)
- implementation(libs.accompanist.appcompat.theme)
- androidTestImplementation(libs.androidx.compose.bom)
- debugImplementation(libs.androidx.compose.ui.test.manifest)
-
- // navigation
- implementation(libs.androidx.navigation.fragment)
- implementation(libs.androidx.navigation.ui)
-
// worker (Kotlin + coroutines)
implementation(libs.androidx.work.runtime.ktx)
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 1207ded2f..2b032f7b4 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -133,15 +133,12 @@
-
@@ -186,14 +183,7 @@
android:value="" />
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/java/com/eatssu/android/data/dto/request/ModifyReviewRequest.kt b/app/src/main/java/com/eatssu/android/data/dto/request/ModifyReviewRequest.kt
index 4fc581aa9..4be5eb3cc 100644
--- a/app/src/main/java/com/eatssu/android/data/dto/request/ModifyReviewRequest.kt
+++ b/app/src/main/java/com/eatssu/android/data/dto/request/ModifyReviewRequest.kt
@@ -1,10 +1,18 @@
package com.eatssu.android.data.dto.request
+import com.eatssu.android.data.dto.request.WriteMenuReviewRequest.MenuLike
import com.google.gson.annotations.SerializedName
data class ModifyReviewRequest(
- @SerializedName("mainRating") var mainRating: Int? = null,
- @SerializedName("amountRating") var amountRating: Int? = null,
- @SerializedName("tasteRating") var tasteRating: Int? = null,
- @SerializedName("content") var content: String? = null,
-)
\ No newline at end of file
+
+ @SerializedName("rating") var rating: Int? = null,
+ @SerializedName("menuLikes") var menuLikes: MenuLike? = MenuLike(),
+ @SerializedName("content") var content: String? = null
+) {
+ data class MenuLikes(
+
+ @SerializedName("menuId") var menuId: Long? = null,
+ @SerializedName("isLike") var isLike: Boolean? = null
+
+ )
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/eatssu/android/data/dto/request/ReportRequest.kt b/app/src/main/java/com/eatssu/android/data/dto/request/ReportRequest.kt
index 30d5ab84b..462c279ce 100644
--- a/app/src/main/java/com/eatssu/android/data/dto/request/ReportRequest.kt
+++ b/app/src/main/java/com/eatssu/android/data/dto/request/ReportRequest.kt
@@ -3,12 +3,7 @@ package com.eatssu.android.data.dto.request
import com.google.gson.annotations.SerializedName
data class ReportRequest(
- @SerializedName("reviewId")
- val reviewId: Long,
-
- @SerializedName("reportType")
- val reportType: String,
-
- @SerializedName("content")
- val content: String,
+ @SerializedName("reviewId") var reviewId: Long? = null,
+ @SerializedName("reportType") var reportType: String? = null,
+ @SerializedName("content") var content: String? = null
)
diff --git a/app/src/main/java/com/eatssu/android/data/dto/request/WriteReviewRequest.kt b/app/src/main/java/com/eatssu/android/data/dto/request/WriteMealReviewRequest.kt
similarity index 56%
rename from app/src/main/java/com/eatssu/android/data/dto/request/WriteReviewRequest.kt
rename to app/src/main/java/com/eatssu/android/data/dto/request/WriteMealReviewRequest.kt
index 1042fd6ce..1f26dca66 100644
--- a/app/src/main/java/com/eatssu/android/data/dto/request/WriteReviewRequest.kt
+++ b/app/src/main/java/com/eatssu/android/data/dto/request/WriteMealReviewRequest.kt
@@ -2,12 +2,20 @@ package com.eatssu.android.data.dto.request
import com.google.gson.annotations.SerializedName
-data class WriteReviewRequest(
+data class WriteMenuReviewRequest(
+ @SerializedName("menuId") var menuId: Int? = null,
@SerializedName("mainRating") var mainRating: Int? = null,
@SerializedName("amountRating") var amountRating: Int? = null,
@SerializedName("tasteRating") var tasteRating: Int? = null,
@SerializedName("content") var content: String? = null,
@SerializedName("imageUrl") var imageUrl: String? = null,
+ @SerializedName("menuLike") var menuLike: MenuLike? = MenuLike()
+) {
+ data class MenuLike(
- )
\ No newline at end of file
+ @SerializedName("menuId") var menuId: Long? = null,
+ @SerializedName("isLike") var isLike: Boolean? = null
+
+ )
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/eatssu/android/data/dto/request/WriteMenuReviewRequest.kt b/app/src/main/java/com/eatssu/android/data/dto/request/WriteMenuReviewRequest.kt
new file mode 100644
index 000000000..6893dd269
--- /dev/null
+++ b/app/src/main/java/com/eatssu/android/data/dto/request/WriteMenuReviewRequest.kt
@@ -0,0 +1,18 @@
+package com.eatssu.android.data.dto.request
+
+import com.google.gson.annotations.SerializedName
+
+
+data class WriteMealReviewRequest(
+ @SerializedName("mealId") var mealId: Int? = null,
+ @SerializedName("rating") var rating: Int? = null,
+ @SerializedName("menuLikes") var menuLikes: List = arrayListOf(),
+ @SerializedName("content") var content: String? = null,
+ @SerializedName("imageUrls") var imageUrls: List = arrayListOf()
+
+) {
+ data class MenuLikes(
+ @SerializedName("menuId") var menuId: Long? = null,
+ @SerializedName("isLike") var isLike: Boolean? = null
+ )
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/eatssu/android/data/dto/response/MealReviewInfoResponse.kt b/app/src/main/java/com/eatssu/android/data/dto/response/MealReviewInfoResponse.kt
index b58c0b51a..8a682367e 100644
--- a/app/src/main/java/com/eatssu/android/data/dto/response/MealReviewInfoResponse.kt
+++ b/app/src/main/java/com/eatssu/android/data/dto/response/MealReviewInfoResponse.kt
@@ -3,38 +3,29 @@ package com.eatssu.android.data.dto.response
import com.eatssu.android.domain.model.ReviewInfo
import com.google.gson.annotations.SerializedName
-data class GetMealReviewInfoResponse(
-
- @SerializedName("menuNames") var menuNames: ArrayList = arrayListOf(),
+data class MealReviewInfoResponse(
+ @SerializedName("menuNames") var menuNames: List? = null,
@SerializedName("totalReviewCount") var totalReviewCount: Int? = null,
@SerializedName("mainRating") var mainRating: Double? = null,
- @SerializedName("amountRating") var amountRating: Double? = null,
- @SerializedName("tasteRating") var tasteRating: Double? = null,
- @SerializedName("reviewRatingCount") var reviewRatingCount: ReviewRatingCount = ReviewRatingCount(),
-
- ) {
+ @SerializedName("likeCount") var likeCount: Int? = null,
+ @SerializedName("reviewRatingCount") var reviewRatingCount: ReviewRatingCount? = ReviewRatingCount()
+) {
data class ReviewRatingCount(
-
@SerializedName("oneStarCount") var oneStarCount: Int? = null,
@SerializedName("twoStarCount") var twoStarCount: Int? = null,
@SerializedName("threeStarCount") var threeStarCount: Int? = null,
@SerializedName("fourStarCount") var fourStarCount: Int? = null,
- @SerializedName("fiveStarCount") var fiveStarCount: Int? = null,
-
- )
-
+ @SerializedName("fiveStarCount") var fiveStarCount: Int? = null
+ )
}
-fun GetMealReviewInfoResponse.asReviewInfo() = ReviewInfo(
-
- name = menuNames.joinToString(separator = "+"),
+fun MealReviewInfoResponse.toDomain() = ReviewInfo(
+ name = menuNames?.joinToString(separator = " + ") ?: "",
reviewCnt = totalReviewCount ?: 0,
mainRating = mainRating ?: 0.0,
- amountRating = amountRating ?: 0.0,
- tasteRating = tasteRating ?: 0.0,
- one = reviewRatingCount.oneStarCount ?: 0,
- two = reviewRatingCount.twoStarCount ?: 0,
- three = reviewRatingCount.threeStarCount ?: 0,
- four = reviewRatingCount.fourStarCount ?: 0,
- five = reviewRatingCount.fiveStarCount ?: 0,
+ one = reviewRatingCount?.oneStarCount ?: 0,
+ two = reviewRatingCount?.twoStarCount ?: 0,
+ three = reviewRatingCount?.threeStarCount ?: 0,
+ four = reviewRatingCount?.fourStarCount ?: 0,
+ five = reviewRatingCount?.fiveStarCount ?: 0,
)
diff --git a/app/src/main/java/com/eatssu/android/data/dto/response/MealReviewListResponse.kt b/app/src/main/java/com/eatssu/android/data/dto/response/MealReviewListResponse.kt
new file mode 100644
index 000000000..74e047b2c
--- /dev/null
+++ b/app/src/main/java/com/eatssu/android/data/dto/response/MealReviewListResponse.kt
@@ -0,0 +1,51 @@
+package com.eatssu.android.data.dto.response
+
+import com.eatssu.android.domain.model.Review
+import com.google.gson.annotations.SerializedName
+
+data class MealReviewListResponse(
+ @SerializedName("numberOfElements") var numberOfElements: Int? = null,
+ @SerializedName("hasNext") var hasNext: Boolean? = null,
+ @SerializedName("dataList") var dataList: ArrayList