Skip to content

Commit

Permalink
#77 feat : 커리큘럼 article 북마크 기능 추가
Browse files Browse the repository at this point in the history
  • Loading branch information
SeonHwan-Kim committed Jul 21, 2023
1 parent a0fc42e commit 32bf0d5
Show file tree
Hide file tree
Showing 4 changed files with 33 additions and 7 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,12 @@ class CourseDetailActivity :

private fun initRecyclerView() {
_courseWeeklyTitleAdapter = CourseDetailTitleAdapter(viewModel.tempHeader)
_courseWeeklyAdapter = CourseDetailAdapter()
_courseWeeklyAdapter = CourseDetailAdapter { articleId, switching ->
viewModel.switchBookmark(
articleId,
switching,
)
}
getWeeklyArticleState()

with(binding.rvCourseWeekly) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,9 @@ import com.lionheart.core.view.ItemDiffCallback
import com.lionheart.databinding.ItemCourseDetailThumbnailBinding
import com.lionheart.domain.entity.Article

class CourseDetailAdapter :
class CourseDetailAdapter(
private val onClickBookmark: (articleId: Long, switching: Boolean) -> Unit,
) :
ListAdapter<Article, RecyclerView.ViewHolder>(diffUtil) {
private val bookmarkStatus = SparseBooleanArray()

Expand All @@ -20,7 +22,11 @@ class CourseDetailAdapter :
}

override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {
(holder as CourseWeeklyViewHolder).onBind(getItem(position), bookmarkStatus)
(holder as CourseWeeklyViewHolder).onBind(
getItem(position),
bookmarkStatus,
onClickBookmark,
)
}

companion object {
Expand All @@ -33,21 +39,29 @@ class CourseDetailAdapter :

class CourseWeeklyViewHolder(private val binding: ItemCourseDetailThumbnailBinding) :
RecyclerView.ViewHolder(binding.root) {
fun onBind(data: Article, bookmarkStatus: SparseBooleanArray) {
fun onBind(
data: Article,
bookmarkStatus: SparseBooleanArray,
onClickBookmark: (articleId: Long, switching: Boolean) -> Unit,
) {
binding.data = data
bookmarkStatus.put(layoutPosition, data.isMarked)
initBookmark(data, bookmarkStatus)
initBookmark(data, bookmarkStatus, onClickBookmark)
}

private fun initBookmark(data: Article, bookmarkStatus: SparseBooleanArray) {
private fun initBookmark(
data: Article,
bookmarkStatus: SparseBooleanArray,
onClickBookmark: (articleId: Long, switching: Boolean) -> Unit,
) {
with(binding.btnCourseWeeklyThumbnailBookmark) {
isSelected = data.isMarked
setOnClickListener {
bookmarkStatus.put(position, isSelected)
isSelected = isSelected.not()
// 북마크 저장 작업
onClickBookmark(data.articleId, isSelected)
}
}
}
}

Original file line number Diff line number Diff line change
Expand Up @@ -55,4 +55,10 @@ class CourseDetailViewModel @Inject constructor(
}
}
}

fun switchBookmark(articleId: Long, switching: Boolean) {
viewModelScope.launch {
articleRepository.switchBookmark(articleId, switching)
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ import com.lionheart.core.uistate.UiState.Success
import com.lionheart.data.repository.CourseRepositoryImpl
import com.lionheart.domain.entity.Course
import com.lionheart.domain.entity.CurriculumProgress
import com.lionheart.domain.repository.ArticleRepository
import com.lionheart.domain.repository.CourseRepository
import com.lionheart.domain.repository.CurriculumRepository
import com.lionheart.presentation.search.category.SearchDetailViewModel.Companion.NETWORK_ERROR
Expand Down

0 comments on commit 32bf0d5

Please sign in to comment.