Skip to content

Commit

Permalink
Merge pull request #227 from GEON-PPANG/mod-bradType-chip
Browse files Browse the repository at this point in the history
[feat] 동적 inflate를 위한 chip 관련 구현,  BreadTypeList Dto 형태 수정 및 관련 뷰 수정
  • Loading branch information
Dan2dani authored Feb 18, 2024
2 parents 295649c + 9aff4bc commit 0f3a1ac
Show file tree
Hide file tree
Showing 47 changed files with 420 additions and 473 deletions.
19 changes: 10 additions & 9 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -15,12 +15,12 @@ properties.load(project.rootProject.file('local.properties').newDataInputStream(

android {
namespace 'com.sopt.geonppang'
compileSdk 33
compileSdk 34

defaultConfig {
applicationId "com.sopt.geonppang"
minSdk 28
targetSdk 33
targetSdk 34
versionCode 1
versionName "1.0.0"

Expand Down Expand Up @@ -58,20 +58,21 @@ android {
}

dependencies {
implementation 'androidx.core:core-ktx:1.10.1'
implementation 'androidx.core:core-ktx:1.12.0'
implementation 'androidx.appcompat:appcompat:1.6.1'
implementation 'com.google.android.material:material:1.9.0'
implementation 'com.google.android.material:material:1.11.0'
implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
implementation "androidx.recyclerview:recyclerview:1.3.1"
implementation "androidx.recyclerview:recyclerview:1.3.2"

// Ktx
implementation 'androidx.activity:activity-ktx:1.7.2'
implementation 'androidx.fragment:fragment-ktx:1.6.1'
implementation 'androidx.activity:activity-ktx:1.8.2'
implementation 'androidx.fragment:fragment-ktx:1.6.2'
//noinspection GradleDependency
implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycle_version"

// Hilt
implementation "com.google.dagger:hilt-android:$hilt_version"
implementation 'androidx.hilt:hilt-navigation-fragment:1.0.0'
implementation 'androidx.hilt:hilt-navigation-fragment:1.1.0'
implementation 'androidx.security:security-crypto-ktx:1.1.0-alpha06'
kapt "com.google.dagger:hilt-compiler:$hilt_version"

Expand All @@ -91,7 +92,7 @@ dependencies {
implementation 'com.squareup.okhttp3:logging-interceptor'
implementation 'com.squareup.retrofit2:retrofit:2.9.0'
implementation 'com.jakewharton.retrofit:retrofit2-kotlinx-serialization-converter:1.0.0'
implementation 'org.jetbrains.kotlinx:kotlinx-serialization-json:1.4.1'
implementation 'org.jetbrains.kotlinx:kotlinx-serialization-json:1.5.0'

testImplementation 'junit:junit:4.13.2'
androidTestImplementation 'androidx.test.ext:junit:1.1.5'
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package com.sopt.geonppang.data.model.response

import kotlinx.serialization.Serializable

@Serializable
data class BreadTypeIdDto(
val breadTypeId: Int
)
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package com.sopt.geonppang.data.model.response

import kotlinx.serialization.Serializable

@Serializable
data class NutrientTypeIdDto(
val nutrientTypeId: Int
)
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
package com.sopt.geonppang.data.model.response

import com.sopt.geonppang.domain.model.BakeryInfo
import com.sopt.geonppang.domain.model.BreadType
import com.sopt.geonppang.domain.model.Menu
import com.sopt.geonppang.presentation.type.BreadFilterType
import kotlinx.serialization.Serializable

@Serializable
Expand All @@ -18,7 +18,7 @@ data class ResponseDetailBakery(
val bakeryName: String,
val bakeryPicture: String,
val bookMarkCount: Int,
val breadType: BreadType,
val breadTypeList: List<BreadTypeIdDto>,
val closedDay: String,
val firstNearStation: String,
val mapUrl: String,
Expand All @@ -34,16 +34,6 @@ data class ResponseDetailBakery(
val reviewCount: Int,
val secondNearStation: String,
) {
@Serializable
data class BreadType(
val breadTypeId: Int,
val breadTypeName: String,
val isGlutenFree: Boolean,
val isNutFree: Boolean,
val isSugarFree: Boolean,
val isVegan: Boolean
)

@Serializable
data class Menu(
val menuId: Int,
Expand Down Expand Up @@ -78,13 +68,10 @@ data class ResponseDetailBakery(
menuPrice = menu.menuPrice
)
},
breadType = BreadType(
breadTypeId = data.breadType.breadTypeId,
breadTypeName = data.breadType.breadTypeName,
isGlutenFree = data.breadType.isGlutenFree,
isVegan = data.breadType.isVegan,
isNutFree = data.breadType.isNutFree,
isSugarFree = data.breadType.isSugarFree
)
breadTypeIdList = data.breadTypeList.mapNotNull { breadTypeIdDto ->
BreadFilterType.values().find {
it.id == breadTypeIdDto.breadTypeId
}
}
)
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package com.sopt.geonppang.data.model.response

import com.sopt.geonppang.domain.model.Bakery
import com.sopt.geonppang.domain.model.BreadType
import com.sopt.geonppang.domain.model.BakeryInformation
import com.sopt.geonppang.presentation.type.BreadFilterType
import kotlinx.serialization.Serializable

@Serializable
Expand All @@ -22,21 +22,11 @@ data class ResponseMyPageBookmark(
val secondNearStation: String,
val bookMarkCount: Int,
val reviewCount: Int,
val breadType: BreadType
) {
@Serializable
data class BreadType(
val breadTypeId: Int,
val breadTypeName: String,
val isGlutenFree: Boolean,
val isVegan: Boolean,
val isNutFree: Boolean,
val isSugarFree: Boolean,
)
}
val breadTypeList: List<BreadTypeIdDto>
)

fun toMypageBookmark() = data.map { myBookmark ->
Bakery(
BakeryInformation(
bakeryId = myBookmark.bakeryId,
bakeryName = myBookmark.bakeryName,
bakeryPicture = myBookmark.bakeryPicture,
Expand All @@ -46,14 +36,11 @@ data class ResponseMyPageBookmark(
isNonGMO = myBookmark.isNonGMO,
isVegan = myBookmark.isVegan,
isHACCP = myBookmark.isHACCP,
breadType = BreadType(
myBookmark.breadType.breadTypeId,
myBookmark.breadType.breadTypeName,
myBookmark.breadType.isGlutenFree,
myBookmark.breadType.isVegan,
myBookmark.breadType.isNutFree,
myBookmark.breadType.isSugarFree,
)
breadTypeList = myBookmark.breadTypeList.mapNotNull { breadTypeIdDto ->
BreadFilterType.values().find {
it.id == breadTypeIdDto.breadTypeId
}
}
)
}
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package com.sopt.geonppang.data.model.response

import com.sopt.geonppang.domain.model.BreadType
import com.sopt.geonppang.domain.model.Profile
import com.sopt.geonppang.presentation.type.BreadFilterType
import kotlinx.serialization.Serializable

@Serializable
Expand All @@ -14,29 +14,16 @@ data class ResponseMyPageInfo(
data class Data(
val memberNickname: String,
val mainPurpose: String,
val breadType: BreadType
) {
@Serializable
data class BreadType(
val breadTypeId: Int,
val breadTypeName: String,
val isGlutenFree: Boolean,
val isNutFree: Boolean,
val isSugarFree: Boolean,
val isVegan: Boolean
)
}
val breadTypeList: List<BreadTypeIdDto>
)

fun toMypageInfo() = Profile(
memberNickname = data.memberNickname,
mainPurpose = data.mainPurpose,
breadType = BreadType(
breadTypeId = data.breadType.breadTypeId,
breadTypeName = data.breadType.breadTypeName,
isGlutenFree = data.breadType.isGlutenFree,
isVegan = data.breadType.isVegan,
isNutFree = data.breadType.isNutFree,
isSugarFree = data.breadType.isSugarFree
)
breadTypeList = data.breadTypeList.mapNotNull { breadTypeIdDto ->
BreadFilterType.values().find {
it.id == breadTypeIdDto.breadTypeId
}
}
)
}
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
package com.sopt.geonppang.data.model.response

import com.sopt.geonppang.domain.model.Bakery
import com.sopt.geonppang.domain.model.BreadType
import com.sopt.geonppang.domain.model.BakeryInformation
import com.sopt.geonppang.domain.model.MyReview
import com.sopt.geonppang.presentation.type.BreadFilterType
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable

Expand All @@ -25,24 +25,14 @@ data class ResponseMyPageReview(
val isNonGmo: Boolean,
val firstNearStation: String,
val secondNearStation: String,
val breadType: BreadType,
val breadTypeList: List<BreadTypeIdDto>,
val reviewId: Int,
val createdAt: String,
) {
@Serializable
data class BreadType(
val breadTypeId: Int,
val breadTypeName: String,
val isGlutenFree: Boolean,
val isVegan: Boolean,
val isNutFree: Boolean,
val isSugarFree: Boolean,
)
}
)

fun toMyReview() = data.map { myReview ->
MyReview(
bakery = Bakery(
bakery = BakeryInformation(
myReview.bakeryId,
myReview.bakeryName,
myReview.isHACCP,
Expand All @@ -52,14 +42,11 @@ data class ResponseMyPageReview(
myReview.secondNearStation,
null,
myReview.bakeryPicture,
breadType = BreadType(
myReview.breadType.breadTypeId,
myReview.breadType.breadTypeName,
myReview.breadType.isGlutenFree,
myReview.breadType.isVegan,
myReview.breadType.isNutFree,
myReview.breadType.isSugarFree
)
breadTypeList = myReview.breadTypeList.mapNotNull { breadTypeIdDto ->
BreadFilterType.values().find {
it.id == breadTypeIdDto.breadTypeId
}
}
),
reviewId = myReview.reviewId,
date = myReview.createdAt
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
package com.sopt.geonppang.data.model.response

import com.sopt.geonppang.domain.model.Bakery
import com.sopt.geonppang.domain.model.BreadType
import com.sopt.geonppang.domain.model.BakeryInformation
import com.sopt.geonppang.domain.model.Search
import com.sopt.geonppang.presentation.type.BreadFilterType
import kotlinx.serialization.Serializable

@Serializable
Expand All @@ -22,29 +22,19 @@ data class ResponseSearch(
val bakeryName: String,
val bakeryPicture: String,
val bookMarkCount: Int,
val breadType: BreadType,
val breadTypeList: List<BreadTypeIdDto>,
val firstNearStation: String,
val isHACCP: Boolean,
val isNonGMO: Boolean,
val isVegan: Boolean,
val reviewCount: Int,
val secondNearStation: String,
) {
@Serializable
data class BreadType(
val breadTypeId: Int,
val breadTypeName: String,
val isGlutenFree: Boolean,
val isNutFree: Boolean,
val isSugarFree: Boolean,
val isVegan: Boolean,
)
}
)

fun toSearch() = Search(
resultCount = resultCount,
bakeryList = bakeryList.map { searchBakery ->
Bakery(
BakeryInformation(
bakeryId = searchBakery.bakeryId,
bakeryName = searchBakery.bakeryName,
bakeryPicture = searchBakery.bakeryPicture,
Expand All @@ -54,14 +44,11 @@ data class ResponseSearch(
isNonGMO = searchBakery.isNonGMO,
isVegan = searchBakery.isVegan,
isHACCP = searchBakery.isHACCP,
breadType = BreadType(
searchBakery.breadType.breadTypeId,
searchBakery.breadType.breadTypeName,
searchBakery.breadType.isGlutenFree,
searchBakery.breadType.isVegan,
searchBakery.breadType.isNutFree,
searchBakery.breadType.isSugarFree,
)
breadTypeList = searchBakery.breadTypeList.mapNotNull { breadTypeIdDto ->
BreadFilterType.values().find {
it.id == breadTypeIdDto.breadTypeId
}
}
)
}
)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
package com.sopt.geonppang.data.model.response

import com.sopt.geonppang.domain.model.SelectedFilter
import com.sopt.geonppang.presentation.type.BreadFilterType
import com.sopt.geonppang.presentation.type.NutrientFilterType
import kotlinx.serialization.Serializable

@Serializable
Expand All @@ -11,30 +13,24 @@ data class ResponseSettingFilter(
) {
@Serializable
data class Data(
val breadTypeList: List<BreadTypeId>,
val breadTypeList: List<BreadTypeIdDto>,
val mainPurpose: String,
val memberId: Int,
val nickname: String,
val nutrientTypeList: List<NutrientTypeId>
)

@Serializable
data class BreadTypeId(
val breadTypeId: Int
)

@Serializable
data class NutrientTypeId(
val nutrientTypeId: Int
val nutrientTypeList: List<NutrientTypeIdDto>
)

fun toSelectedFilter() = SelectedFilter(
mainPurpose = data.mainPurpose,
breadTypeList = data.breadTypeList.map { breadType -> SelectedFilter.BreadTypeId(breadTypeId = breadType.breadTypeId) },
nutrientTypeList = data.nutrientTypeList.map { nutrientType ->
SelectedFilter.NutrientTypeId(
nutrientTypeId = nutrientType.nutrientTypeId
)
breadTypeList = data.breadTypeList.mapNotNull { breadType ->
BreadFilterType.values().find {
it.id == breadType.breadTypeId
}
},
nutrientTypeList = data.nutrientTypeList.mapNotNull { nutrientTypeIdDto ->
NutrientFilterType.values().find {
it.id == nutrientTypeIdDto.nutrientTypeId
}
}
)
}
Loading

0 comments on commit 0f3a1ac

Please sign in to comment.