Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[feat] 동적 inflate를 위한 chip 관련 구현, BreadTypeList Dto 형태 수정 및 관련 뷰 수정 #227

Merged
merged 18 commits into from
Feb 18, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
18 commits
Select commit Hold shift + click to select a range
152b9e9
[mod] #224 여러 디자인에 대한 Chip Factory를 만들 수 있도록 수정
Dan2dani Feb 15, 2024
aac156f
[mod] #224 sdk 올리기 및 각종 라이브러리 버전 업데이트
Dan2dani Feb 16, 2024
f976b4e
[feat] #224 BreadTypeIdDto, NutrientTypeIdDto 같이 공통으로 쓰이는 Dto 분리
Dan2dani Feb 17, 2024
ecffe6e
[feat] #224 breadType에 대해 List 형태로 가지고 있는 엔티티 생성
Dan2dani Feb 17, 2024
86095df
[feat] #224 breadType model 형태 수정에 따른 관련 model, entity 형태 수정
Dan2dani Feb 17, 2024
2bdfcc9
[feat] #224 breadType chip 디자인
Dan2dani Feb 17, 2024
3f280a7
[feat] #224 chip inflate에 필요한 각종 확장함수 구현
Dan2dani Feb 17, 2024
a504b7c
[mod] #224 breadType이 포함된 뷰 디자인 수정(chip 삭제)
Dan2dani Feb 17, 2024
e546acf
[feat] #224 list item마다 chipgroup이 inflate 될 수 읷도록, onBind 함수에서 initC…
Dan2dani Feb 17, 2024
560661d
[feat] #224 마이페이지에 나의 BreadType chip 동적 생성하기
Dan2dani Feb 17, 2024
1c3468c
[feat] #224 나의 저장목록 BreadTypeChips 동적 생성
Dan2dani Feb 17, 2024
eb15885
[feat] #224 나의 리뷰 모아보기 BradTypeChips 동적 생성
Dan2dani Feb 17, 2024
0310713
[feat] #224 나의 리뷰 상세보기, 빵집 BreadTypeChips 동적 생성
Dan2dani Feb 17, 2024
47b65cd
[feat] #224 검색 결과 리스트 breadTypeChips 동적 생성
Dan2dani Feb 17, 2024
78c60a0
[feat] #224 리뷰 작성, 빵집 상세뷰 BreadTypsChips 동적 생성
Dan2dani Feb 17, 2024
7a2b76c
[chroe] #224 ktlint 적용
Dan2dani Feb 17, 2024
60ad988
[chroe] #224 ktlint 적용
Dan2dani Feb 17, 2024
9aff4bc
Merge remote-tracking branch 'origin/mod-bradType-chip' into mod-brad…
Dan2dani Feb 17, 2024
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: 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
Copy link
Collaborator

Choose a reason for hiding this comment

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

따로 만들어서 관리하니까 확실히 코드가 깔끔해지는군요 짱짱쓰

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
}
},
Comment on lines +25 to +29
Copy link
Collaborator

Choose a reason for hiding this comment

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

오 훨씬 좋네용

Copy link
Member Author

Choose a reason for hiding this comment

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

enum으로 바꾸는거 굳이죵 ~~

nutrientTypeList = data.nutrientTypeList.mapNotNull { nutrientTypeIdDto ->
NutrientFilterType.values().find {
it.id == nutrientTypeIdDto.nutrientTypeId
}
}
)
}
Loading
Loading