// Metro module 1882 (f1883). import Record from "../lib/Record"; import { LOCAL_BOT_ID, NON_USER_BOT_DISCRIMINATOR, PREMIUM_TYPE_NONE, UserFlags } from "../Constants"; import { PremiumTypes, PurchasedFlags, SKU_ID_PURCHASED_FLAGS } from "../modules/premium/PremiumConstants"; import { ensureUserPrimaryGuild } from "../modules/guild_tag/PrimaryGuildUtils"; import { parseServerDisplayNameStyles } from "../modules/display_name_styles/DisplayNameStylesUtils"; import { parseServerPremiumState } from "../modules/premium/premium_state/PremiumStateUtils"; import { parseServerPerks } from "../modules/premium/perks_state/PerksStateUtils"; import { ensureRestrictedScheduleRecord } from "../modules/parent_tools/FamilyCenterModels"; import { parseStoreCountry } from "../modules/billing/utils/StoreCountryUtils"; import { deserialize, has, combine } from "../_bundle/HighLow"; import SnowflakeUtils from "../utils/SnowflakeUtils"; import AvatarUtils, { SUPPORTS_WEBP } from "../utils/AvatarUtils"; import * as _Module1384 from "../_bundle/Module1384"; import * as _PremiumTypeUtils from "../utils/PremiumTypeUtils"; import { PremiumSource, PremiumSubscriptionType, PremiumSubscriptionGroupRole } from "../_bundle/Module1892"; import { parseAvatarDecorationData } from "../modules/collectibles/avatar_decorations/AvatarDecorationUtils"; import { getNameplateData } from "../modules/collectibles/nameplates/utils"; class UserRecord extends Record { hasFlag = () => false; isStaff = () => false; isStaffPersonal = () => false; hasAnyStaffLevel = () => false; constructor(a0) { super(); let premium_type = a0.premium_type; if (premium_type == null) { premium_type = a0.premiumType; } this.id = a0.id; let username = a0.username; if (username == null) { username = ""; } this.username = username; let discriminator = a0.discriminator; if (discriminator == null) { discriminator = NON_USER_BOT_DISCRIMINATOR; } this.discriminator = discriminator; let avatar2 = a0.avatar; if (avatar2 == null) { avatar2 = null; } this.avatar = avatar2; let avatar_decoration_data = a0.avatar_decoration_data; if (avatar_decoration_data == null) { avatar_decoration_data = a0.avatarDecorationData; } this.avatarDecoration = avatar_decoration_data; let email = a0.email; if (email == null) { email = null; } this.email = email; let verified = a0.verified; if (verified == null) { verified = false; } this.verified = verified; let bot = a0.bot; if (bot == null) { bot = false; } this.bot = bot; let system = a0.system; if (system == null) { system = false; } this.system = system; let mfa_enabled = a0.mfa_enabled; if (mfa_enabled == null) { mfa_enabled = a0.mfaEnabled; } if (mfa_enabled == null) { mfa_enabled = false; } this.mfaEnabled = mfa_enabled; let mobile = a0.mobile; if (mobile == null) { mobile = false; } this.mobile = mobile; let desktop = a0.desktop; if (desktop == null) { desktop = false; } this.desktop = desktop; this.premiumType = premium_type !== PREMIUM_TYPE_NONE ? premium_type : null; let flags = a0.flags; if (flags == null) { flags = 0; } this.flags = flags; let public_flags = a0.public_flags; if (public_flags == null) { public_flags = a0.publicFlags; } if (public_flags == null) { public_flags = 0; } this.publicFlags = public_flags; let purchased_flags = a0.purchased_flags; if (purchased_flags == null) { purchased_flags = a0.purchasedFlags; } if (purchased_flags == null) { purchased_flags = 0; } this.purchasedFlags = purchased_flags; let premium_usage_flags = a0.premium_usage_flags; if (premium_usage_flags == null) { premium_usage_flags = a0.premiumUsageFlags; } if (premium_usage_flags == null) { premium_usage_flags = 0; } this.premiumUsageFlags = premium_usage_flags; let phone = a0.phone; if (phone == null) { phone = null; } this.phone = phone; let nsfw_allowed = a0.nsfw_allowed; if (nsfw_allowed == null) { nsfw_allowed = a0.nsfwAllowed; } this.nsfwAllowed = nsfw_allowed; let age_verification_status = a0.age_verification_status; if (age_verification_status == null) { age_verification_status = a0.ageVerificationStatus; } this.ageVerificationStatus = age_verification_status; let guildMemberAvatars = a0.guildMemberAvatars; if (guildMemberAvatars == null) { guildMemberAvatars = {}; } this.guildMemberAvatars = guildMemberAvatars; let has_bounced_email = a0.has_bounced_email; if (has_bounced_email == null) { has_bounced_email = a0.hasBouncedEmail; } if (has_bounced_email == null) { has_bounced_email = false; } this.hasBouncedEmail = has_bounced_email; let personal_connection_id = a0.personal_connection_id; if (personal_connection_id == null) { personal_connection_id = a0.personalConnectionId; } if (personal_connection_id == null) { personal_connection_id = null; } this.personalConnectionId = personal_connection_id; let global_name = a0.global_name; if (global_name == null) { global_name = a0.globalName; } this.globalName = global_name; this.banner = a0.banner; let primary_guild = a0.primary_guild; if (primary_guild == null) { primary_guild = a0.primaryGuild; } if (primary_guild == null) { primary_guild = null; } this.primaryGuild = ensureUserPrimaryGuild(primary_guild); this.collectibles = a0.collectibles; let displayNameStyles = a0.displayNameStyles; if (displayNameStyles == null) { displayNameStyles = parseServerDisplayNameStyles(a0.display_name_styles); } this.displayNameStyles = displayNameStyles; let premiumState = a0.premiumState; if (premiumState == null) { premiumState = parseServerPremiumState(a0.premium_state); } this.premiumState = premiumState; this.perks = a0.perks?.activePerksBitmask != null ? a0.perks : parseServerPerks(a0.perks); let restricted_schedule = a0.restricted_schedule; if (restricted_schedule == null) { restricted_schedule = a0.restrictedSchedule; } this.restrictedSchedule = ensureRestrictedScheduleRecord(restricted_schedule); let appTransactionIds = a0.appTransactionIds; if (appTransactionIds == null) { appTransactionIds = a0.app_transaction_ids; } if (appTransactionIds == null) { appTransactionIds = null; } this.appTransactionIds = appTransactionIds; let store_country = a0.store_country; if (store_country == null) { store_country = a0.storeCountry; } this.storeCountry = parseStoreCountry(store_country); Object.defineProperties(this, { hasFlag: { writable: false, configurable: false, enumerable: false, value: (a0) => { if (a0 <= 1073741824) { return ((this.flags | this.publicFlags) & a0) === a0; } const r10 = deserialize(this.flags); const r18 = deserialize(this.publicFlags); const r22 = deserialize(a0); return has(combine(r10, r18), r22); } }, isStaff: { writable: false, configurable: false, enumerable: false, value: () => this.hasFlag(UserFlags.STAFF) }, isStaffPersonal: { writable: false, configurable: false, enumerable: false, value: () => { const hasFlag2 = this.hasFlag(UserFlags.STAFF); return hasFlag2 ? !hasFlag2 : this.personalConnectionId != null; } }, hasAnyStaffLevel: { writable: false, configurable: false, enumerable: false, value: () => this.hasFlag(UserFlags.STAFF) || this.hasFlag(UserFlags.COLLABORATOR) || this.hasFlag(UserFlags.RESTRICTED_COLLABORATOR) } }); if (this.globalName?.length === 0) { this.globalName = null; } } get createdAt() { return new Date(SnowflakeUtils.extractTimestamp(this.id)); } hasVerifiedEmailOrPhone() { return this.verified === true || this.phone != null; } getAvatarURL(a0, a1, canAnimate = false, canWebP = SUPPORTS_WEBP) { const avatar2 = a0 != null ? this.guildMemberAvatars[a0] : void 0; return avatar2 != null && a0 != null ? AvatarUtils.getGuildMemberAvatarURLSimple({ guildId: a0, avatar: avatar2, userId: this.id, canAnimate, size: a1, canWebP }) : AvatarUtils.getUserAvatarURL(this, canAnimate, a1, null, canWebP); } addGuildAvatarHash(a0, a1) { if (this.guildMemberAvatars[a0] === a1) { return this; } const guildMemberAvatars = { ...this.guildMemberAvatars }; guildMemberAvatars[a0] = a1; return this.merge({ guildMemberAvatars }); } removeGuildAvatarHash(a0) { if (this.guildMemberAvatars[a0] === void 0) { return this; } const guildMemberAvatars = { ...this.guildMemberAvatars }; guildMemberAvatars[a0] = void 0; return this.merge({ guildMemberAvatars }); } getAvatarSource(a0) { let avatar; const guildId = a0; let r5 = arguments[1]; if (r5 === void 0) { r5 = false; } const size = arguments[2]; avatar = void 0; if (a0 != null) { avatar = this.guildMemberAvatars[a0]; if (avatar != null) { return AvatarUtils.getAnimatableSourceWithFallback(r5, (a0) => AvatarUtils.makeSource(AvatarUtils.getGuildMemberAvatarURLSimple({ guildId, avatar, userId: this.id, canAnimate: a0, size }))); } } return AvatarUtils.getAnimatableSourceWithFallback(r5, (a0) => AvatarUtils.getUserAvatarSource(this, a0, size)); } isClaimed() { return this.email != null || this.phone != null; } isPhoneVerified() { return this.phone != null; } toString() { return this.username !== "" ? this.username : "???"; } get tag() { return `${this.username}#${`${this.discriminator}`.padStart(4, "0")}`; } hasPurchasedFlag(a0) { return _Module1384.hasFlag(this.purchasedFlags, a0); } hasPremiumUsageFlag(a0) { return _Module1384.hasFlag(this.premiumUsageFlags, a0); } hasHadSKU(a0) { const r4 = SKU_ID_PURCHASED_FLAGS[a0]; return r4 != null && this.hasPurchasedFlag(r4); } hasHadPremium(r5 = null) { const hasPurchasedFlag2 = this.hasPurchasedFlag(PurchasedFlags.PREMIUM_TIER_0); const hasPurchasedFlag3 = this.hasPurchasedFlag(PurchasedFlags.PREMIUM_TIER_1); const hasPurchasedFlag4 = this.hasPurchasedFlag(PurchasedFlags.PREMIUM_TIER_2); if (PremiumTypes.TIER_0 === r5) { return hasPurchasedFlag2; } if (PremiumTypes.TIER_1 === r5) { return hasPurchasedFlag3; } if (PremiumTypes.TIER_2 === r5) { return hasPurchasedFlag4; } return hasPurchasedFlag2 || hasPurchasedFlag3 || hasPurchasedFlag4; } hadPremiumSubscription(r5 = null) { const isPremium = _PremiumTypeUtils.isPremium(this); return isPremium ? !isPremium : this.hasHadPremium(r5); } hasFreePremium() { return this.isStaff() || this.hasFlag(UserFlags.PARTNER) || this.isStaffPersonal(); } isOnReverseTrial() { return _PremiumTypeUtils.isPremium(this) && this.premiumState?.premiumSource === PremiumSource.REVERSE_TRIAL; } isPremiumWithPremiumGroup() { return _PremiumTypeUtils.isPremium(this, PremiumTypes.TIER_2) && this.premiumState?.premiumSource === PremiumSource.SUBSCRIPTION_GROUP; } hasPaidTier2Subscription() { return _PremiumTypeUtils.isPremium(this, PremiumTypes.TIER_2) && this.premiumState?.premiumSubscriptionType === PremiumSubscriptionType.TIER_2; } isPremiumWithFractionalPremiumOnly() { return _PremiumTypeUtils.isPremium(this, PremiumTypes.TIER_2) && (this.premiumState?.premiumSubscriptionType === PremiumSubscriptionType.NONE_UNSPECIFIED || this.premiumState?.premiumSubscriptionType === PremiumSubscriptionType.BOOST_ONLY) && this.premiumState?.premiumSource === PremiumSource.FRACTIONAL_NITRO; } isFractionalPremiumWithNoStandardSub() { return _PremiumTypeUtils.isPremium(this, PremiumTypes.TIER_2) && this.premiumState?.premiumSource === PremiumSource.FRACTIONAL_NITRO && this.premiumState.premiumSubscriptionType !== PremiumSubscriptionType.TIER_2; } isFractionalPremium() { return _PremiumTypeUtils.isPremium(this, PremiumTypes.TIER_2) && this.premiumState?.premiumSource === PremiumSource.FRACTIONAL_NITRO; } hasUrgentMessages() { return this.hasFlag(UserFlags.HAS_UNREAD_URGENT_MESSAGES); } isNonUserBot() { return this.isSystemUser() || this.bot && this.discriminator === NON_USER_BOT_DISCRIMINATOR; } isLocalBot() { return this.bot && this.id === LOCAL_BOT_ID; } isVerifiedBot() { return this.isSystemUser() || this.isLocalBot() || this.hasFlag(UserFlags.VERIFIED_BOT); } isSystemUser() { return this.system === true; } hasAvatarForGuild(a0) { return a0 != null && this.guildMemberAvatars[a0] != null; } hasUniqueUsername() { return this.discriminator === "0"; } isPremiumGroupMember() { return this.isPremiumWithPremiumGroup() && this.premiumGroupRole === PremiumSubscriptionGroupRole.MEMBER; } isPremiumGroupPrimary() { return this.isPremiumWithPremiumGroup() && this.premiumGroupRole === PremiumSubscriptionGroupRole.PRIMARY; } get isProvisional() { return this.hasFlag(UserFlags.PROVISIONAL_ACCOUNT); } get avatarDecoration() { return this.avatarDecorationData; } set avatarDecoration(a0) { this.avatarDecorationData = parseAvatarDecorationData(a0); } get nameplate() { return getNameplateData(this.collectibles?.nameplate); } get premiumGroupRole() { let r6 = this.premiumState?.premiumSubscriptionGroupRole; if (r6 == null) { r6 = PremiumSubscriptionGroupRole.UNSPECIFIED; } return r6; } } const userRecord = new UserRecord({ id: "0" }); export default UserRecord; export { userRecord as PLACEHOLDER_USER_RECORD };