-
Notifications
You must be signed in to change notification settings - Fork 1
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
[UI/YAF-68] 알람 설정 시 요일 반복 설정 #34
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
어려분 부분이 많았는데 수고하셨습니다!
그리고 stateProvider()
를 사용한 이유를 남깁니다!
상태 주입 방식을 추상화하여, 테스트 코드 작성이나 다른 의존성 주입 시 유연성이 증가한답니다!
음. 예를들어서 ViewModel 없이 특정 상태를 하드코딩 하거나, 외부에서 상태를 직접 주입해야 하는 경우를 대비할 수 있는 구조를 작성한 것이죠!
그러면 재사용성 또한 증가하겠죠? 계속 val state = viewmodel~ 을 선언할 필요가 사라지니?
이렇게 하면 Preivew에서도 viewmodel호출 안해도 된다는 장점이 있답니다!
이 구조는 상의를 좀 더 해봅시다~
fun AlarmAddEditScreen( | ||
state: AlarmAddEditContract.State, | ||
processAction: (AlarmAddEditContract.Action) -> Unit, | ||
) { | ||
Column( |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
p4
inspector 로 테스트는 해보지 않았지만, 현재 이 구조면 state가 변경되면 Column 전체가 recomposition 되는 구조일 수도 있을 것 같은데 혹시 아닌가요???
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
val updatedDays = currentState.selectedDays.toMutableSet().apply { | ||
if (contains(day)) remove(day) else add(day) | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
p4
혹시 toMutableSet을 사용한 이유가 있으실까요?
Set으로 처리할 수도 있을 것 같아서요!
toMutableSet
는 아시다시피 항상 새로운 데이터를 생성하고 그것을 복사하는 구조 잖아요? 그러면 메모리 사용적인 측면에서 비효율적일 수 있다고 생각해서요!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
val updatedDays = if (day in currentState.selectedDays) {
currentState.selectedDays - day
} else {
currentState.selectedDays + day
}
수정했습니다
object HomeRoute { | ||
const val HOME = "home" | ||
|
||
const val ALARM_ADD_EDIT = "alarm_add_edit" | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
p3
나중에 core module에서 object{object}로 관리 기억하기
updateState { | ||
copy( | ||
isWeekdaysChecked = isChecked, | ||
selectedDays = updatedDays, | ||
) | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
p4
요 구조면 저 상태를 관찰하고 있는 composable에서 중복된 recomposition 문제가 발생하지 않을까란 생각이 드네용
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
요거 제가 이해를 잘못했던거 같습니다! 서로 의존관계에 있다는 것을 확인을 못했네요!
feature/home/src/main/java/com/yapp/alarm/component/AlarmDayButton.kt
Outdated
Show resolved
Hide resolved
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
수고하셨습니다~!!
Related issue 🛠
closed #29
어떤 변경사항이 있었나요?
CheckPoint ✅
PR이 다음 요구 사항을 충족하는지 확인하세요.
Work Description ✏️
default.mp4
Uncompleted Tasks 😅
default.mp4
위의 영상을 보면 분이 52 -> 51로 넘어가는 과정에서 시간이 6이 선택되는 것을 확인할 수 있음
OrbitPicker, OrbitYearMonthPicker에서 OrbitPickerItem 스크롤 시 다른 OrbitPickerItem에도 영향을 줌
To Reviewers 📢
onboarding 모듈쪽을 살펴보면 stateProvieder()를 통해서 상태를 주입하도록 되어 있는데
해당 과정 없이 바로 state를 넘겨줘도 되지 않을까 싶어서 이렇게 구현했습니다.
특별한 이유 있으시면 코멘트 달아주세요!
그리고 네이밍도 일단은 state, processAction으로 하였습니다.