Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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 @@ -2,11 +2,13 @@ package com.into.websoso.ui.detailExploreResult

import android.content.Context
import android.content.Intent
import android.net.Uri
import android.os.Bundle
import androidx.activity.viewModels
import androidx.core.view.isVisible
import androidx.recyclerview.widget.GridLayoutManager
import com.into.websoso.R
import com.into.websoso.R.string.inquire_link
import com.into.websoso.core.common.ui.base.BaseActivity
import com.into.websoso.core.common.util.InfiniteScrollListener
import com.into.websoso.core.common.util.SingleEventHandler
Expand All @@ -27,7 +29,7 @@ import dagger.hilt.android.AndroidEntryPoint
@AndroidEntryPoint
class DetailExploreResultActivity : BaseActivity<ActivityDetailExploreResultBinding>(R.layout.activity_detail_explore_result) {
private val detailExploreResultAdapter: DetailExploreResultAdapter by lazy {
DetailExploreResultAdapter(::navigateToNovelDetail)
DetailExploreResultAdapter(::navigateToNovelDetail, ::navigateToInquire)
}
private val detailExploreResultViewModel: DetailExploreResultViewModel by viewModels()
private val singleEventHandler: SingleEventHandler by lazy { SingleEventHandler.from() }
Expand Down Expand Up @@ -161,6 +163,12 @@ class DetailExploreResultActivity : BaseActivity<ActivityDetailExploreResultBind
startActivity(intent)
}

private fun navigateToInquire() {
val inquireUrl = getString(inquire_link)
val intent = Intent(Intent.ACTION_VIEW, Uri.parse(inquireUrl))
startActivity(intent)
}

companion object {
private const val FULL_SPAN = 2
private const val HALF_SPAN = 1
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,25 +14,29 @@ import com.into.websoso.ui.detailExploreResult.adapter.DetailExploreResultItemTy

class DetailExploreResultAdapter(
private val onNovelClick: (novelId: Long) -> (Unit),
private val onInquireClick: () -> Unit,
) : ListAdapter<DetailExploreResultItemType, RecyclerView.ViewHolder>(diffCallBack) {

override fun getItemViewType(position: Int): Int {
return when (getItem(position)) {
override fun getItemViewType(position: Int): Int =
when (getItem(position)) {
is Header -> HEADER.ordinal
is Novels -> NOVELS.ordinal
is Loading -> LOADING.ordinal
}
}

override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder {
return when (ItemType.valueOf(viewType)) {
HEADER -> DetailExploreResultHeaderViewHolder.from(parent)
override fun onCreateViewHolder(
parent: ViewGroup,
viewType: Int,
): RecyclerView.ViewHolder =
when (ItemType.valueOf(viewType)) {
HEADER -> DetailExploreResultHeaderViewHolder.from(parent, onInquireClick)
NOVELS -> DetailExploreResultViewHolder.of(parent, onNovelClick)
LOADING -> DetailExploreLoadingViewHolder.from(parent)
}
}

override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {
override fun onBindViewHolder(
holder: RecyclerView.ViewHolder,
position: Int,
) {
when (holder) {
is DetailExploreResultHeaderViewHolder -> holder.bind((getItem(position) as Header).novelCount)
is DetailExploreResultViewHolder -> holder.bind((getItem(position) as Novels).novel)
Expand All @@ -42,24 +46,20 @@ class DetailExploreResultAdapter(

companion object {
private val diffCallBack = object : DiffUtil.ItemCallback<DetailExploreResultItemType>() {

override fun areItemsTheSame(
oldItem: DetailExploreResultItemType,
newItem: DetailExploreResultItemType,
): Boolean {
return when {
): Boolean =
when {
oldItem is Novels && newItem is Novels -> oldItem.novel.id == newItem.novel.id
oldItem is Header && newItem is Header -> oldItem.novelCount == newItem.novelCount
else -> false
}
}

override fun areContentsTheSame(
oldItem: DetailExploreResultItemType,
newItem: DetailExploreResultItemType,
): Boolean {
return oldItem == newItem
}
): Boolean = oldItem == newItem
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,15 @@ import androidx.core.view.isVisible
import androidx.recyclerview.widget.RecyclerView
import com.into.websoso.databinding.ItemDetailExploreResultHeaderBinding

class DetailExploreResultHeaderViewHolder(private val binding: ItemDetailExploreResultHeaderBinding) :
RecyclerView.ViewHolder(binding.root) {
class DetailExploreResultHeaderViewHolder(
private val binding: ItemDetailExploreResultHeaderBinding,
onInquireClick: () -> Unit,
) : RecyclerView.ViewHolder(binding.root) {
init {
binding.clDetailExploreInquireButton.setOnClickListener {
onInquireClick.invoke()
}
}

fun bind(novelCount: Long) {
binding.apply {
Expand All @@ -19,13 +26,17 @@ class DetailExploreResultHeaderViewHolder(private val binding: ItemDetailExplore
companion object {
private const val NOVEL_COUNT_INVISIBLE_THRESHOLD = 0

fun from(parent: ViewGroup): DetailExploreResultHeaderViewHolder =
fun from(
parent: ViewGroup,
onInquireClickListener: () -> Unit,
): DetailExploreResultHeaderViewHolder =
DetailExploreResultHeaderViewHolder(
ItemDetailExploreResultHeaderBinding.inflate(
LayoutInflater.from(parent.context),
parent,
false,
)
),
onInquireClickListener,
)
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import android.view.inputmethod.InputMethodManager
import androidx.activity.addCallback
import androidx.activity.viewModels
import com.into.websoso.R
import com.into.websoso.R.string.inquire_link
import com.into.websoso.core.common.ui.base.BaseActivity
import com.into.websoso.core.common.ui.model.ResultFrom.NormalExploreBack
import com.into.websoso.core.common.util.InfiniteScrollListener
Expand All @@ -29,7 +30,12 @@ class NormalExploreActivity : BaseActivity<ActivityNormalExploreBinding>(R.layou
@Inject
lateinit var tracker: Tracker

private val normalExploreAdapter: NormalExploreAdapter by lazy { NormalExploreAdapter(::navigateToNovelDetail) }
private val normalExploreAdapter: NormalExploreAdapter by lazy {
NormalExploreAdapter(
::navigateToNovelDetail,
::navigateToInquire,
)
}
private val normalExploreViewModel: NormalExploreViewModel by viewModels()
private val singleEventHandler: SingleEventHandler by lazy { SingleEventHandler.from() }

Expand Down Expand Up @@ -114,7 +120,7 @@ class NormalExploreActivity : BaseActivity<ActivityNormalExploreBinding>(R.layou

override fun onNovelInquireButtonClick() {
tracker.trackEvent("contact_novel_search")
val inquireUrl = getString(R.string.inquire_link)
val inquireUrl = getString(inquire_link)
val intent = Intent(Intent.ACTION_VIEW, Uri.parse(inquireUrl))
startActivity(intent)
}
Expand All @@ -137,6 +143,12 @@ class NormalExploreActivity : BaseActivity<ActivityNormalExploreBinding>(R.layou
}
}

private fun navigateToInquire() {
val inquireUrl = getString(inquire_link)
val intent = Intent(Intent.ACTION_VIEW, Uri.parse(inquireUrl))
startActivity(intent)
}

private fun setupObserver() {
normalExploreViewModel.uiState.observe(this) { uiState ->
when {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,11 @@
package com.into.websoso.ui.normalExplore

interface NormalExploreClickListener {

fun onBackButtonClick()

fun onSearchButtonClick()

fun onSearchCancelButtonClick()

fun onNovelInquireButtonClick()
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -14,25 +14,29 @@ import com.into.websoso.ui.normalExplore.adapter.NormalExploreItemType.Novels

class NormalExploreAdapter(
private val novelItemClickListener: (novelId: Long) -> Unit,
private val inquireClickListener: () -> Unit,
) : ListAdapter<NormalExploreItemType, RecyclerView.ViewHolder>(diffCallBack) {

override fun getItemViewType(position: Int): Int {
return when (getItem(position)) {
override fun getItemViewType(position: Int): Int =
when (getItem(position)) {
is Header -> HEADER.ordinal
is Novels -> NOVELS.ordinal
is Loading -> LOADING.ordinal
}
}

override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder {
return when (ItemType.valueOf(viewType)) {
HEADER -> NormalExploreHeaderViewHolder.from(parent)
override fun onCreateViewHolder(
parent: ViewGroup,
viewType: Int,
): RecyclerView.ViewHolder =
when (ItemType.valueOf(viewType)) {
HEADER -> NormalExploreHeaderViewHolder.from(parent, inquireClickListener)
NOVELS -> NormalExploreViewHolder.of(parent, novelItemClickListener)
LOADING -> NormalExploreLoadingViewHolder.from(parent)
}
}

override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {
override fun onBindViewHolder(
holder: RecyclerView.ViewHolder,
position: Int,
) {
when (holder) {
is NormalExploreHeaderViewHolder -> holder.bind((getItem(position) as Header).novelCount)
is NormalExploreViewHolder -> holder.bind((getItem(position) as Novels).novel)
Expand All @@ -42,24 +46,20 @@ class NormalExploreAdapter(

companion object {
private val diffCallBack = object : DiffUtil.ItemCallback<NormalExploreItemType>() {

override fun areItemsTheSame(
oldItem: NormalExploreItemType,
newItem: NormalExploreItemType,
): Boolean {
return when {
): Boolean =
when {
oldItem is Novels && newItem is Novels -> oldItem.novel.id == newItem.novel.id
oldItem is Header && newItem is Header -> oldItem.novelCount == newItem.novelCount
else -> false
}
}

override fun areContentsTheSame(
oldItem: NormalExploreItemType,
newItem: NormalExploreItemType,
): Boolean {
return oldItem == newItem
}
): Boolean = oldItem == newItem
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,15 @@ import androidx.core.view.isVisible
import androidx.recyclerview.widget.RecyclerView
import com.into.websoso.databinding.ItemNormalExploreHeaderBinding

class NormalExploreHeaderViewHolder(private val binding: ItemNormalExploreHeaderBinding) :
RecyclerView.ViewHolder(binding.root) {
class NormalExploreHeaderViewHolder(
private val binding: ItemNormalExploreHeaderBinding,
onInquireClick: () -> Unit,
) : RecyclerView.ViewHolder(binding.root) {
init {
binding.clNormalExploreInquireButton.setOnClickListener {
onInquireClick.invoke()
}
}

fun bind(novelCount: Long) {
binding.apply {
Expand All @@ -19,13 +26,17 @@ class NormalExploreHeaderViewHolder(private val binding: ItemNormalExploreHeader
companion object {
private const val NOVEL_COUNT_INVISIBLE_THRESHOLD = 0

fun from(parent: ViewGroup): NormalExploreHeaderViewHolder =
fun from(
parent: ViewGroup,
onInquireClickListener: () -> Unit,
): NormalExploreHeaderViewHolder =
NormalExploreHeaderViewHolder(
ItemNormalExploreHeaderBinding.inflate(
LayoutInflater.from(parent.context),
parent,
false,
)
),
onInquireClickListener,
)
}
}
}
Loading