Files
discord-decomp/sources/modules/icymi/ICYMISessionStore.tsx
T
2026-07-28 01:06:53 +03:00

978 lines
48 KiB
TypeScript

/* Metro module 12954; source: modules/icymi/ICYMISessionStore.tsx; dependencies: [15, 17, 18, 6, 7, 4107, 1220, 9582, 1226, 9569, 491, 9589, 566, 694, 2] */
import ClassCallCheck from '../../by-id/module-00006-ClassCallCheck.js'; /* Metro dependency 6 */
import CreateClass from '../../by-id/module-00007-CreateClass.js'; /* Metro dependency 7 */
import PossibleConstructorReturn from '../../by-id/module-00015-PossibleConstructorReturn.js'; /* Metro dependency 15 */
import Module00017 from '../../by-id/module-00017.js'; /* Metro dependency 17 */
import Inherits from '../../by-id/module-00018-Inherits.js'; /* Metro dependency 18 */
import Flux from '../../external/discord_common/js/packages/flux/index.tsx'; /* Metro dependency 566 */
import ApexExperimentStore from '../experiments/apex/ApexExperimentStore.tsx'; /* Metro dependency 1220 */
import AuthenticationStore from '../../stores/AuthenticationStore.tsx'; /* Metro dependency 1226 */
import ExperimentStore from '../experiments/ExperimentStore.tsx'; /* Metro dependency 4107 */
import ICYMIStore from './ICYMIStore.tsx'; /* Metro dependency 9569 */
import LabFeatureStore from '../labs/LabFeatureStore.tsx'; /* Metro dependency 9582 */
import * as FileImportTrackerModule from '../../by-id/module-00002-FileImportTracker.js'; /* Metro dependency 2 */
import * as Module00491Module from '../../by-id/module-00491.js'; /* Metro dependency 491 */
import * as ICYMIAnalyticsModule from './ICYMIAnalytics.tsx'; /* Metro dependency 9589 */
function _fun98705(global, require, importDefault, importAll, module, exports, dependencyMap) { // fn#98705, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13144:6, offset: 0x021b29f7, size: 647 bytes, params: 8, frame: 21
const env0_0 = require;
const _arrayLikeToArray_98711 = function(a0, a1) {
var r0;
var r1;
var r2;
var value3;
var length;
var value5;
var value = undefined;
var value2 = value == null;
reducibleJoin2: while (true) {
if (value2) {
r0 = value2;
break reducibleJoin2;
}
value3 = value > a0.length;
r0 = value3;
break reducibleJoin2;
}
reducibleJoin4: while (true) {
if (r0) {
length = a0.length;
r1 = length;
break reducibleJoin4;
}
r1 = value;
break reducibleJoin4;
}
value = (0, global.Array)(r1);
var value4 = 0;
if (value4 < r1) {
r2 = value4;
reducibleLoop5: while (true) {
value[r2] = a0[r2];
value5 = typeof r2 === 'bigint' ? r2 + 1n : +r2 + 1;
if (value5 < r1) {
r2 = value5;
continue reducibleLoop5;
}
break reducibleLoop5;
}
}
return value;
};
const ICYMI_TAB_OPENED_987142 = ICYMI_TAB_OPENED_98714;
const Object = global.Object;
Object.defineProperty(exports, '__esModule', {value: true});
const env0_13 = [];
const Map = global.Map;
let map = new Map();
map = _fun98715();
const Store = (Flux).Store;
let value5 = new _fun98753(Store)(importDefault(694) /* metro dependency 694: Dispatcher */,
{ICYMI_TAB_OPENED: ICYMI_TAB_OPENED_987142, ICYMI_TAB_CLOSED: function() {
return endCurrentSession();
}, ICYMI_SET_FOCUSED_TAB: ICYMI_SET_FOCUSED_TAB_98759, ICYMI_ITEMS_DWELL_START: ICYMI_ITEMS_DWELL_START,
ICYMI_ITEMS_LONG_IMPRESSION: ICYMI_ITEMS_LONG_IMPRESSION, RELOAD_ICYMI: RELOAD_ICYMI_98763,
LOAD_ICYMI_DEHYDRATED: LOAD_ICYMI_DEHYDRATED_98764, APP_STATE_UPDATE: APP_STATE_UPDATE_98765,
CHANNEL_SELECT: CHANNEL_SELECT_98766, ICYMI_SET_CARD_HEIGHT: ICYMI_SET_CARD_HEIGHT,
ICYMI_ITEM_INTERACTED: ICYMI_ITEM_INTERACTED, ICYMI_FEED_ITEM_ACTIONED: ICYMI_FEED_ITEM_ACTIONED,
ICYMI_FEED_FILTER_ACTIONED: ICYMI_FEED_FILTER_ACTIONED, ICYMI_FEED_PAGE_ACTIONED: ICYMI_FEED_PAGE_ACTIONED});
(FileImportTrackerModule).fileFinishedImporting('modules/icymi/ICYMISessionStore.tsx');
exports.default = value5;
exports.resetGlobalState = resetGlobalState;
exports.ICYMISession = map;
function _isNativeReflectConstruct_98706() { // fn#98706, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13144:211, offset: 0x021b2c7e, size: 98 bytes, params: 1, frame: 18
var Boolean;
var prototype;
var valueOf;
var call;
var Reflect;
var construct;
var closure;
var value;
var error;
try {
Boolean = global.Boolean;
prototype = Boolean.prototype;
valueOf = prototype.valueOf;
call = valueOf.call;
Reflect = global.Reflect;
construct = Reflect.construct;
Boolean = global.Boolean;
closure = function() {
};
value = Reflect.apply(construct, Reflect, [Boolean, [], closure]);
value = Reflect.apply(call, valueOf, [value]);
var result = !value;
} catch (error) {
}
return (_isNativeReflectConstruct_98706_isNativeReflectConstruct = function() {
return !!result;
})();
}
function _createForOfIteratorHelperLoose_98709(a0, a1) { // fn#98709, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13144:404, offset: 0x021b2ce0, size: 372 bytes, params: 3, frame: 20
var r6;
var r9;
var r5;
var value3;
var regexp;
const env0_0 = a0;
const Symbol = global.Symbol;
let value = typeof Symbol !== 'undefined';
let r1 = value && a0[global.Symbol.iterator];
r1 = !r1 ? a0['@@iterator'] : r1;
if (r1) {
value = r1.call(a0);
return value.next.bind(value);
}
const Array = global.Array;
if (Array.isArray(a0)) {
if (r1) {
}
return _fun98710;
}
value = undefined;
if (a0) {
if (typeof a0 === 'string') {
value = _arrayLikeToArray_98711(a0, value);
r5 = value;
} else {
value3 = ({}).toString.call(a0).slice(8, -1);
r6 = value3 === 'Object' && a0.constructor;
r9 = r6 ? a0.constructor.name : value3;
if (r9 === 'Map') {
r6 = global.Array.from(a0);
} else if (r9 === 'Set') {
r6 = global.Array.from(a0);
} else if (r9 === 'Arguments') {
value = _arrayLikeToArray_98711(a0, value);
r6 = value;
} else {
regexp = RegExp('^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$', '');
if (regexp.test(r9)) {
value = _arrayLikeToArray_98711(a0, value);
r6 = value;
} else {
r6 = value;
}
}
r5 = r6;
}
} else {
r5 = value;
}
if (r5) {
if (r5) {
}
return _fun98710;
}
const TypeError = global.TypeError;
throw new TypeError('Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.');
function _fun98710() { // fn#98710, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13144:975, offset: 0x00c39d73, size: 69 bytes, params: 1, frame: 5
return env0_1 >= env0_0.length ? {done: true} : {done: false,
value: env0_0[typeof env0_1 === 'bigint' ? env0_1 : +env0_1]};
}
}
function endCurrentSession() { // fn#98712, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13144:9871, offset: 0x021b2e54, size: 34 bytes, params: 1, frame: 10
var r0;
const value2 = env0_12 != null;
if (value2) {
env0_12.endSession();
r0 = true;
} else {
r0 = value2;
}
return r0;
}
function endCurrentSessionImpressions() { // fn#98713, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13144:9936, offset: 0x021b2e76, size: 34 bytes, params: 1, frame: 10
var r0;
const value2 = env0_12 != null;
if (value2) {
env0_12.endAllImpressions();
r0 = true;
} else {
r0 = value2;
}
return r0;
}
function ICYMI_TAB_OPENED_98714() { // fn#98714, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13144:10019, offset: 0x021b2e98, size: 68 bytes, params: 1, frame: 15
var r0;
var value4;
if (env0_13.length > 0) {
value4 = new env0_16(env0_13, 'focus');
r0 = true;
} else {
r0 = endCurrentSession();
}
return r0;
}
function _fun98715() { // fn#98715, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13144:1356, offset: 0x021b2edc, size: 725 bytes, params: 1, frame: 15
return CreateClass(ICYMISession, [{key: 'sessionId', get: function() {
return this._sessionId;
}}, {key: 'startTimestamp', get: function() {
return this._startTimestamp;
}}, {key: 'endTimestamp', get: function() {
return this._endTimestamp;
}}, {key: 'dwellCount', get: function() {
return this._dwellCount;
}}, {key: 'uniqueDwellCount', get: function() {
return this._dwelledItemIdMap.size;
}}, {key: 'impressionCount', get: function() {
return this._impressionCount;
}}, {key: 'uniqueImpressionCount', get: function() {
return this._impressionItemIdMap.size;
}}, {key: 'interactionCount', get: function() {
return this._interactionCount;
}}, {key: 'reloadCount', get: function() {
return this._reloadCount;
}}, {key: 'feedFetchCount', get: function() {
return this._feedFetchCount;
}}, {key: 'dwelledItemsChangedCount', get: function() {
return this._dwelledItemsChangedCount;
}}, {key: 'impressionItemTypes', get: function() {
return this._impressionItemTypes;
}}, {key: 'getImpression', value: function(a0) {
var env0_0 = a0;
return this._activeItems.find(_fun98732);
}}, {key: 'startItemsDwell', value: value_98733}, {key: 'trackItemsLongImpression', value: value_98737},
{key: 'trackItemInteraction', value: value_98738}, {key: 'trackFeedItemActioned', value: value_98739},
{key: 'trackFeedFilterActioned', value: value_98740}, {key: 'trackFeedPageActioned', value: value_98741},
{key: 'incrementReloadCount', value: function() {
this._resetTimeout();
var _reloadCount = this._reloadCount;
this._reloadCount = typeof _reloadCount === 'bigint' ? _reloadCount + 1n : +_reloadCount + 1;
}}, {key: 'incrementFeedFetchCount', value: function() {
var _feedFetchCount = this._feedFetchCount;
this._feedFetchCount = typeof _feedFetchCount === 'bigint' ? _feedFetchCount + 1n : +_feedFetchCount + 1;
}}, {key: 'endAllImpressions', value: function() {
var r3;
var env0_0 = this;
var _activeItems = this._activeItems;
var items = [];
arraySpread(items, _activeItems, 0, r3);
items.forEach(_fun98745);
}}, {key: 'endSession', value: value_98746}, {key: '_resetTimeout', value: function() {
var env0_0 = this;
global.clearTimeout(this._timeout);
this._timeout = global.setTimeout(_fun98748, 300000);
}}, {key: '_createImpression', value: value_98749}, {key: '_constructImpressionFromInput', value: value_98750},
{key: '_endImpression', value: value_98751}]);
function ICYMISession() { // fn#98716, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13144:1377, offset: 0x021b31b1, size: 432 bytes, params: 1, frame: 22
var environment;
let value = a0;
const value2 = a1;
const r5 = value !== undefined ? value : [];
const env0_1 = value2 !== undefined ? value2 : 'list';
value = environment.__proto__;
env1_5(this, ICYMISession);
this._sessionId = Module00491Module.v4();
const Date = global.Date;
this._startTimestamp = Date.now();
this._endTimestamp = null;
this._activeItems = [];
this._dwellCount = 0;
this._impressionCount = 0;
let Map = global.Map;
const value4 = Object.create(Map.prototype, {constructor: {value: Map}});
let map = new Map();
this._dwelledItemIdMap = map instanceof Object ? map : value4;
Map = global.Map;
const value6 = Object.create(Map.prototype, {constructor: {value: Map}});
map = new Map();
this._impressionItemIdMap = map instanceof Object ? map : value6;
const Set = global.Set;
const value8 = Object.create(Set.prototype, {constructor: {value: Set}});
const set = new Set();
this._impressionItemTypes = set instanceof Object ? set : value8;
this._reloadCount = 0;
this._feedFetchCount = 0;
this._dwelledItemsChangedCount = 0;
this._interactionCount = 0;
this._actionCount = 0;
this._latestDwellStartTimeMs = 0;
this._timeout = global.setTimeout(_fun98717, 300000);
const ICYMIAnalytics = (ICYMIAnalyticsModule).ICYMIAnalytics;
const trackFeedSessionStarted = ICYMIAnalytics.trackFeedSessionStarted;
const object = {};
object.icymiSessionId = this._sessionId;
object.sessionStartTimeMs = this._startTimestamp;
object.previousIcymiSessionCount = env1_14;
const DEFAULT_UX_VARIATION = (ICYMIAnalyticsModule).DEFAULT_UX_VARIATION;
object.uxVariation = DEFAULT_UX_VARIATION;
Reflect.apply(trackFeedSessionStarted, ICYMIAnalytics, [object]);
if (r5.length > 0) {
this.startItemsDwell(r5.map(_fun98718));
}
function _fun98717() { // fn#98717, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13144:1863, offset: 0x021b3361, size: 19 bytes, params: 1, frame: 9
return env0_0.endSession();
}
function _fun98718(a0) { // fn#98718, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13144:2123, offset: 0x021b3374, size: 41 bytes, params: 2, frame: 12
const object = {};
copyDataProperties(object, a0, undefined);
object['triggerType'] = env0_1;
object['isInitiallyVisible'] = true;
return object;
}
}
function value_98731(a0) { // fn#98731, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13144:3042, offset: 0x021b342b, size: 38 bytes, params: 2, frame: 11
const env0_0 = a0;
return this._activeItems.find(_fun98732);
function _fun98732({itemId}) { // fn#98732, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13144:3085, offset: 0x01110379, size: 22 bytes, params: 2, frame: 2
return itemId === env0_0;
}
}
function value_98733(a0) { // fn#98733, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13144:3134, offset: 0x021b3451, size: 299 bytes, params: 2, frame: 20
var environment;
var r5;
var value6;
var getImpression;
var itemId;
var value7;
var push;
var _createImpression;
var value8;
this._resetTimeout();
let value = environment.__proto__;
env1_13 = a0;
if (a0.length === this._activeItems.length) {
reducibleJoin2: while (true) {
if (a0.every(_fun98734)) {
return this._activeItems;
}
break reducibleJoin2;
}
}
const _dwelledItemsChangedCount = this._dwelledItemsChangedCount;
this._dwelledItemsChangedCount = typeof _dwelledItemsChangedCount === 'bigint' ? _dwelledItemsChangedCount + 1n : +_dwelledItemsChangedCount + 1;
const items2 = [];
const Set = global.Set;
const set = new Set(this._activeItems.map(function(a0) {
return a0.itemId;
}));
value = _createForOfIteratorHelperLoose_98709(a0);
const value5 = value();
let done = value5.done;
if (!done) {
r5 = value5;
reducibleLoop3: while (true) {
value6 = r5.value;
getImpression = this.getImpression;
itemId = value6.itemId;
value7 = Reflect.apply(getImpression, this, [itemId]);
if (value7 != null) {
push = items2.push;
Reflect.apply(push, items2, [value7]);
itemId = value6.itemId;
set.delete(itemId);
} else {
push = items2.push;
_createImpression = this._createImpression;
Reflect.apply(push, items2, [Reflect.apply(_createImpression, this, [value6])]);
}
value8 = value();
done = value8.done;
if (done) {
break reducibleLoop3;
}
r5 = value8;
continue reducibleLoop3;
}
}
set.forEach(_fun98736);
this._activeItems = items2;
return this._activeItems;
function _fun98734({itemId}, a1) { // fn#98734, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13144:3220, offset: 0x021b357c, size: 41 bytes, params: 3, frame: 2
const itemId = env0_0._activeItems[a1].itemId;
return itemId === itemId;
}
function _fun98736(a0) { // fn#98736, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13144:3578, offset: 0x021b35b0, size: 23 bytes, params: 2, frame: 11
return env0_0._endImpression(a0);
}
}
function value_98737(a0) { // fn#98737, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13144:3684, offset: 0x021b35c7, size: 497 bytes, params: 2, frame: 26
var r2;
var r12;
var r1;
var r14;
var r15;
var r13;
var value5;
var getImpression;
var itemId;
var value6;
var value7;
var _impressionCount;
var value8;
var _impressionItemIdMap;
var set;
var _impressionItemIdMap2;
var get;
var itemId2;
var value9;
var value10;
var ICYMIAnalytics;
var trackFeedItemDwell1s;
var object;
var _sessionId;
var impressionId;
var itemType;
var impressionStartTimestamp;
var triggerType;
var _dwelledItemIdMap;
var value11;
var itemFeedIndex;
var itemScore;
var isInitiallyVisible;
var itemChannelType;
var binding;
var value12;
var itemCardHeight;
var interactionActionTypes;
var interactionCount;
var uxVariation;
var DEFAULT_UX_VARIATION;
var sessionImpressionIndex;
var value13;
const value2 = _createForOfIteratorHelperLoose_98709(a0);
const value3 = value2();
let done = value3.done;
const value4 = null;
if (!done) {
r2 = value3;
while (true) {
value5 = r2.value;
getImpression = this.getImpression;
itemId = value5.itemId;
value6 = Reflect.apply(getImpression, this, [itemId]);
if (value4 != value6) {
r12 = value6;
} else {
value7 = this._constructImpressionFromInput(value5);
r12 = value7;
}
_impressionCount = this._impressionCount;
value8 = typeof _impressionCount === 'bigint' ? _impressionCount + 1n : +_impressionCount + 1;
this._impressionCount = value8;
r12.sessionImpressionIndex = value8;
_impressionItemIdMap = this._impressionItemIdMap;
set = _impressionItemIdMap.set;
itemId = value5.itemId;
_impressionItemIdMap2 = this._impressionItemIdMap;
get = _impressionItemIdMap2.get;
itemId2 = value5.itemId;
value9 = Reflect.apply(get, _impressionItemIdMap2, [itemId2]);
value10 = 0;
if (value4 != value9) {
r1 = value9;
continue;
}
r1 = value10;
continue;
Reflect.apply(set, _impressionItemIdMap, [itemId, r1 + 1]);
ICYMIAnalytics = (require(9589) /* metro dependency 9589: ICYMIAnalytics */).ICYMIAnalytics;
trackFeedItemDwell1s = ICYMIAnalytics.trackFeedItemDwell1s;
object = {};
_sessionId = this._sessionId;
object.icymiSessionId = _sessionId;
impressionId = r12.impressionId;
object.impressionId = impressionId;
itemId = r12.itemId;
object.itemId = itemId;
itemType = r12.itemType;
object.itemType = itemType;
impressionStartTimestamp = r12.impressionStartTimestamp;
object.dwellStartTimeMs = impressionStartTimestamp;
triggerType = r12.triggerType;
object.triggerType = triggerType;
_dwelledItemIdMap = this._dwelledItemIdMap;
get = _dwelledItemIdMap.get;
itemId = r12.itemId;
value11 = Reflect.apply(get, _dwelledItemIdMap, [itemId]);
if (value4 != value11) {
r14 = value11;
continue;
}
r14 = value10;
continue;
object.itemOccurenceCountInSession = r14;
itemFeedIndex = r12.itemFeedIndex;
object.itemFeedIndex = itemFeedIndex;
itemScore = r12.itemScore;
object.itemScore = itemScore;
isInitiallyVisible = r12.isInitiallyVisible;
object.isInitiallyVisible = isInitiallyVisible;
itemChannelType = r12.itemChannelType;
object.itemChannelType = itemChannelType;
binding = env1_15;
get = binding.get;
itemId = r12.itemId;
value12 = Reflect.apply(get, binding, [itemId]);
if (value4 != value12) {
r15 = value12;
continue;
}
itemCardHeight = r12.itemCardHeight;
r15 = itemCardHeight;
if (value4 != r15) {
r14 = r15;
continue;
}
r14 = value4;
continue;
object.itemCardHeight = r14;
object.isDwelling = value4 != value6;
interactionActionTypes = r12.interactionActionTypes;
object.interactionActionTypes = interactionActionTypes;
interactionCount = r12.interactionCount;
object.interactionCount = interactionCount;
uxVariation = r12.uxVariation;
if (value4 != uxVariation) {
r13 = uxVariation;
continue;
}
DEFAULT_UX_VARIATION = (require(9589) /* metro dependency 9589: ICYMIAnalytics */).DEFAULT_UX_VARIATION;
r13 = DEFAULT_UX_VARIATION;
object.uxVariation = r13;
sessionImpressionIndex = r12.sessionImpressionIndex;
object.sessionImpressionIndex = sessionImpressionIndex;
Reflect.apply(trackFeedItemDwell1s, ICYMIAnalytics, [object]);
value13 = value2();
done = value13.done;
if (done) {
break;
}
r2 = value13;
continue;
}
}
}
function value_98738(a0, a1, a2) { // fn#98738, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13144:4764, offset: 0x021b37b8, size: 217 bytes, params: 4, frame: 20
var interactionCount;
const impression = this.getImpression(a0);
const value3 = undefined;
const ICYMIAnalytics = (require(9589) /* metro dependency 9589: ICYMIAnalytics */).ICYMIAnalytics;
const trackItemInteraction = ICYMIAnalytics.trackItemInteraction;
const object = {id: a0, type: a1, actionType: a2};
object.impressionId = impression == null ? value3 : impression.impressionId;
object.uxVariation = (impression == null ? value3 : impression.uxVariation) ?? (require(9589) /* metro dependency 9589: ICYMIAnalytics */).DEFAULT_UX_VARIATION;
const _interactionCount = this._interactionCount;
const value4 = typeof _interactionCount === 'bigint' ? _interactionCount + 1n : +_interactionCount + 1;
this._interactionCount = value4;
object.sessionInteractionIndex = value4;
object.icymiSessionId = this._sessionId;
Reflect.apply(trackItemInteraction, ICYMIAnalytics, [object]);
if (impression != null) {
impression.interactionActionTypes.push(a2);
interactionCount = impression.interactionCount;
impression.interactionCount = typeof interactionCount === 'bigint' ? interactionCount + 1n : +interactionCount + 1;
}
return value3;
}
function value_98739(a0) { // fn#98739, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13144:5193, offset: 0x021b3891, size: 214 bytes, params: 2, frame: 20
const impression = this.getImpression(a0.itemId);
const value3 = undefined;
const ICYMIAnalytics = (require(9589) /* metro dependency 9589: ICYMIAnalytics */).ICYMIAnalytics;
const trackFeedItemActioned = ICYMIAnalytics.trackFeedItemActioned;
const object = {};
object.icymiSessionId = this._sessionId;
const value4 = null;
const uxVariation = value4 == impression ? value3 : impression.uxVariation;
object.uxVariation = value4 != uxVariation ? uxVariation : (require(9589) /* metro dependency 9589: ICYMIAnalytics */).DEFAULT_UX_VARIATION;
const _actionCount = this._actionCount;
const value5 = typeof _actionCount === 'bigint' ? _actionCount + 1n : +_actionCount + 1;
this._actionCount = value5;
object.sessionActionIndex = value5;
object.itemId = a0.itemId;
object.itemType = a0.itemType;
const impressionId = value4 == impression ? value3 : impression.impressionId;
object.impressionId = value4 != impressionId ? impressionId : value4;
object.actionParameters = a0.actionParameters;
Reflect.apply(trackFeedItemActioned, ICYMIAnalytics, [object]);
return value3;
}
function value_98740(a0) { // fn#98740, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13144:5619, offset: 0x021b3967, size: 229 bytes, params: 2, frame: 20
const itemId = a0.itemId;
const value = null;
const r6 = value != itemId ? this.getImpression(a0.itemId) : value;
const value4 = undefined;
const ICYMIAnalytics = (require(9589) /* metro dependency 9589: ICYMIAnalytics */).ICYMIAnalytics;
const trackFeedFilterActioned = ICYMIAnalytics.trackFeedFilterActioned;
const object = {};
object.icymiSessionId = this._sessionId;
const uxVariation = value == r6 ? value4 : r6.uxVariation;
object.uxVariation = value != uxVariation ? uxVariation : (require(9589) /* metro dependency 9589: ICYMIAnalytics */).DEFAULT_UX_VARIATION;
const _actionCount = this._actionCount;
const value5 = typeof _actionCount === 'bigint' ? _actionCount + 1n : +_actionCount + 1;
this._actionCount = value5;
object.sessionActionIndex = value5;
object.filterParameters = a0.filterParameters;
object.itemId = a0.itemId;
object.itemType = a0.itemType;
const impressionId = value == r6 ? value4 : r6.impressionId;
object.impressionId = value != impressionId ? impressionId : value;
Reflect.apply(trackFeedFilterActioned, ICYMIAnalytics, [object]);
return value4;
}
function value_98741(a0) { // fn#98741, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13144:6065, offset: 0x021b3a4c, size: 110 bytes, params: 2, frame: 18
let value = environment.__proto__;
const ICYMIAnalytics = (ICYMIAnalyticsModule).ICYMIAnalytics;
const trackFeedPageActioned = ICYMIAnalytics.trackFeedPageActioned;
const object = {};
const _sessionId = this._sessionId;
object.icymiSessionId = _sessionId;
const DEFAULT_UX_VARIATION = (ICYMIAnalyticsModule).DEFAULT_UX_VARIATION;
object.uxVariation = DEFAULT_UX_VARIATION;
const _actionCount = this._actionCount;
value = typeof _actionCount === 'bigint' ? _actionCount + 1n : +_actionCount + 1;
this._actionCount = value;
object.sessionActionIndex = value;
copyDataProperties(object, a0, _sessionId);
Reflect.apply(trackFeedPageActioned, ICYMIAnalytics, [object]);
}
function value_98744() { // fn#98744, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13144:6439, offset: 0x021b3af0, size: 49 bytes, params: 1, frame: 14
const _activeItems = this._activeItems;
const items2 = [];
arraySpread(items2, _activeItems, 0, undefined);
items2.forEach(_fun98745);
function _fun98745({itemId}) { // fn#98745, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13144:6482, offset: 0x021b3b21, size: 29 bytes, params: 2, frame: 11
return env0_0._endImpression(itemId);
}
}
function value_98746() { // fn#98746, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13144:6543, offset: 0x021b3b3e, size: 349 bytes, params: 1, frame: 21
this.endAllImpressions();
const Date = global.Date;
this._endTimestamp = Date.now();
const ICYMIAnalytics = (ICYMIAnalyticsModule).ICYMIAnalytics;
const trackFeedSessionCompleted = ICYMIAnalytics.trackFeedSessionCompleted;
const object = {};
object.icymiSessionId = this._sessionId;
object.sessionDurationMs = this._endTimestamp - this._startTimestamp;
object.sessionStartTimeMs = this._startTimestamp;
object.sessionEndTimeMs = this._endTimestamp;
object.impressionCount = this._impressionCount;
object.uniqueImpressionCount = this._impressionItemIdMap.size;
const Array = global.Array;
object.impressionItemTypes = Array.from(this._impressionItemTypes);
object.feedReloadCount = this._reloadCount;
object.feedDwelledItemsChangedCount = this._dwelledItemsChangedCount;
object.feedFetchCount = this._feedFetchCount;
object.latestDwellStartTimeMs = this._latestDwellStartTimeMs;
object.previousIcyMiSessionCount = env1_14;
object.interactionCount = this._interactionCount;
object.dwelledCount = this._dwellCount;
object.uniqueDwelledCount = this._dwelledItemIdMap.size;
const DEFAULT_UX_VARIATION = (ICYMIAnalyticsModule).DEFAULT_UX_VARIATION;
object.uxVariation = DEFAULT_UX_VARIATION;
Reflect.apply(trackFeedSessionCompleted, ICYMIAnalytics, [object]);
global.clearTimeout(this._timeout);
const binding = env1_14;
env1_14 = typeof binding === 'bigint' ? binding + 1n : +binding + 1;
env1_15.clear();
return this;
}
function value_98747() { // fn#98747, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13144:7437, offset: 0x021b3c9b, size: 63 bytes, params: 1, frame: 15
global.clearTimeout(this._timeout);
this._timeout = global.setTimeout(_fun98748, 300000);
function _fun98748() { // fn#98748, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13144:7502, offset: 0x021b3361, size: 19 bytes, params: 1, frame: 9
return env0_0.endSession();
}
}
function value_98750(a0) { // fn#98750, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13144:7882, offset: 0x021b3d60, size: 244 bytes, params: 2, frame: 15
const value2 = (Module00491Module).v4();
const object = {};
object.itemId = a0.itemId;
object.itemType = a0.itemType;
object.impressionId = value2;
const Date = global.Date;
object.impressionStartTimestamp = Date.now();
object.impressionComplete = false;
object.triggerType = a0.triggerType;
object.itemFeedIndex = a0.itemFeedIndex;
object.itemScore = a0.itemScore;
object.isInitiallyVisible = a0.isInitiallyVisible;
object.itemChannelType = a0.itemChannelType;
const value3 = env1_15.get(a0.itemId);
const value4 = null;
object.itemCardHeight = value4 != value3 ? value3 : value4;
const DEFAULT_UX_VARIATION = (ICYMIAnalyticsModule).DEFAULT_UX_VARIATION;
object.uxVariation = DEFAULT_UX_VARIATION;
object.interactionActionTypes = [];
object.interactionCount = 0;
object.sessionImpressionIndex = value4;
return object;
}
function value_98751(a0) { // fn#98751, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13144:8380, offset: 0x021b3e54, size: 460 bytes, params: 2, frame: 23
var environment;
var r7;
var r12;
var r0;
var value2;
var ICYMIAnalytics;
var trackFeedItemDwelled;
var object;
var impressionEndTimestamp;
var impressionStartTimestamp;
var itemId;
var _dwelledItemIdMap;
var get;
var value3;
var binding;
var value5;
var uxVariation;
const env0_0 = a0;
const index = this._activeItems.findIndex(_fun98752);
const property = this._activeItems[index];
const value = null;
if (value != property) {
property.impressionEndTimestamp = global.Date.now();
property.impressionComplete = true;
value2 = environment.__proto__;
ICYMIAnalytics = (require(9589) /* metro dependency 9589: ICYMIAnalytics */).ICYMIAnalytics;
trackFeedItemDwelled = ICYMIAnalytics.trackFeedItemDwelled;
object = {};
object.icymiSessionId = this._sessionId;
object.impressionId = property.impressionId;
impressionEndTimestamp = property.impressionEndTimestamp;
impressionStartTimestamp = property.impressionStartTimestamp;
object.dwellTimeMs = impressionEndTimestamp - impressionStartTimestamp;
itemId = property.itemId;
object.itemId = itemId;
object.itemType = property.itemType;
impressionStartTimestamp = property.impressionStartTimestamp;
object.dwellStartTimeMs = impressionStartTimestamp;
impressionEndTimestamp = property.impressionEndTimestamp;
object.dwellEndTimeMs = impressionEndTimestamp;
object.triggerType = property.triggerType;
_dwelledItemIdMap = this._dwelledItemIdMap;
get = _dwelledItemIdMap.get;
itemId = property.itemId;
value3 = Reflect.apply(get, _dwelledItemIdMap, [itemId]);
r7 = value != value3 ? value3 : 0;
object.itemOccurenceCountInSession = r7;
object.itemFeedIndex = property.itemFeedIndex;
object.itemScore = property.itemScore;
object.isInitiallyVisible = property.isInitiallyVisible;
object.itemChannelType = property.itemChannelType;
binding = env1_15;
get = binding.get;
itemId = property.itemId;
value5 = Reflect.apply(get, binding, [itemId]);
r12 = value != value5 ? value5 : property.itemCardHeight;
r7 = value != r12 ? r12 : value;
object.itemCardHeight = r7;
uxVariation = property.uxVariation;
r7 = value != uxVariation ? uxVariation : (require(9589) /* metro dependency 9589: ICYMIAnalytics */).DEFAULT_UX_VARIATION;
object.uxVariation = r7;
object.interactionActionTypes = property.interactionActionTypes;
object.interactionCount = property.interactionCount;
object.sessionImpressionIndex = property.sessionImpressionIndex;
Reflect.apply(trackFeedItemDwelled, ICYMIAnalytics, [object]);
this._activeItems.splice(index, 1);
r0 = property;
} else {
r0 = value;
}
return r0;
function _fun98752({itemId}) { // fn#98752, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13144:8435, offset: 0x01110379, size: 22 bytes, params: 2, frame: 2
return itemId === env0_0;
}
}
}
function _fun98753(a0) { // fn#98753, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13144:9400, offset: 0x021b4020, size: 124 bytes, params: 2, frame: 16
const ICYMISessionStore2 = ICYMISessionStore;
Inherits(ICYMISessionStore2, a0);
return CreateClass(ICYMISessionStore2, [{key: 'initialize', value: function() {
this.waitFor(ApexExperimentStore, AuthenticationStore, ICYMIStore, ExperimentStore, LabFeatureStore);
}}, {key: 'currentSession', get: get_98756}, {key: 'endedSessionCount', get: get_98757}]);
function ICYMISessionStore() { // fn#98754, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13144:9412, offset: 0x021b409c, size: 113 bytes, params: 1, frame: 20
const value = environment.__proto__;
env1_5(this, ICYMISessionStore);
const value3 = env1_3(ICYMISessionStore);
return env1_2(this, _isNativeReflectConstruct_98706() ? global.Reflect.construct(value3, arguments,
env1_3(this).constructor) : value3.apply(this, arguments));
}
function get_98756() { // fn#98756, offset: 0x00e2f9de, size: 9 bytes, params: 1, frame: 1
return env1_12;
}
function get_98757() { // fn#98757, offset: 0x00df0f5a, size: 9 bytes, params: 1, frame: 1
return env1_14;
}
}
function ICYMI_SET_FOCUSED_TAB_98759({focused}) { // fn#98759, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13144:10269, offset: 0x021b4138, size: 110 bytes, params: 2, frame: 12
var binding;
var value2;
if (focused) {
if (env0_12 != null) {
if (env0_13.length > 0) {
binding = env0_13;
value2 = binding.map(function(a0) {
var r2;
var object = {};
copyDataProperties(object, a0, r2);
object['triggerType'] = 'focus';
object['isInitiallyVisible'] = true;
return object;
});
binding = env0_12;
binding.startItemsDwell(value2);
return true;
}
return false;
}
return ICYMI_TAB_OPENED_98714();
}
return endCurrentSessionImpressions();
}
function ICYMI_ITEMS_DWELL_START(a0) { // fn#98761, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13144:10542, offset: 0x021b41cc, size: 81 bytes, params: 2, frame: 14
var binding;
var value3;
if (env0_12 == null) {
value3 = new env0_16(a0.items, 'list');
} else {
binding = env0_12;
binding.startItemsDwell(a0.items);
}
return true;
}
function ICYMI_ITEMS_LONG_IMPRESSION(a0) { // fn#98762, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13144:10674, offset: 0x021b421d, size: 81 bytes, params: 2, frame: 15
var value3;
if (env0_12 == null) {
value3 = new env0_16(a0.items, 'list');
}
const binding = env0_12;
binding.trackItemsLongImpression(a0.items);
return true;
}
function RELOAD_ICYMI_98763() { // fn#98763, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13144:10807, offset: 0x021b426e, size: 36 bytes, params: 1, frame: 10
var r0;
const value2 = env0_12 != null;
if (value2) {
env0_12.incrementReloadCount();
r0 = true;
} else {
r0 = value2;
}
return r0;
}
function LOAD_ICYMI_DEHYDRATED_98764() { // fn#98764, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13144:10905, offset: 0x021b4292, size: 46 bytes, params: 1, frame: 11
var r0;
const value2 = env0_12 != null;
if (value2) {
env0_12.incrementFeedFetchCount();
endCurrentSessionImpressions();
r0 = true;
} else {
r0 = value2;
}
return r0;
}
function APP_STATE_UPDATE_98765({state}) { // fn#98765, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13144:11040, offset: 0x021b42c0, size: 50 bytes, params: 2, frame: 10
return state !== 'active' && env0_12 != null && endCurrentSession();
}
function CHANNEL_SELECT_98766() { // fn#98766, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13144:11144, offset: 0x021b42f2, size: 28 bytes, params: 1, frame: 10
return env0_12 != null && endCurrentSessionImpressions();
}
function ICYMI_SET_CARD_HEIGHT({itemId, height}) { // fn#98767, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13144:11247, offset: 0x021b430e, size: 36 bytes, params: 2, frame: 13
env0_15.set(itemId, height);
return true;
}
function ICYMI_ITEM_INTERACTED({itemId, itemType, actionType}) { // fn#98768, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13144:11337, offset: 0x021b4332, size: 91 bytes, params: 2, frame: 16
var value3;
if (env0_12 == null) {
value3 = new env0_16(env0_13, 'focus');
}
env0_12.trackItemInteraction(itemId, itemType, actionType);
return true;
}
function ICYMI_FEED_ITEM_ACTIONED(a0) { // fn#98769, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13144:11493, offset: 0x021b438d, size: 71 bytes, params: 2, frame: 14
var value3;
if (env0_12 == null) {
value3 = new env0_16(env0_13, 'focus');
}
env0_12.trackFeedItemActioned(a0);
return true;
}
function ICYMI_FEED_FILTER_ACTIONED(a0) { // fn#98770, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13144:11623, offset: 0x021b43d4, size: 71 bytes, params: 2, frame: 14
var value3;
if (env0_12 == null) {
value3 = new env0_16(env0_13, 'focus');
}
env0_12.trackFeedFilterActioned(a0);
return true;
}
function ICYMI_FEED_PAGE_ACTIONED(a0) { // fn#98771, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13144:11755, offset: 0x021b441b, size: 71 bytes, params: 2, frame: 14
var value3;
if (env0_12 == null) {
value3 = new env0_16(env0_13, 'focus');
}
env0_12.trackFeedPageActioned(a0);
return true;
}
function resetGlobalState() { // fn#98772, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13144:11964, offset: 0x021b4462, size: 74 bytes, params: 1, frame: 13
if (env0_12 != null) {
global.clearTimeout(env0_12._timeout);
}
env0_13 = [];
env0_15.clear();
}
}
function value_98749(a0) { // fn#98749, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13144:7561, offset: 0x021b3cda, size: 134 bytes, params: 2, frame: 18
const value = this._constructImpressionFromInput(a0);
const _dwellCount = this._dwellCount;
this._dwellCount = typeof _dwellCount === 'bigint' ? _dwellCount + 1n : +_dwellCount + 1;
const _dwelledItemIdMap = this._dwelledItemIdMap;
_dwelledItemIdMap.set(a0.itemId, (this._dwelledItemIdMap.get(a0.itemId) ?? 0) + 1);
const _impressionItemTypes = this._impressionItemTypes;
_impressionItemTypes.add(a0.itemType);
this._latestDwellStartTimeMs = value.impressionStartTimestamp;
return value;
}
global.__d(_fun98705, 12954, [15, 17, 18, 6, 7, 4107, 1220, 9582, 1226, 9569, 491, 9589, 566, 694,
2]) /* metro module 12954, dependencies: [15, 17, 18, 6, 7, 4107, 1220, 9582, 1226, 9569, 491, 9589, 566, 694, 2] */;