11package com.alexdeww.fastadapterdelegate.delegates.adapters
22
3+ import androidx.recyclerview.widget.AsyncDifferConfig
34import androidx.recyclerview.widget.DiffUtil
5+ import com.alexdeww.fastadapterdelegate.adapters.AsyncDiffModelAdapter
46import com.alexdeww.fastadapterdelegate.adapters.DiffModelAdapter
57import com.alexdeww.fastadapterdelegate.delegates.ModelItemDelegate
68import com.alexdeww.fastadapterdelegate.delegates.item.common.GenericDelegationModelItem
7- import com.alexdeww.fastadapterdelegate.wrappers.ModelItemDiffCallbackWrapper
89
910/* *
1011 * Адаптер.
@@ -14,11 +15,13 @@ import com.alexdeww.fastadapterdelegate.wrappers.ModelItemDiffCallbackWrapper
1415 * @param diffCallback diffUtilItemCallback()
1516 */
1617open class DelegationDiffModelAdapter <BaseModel : Any >(
17- protected val delegates : List <ModelItemDelegate <BaseModel >>,
18+ delegates : List <ModelItemDelegate <BaseModel >>,
1819 diffCallback : DiffUtil .ItemCallback <BaseModel >
1920) : DiffModelAdapter<BaseModel, GenericDelegationModelItem<BaseModel>>(
20- ModelItemDiffCallbackWrapper (diffCallback),
21- { model -> delegates.find { it.isForViewType(model) }?.intercept(model, delegates) }
21+ diffCallback = diffCallback,
22+ interceptor = { model ->
23+ delegates.find { it.isForViewType(model) }?.intercept(model, delegates)
24+ }
2225)
2326
2427/* *
@@ -31,4 +34,44 @@ open class DelegationDiffModelAdapter<BaseModel : Any>(
3134fun <BaseModel : Any > delegationDiffModelAdapter (
3235 diffCallback : DiffUtil .ItemCallback <BaseModel >,
3336 vararg delegates : ModelItemDelegate <BaseModel >
34- ) = DelegationDiffModelAdapter (delegates.asList(), diffCallback)
37+ ): DelegationDiffModelAdapter <BaseModel > = DelegationDiffModelAdapter (
38+ delegates = delegates.asList(),
39+ diffCallback = diffCallback
40+ )
41+
42+
43+ open class DelegationAsyncDiffModelAdapter <BaseModel : Any >(
44+ delegates : List <ModelItemDelegate <BaseModel >>,
45+ asyncDifferConfig : AsyncDifferConfig <BaseModel >,
46+ ) : AsyncDiffModelAdapter<BaseModel, GenericDelegationModelItem<BaseModel>>(
47+ asyncDifferConfig = asyncDifferConfig,
48+ interceptor = { model ->
49+ delegates.find { it.isForViewType(model) }?.intercept(model, delegates)
50+ }
51+ ) {
52+
53+ constructor (
54+ delegates: List <ModelItemDelegate <BaseModel >>,
55+ diffCallback: DiffUtil .ItemCallback <BaseModel >
56+ ) : this (
57+ delegates = delegates,
58+ asyncDifferConfig = AsyncDifferConfig .Builder (diffCallback).build()
59+ )
60+
61+ }
62+
63+ fun <BaseModel : Any > delegationAsyncDiffModelAdapter (
64+ asyncDifferConfig : AsyncDifferConfig <BaseModel >,
65+ vararg delegates : ModelItemDelegate <BaseModel >
66+ ): DelegationAsyncDiffModelAdapter <BaseModel > = DelegationAsyncDiffModelAdapter (
67+ delegates = delegates.asList(),
68+ asyncDifferConfig = asyncDifferConfig
69+ )
70+
71+ fun <BaseModel : Any > delegationAsyncDiffModelAdapter (
72+ diffCallback : DiffUtil .ItemCallback <BaseModel >,
73+ vararg delegates : ModelItemDelegate <BaseModel >
74+ ): DelegationAsyncDiffModelAdapter <BaseModel > = DelegationAsyncDiffModelAdapter (
75+ delegates = delegates.asList(),
76+ diffCallback = diffCallback
77+ )
0 commit comments