https://github.com/ydhnwb/android-clean-architecture
안드고님이 추천해주신 coroutine, hilt, flow를 사용한 프로젝트이다.
위 기능들을 더 딥하게 공부하기에 좋은 앱인 것 같아 분석해보기로 했다. -> 서버에러로 실행은 불가능하다.
-
data
- login
- product
- register
-
domain
- login
- product
- register
-
presentation
- login
- main
- register
data 패키지(레이어)는 remote, repository 패키지가 존재하고, Hilt 주입을 위한 Hilt Module Class가 존재한다.
domain 패키지(레이어)는 entity, usecase 패키지가 존재하고, Datasource에 접근하는 Repository가 존재한다.
presentation 패키지(레이어)는 login, main, register 패키지가 존재하고, Activity, Fragment, ViewModel 등 UI 컴포넌트와 Android Framework 관련된 코드를 포함한다.
클린 아키텍처의 각 계층간 동작 이해하고, 관심사 분리 확실하게 하기. -> 싱글모듈 패키지구조에서 멀티모듈로 바꿔보기.
sealed class RegisterActivityState {
object Init : RegisterActivityState()
data class IsLoading(val isLoading: Boolean) : RegisterActivityState()
data class ShowToast(val message: String) : RegisterActivityState()
data class SuccessRegister(val registerEntity: RegisterEntity) : RegisterActivityState()
data class ErrorRegister(val rawResponse: WrappedResponse<RegisterResponse>) : RegisterActivityState()
}
fun Context.showToast(message: String){
Toast.makeText(this, message, Toast.LENGTH_LONG).show()
}
fun Context.showGenericAlertDialog(message: String){
AlertDialog.Builder(this).apply {
setMessage(message)
setPositiveButton(getString(R.string.button_text_ok)){ dialog, _ ->
dialog.dismiss()
}
}.show()
}
ex) connectTimeout, readTimeout 등