Files
discord-decomp/sources/utils/GuildDiscoveryUtils.tsx
T
2026-07-28 01:06:53 +03:00

876 lines
33 KiB
TypeScript

/* Metro module 6946; source: utils/GuildDiscoveryUtils.tsx; dependencies: [5, 3785, 4111, 1867, 661, 1230, 6947, 6837, 6593, 6912, 6914, 683, 507, 1468, 2] */
import Module00005 from '../by-id/module-00005.js'; /* Metro dependency 5 */
import AnalyticsUtils from './AnalyticsUtils.tsx'; /* Metro dependency 683 */
import GuildStore from '../stores/GuildStore.tsx'; /* Metro dependency 1867 */
import LurkingStore from '../modules/lurker_mode/LurkingStore.tsx'; /* Metro dependency 3785 */
import GuildMemberCountStore from '../stores/GuildMemberCountStore.tsx'; /* Metro dependency 4111 */
import * as FileImportTrackerModule from '../by-id/module-00002-FileImportTracker.js'; /* Metro dependency 2 */
import * as ConstantsModule from '../Constants.tsx'; /* Metro dependency 661 */
function _fun55237(global, require, importDefault, importAll, module, exports, dependencyMap) { // fn#55237, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:7124:6, offset: 0x01379581, size: 502 bytes, params: 8, frame: 20
const env0_0 = require;
const makeDiscoverableGuild2 = makeDiscoverableGuild;
const Object = global.Object;
Object.defineProperty(exports, '__esModule', {value: true});
(FileImportTrackerModule).fileFinishedImporting('utils/GuildDiscoveryUtils.tsx');
exports.AnalyticsContexts = {SEARCH: 'Search', RECOMMENDED: 'Recommended', POPULAR: 'Popular',
RECOMMENDED_E3: 'Recommended - E3', HEADER: 'Header', GLOBAL_DISCOVERY: 'Global Discovery',
FORWARD_BREADCRUMB: 'Forward Breadcrumb'};
exports.IOS_MINIMUM_MEMBER_COUNT = '>1000';
exports.MINIMUM_MEMBER_COUNT = '>200';
exports.startLurking = function() {
return _startLurking.apply(this, arguments);
};
exports.makeDiscoverableGuild = makeDiscoverableGuild2;
exports.trackDiscoveryExited = trackDiscoveryExited;
exports.trackSearchClosed = function(a0) {
var defaultImport = importDefault(dependencyMap[11]);
var SEARCH_CLOSED = AnalyticEvents.SEARCH_CLOSED;
defaultImport.track(SEARCH_CLOSED, {load_id: a0});
};
exports.trackSearchStarted = trackSearchStarted;
exports.trackGuildDiscoverySearchStart = function({withCounts, offset}) {
var defaultImport = importDefault(dependencyMap[11]);
var GUILD_DISCOVERY_SEARCH_START = AnalyticEvents.GUILD_DISCOVERY_SEARCH_START;
defaultImport.track(GUILD_DISCOVERY_SEARCH_START, {with_counts: withCounts, offset: offset});
};
exports.trackSearchFailed = function({categoryId, error, willRequestRetry, isRequestRetry}) {
var defaultImport = importDefault(dependencyMap[11]);
var GUILD_DISCOVERY_SEARCH_FAILED = AnalyticEvents.GUILD_DISCOVERY_SEARCH_FAILED;
defaultImport.track(GUILD_DISCOVERY_SEARCH_FAILED, {category_id: categoryId, request_status: error.status,
request_error_code: error.code, will_request_retry: willRequestRetry, is_request_retry: isRequestRetry});
};
exports.trackGuildDiscoveryGetFeaturedGuildsFailed = function({categoryId}) {
var defaultImport = importDefault(dependencyMap[11]);
var GUILD_DISCOVERY_GET_FEATURED_GUILDS_FAILED = AnalyticEvents.GUILD_DISCOVERY_GET_FEATURED_GUILDS_FAILED;
defaultImport.track(GUILD_DISCOVERY_GET_FEATURED_GUILDS_FAILED, {category_id: categoryId});
};
exports.trackSearchResultsViewed = trackSearchResultsViewed;
exports.trackGuildJoinClicked = function(a0) {
var value2 = LurkingStore.getLoadId(a0);
var defaultImport = importDefault(dependencyMap[11]);
var GUILD_DISCOVERY_GUILD_JOIN_CLICKED = AnalyticEvents.GUILD_DISCOVERY_GUILD_JOIN_CLICKED;
var object = {guild_id: a0, load_id: value2};
object.guild_size = GuildMemberCountStore.getMemberCount(a0);
defaultImport.track(GUILD_DISCOVERY_GUILD_JOIN_CLICKED, object);
};
exports.getDiscoverableGuild = function() {
return _getDiscoverableGuild.apply(this, arguments);
};
exports.fetchPublicDiscoveryGuild = function() {
return _fetchPublicDiscoveryGuild.apply(this, arguments);
};
function _startLurking() { // fn#55238, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:7124:436, offset: 0x01379777, size: 48 bytes, params: 1, frame: 14
return Module00005(_fun55240).apply(this, arguments);
async function _fun55240(a0, a1) { // fn#55240, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:7124:485, offset: 0x013797b9, size: 793 bytes, params: 3, frame: 31
var r16;
var value9;
var value11;
var transitionToGuildSync;
var object;
var object4;
var value16;
var object5;
let value = a2;
if (false) {
return undefined;
}
const value4 = undefined;
const r6 = value !== value4 ? value : {};
await value4;
if (false) {
return undefined;
}
const channelId = r6.channelId;
const onSuccess = r6.onSuccess;
const joinSource = r6.joinSource;
const loadId = r6.loadId;
const shouldNavigate = r6.shouldNavigate;
const r9 = value4 === shouldNavigate || shouldNavigate;
value = environment.__proto__.__proto__;
let binding = env2_0;
const history = binding(env2_2[5]).getHistory();
const guild = env2_6.getGuild(a0);
const object6 = {sourceLocationStack: a3};
object6.state = {analyticsSource: a1};
if (guild == null) {
if (guild == null) {
r16 = a3 == null ? value4 : a3[a3.length - 1];
r16 = r16 ?? (a1 == null ? value4 : a1.page);
binding = env2_0;
value9 = binding(env2_2[9]);
if (value9.getMobileLurkerServerPreview('startLurking').enabled) {
env2_0(env2_2[10]).trackLurkStarted(a0, joinSource, r16);
}
binding = env2_1;
value11 = binding(env2_2[8]);
await value11.joinGuild(a0, {lurker: true, source: joinSource, loadId: loadId, lurkLocation: r16});
if (false) {
return undefined;
}
if (r9) {
value = env2_1(env2_2[8]);
transitionToGuildSync = value.transitionToGuildSync;
object = {};
copyDataProperties(object, object6, undefined);
object['welcomeModalChannelId'] = channelId;
object['navigationReplace'] = channelId != null;
object['openChannel'] = channelId != null;
object['search'] = history.location.search;
await Reflect.apply(transitionToGuildSync, value, [a0, object, channelId, r6.messageId]);
value = undefined;
if (false) {
return value;
}
if (onSuccess != null) {
onSuccess();
}
return value4;
}
if (onSuccess != null) {
onSuccess();
}
return value4;
}
binding = env2_4;
if (binding.isLurking(a0)) {
if (r9) {
value = env2_1(env2_2[8]);
transitionToGuildSync = value.transitionToGuildSync;
object4 = {};
copyDataProperties(object4, object6, undefined);
object4['welcomeModalChannelId'] = channelId;
object4['navigationReplace'] = channelId != null;
object4['openChannel'] = channelId != null;
object4['search'] = history.location.search;
await Reflect.apply(transitionToGuildSync, value, [a0, object4, channelId, r6.messageId]);
value = undefined;
if (false) {
return value;
}
if (onSuccess != null) {
onSuccess();
}
return value4;
}
if (onSuccess != null) {
onSuccess();
}
return value4;
}
r16 = a3 == null ? value4 : a3[a3.length - 1];
r16 = r16 ?? (a1 == null ? value4 : a1.page);
binding = env2_0;
value9 = binding(env2_2[9]);
if (value9.getMobileLurkerServerPreview('startLurking').enabled) {
env2_0(env2_2[10]).trackLurkStarted(a0, joinSource, r16);
}
binding = env2_1;
value11 = binding(env2_2[8]);
} else {
if (guild.joinedAt != null) {
if (r9) {
if (channelId == null) {
env2_0(env2_2[6]).transitionToGuild(a0, object6);
} else {
binding = env2_1;
value16 = binding(env2_2[7]);
binding = env2_10;
value = binding.CHANNEL(a0, channelId, r6.messageId);
object5 = {};
copyDataProperties(object5, object6, undefined);
object5['navigationReplace'] = true;
object5['openChannel'] = true;
value16(value, object5);
}
}
if (onSuccess != null) {
onSuccess();
}
return value4;
}
if (guild == null) {
r16 = a3 == null ? value4 : a3[a3.length - 1];
r16 = r16 ?? (a1 == null ? value4 : a1.page);
binding = env2_0;
value9 = binding(env2_2[9]);
if (value9.getMobileLurkerServerPreview('startLurking').enabled) {
env2_0(env2_2[10]).trackLurkStarted(a0, joinSource, r16);
}
binding = env2_1;
value11 = binding(env2_2[8]);
await value11.joinGuild(a0, {lurker: true, source: joinSource, loadId: loadId, lurkLocation: r16});
if (false) {
return undefined;
}
if (r9) {
value = env2_1(env2_2[8]);
transitionToGuildSync = value.transitionToGuildSync;
object = {};
copyDataProperties(object, object6, undefined);
object['welcomeModalChannelId'] = channelId;
object['navigationReplace'] = channelId != null;
object['openChannel'] = channelId != null;
object['search'] = history.location.search;
await Reflect.apply(transitionToGuildSync, value, [a0, object, channelId, r6.messageId]);
value = undefined;
if (false) {
return value;
}
if (onSuccess != null) {
onSuccess();
}
return value4;
}
if (onSuccess != null) {
onSuccess();
}
return value4;
}
binding = env2_4;
if (binding.isLurking(a0)) {
if (r9) {
value = env2_1(env2_2[8]);
transitionToGuildSync = value.transitionToGuildSync;
object4 = {};
copyDataProperties(object4, object6, undefined);
object4['welcomeModalChannelId'] = channelId;
object4['navigationReplace'] = channelId != null;
object4['openChannel'] = channelId != null;
object4['search'] = history.location.search;
await Reflect.apply(transitionToGuildSync, value, [a0, object4, channelId, r6.messageId]);
value = undefined;
if (false) {
return value;
}
if (onSuccess != null) {
onSuccess();
}
return value4;
}
if (onSuccess != null) {
onSuccess();
}
return value4;
}
r16 = a3 == null ? value4 : a3[a3.length - 1];
r16 = r16 ?? (a1 == null ? value4 : a1.page);
value9 = env2_0(env2_2[9]);
if (value9.getMobileLurkerServerPreview('startLurking').enabled) {
env2_0(env2_2[10]).trackLurkStarted(a0, joinSource, r16);
}
value11 = env2_1(env2_2[8]);
}
await value11.joinGuild(a0, {lurker: true, source: joinSource, loadId: loadId, lurkLocation: r16});
if (false) {
return undefined;
}
if (r9) {
value = env2_1(env2_2[8]);
transitionToGuildSync = value.transitionToGuildSync;
object = {};
copyDataProperties(object, object6, undefined);
object['welcomeModalChannelId'] = channelId;
object['navigationReplace'] = channelId != null;
object['openChannel'] = channelId != null;
object['search'] = history.location.search;
await Reflect.apply(transitionToGuildSync, value, [a0, object, channelId, r6.messageId]);
value = undefined;
if (false) {
return value;
}
}
if (onSuccess != null) {
onSuccess();
}
return value4;
}
}
function _getDiscoverableGuild() { // fn#55242, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:7124:1954, offset: 0x01379bac, size: 48 bytes, params: 1, frame: 14
return Module00005(_fun55244).apply(this, arguments);
function* _fun55244(a0) { // fn#55244, original name: ?anon_0_, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:7124:2019, offset: 0x01379be5, size: 222 bytes, params: 2, frame: 20
var r4;
var r2;
var binding;
var binding2;
var property;
var value4;
var HTTP;
var get;
var object;
var GUILD_DISCOVERY;
var value5;
var stringify;
var object2;
var value6;
var value7;
var value8;
var value9;
var body;
var value10;
var guilds;
var value11;
var value12;
var error;
if (false) {
return undefined;
}
value = undefined;
try {
binding = env2_0;
} catch (error) {
return null;
}
try {
binding2 = env2_2;
} catch (error) {
return null;
}
try {
property = binding2[12];
} catch (error) {
return null;
}
try {
value4 = binding(property);
} catch (error) {
return null;
}
try {
HTTP = value4.HTTP;
} catch (error) {
return null;
}
try {
get = HTTP.get;
} catch (error) {
return null;
}
try {
object = {};
} catch (error) {
return null;
}
try {
binding = env2_9;
} catch (error) {
return null;
}
try {
GUILD_DISCOVERY = binding.GUILD_DISCOVERY;
} catch (error) {
return null;
}
try {
object.url = GUILD_DISCOVERY;
} catch (error) {
return null;
}
try {
binding = env2_1;
} catch (error) {
return null;
}
try {
property = binding2[13];
} catch (error) {
return null;
}
try {
value5 = binding(property);
} catch (error) {
return null;
}
try {
stringify = value5.stringify;
} catch (error) {
return null;
}
try {
object2 = {};
} catch (error) {
return null;
}
try {
object2.guild_ids = a0;
} catch (error) {
return null;
}
try {
value6 = Reflect.apply(stringify, value5, [object2]);
} catch (error) {
return null;
}
try {
object.query = value6;
} catch (error) {
return null;
}
try {
object.oldFormErrors = true;
} catch (error) {
return null;
}
try {
object.rejectWithError = true;
} catch (error) {
return null;
}
try {
value7 = Reflect.apply(get, HTTP, [object]);
} catch (error) {
return null;
}
yield value7;
try {
value8 = undefined;
value9 = false;
} catch (error) {
return null;
}
if (value9) {
return value8;
}
try {
body = value8.body;
} catch (error) {
return null;
}
try {
value10 = body == null;
} catch (error) {
return null;
}
if (value10) {
r4 = value;
} else {
try {
guilds = body.guilds;
} catch (error) {
return null;
}
try {
value11 = guilds == null;
} catch (error) {
return null;
}
if (value11) {
r4 = value;
} else {
try {
property = guilds[0];
} catch (error) {
return null;
}
r4 = property;
}
}
try {
value12 = r4 == null;
} catch (error) {
return null;
}
if (value12) {
r2 = r4;
} else {
try {
binding = env2_12;
} catch (error) {
return null;
}
try {
value = binding(r4);
} catch (error) {
return null;
}
r2 = value;
}
return r2;
}
}
function _fetchPublicDiscoveryGuild() { // fn#55245, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:7124:2308, offset: 0x01379cc3, size: 48 bytes, params: 1, frame: 14
return Module00005(_fun55247).apply(this, arguments);
function* _fun55247(a0) { // fn#55247, original name: ?anon_0_, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:7124:2383, offset: 0x01379cfc, size: 216 bytes, params: 2, frame: 18
var guild;
var slug;
var r2;
var binding;
var binding2;
var property;
var value4;
var HTTP;
var get;
var object;
var GUILD_DISCOVERY_SLUG;
var String;
var value5;
var value6;
var value7;
var value8;
var value9;
var body;
var value11;
var value12;
var value13;
var error;
if (false) {
return undefined;
}
value = undefined;
try {
binding = env2_0;
} catch (error) {
return null;
}
try {
binding2 = env2_2;
} catch (error) {
return null;
}
try {
property = binding2[12];
} catch (error) {
return null;
}
try {
value4 = binding(property);
} catch (error) {
return null;
}
try {
HTTP = value4.HTTP;
} catch (error) {
return null;
}
try {
get = HTTP.get;
} catch (error) {
return null;
}
try {
object = {'url': null, 'oldFormErrors': true, 'rejectWithError': true};
} catch (error) {
return null;
}
try {
binding = env2_9;
} catch (error) {
return null;
}
try {
GUILD_DISCOVERY_SLUG = binding.GUILD_DISCOVERY_SLUG;
} catch (error) {
return null;
}
try {
String = global.String;
} catch (error) {
return null;
}
try {
value5 = String(a0);
} catch (error) {
return null;
}
try {
value6 = Reflect.apply(GUILD_DISCOVERY_SLUG, binding, [value5]);
} catch (error) {
return null;
}
try {
object.url = value6;
} catch (error) {
return null;
}
try {
value7 = Reflect.apply(get, HTTP, [object]);
} catch (error) {
return null;
}
yield value7;
try {
value8 = undefined;
value9 = false;
} catch (error) {
return null;
}
if (value9) {
return value8;
}
try {
body = value8.body;
} catch (error) {
return null;
}
const value10 = null;
try {
value11 = value10 == body;
} catch (error) {
return null;
}
if (value11) {
guild = value;
try {
value12 = value10 == guild;
} catch (error) {
return null;
}
if (value12) {
return value10;
}
try {
value13 = value10 == body;
} catch (error) {
return null;
}
if (value13) {
slug = value;
try {
value = value10 == slug;
} catch (error) {
return null;
}
if (value) {
return value10;
}
try {
object = {};
} catch (error) {
return null;
}
try {
guild = body.guild;
} catch (error) {
return null;
}
try {
object.guild = guild;
} catch (error) {
return null;
}
try {
slug = body.slug;
} catch (error) {
return null;
}
try {
object.slug = slug;
r2 = object;
} catch (error) {
return null;
}
return r2;
}
try {
slug = body.slug;
} catch (error) {
return null;
}
try {
value = value10 == slug;
} catch (error) {
return null;
}
if (value) {
return value10;
}
try {
object = {};
} catch (error) {
return null;
}
try {
guild = body.guild;
} catch (error) {
return null;
}
try {
object.guild = guild;
} catch (error) {
return null;
}
try {
slug = body.slug;
} catch (error) {
return null;
}
try {
object.slug = slug;
r2 = object;
} catch (error) {
return null;
}
} else {
try {
guild = body.guild;
} catch (error) {
return null;
}
try {
value12 = value10 == guild;
} catch (error) {
return null;
}
if (value12) {
return value10;
}
try {
value13 = value10 == body;
} catch (error) {
return null;
}
if (value13) {
slug = value;
try {
value = value10 == slug;
} catch (error) {
return null;
}
if (value) {
return value10;
}
try {
object = {};
} catch (error) {
return null;
}
try {
guild = body.guild;
} catch (error) {
return null;
}
try {
object.guild = guild;
} catch (error) {
return null;
}
try {
slug = body.slug;
} catch (error) {
return null;
}
try {
object.slug = slug;
r2 = object;
} catch (error) {
return null;
}
return r2;
}
try {
slug = body.slug;
} catch (error) {
return null;
}
try {
value = value10 == slug;
} catch (error) {
return null;
}
if (value) {
return value10;
}
try {
object = {};
} catch (error) {
return null;
}
try {
guild = body.guild;
} catch (error) {
return null;
}
try {
object.guild = guild;
} catch (error) {
return null;
}
try {
slug = body.slug;
} catch (error) {
return null;
}
try {
object.slug = slug;
r2 = object;
} catch (error) {
return null;
}
}
return r2;
}
}
function trackDiscoveryExited(a0, a1) { // fn#55249, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:7124:2973, offset: 0x01379dd4, size: 84 bytes, params: 3, frame: 16
const value = a2;
const r5 = value !== undefined ? value : null;
const defaultImport = AnalyticsUtils;
const track = defaultImport.track;
const GUILD_DISCOVERY_EXITED = AnalyticEvents.GUILD_DISCOVERY_EXITED;
Reflect.apply(track, defaultImport, [GUILD_DISCOVERY_EXITED, {load_id: a0, guild_ids_viewed: a1,
recommendations_source: r5}]);
}
function trackSearchStarted(a0, a1) { // fn#55251, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:7124:3231, offset: 0x01379e62, size: 99 bytes, params: 3, frame: 16
const value = a2;
const r5 = value !== undefined ? value : {};
const defaultImport = AnalyticsUtils;
const track = defaultImport.track;
const SEARCH_STARTED = AnalyticEvents.SEARCH_STARTED;
const GUILD_DISCOVERY = SearchTypes.GUILD_DISCOVERY;
Reflect.apply(track, defaultImport, [SEARCH_STARTED, {search_type: GUILD_DISCOVERY, load_id: a0,
location: r5.location, category_id: a1}]);
}
function trackSearchResultsViewed({loadId, searchId, query, guildResults, analyticsContext, categoryId, isTagSearch}) { // fn#55255, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:7124:4034, offset: 0x01379fcb, size: 202 bytes, params: 2, frame: 23
const defaultImport = AnalyticsUtils;
const track = defaultImport.track;
const SEARCH_RESULT_VIEWED = AnalyticEvents.SEARCH_RESULT_VIEWED;
const object = {};
object.search_type = isTagSearch ? SearchTypes.GUILD_DISCOVERY_TAG : SearchTypes.GUILD_DISCOVERY;
object.load_id = loadId;
object.search_id = searchId;
const value = guildResults !== undefined;
object.total_results = value ? guildResults.length : null;
object.guild_ids = value ? guildResults.map(function(a0) {
return a0.id;
}) : null;
object.query = query;
object.location = analyticsContext.location;
object.category_id = categoryId;
Reflect.apply(track, defaultImport, [SEARCH_RESULT_VIEWED, object]);
}
}
function makeDiscoverableGuild({id, name, description, splash, banner, icon, features, approximate_presence_count, approximate_member_count, premium_subscription_count, preferred_locale, discovery_splash, emojis, emoji_count, stickers, sticker_count, keywords}) { // fn#55241, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:7124:1477, offset: 0x01379ad2, size: 218 bytes, params: 2, frame: 13
const object = {};
object.id = id;
object.name = name;
object.description = description;
object.splash = splash;
object.banner = banner;
object.icon = icon;
const Set = global.Set;
object.features = new Set(features);
object.presenceCount = approximate_presence_count;
object.memberCount = approximate_member_count;
object.premiumSubscriptionCount = premium_subscription_count;
object.preferredLocale = preferred_locale;
object.discoverySplash = discovery_splash;
object.emojis = emojis;
object.emojiCount = emoji_count;
object.stickers = stickers;
object.stickerCount = sticker_count;
object.keywords = keywords;
return object;
}
global.__d(_fun55237, 6946, [5, 3785, 4111, 1867, 661, 1230, 6947, 6837, 6593, 6912, 6914, 683, 507, 1468,
2]) /* metro module 6946, dependencies: [5, 3785, 4111, 1867, 661, 1230, 6947, 6837, 6593, 6912, 6914, 683, 507, 1468, 2] */;