48 lines
2.6 KiB
Scala
48 lines
2.6 KiB
Scala
package com.twitter.home_mixer.functional_component.decorator
|
|
|
|
import com.twitter.home_mixer.functional_component.decorator.builder.HomeConversationModuleMetadataBuilder
|
|
import com.twitter.home_mixer.functional_component.decorator.builder.ListClientEventDetailsBuilder
|
|
import com.twitter.home_mixer.model.HomeFeatures.ConversationModuleFocalTweetIdFeature
|
|
import com.twitter.product_mixer.component_library.decorator.urt.UrtItemCandidateDecorator
|
|
import com.twitter.product_mixer.component_library.decorator.urt.UrtMultipleModulesDecorator
|
|
import com.twitter.product_mixer.component_library.decorator.urt.builder.item.tweet.TweetCandidateUrtItemBuilder
|
|
import com.twitter.product_mixer.component_library.decorator.urt.builder.metadata.ClientEventInfoBuilder
|
|
import com.twitter.product_mixer.component_library.decorator.urt.builder.timeline_module.StaticModuleDisplayTypeBuilder
|
|
import com.twitter.product_mixer.component_library.decorator.urt.builder.timeline_module.TimelineModuleBuilder
|
|
import com.twitter.product_mixer.component_library.model.candidate.TweetCandidate
|
|
import com.twitter.product_mixer.core.model.marshalling.response.urt.EntryNamespace
|
|
import com.twitter.product_mixer.core.model.marshalling.response.urt.timeline_module.VerticalConversation
|
|
import com.twitter.product_mixer.core.pipeline.PipelineQuery
|
|
import com.twitter.timelines.injection.scribe.InjectionScribeUtil
|
|
import com.twitter.timelineservice.suggests.{thriftscala => st}
|
|
|
|
object ListConversationServiceCandidateDecorator {
|
|
|
|
private val ConversationModuleNamespace = EntryNamespace("list-conversation")
|
|
|
|
def apply(): Some[UrtMultipleModulesDecorator[PipelineQuery, TweetCandidate, Long]] = {
|
|
val suggestType = st.SuggestType.OrganicListTweet
|
|
val component = InjectionScribeUtil.scribeComponent(suggestType).get
|
|
val clientEventInfoBuilder =
|
|
ClientEventInfoBuilder(component, Some(ListClientEventDetailsBuilder))
|
|
val tweetItemBuilder = TweetCandidateUrtItemBuilder(
|
|
clientEventInfoBuilder = clientEventInfoBuilder
|
|
)
|
|
|
|
val moduleBuilder = TimelineModuleBuilder(
|
|
entryNamespace = ConversationModuleNamespace,
|
|
clientEventInfoBuilder = clientEventInfoBuilder,
|
|
displayTypeBuilder = StaticModuleDisplayTypeBuilder(VerticalConversation),
|
|
metadataBuilder = Some(HomeConversationModuleMetadataBuilder())
|
|
)
|
|
|
|
Some(
|
|
UrtMultipleModulesDecorator(
|
|
urtItemCandidateDecorator = UrtItemCandidateDecorator(tweetItemBuilder),
|
|
moduleBuilder = moduleBuilder,
|
|
groupByKey = (_, _, candidateFeatures) =>
|
|
candidateFeatures.getOrElse(ConversationModuleFocalTweetIdFeature, None)
|
|
))
|
|
}
|
|
}
|