forked from xai-org/x-algorithm
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathValidUserInfo.scala
More file actions
43 lines (38 loc) · 1.31 KB
/
Copy pathValidUserInfo.scala
File metadata and controls
43 lines (38 loc) · 1.31 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
package com.twitter.health.platform_manipulation.user_cred_v2
import com.twitter.usersource.snapshot.flat.thriftscala.FlatUser
final case class ValidUserInfo(
id: Long,
isNearZero: Boolean,
isBlueVerified: Boolean,
isGrayVerified: Boolean,
isGoldVerified: Boolean,
isVerifiedOrg: Boolean,
isVOAffiliate: Boolean,
) {
def isPremium: Boolean =
isBlueVerified || isGrayVerified || isGoldVerified || isVerifiedOrg || isVOAffiliate
}
object ValidUserInfo {
private val NearZeroState = 1
def fromFlatUser(flatUser: FlatUser): Option[ValidUserInfo] = {
val ignoreUser = flatUser.restricted.contains(true) ||
flatUser.deactivated.contains(true) ||
flatUser.suspended.contains(true) ||
flatUser.erased.contains(true)
if (!ignoreUser) {
flatUser.id.map { id =>
ValidUserInfo(
id = id,
isNearZero = flatUser.userState.contains(NearZeroState),
isBlueVerified = flatUser.isBlueVerified.getOrElse(false),
isGrayVerified = flatUser.isGrayVerified.getOrElse(false),
isGoldVerified = flatUser.isGoldVerified.getOrElse(false),
isVerifiedOrg = flatUser.isVerifiedOrganization.getOrElse(false),
isVOAffiliate = flatUser.isVerifiedOrganizationAffiliate.getOrElse(false),
)
}
} else {
None
}
}
}