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] 코스 발견 / 중첩 리사이클러뷰에서 추천 코스 무한 스크롤 #301

Merged
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
68 commits
Select commit Hold shift + click to select a range
203e1ff
Merge branch 'feature/refactor-discover-banner-viewpager' of https://…
leeeha Dec 13, 2023
45a56c4
Merge branch 'develop' of https://github.com/Runnect/Runnect-Android …
leeeha Dec 13, 2023
78102b5
[MOD] #264 마라톤 아이템 데코레이션 코드 수정
leeeha Dec 14, 2023
ad67a81
[ADD] #264 추천 코스 아이템 데코레이션 코드 추가
leeeha Dec 14, 2023
c04920d
[FIX] #264 마라톤 코스 전체가 아니라 일부 아이템만 갱신하도록 변경
leeeha Dec 14, 2023
403d45e
[ADD] #264 추천 코스 아이템 일부만 갱신하는 코드 추가
leeeha Dec 14, 2023
f7d73b8
Merge branch 'develop' of https://github.com/Runnect/Runnect-Android …
leeeha Dec 17, 2023
9990d5c
[MOD] #264 현재 코스 아이템의 뷰 타입을 구분하는 코드 변경
leeeha Dec 17, 2023
b747e43
[DEL] #264 로그 삭제
leeeha Dec 17, 2023
daaca86
[DEL] #264 주석 삭제
leeeha Dec 17, 2023
3875052
[MOD] #264 주석 수정
leeeha Dec 17, 2023
156e0b4
[CHORE] #264 코스 상세페이지 내용 수정했다가 되돌리는 함수 이름 수정
leeeha Dec 17, 2023
91e8f75
[FIX] #264 코스 상세페이지의 path 리스트가 비어있는 경우 get 함수 사용하지 않도록 변경
leeeha Dec 17, 2023
ddbf82e
[CHORE] #264 result launcher 관련 주석 위치 변경
leeeha Dec 17, 2023
1aad6af
[DEL] #264 불필요한 코드 삭제
leeeha Dec 17, 2023
539e16c
[DEL] #264 불필요한 코드 삭제
leeeha Dec 17, 2023
7e6b04e
Merge branch 'feature/fix-detail-to-discover-update' of https://githu…
leeeha Dec 17, 2023
c156a93
[REFACTOR] #264 sealed 클래스의 자식 클래스에서 공통 속성을 오버라이드 하여 타겟 아이템을 찾는 코드 간결화
leeeha Dec 18, 2023
2a24df9
[MOD] #297 추천 코스 응답 dto 수정
leeeha Dec 18, 2023
53421d0
[ADD] #297 도메인 레이어의 추천 코스 dto에 isEnd 속성 추가
leeeha Dec 18, 2023
c3d7c74
[FEAT] #297 추천 코스 목록이 마지막 페이지에 도달했는지 검사하는 속성을 뷰모델에 저장
leeeha Dec 18, 2023
b65e131
[FEAT] #297 페이지 정보를 추천 코스 뷰홀더에게 넘기기
leeeha Dec 18, 2023
14dbc2a
[FEAT] #297 내부 리사이클러뷰에서 findLastCompletelyVisibleItemPosition 함수 호출하는 경우
leeeha Dec 19, 2023
40c9501
[FIX] #297 기존 추천코스를 replace 하지 않고, add 하도록 변경하기
leeeha Dec 19, 2023
cf81bbb
[FIX] #297 외부 리사이클러뷰에서 스크롤의 끝을 감지하도록 변경
leeeha Dec 19, 2023
d1d21d2
[MOD] #297 마라톤 코스의 뷰홀더 코드 변경
leeeha Dec 19, 2023
49f63a8
[CHORE] #297 멀티뷰 어댑터에 리스트 지역변수 만들기
leeeha Dec 19, 2023
f03af42
[MOD] #264 멀티 뷰 홀더에서 리스트 지역변수를 따로 만들지 않고 어댑터에서 참조하도록 변경
leeeha Dec 19, 2023
491e368
[FIX] #297 다음 페이지 요청할 때마다 뷰모델의 isEnd 속성 변경
leeeha Dec 19, 2023
57d64a2
[FIX] #297 내부, 외부 리사이클러뷰 모두 갱신하여 무한스크롤 구현
leeeha Dec 19, 2023
1a629c2
[FIX] #297 외부 리사이클러뷰 notifyItemChanged -> 내부 리사이클러뷰 submitList 실행
leeeha Dec 19, 2023
862edd7
[FIX] #297 아이템 데코가 누적해서 적용되는 문제 해결
leeeha Dec 19, 2023
c1940c0
[DEL] #297 사용하지 않는 상수 삭제
leeeha Dec 19, 2023
025de50
[DEL] #297 불필요한 형변환 코드 삭제
leeeha Dec 19, 2023
7eeff9b
[DEL] #297 사용하지 않는 함수 삭제
leeeha Dec 19, 2023
0d29825
[CHORE] #297 스크롤 관련 주석 추가
leeeha Dec 19, 2023
ff07437
[CHORE] #297 다음 페이지 보여주는 함수 이름 변경
leeeha Dec 19, 2023
e632f32
[REFACTOR] #297 스크롤 방향을 나타내는 상수 const로 정의
leeeha Dec 19, 2023
3d924fe
[FEAT] #264 코스 데이터가 비어있으면 러닝 시작 화면으로 넘어가지 못하도록 스낵바 띄우기
leeeha Dec 19, 2023
cc0cf5f
[MOD] #297 추천 코스 멀티뷰 아이템을 헤더와 코스 부분으로 구분하기
leeeha Dec 20, 2023
380a9ae
[FEAT] #297 마라톤 코스 조회 이후, 추천 코스 헤더 아이템 추가하도록 구현
leeeha Dec 20, 2023
004a3f7
[FEAT] #297 추천코스 헤더 텍스트에 대해 데이터 바인딩 적용
leeeha Dec 20, 2023
e4540dc
[REFACTOR] #297 멀티 뷰 홀더 생성 시, 팩토리 패턴 적용
leeeha Dec 20, 2023
605dc9d
[DEL] #297 사용하지 않는 임포트문 삭제
leeeha Dec 20, 2023
77c9604
Merge branch 'feature/fix-detail-to-discover-update' of https://githu…
leeeha Dec 20, 2023
b37b5dd
[CHORE] #297 멀티뷰 관련 클래스의 패키지 이동
leeeha Dec 20, 2023
4ab19a1
[ADD] #297 스낵바 임포트문 추가
leeeha Dec 20, 2023
ef6f71d
[CHORE] #297 멀티뷰 아이템 추가 관련 주석 수정
leeeha Dec 20, 2023
ccbaa85
[FIX] #297 외부 리사이클러뷰의 추천 코스 리스트 갱신 -> 내부 리사이클러뷰에 새 데이터 submitList
leeeha Dec 20, 2023
7eb0ffa
[FIX] #297 기존에 사용하던 그리드 아이템 데코레이션 적용
leeeha Dec 20, 2023
613e052
[REFACTOR] #297 마라톤, 추천 코스 뷰홀더를 팩토리로부터 참조하도록 변경하기
leeeha Dec 20, 2023
d37246c
[CHORE] #297 구현한 코드에 대한 설명 추가
leeeha Dec 20, 2023
9fea113
Merge branch 'develop' of https://github.com/Runnect/Runnect-Android …
leeeha Dec 26, 2023
b617690
[REFACTOR] #297 코스 아이템 갱신 시, 불필요한 반복문 연산 제거
leeeha Dec 26, 2023
295a7b3
[DEL] #297 외부 리사이클러뷰의 멀티 뷰 타입에서 추천 코스 헤더 타입 제거
leeeha Dec 26, 2023
140956a
[MOD] #297 멀티뷰 타입의 개수를 상수로 정의하지 않고, 이넘 클래스의 자식 개수로 참조하도록 변경
leeeha Dec 26, 2023
6ee12e1
[REFACTOR] #297 스낵바 띄우는 함수 통일하기
leeeha Dec 26, 2023
d889bc1
[FIX] #297 다음 페이지 로딩 중일 때는 중복해서 서버 요청 보내지 않도록 변경
leeeha Dec 26, 2023
e21ab14
[FIX] #297 그리드 아이템 데코레이션 코드 변경
leeeha Dec 26, 2023
d21b9bc
[UI] #297 마라톤, 추천코스 뷰 디테일 작업
leeeha Dec 26, 2023
5dde025
[REFACTOR] #297 스낵바 띄우는 함수 호출할 때, named argument 사용하도록 변경
leeeha Dec 30, 2023
458b935
[REFACTOR] #297 스낵바 띄우는 확장함수 내용 변경
leeeha Dec 30, 2023
af6c4f4
[MOD] #297 스낵바 확장함수 인자 타입 변경
leeeha Jan 3, 2024
34aeaae
[MOD] #297 RecommendCoursePagingData 널처리 방법 수정
leeeha Jan 3, 2024
203bda9
[REFACTOR] #297 EditableCourseDetail 객체 생성 시 named argument 적용
leeeha Jan 3, 2024
3118504
[CHORE] #297 Timber 로그 메시지의 레벨 변경
leeeha Jan 3, 2024
7001d90
Merge branch 'develop' of https://github.com/Runnect/Runnect-Android …
leeeha Jan 3, 2024
7b28154
[FEAT] #297 특정 레이아웃에 대한 바인딩 객체를 반환하는 확장 함수 구현
leeeha Jan 5, 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
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import android.app.Activity
import android.content.Context
import android.content.Intent
import android.os.Bundle
import android.view.Gravity
import android.view.View
import androidx.activity.OnBackPressedCallback
import androidx.activity.result.contract.ActivityResultContracts
Expand Down Expand Up @@ -32,7 +33,6 @@ import com.runnect.runnect.util.custom.toast.RunnectToast
import com.runnect.runnect.util.extension.applyScreenEnterAnimation
import com.runnect.runnect.util.extension.getCompatibleParcelableExtra
import com.runnect.runnect.util.extension.navigateToPreviousScreenWithAnimation
import com.runnect.runnect.util.extension.showDiscoverSnackbar
import com.runnect.runnect.util.extension.showSnackbar
import com.runnect.runnect.util.extension.showWebBrowser
import com.runnect.runnect.util.extension.viewLifeCycleScope
Expand Down Expand Up @@ -235,7 +235,7 @@ class DiscoverFragment : BindingFragment<FragmentDiscoverBinding>(R.layout.fragm
}

is UiStateV2.Failure -> {
context?.showDiscoverSnackbar(binding.root, state.msg)
context?.showSnackbar(binding.root, state.msg, Gravity.TOP)
}

else -> {}
Expand Down Expand Up @@ -285,7 +285,7 @@ class DiscoverFragment : BindingFragment<FragmentDiscoverBinding>(R.layout.fragm

is UiStateV2.Failure -> {
dismissLoadingProgressBar()
context?.showDiscoverSnackbar(binding.root, state.msg)
context?.showSnackbar(binding.root, state.msg, Gravity.TOP)
}

else -> {}
Expand All @@ -308,7 +308,7 @@ class DiscoverFragment : BindingFragment<FragmentDiscoverBinding>(R.layout.fragm

is UiStateV2.Failure -> {
dismissLoadingProgressBar()
context?.showDiscoverSnackbar(binding.root, state.msg)
context?.showSnackbar(binding.root, state.msg, Gravity.TOP)
}

else -> {}
Expand Down Expand Up @@ -375,7 +375,7 @@ class DiscoverFragment : BindingFragment<FragmentDiscoverBinding>(R.layout.fragm
}

is UiStateV2.Failure -> {
context?.showSnackbar(binding.root, state.msg)
context?.showSnackbar(binding.root, state.msg, Gravity.TOP)
}

else -> {}
Expand All @@ -386,7 +386,7 @@ class DiscoverFragment : BindingFragment<FragmentDiscoverBinding>(R.layout.fragm
private fun setupCourseScrapStateObserver() {
viewModel.courseScrapState.observe(viewLifecycleOwner) { state ->
if (state is UiStateV2.Failure) {
context?.showDiscoverSnackbar(binding.root, state.msg)
context?.showSnackbar(binding.root, state.msg, Gravity.TOP)
}
}
}
Expand Down
22 changes: 10 additions & 12 deletions app/src/main/java/com/runnect/runnect/util/extension/ContextExt.kt
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,9 @@ import android.view.Gravity
import android.view.LayoutInflater
import android.view.View
import android.view.inputmethod.InputMethodManager
import android.widget.FrameLayout
import android.widget.Toast
import androidx.annotation.ColorRes
import androidx.annotation.DrawableRes
import androidx.annotation.StringRes
import androidx.appcompat.widget.AppCompatButton
import androidx.appcompat.widget.LinearLayoutCompat
import androidx.coordinatorlayout.widget.CoordinatorLayout
Expand All @@ -30,7 +28,6 @@ import kotlinx.android.synthetic.main.custom_dialog_delete.view.tv_dialog
import kotlinx.android.synthetic.main.custom_dialog_edit_mode.layout_delete_frame
import kotlinx.android.synthetic.main.custom_dialog_edit_mode.layout_edit_frame
import kotlinx.android.synthetic.main.fragment_bottom_sheet.btn_delete_yes
import kotlinx.android.synthetic.main.fragment_require_login_dialog.view.tv_require_login_dialog_desc

fun Context.setActivityDialog(
layoutInflater: LayoutInflater,
Expand Down Expand Up @@ -171,16 +168,17 @@ fun Context.showToast(message: String) {
Toast.makeText(this, message, Toast.LENGTH_SHORT).show()
}

fun Context.showSnackbar(anchorView: View, message: String) {
Snackbar.make(anchorView, message, Snackbar.LENGTH_SHORT).show()
}

fun Context.showDiscoverSnackbar(anchorView: View, message: String) {
fun Context.showSnackbar(anchorView: View, message: String, gravity: Int = 0) {
val snackbar = Snackbar.make(anchorView, message, Snackbar.LENGTH_SHORT)
val params = snackbar.view.layoutParams as CoordinatorLayout.LayoutParams
params.anchorGravity = Gravity.TOP
params.gravity = Gravity.TOP
snackbar.view.layoutParams = params

if (gravity != 0) {
val layoutParams = snackbar.view.layoutParams as CoordinatorLayout.LayoutParams
layoutParams.apply {
this.gravity = gravity
snackbar.view.layoutParams = this
}
}

leeeha marked this conversation as resolved.
Show resolved Hide resolved
snackbar.show()
}

Expand Down
Loading