-
Notifications
You must be signed in to change notification settings - Fork 2
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
Feature/#886 내가 작성한 글 구현 #887
The head ref may contain hidden characters: "Feature/#886-\uB0B4\uAC00_\uC791\uC131\uD55C_\uAE00_\uAD6C\uD604"
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.
RefreshableViewModel
을 잘 사용해주셔서 좋았습니다.
보니까 작성한 글이 서버에서 전송해준 순서 그대로 보여주던데, 저는 작성한 댓글을 최신순으로 정렬하고 있습니다. 그리고 날짜는 "yyyy.MM.dd" 형식으로 보여주고 있습니다. 작성한 글 순서 또한 최신순으로 보여주면 어떨까요?
날짜 형식은 스캇이 사용한 형식을 보여줘도 좋다고 생각합니다. 다만 작성한 글과 작성한 댓글의 날짜 형식을 통일하면 좋을 것 같아요. 작성한 댓글의 날짜 형식을 스캇이 사용한 날짜 형식인 "yyyy년 MM월 dd일 X요일"로 바꾸는 게 나을까요?
import dagger.hilt.android.AndroidEntryPoint | ||
|
||
@AndroidEntryPoint | ||
class MyFeedsFragment : NetworkFragment<FragmentMyFeedsBinding>(R.layout.fragment_my_feeds) { |
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.
메서드 순서를 onViewCreated
에서 사용된 순서대로 나열하는 것은 어떤가요?
setupBinding
setuprecyclerView
observeMyRecruitments
setupBinding() | ||
setupRecyclerView() | ||
observeMyRecruitments() |
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.
제가 제안했던 컨벤션처럼 UI로직 초기화와 viewModel 관찰 로직을 구분하기 위해 setupXxx와 observeXxx를 공백으로 구분하는 것은 어떤가요?
디스커션
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.
관찰은 observeXxx, 뷰관련은 setupXxx 으로 통일해보자는 이야기를 이전에 했었는데, 저도 동의합니다.
스캇은 어떻게 생각하시는지 리뷰 남겨주심 좋을 것 같아요~
observeMyRecruitments() | ||
} | ||
|
||
private fun setupBinding() { |
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.
setupDataBinding이라는 이름보다 setupBinding이 나을까요?
디스커션
private fun observeMyRecruitments() { | ||
viewModel.myFeeds.observe(viewLifecycleOwner) { myFeeds -> | ||
myFeedAdapter.submitList(myFeeds) | ||
} | ||
} |
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.
myFeeds를 관찰하고 있지만 메서드명은 MyRecruitments를 관찰하는 것처럼 보여요
디스커션
binding.rvMyFeeds.apply { | ||
adapter = myFeedAdapter | ||
itemAnimator = null | ||
addItemDecoration(DividerItemDecoration(context = context)) |
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.
공통 컴포넌트를 잘 사용해주셨네요 👍
@@ -87,7 +87,7 @@ class SplashActivity : ComponentActivity() { | |||
}, | |||
onFailed = { | |||
showToast(R.string.splash_not_installed_playstore) | |||
navigateToPlayStore() | |||
navigateToLogin() |
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.
제가 android-main 브랜치에 navigateToPlayStore
로 바꿨는데, 다시 navigateToLogin
으로 바뀌어 있네요 😢
이런 경우가 예전에도 있었던 거 같은데, 혹시 fetch를 하고 나서도 이럴까요?
android:layout_height="match_parent"> | ||
|
||
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout | ||
app:onRefresh1="@{() -> vm.refresh()}" |
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.
onRefresh1 잘 사용해주셨네요! 👍
나중에 기존 onRefresh 다 없애고 나면 onRefresh1의 이름을 onRefresh로 바꿔야 할 것 같아요.
<ProgressBar | ||
android:layout_width="wrap_content" | ||
android:layout_height="wrap_content" | ||
app:layout_constraintBottom_toBottomOf="parent" | ||
app:layout_constraintEnd_toEndOf="parent" | ||
app:layout_constraintStart_toStartOf="parent" | ||
app:layout_constraintTop_toTopOf="parent" | ||
app:visible="@{vm.networkUiState == NetworkUiState.LOADING}" /> | ||
|
||
<com.emmsale.presentation.common.views.NetworkErrorView | ||
android:layout_width="0dp" | ||
android:layout_height="0dp" | ||
app:visible="@{vm.networkUiState == NetworkUiState.NETWORK_ERROR}" | ||
app:onRefresh="@{() -> vm.refresh()}" | ||
app:layout_constraintTop_toTopOf="parent" | ||
app:layout_constraintStart_toStartOf="parent" | ||
app:layout_constraintEnd_toEndOf="parent" | ||
app:layout_constraintBottom_toBottomOf="parent" /> |
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.
이 두 개 뷰는 SwipeRefreshLayout 밖에 있어도 좋을 것 같아요!
<ProgressBar | ||
android:layout_width="wrap_content" | ||
android:layout_height="wrap_content" | ||
app:layout_constraintBottom_toBottomOf="parent" | ||
app:layout_constraintEnd_toEndOf="parent" | ||
app:layout_constraintStart_toStartOf="parent" | ||
app:layout_constraintTop_toTopOf="parent" | ||
app:visible="@{vm.networkUiState == NetworkUiState.LOADING}" /> | ||
|
||
<com.emmsale.presentation.common.views.NetworkErrorView | ||
android:layout_width="0dp" | ||
android:layout_height="0dp" | ||
app:visible="@{vm.networkUiState == NetworkUiState.NETWORK_ERROR}" | ||
app:onRefresh="@{() -> vm.refresh()}" | ||
app:layout_constraintTop_toTopOf="parent" | ||
app:layout_constraintStart_toStartOf="parent" | ||
app:layout_constraintEnd_toEndOf="parent" | ||
app:layout_constraintBottom_toBottomOf="parent" /> |
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.
이 두 개 뷰는 SwipeRefreshLayout 밖에 있어도 좋을 것 같아요!
android:layout_marginTop="18dp" | ||
android:layout_marginEnd="17dp" | ||
android:ellipsize="end" | ||
android:fontFamily="@font/nanum_square_bold" |
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.
fontFamily를 적용하지 않고 textStyle="bold" 이렇게 설정해도 됩니다.
테마에 TextView와 EditText의 글꼴과 색상을 정의해놨기 때문입니다.
지금 보니 fontFamily를 사용하여 글꼴을 설정한 TextView가 많네요ㅠㅠ
이렇게 되면 글꼴 전체를 바꿀 때 불편할 것 같아요 😢
사실 글꼴을 바꿀 가능성이 거의 없다고 생각하기 때문에 지금 당장은 안바꿔도 좋을 것 같아요. 앞으로만 사용하지 않아도 좋을 것 같아요.
대부분 토마스가 리뷰를 많이 해주셨네요! |
아뇨 제가 댓글과 같은 형식으로 변경하겠습니다. 그리고 최신순으로 정렬하는 것은 백엔드에서 정렬해서 주는 것이 좋아 보입니다. 일단은 임의로 제가 최신순으로 정렬을 하겠습니다 |
…내가_작성한_글_구현 # Conflicts: # android/2023-emmsale/app/src/main/res/layout/fragment_setting.xml # android/2023-emmsale/app/src/main/res/values/strings.xml
- lineSpacingExtra = 3dp - ellipsize = end - maxLines = 5
#️⃣ 연관된 이슈
📝 작업 내용
내가 작성한 글 화면을 구현하였음
스크린 샷
예상 소요 시간 및 실제 소요 시간 (일 / 시간 / 분)
예상 소요 시간 : 3시간
실제 소요 시간 : 4시간
💬 리뷰어 요구사항 (선택)
지금 행사 제목이 안내려오고 있어서 함께해요 화면의 제목이 빈 상태임