mirror of
https://github.com/twitter/the-algorithm.git
synced 2024-09-26 00:48:44 +02:00
39 lines
1.8 KiB
Scala
39 lines
1.8 KiB
Scala
package com.twitter.home_mixer.functional_component.decorator.urt.builder
|
|
|
|
import com.twitter.home_mixer.model.HomeFeatures.AuthorIdFeature
|
|
import com.twitter.home_mixer.model.HomeFeatures.IsRetweetFeature
|
|
import com.twitter.home_mixer.model.HomeFeatures.ScreenNamesFeature
|
|
import com.twitter.home_mixer.model.HomeFeatures.SuggestTypeFeature
|
|
import com.twitter.home_mixer.product.following.model.HomeMixerExternalStrings
|
|
import com.twitter.product_mixer.core.feature.featuremap.FeatureMap
|
|
import com.twitter.product_mixer.core.model.marshalling.response.urt.metadata.ChildFeedbackAction
|
|
import com.twitter.product_mixer.core.product.guice.scope.ProductScoped
|
|
import com.twitter.stringcenter.client.StringCenter
|
|
import com.twitter.timelines.service.{thriftscala => t}
|
|
import javax.inject.Inject
|
|
import javax.inject.Singleton
|
|
|
|
@Singleton
|
|
case class RetweeterChildFeedbackActionBuilder @Inject() (
|
|
@ProductScoped stringCenter: StringCenter,
|
|
externalStrings: HomeMixerExternalStrings) {
|
|
|
|
def apply(candidateFeatures: FeatureMap): Option[ChildFeedbackAction] = {
|
|
val isRetweet = candidateFeatures.getOrElse(IsRetweetFeature, false)
|
|
|
|
if (isRetweet) {
|
|
candidateFeatures.getOrElse(AuthorIdFeature, None).flatMap { retweeterId =>
|
|
FeedbackUtil.buildUserSeeFewerChildFeedbackAction(
|
|
userId = retweeterId,
|
|
namesByUserId = candidateFeatures.getOrElse(ScreenNamesFeature, Map.empty[Long, String]),
|
|
promptExternalString = externalStrings.showFewerRetweetsString,
|
|
confirmationExternalString = externalStrings.showFewerRetweetsConfirmationString,
|
|
engagementType = t.FeedbackEngagementType.Retweet,
|
|
stringCenter = stringCenter,
|
|
injectionType = candidateFeatures.getOrElse(SuggestTypeFeature, None)
|
|
)
|
|
}
|
|
} else None
|
|
}
|
|
}
|