2026-07-20 16:05:17 +00:00
// Module ID: 1908
2026-07-24 07:16:23 +00:00
// Function ID: 21475
2026-07-20 16:05:17 +00:00
// Name: _isNativeReflectConstruct
2026-07-23 10:11:24 +00:00
// Dependencies: [6, 7, 15, 17, 18, 1909, 1352, 1911, 1348, 1917, 1910, 1838, 1849, 653, 3749, 3750, 3751, 566, 686, 2]
2026-07-20 16:05:17 +00:00
// Module 1908 (_isNativeReflectConstruct)
2026-07-23 10:11:24 +00:00
import _callSuper from "_callSuper" ;
import GuildRoleRecordTypeTag from "GuildRoleRecordTypeTag" ;
import isChannelAccessDeniedBy from "isChannelAccessDeniedBy" ;
import initialize from "initialize" ;
import dispatcher from "dispatcher" ;
import _isNativeReflectConstruct from "_isNativeReflectConstruct" ;
import { THREAD_CHANNEL_TYPES } from "_callSuper" ;
import { hasPermission } from "GuildRoleRecordTypeTag" ;
import closure_10 from "_isNativeReflectConstruct" ;
import closure_11 from "_isNativeReflectConstruct" ;
import _createForOfIteratorHelperLoose from "_createForOfIteratorHelperLoose" ;
import closure_13 from "_createForOfIteratorHelperLoose" ;
import closure_14 from "_isNativeReflectConstruct" ;
import ME from "ME" ;
import set from "_possibleConstructorReturn" ;
let closure_15 ;
let closure_16 ;
const require = arg1 ;
2026-07-20 16:05:17 +00:00
function _isNativeReflectConstruct() {
let closure_0 = ! valueOf . call ( Reflect . construct ( Boolean , [ ] , ( ) = > {
} ) ) ;
function _isNativeReflectConstruct() {
return closure_0 ;
}
const result = _isNativeReflectConstruct ( ) ;
}
2026-07-23 10:11:24 +00:00
function _createForOfIteratorHelperLoose ( iterable ) {
let closure_0 = iterable ;
iterable = "undefined" !== typeof Symbol ;
if ( iterable ) {
2026-07-20 16:05:17 +00:00
const _Symbol = Symbol ;
2026-07-23 10:11:24 +00:00
iterable = iterable [ Symbol . iterator ] ;
2026-07-20 16:05:17 +00:00
}
2026-07-23 10:11:24 +00:00
if ( ! iterable ) {
iterable = iterable [ Symbol . iterator ] ;
2026-07-20 16:05:17 +00:00
}
2026-07-23 10:11:24 +00:00
if ( iterable ) {
const iter = iterable . call ( iterable ) ;
2026-07-20 16:05:17 +00:00
const next = iter . next ;
return next . bind ( iter ) ;
} else {
const _Array = Array ;
2026-07-23 10:11:24 +00:00
let tmp = iterable ;
if ( ! Array . isArray ( iterable ) ) {
2026-07-20 16:05:17 +00:00
let tmp2 ;
2026-07-23 10:11:24 +00:00
if ( iterable ) {
if ( "string" === typeof iterable ) {
tmp2 = _arrayLikeToArray ( iterable , undefined ) ;
2026-07-20 16:05:17 +00:00
} else {
const toString = { } . toString ;
2026-07-23 10:11:24 +00:00
const substr = toString . call ( iterable ) . slice ( 8 , - 1 ) ;
2026-07-20 16:05:17 +00:00
let name = substr ;
if ( tmp3 ) {
2026-07-23 10:11:24 +00:00
name = iterable . constructor . name ;
2026-07-20 16:05:17 +00:00
}
if ( "Map" !== name ) {
if ( "Set" !== name ) {
if ( "Arguments" === name ) {
2026-07-23 10:11:24 +00:00
let arr = _arrayLikeToArray ( iterable , undefined ) ;
2026-07-20 16:05:17 +00:00
} else {
2026-07-23 10:11:24 +00:00
let obj = /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/ ;
2026-07-20 16:05:17 +00:00
}
}
tmp2 = arr ;
}
const _Array2 = Array ;
2026-07-23 10:11:24 +00:00
arr = Array . from ( iterable ) ;
const callResult = toString . call ( iterable ) ;
tmp3 = "Object" === substr && iterable . constructor ;
2026-07-20 16:05:17 +00:00
}
}
tmp = tmp2 ;
if ( ! tmp2 ) {
const _TypeError = TypeError ;
const typeError = new TypeError ( "Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method." ) ;
throw typeError ;
}
}
if ( tmp ) {
2026-07-23 10:11:24 +00:00
closure_0 = tmp ;
2026-07-20 16:05:17 +00:00
}
2026-07-23 10:11:24 +00:00
let c1 = 0 ;
2026-07-20 16:05:17 +00:00
return ( ) = > {
2026-07-23 10:11:24 +00:00
if ( closure_1 >= length . length ) {
2026-07-20 16:05:17 +00:00
let obj = { done : true } ;
} else {
obj = { done : false } ;
closure_1 = tmp3 + 1 ;
2026-07-23 10:11:24 +00:00
obj . value = length [ + closure_1 ] ;
2026-07-20 16:05:17 +00:00
}
return obj ;
} ;
}
}
function _arrayLikeToArray ( arg0 , arg1 ) {
let length ;
if ( tmp ) {
length = arg0 . length ;
}
const ArrayResult = Array ( length ) ;
for ( let num = 0 ; num < length ; num = num + 1 ) {
ArrayResult [ num ] = arg0 [ num ] ;
}
return ArrayResult ;
}
function isSubscriptionGated ( role ) {
let guildId ;
let isPreviewingRoles ;
role = role . role ;
( { guildId , isPreviewingRoles } = role ) ;
2026-07-23 10:11:24 +00:00
const tmp = ! require ( 3749 ) /* isSubscriptionRole */ . isSubscriptionRole ( role ) ;
2026-07-20 16:05:17 +00:00
let tmp2 = ! tmp ;
if ( ! tmp ) {
let tmp4 = ! tmp3 ;
if ( ! isPreviewingRoles ) {
let tmp8 ;
if ( null != role ) {
tmp8 = role ;
}
2026-07-23 10:11:24 +00:00
const tmp9 = ! require ( 3749 ) /* isSubscriptionRole */ . isSubscriptionRoleAvailableForPurchase ( tmp8 ) ;
2026-07-20 16:05:17 +00:00
let tmp10 = ! tmp9 ;
if ( tmp9 ) {
let flag = false ;
if ( null != role ) {
2026-07-23 10:11:24 +00:00
currentUser = currentUser . getCurrentUser ( ) ;
2026-07-20 16:05:17 +00:00
flag = false ;
if ( null != currentUser ) {
2026-07-23 10:11:24 +00:00
member = member . getMember ( guildId , currentUser . id ) ;
2026-07-20 16:05:17 +00:00
let hasItem = null != member ;
if ( hasItem ) {
const roles = member . roles ;
hasItem = roles . includes ( role . id ) ;
}
flag = hasItem ;
}
}
tmp10 = flag ;
}
tmp4 = tmp10 ;
2026-07-23 10:11:24 +00:00
const obj2 = require ( 3749 ) /* isSubscriptionRole */ ;
2026-07-20 16:05:17 +00:00
}
tmp2 = tmp4 ;
}
return tmp2 ;
}
function isChannelSubscriptionGatedInGuild ( channel , guild ) {
const features = guild . features ;
if ( ! features . has ( constants2 . CREATOR_MONETIZABLE ) ) {
const features2 = guild . features ;
if ( ! features2 . has ( constants2 . CREATOR_MONETIZABLE_PROVISIONAL ) ) {
return false ;
}
}
const isViewingServerShopResult = viewingServerShop . isViewingServerShop ( guild . id ) ;
const keys = Object . keys ( channel . permissionOverwrites ) ;
let num = 0 ;
if ( 0 < keys . length ) {
while ( true ) {
let tmp3 = keys [ num ] ;
let tmp4 = store ;
let tmp5 = isSubscriptionGated ;
let obj = { guildId : guild.id , role : store.getRole ( guild . id , tmp3 ) , isPreviewingRoles : isViewingServerShopResult } ;
if ( isSubscriptionGated ( obj ) ) {
2026-07-23 10:11:24 +00:00
let tmp6 = require ;
2026-07-20 16:05:17 +00:00
let tmp7 = dependencyMap ;
2026-07-23 10:11:24 +00:00
let obj2 = require ( 3750 ) /* isChannelAccessDeniedBy */ ;
2026-07-20 16:05:17 +00:00
if ( obj2 . isChannelAccessGrantedBy ( channel , channel . permissionOverwrites [ tmp3 ] ) ) {
break ;
}
}
num = num + 1 ;
}
return true ;
}
const tmp8 = ! hasPermission ( store . getEveryoneRole ( guild ) , constants . VIEW_CHANNEL ) ;
if ( tmp8 ) {
if ( ! obj3 . isChannelAccessDeniedBy ( channel , channel . permissionOverwrites [ guild . id ] ) ) {
const tmp11 = _createForOfIteratorHelperLoose ( store . getSortedRoles ( guild . id ) ) ;
let iter = tmp11 ( ) ;
if ( ! iter . done ) {
while ( true ) {
let value = iter . value ;
let tmp12 = isSubscriptionGated ;
obj = { guildId : guild.id , role : value , isPreviewingRoles : isViewingServerShopResult } ;
if ( isSubscriptionGated ( obj ) ) {
2026-07-23 10:11:24 +00:00
let tmp13 = require ;
2026-07-20 16:05:17 +00:00
let tmp14 = dependencyMap ;
2026-07-23 10:11:24 +00:00
let obj5 = require ( 3750 ) /* isChannelAccessDeniedBy */ ;
2026-07-20 16:05:17 +00:00
if ( obj5 . hasViewChannelPermission ( value ) ) {
break ;
}
}
let iter2 = tmp11 ( ) ;
iter = iter2 ;
}
return true ;
}
}
}
return false ;
}
function computeForChannel ( guild_id , id ) {
2026-07-23 10:11:24 +00:00
if ( null == table [ guild_id ] ) {
2026-07-20 16:05:17 +00:00
return false ;
} else {
2026-07-23 10:11:24 +00:00
channel = channel . getChannel ( id ) ;
2026-07-20 16:05:17 +00:00
if ( null == channel ) {
return false ;
} else {
2026-07-23 10:11:24 +00:00
guild = guild . getGuild ( channel . getGuildId ( ) ) ;
2026-07-20 16:05:17 +00:00
if ( null == guild ) {
return false ;
} else {
const hasItem = obj . has ( id ) ;
const tmp6 = isChannelSubscriptionGatedInGuild ( channel , guild ) ;
let flag = hasItem !== tmp6 ;
if ( flag ) {
if ( tmp6 ) {
obj . add ( id ) ;
flag = true ;
} else {
obj . delete ( id ) ;
flag = true ;
}
}
return flag ;
}
}
}
}
function handleInitialize() {
let closure_17 = { } ;
set . clear ( ) ;
}
function handleGuildUpdate ( arg0 ) {
2026-07-23 10:11:24 +00:00
delete tmp2 [ tmp ] ;
2026-07-20 16:05:17 +00:00
}
function handleGuildRoleUpdate ( arg0 ) {
2026-07-23 10:11:24 +00:00
delete tmp [ tmp2 ] ;
2026-07-20 16:05:17 +00:00
}
function handleChannelUpdate ( channel ) {
channel = channel . channel ;
let tmp = null != channel . guild_id ;
if ( tmp ) {
tmp = computeForChannel ( channel . guild_id , channel . id ) ;
}
return tmp ;
}
2026-07-23 10:11:24 +00:00
( { Permissions : closure_15 , GuildFeatures : closure_16 } = ME ) ;
2026-07-20 16:05:17 +00:00
let closure_17 = { } ;
2026-07-23 10:11:24 +00:00
let set = new Set ( ) ;
let tmp4 = ( ( Store ) = > {
2026-07-20 16:05:17 +00:00
class GatedChannelStore {
constructor ( ) {
self = this ;
2026-07-23 10:11:24 +00:00
tmp = outer1_2 ( this , GatedChannelStore ) ;
obj = outer1_5 ( GatedChannelStore ) ;
tmp2 = outer1_4 ;
if ( outer1_19 ( ) ) {
2026-07-20 16:05:17 +00:00
tmp6 = globalThis ;
_Reflect = Reflect ;
2026-07-23 10:11:24 +00:00
tmp7 = outer1_5 ;
2026-07-20 16:05:17 +00:00
tmp8 = arguments ;
2026-07-23 10:11:24 +00:00
constructResult = Reflect . construct ( obj , arguments , outer1_5 ( self ) . constructor ) ;
2026-07-20 16:05:17 +00:00
} else {
tmp3 = arguments ;
tmp4 = arguments ;
constructResult = obj ( . . . arguments ) ;
}
return tmp2 ( self , constructResult ) ;
}
}
callback2 ( GatedChannelStore , Store ) ;
let obj = {
key : "initialize" ,
value() {
2026-07-23 10:11:24 +00:00
this . waitFor ( outer1_10 , outer1_11 , outer1_12 , outer1_13 , outer1_7 , outer1_14 ) ;
2026-07-20 16:05:17 +00:00
}
} ;
const items = [ obj , , , ] ;
obj = {
key : "isChannelGated" ,
value ( guildId ) {
if ( null == guildId ) {
return false ;
} else {
2026-07-23 10:11:24 +00:00
let obj = outer1_17 [ guildId ] ;
2026-07-20 16:05:17 +00:00
if ( null == obj ) {
2026-07-23 10:11:24 +00:00
const guild = outer1_13 . getGuild ( guildId ) ;
2026-07-20 16:05:17 +00:00
if ( null != guild ) {
const _Set = Set ;
const set = new Set ( ) ;
2026-07-23 10:11:24 +00:00
outer1_17 [ guildId ] = set ;
2026-07-20 16:05:17 +00:00
const features = guild . features ;
2026-07-23 10:11:24 +00:00
if ( features . has ( outer1_16 . ROLE_SUBSCRIPTIONS_ENABLED ) ) {
const mutableGuildChannelsForGuild = outer1_10 . getMutableGuildChannelsForGuild ( guildId ) ;
2026-07-20 16:05:17 +00:00
for ( const key10008 in mutableGuildChannelsForGuild ) {
let tmp17 = key10008 ;
let tmp18 = mutableGuildChannelsForGuild [ key10008 ] ;
2026-07-23 10:11:24 +00:00
let tmp19 = outer1_23 ;
if ( ! outer1_23 ( tmp18 , guild ) ) {
2026-07-20 16:05:17 +00:00
continue ;
} else {
let addResult = set . add ( tmp18 . id ) ;
2026-07-23 10:11:24 +00:00
continue ;
2026-07-20 16:05:17 +00:00
}
continue ;
}
}
}
2026-07-23 10:11:24 +00:00
obj = outer1_17 [ guildId ] ;
2026-07-20 16:05:17 +00:00
}
let hasItem = null != obj ;
if ( hasItem ) {
hasItem = obj . has ( arg1 ) ;
}
return hasItem ;
}
}
} ;
items [ 1 ] = obj ;
obj = {
key : "isChannelGatedAndVisible" ,
value ( arg0 , arg1 ) {
const self = this ;
let tmp = null != arg0 ;
if ( tmp ) {
let isChannelGatedResult = self . isChannelGated ( arg0 , arg1 ) ;
if ( isChannelGatedResult ) {
2026-07-23 10:11:24 +00:00
isChannelGatedResult = ! outer1_18 . has ( arg0 ) ;
2026-07-20 16:05:17 +00:00
}
tmp = isChannelGatedResult ;
}
return tmp ;
}
} ;
items [ 2 ] = obj ;
items [ 3 ] = {
key : "isChannelOrThreadParentGated" ,
value ( arg0 , channelId ) {
const self = this ;
if ( null == arg0 ) {
return false ;
} else if ( self . isChannelGated ( arg0 , channelId ) ) {
return true ;
} else {
2026-07-23 10:11:24 +00:00
const channel = outer1_10 . getChannel ( channelId ) ;
2026-07-20 16:05:17 +00:00
let tmp3 = null == channel || null == channel . parent_id ;
if ( ! tmp3 ) {
let type ;
if ( null != channel ) {
type = channel . type ;
}
2026-07-23 10:11:24 +00:00
tmp3 = ! outer1_8 . has ( type ) ;
2026-07-20 16:05:17 +00:00
}
let result = ! tmp3 ;
if ( ! tmp3 ) {
result = self . isChannelOrThreadParentGated ( arg0 , channel . parent_id ) ;
}
return result ;
}
}
} ;
return callback ( GatedChannelStore , items ) ;
2026-07-23 10:11:24 +00:00
} ) ( require ( "initialize" ) . Store ) ;
2026-07-20 16:05:17 +00:00
tmp4 . displayName = "GatedChannelStore" ;
2026-07-23 10:11:24 +00:00
tmp4 = new tmp4 ( require ( "dispatcher" ) , {
2026-07-20 16:05:17 +00:00
CONNECTION_OPEN : handleInitialize ,
OVERLAY_INITIALIZE : handleInitialize ,
CACHE_LOADED_LAZY : handleInitialize ,
GUILD_CREATE : handleGuildUpdate ,
GUILD_UPDATE : handleGuildUpdate ,
GUILD_DELETE : handleGuildUpdate ,
GUILD_ROLE_CREATE : handleGuildRoleUpdate ,
GUILD_ROLE_UPDATE : handleGuildRoleUpdate ,
GUILD_ROLE_DELETE : handleGuildRoleUpdate ,
IMPERSONATE_UPDATE : handleGuildRoleUpdate ,
IMPERSONATE_STOP : handleGuildRoleUpdate ,
CHANNEL_CREATE : handleChannelUpdate ,
CHANNEL_DELETE : handleChannelUpdate ,
CHANNEL_UPDATES : function handleChannelUpdates ( channels ) {
let iter3 ;
const tmp = _createForOfIteratorHelperLoose ( channels . channels ) ;
const iter = tmp ( ) ;
let iter2 = iter ;
let flag = false ;
let flag2 = false ;
if ( ! iter . done ) {
do {
let value = iter2 . value ;
let tmp2 = flag ;
if ( null != value . guild_id ) {
2026-07-23 10:11:24 +00:00
let tmp3 = computeForChannel ;
if ( computeForChannel ( value . guild_id , value . id ) ) {
2026-07-20 16:05:17 +00:00
flag = true ;
}
tmp2 = flag ;
}
iter3 = tmp ( ) ;
flag = tmp2 ;
iter2 = iter3 ;
flag2 = tmp2 ;
} while ( ! iter3 . done ) ;
}
return flag2 ;
} ,
GUILD_ROLE_SUBSCRIPTIONS_FETCH_RESTRICTIONS_SUCCESS : function handleRoleSubscriptionsRestrictionsUpdate ( guildId ) {
guildId = guildId . guildId ;
if ( obj . isRestrictedFromShowingGuildPurchaseEntryPoints ( guildId . restrictions ) ) {
obj2 . add ( guildId ) ;
} else {
obj2 . delete ( guildId ) ;
}
} ,
GUILD_ROLE_SUBSCRIPTIONS_FETCH_RESTRICTIONS_FAILURE : function handleRoleSubscriptionsRestrictionsFetchFailure ( guildId ) {
set . add ( guildId . guildId ) ;
}
} ) ;
2026-07-23 10:11:24 +00:00
let result = set . fileFinishedImporting ( "modules/channel/GatedChannelStore.tsx" ) ;
2026-07-20 16:05:17 +00:00
export default tmp4 ;