Files
discord-decomp/sources/modules/gateway/BasicWorkScheduler.tsx
T
2026-07-27 16:20:00 +03:00

176 lines
9.2 KiB
TypeScript

/* Metro module 12500; source: modules/gateway/BasicWorkScheduler.tsx; dependencies: [6, 7, 12498, 3, 12501, 44, 2] */
function _fun95220(global, require, importDefault, importAll, module, exports, dependencyMap) { // fn#95220, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:12690:6, offset: 0x02135b8a, size: 232 bytes, params: 8, frame: 19
const env0_0 = require;
const Object = global.Object;
Object.defineProperty(exports, '__esModule', {value: true});
const env0_3 = importDefault(6) /* metro dependency 6 */;
const env0_4 = importDefault(7) /* metro dependency 7 */;
let value = require(12498) /* metro dependency 12498: DispatcherWorkConstants */;
const env0_5 = value.MAX_DISPATCHER_FLUSH_DEADLINE_TRIES;
const env0_6 = value.DISPATCHER_STANDARD_TIMEOUT_MS;
const env0_7 = value.DISPATCHER_IDEAL_TIME_LIMIT_MS;
const env0_8 = value.DISPATCHER_LONG_TIMEOUT_MS;
value = importDefault(3) /* metro dependency 3: Logger */;
value = new value('DispatcherWorkScheduler');
value = _fun95221();
(require(2) /* metro dependency 2 */).fileFinishedImporting('modules/gateway/BasicWorkScheduler.tsx');
exports.BasicWorkScheduler = value;
}
function _fun95221() { // fn#95221, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:12690:311, offset: 0x02135c72, size: 346 bytes, params: 1, frame: 15
return env0_4(BasicWorkScheduler, [{key: '_trackAppBackgrounded', value: value_95223}, {key: '_queueIdleCallback',
value: function() {
var Error = global.Error;
throw new Error('Not implemented');
}}, {key: '_clearIdleCallback', value: function() {
var Error = global.Error;
throw new Error('Not implemented');
}}, {key: '_hasExceededMaxConsecutiveFlushes', get: function() {
return this._consecutiveFlushesBeforeQueueEmpty >= MAX_DISPATCHER_FLUSH_DEADLINE_TRIES;
}}, {key: '_processWorkCallback', value: value_95227}, {key: 'markCriticalWorkScheduled', value: function() {
this._criticalWorkScheduled = true;
if (this._flushIdleHandler != null) {
this._clearIdleCallback();
this._processWorkCallback();
}
}}, {key: 'toggleRequestIdleCallback', value: function(a0) {
this._enableRequestIdleCallback = a0;
if (!a0 && this.hasWorkScheduled) {
this._clearIdleCallback();
this._processWorkCallback();
}
}}, {key: 'isBackgrounded', get: function() {
return this._isBackgrounded;
}}, {key: 'hasWorkScheduled', get: function() {
return this._flushTimeoutHandler != null || this._flushIdleHandler != null;
}}, {key: 'isRequestIdleCallbackEnabled', get: function() {
return this._enableRequestIdleCallback;
}}, {key: 'clearWorkTimeout', value: function() {
if (this._flushTimeoutHandler != null) {
global.clearTimeout(this._flushTimeoutHandler);
this._flushTimeoutHandler = null;
}
this._clearIdleCallback();
this._nextDispatchTimeout = DISPATCHER_STANDARD_TIMEOUT_MS;
this._workCallbackFn = null;
}}, {key: 'requestWorkTimeout', value: value_95234}]);
}
function BasicWorkScheduler() { // fn#95222, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:12690:332, offset: 0x02135dcc, size: 149 bytes, params: 1, frame: 15
env1_3(this, BasicWorkScheduler);
this._flushTimeoutHandler = null;
this._flushIdleHandler = null;
this._nextDispatchTimeout = DISPATCHER_STANDARD_TIMEOUT_MS;
this._workCallbackFn = null;
this._consecutiveFlushesBeforeQueueEmpty = 0;
this._isBackgrounded = false;
this._enableRequestIdleCallback = true;
this._criticalWorkScheduled = false;
const WorkSchedulerTelemetry = (require(12501) /* metro dependency 12501: WorkSchedulerTelemetry */).WorkSchedulerTelemetry;
const value3 = Object.create(WorkSchedulerTelemetry.prototype, {constructor: {value: WorkSchedulerTelemetry}});
const workSchedulerTelemetry = new WorkSchedulerTelemetry();
this.telemetry = workSchedulerTelemetry instanceof Object ? workSchedulerTelemetry : value3;
this._logger = env1_9;
}
function value_95223(a0) { // fn#95223, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:12690:739, offset: 0x02135e61, size: 107 bytes, params: 2, frame: 14
var telemetry;
var track;
var value;
if (this._isBackgrounded !== a0) {
this._isBackgrounded = a0;
if (this._isBackgrounded && this.hasWorkScheduled) {
telemetry = this.telemetry;
track = telemetry.track;
value = environment.__proto__;
Reflect.apply(track, telemetry,
[(require(12501) /* metro dependency 12501: WorkSchedulerTelemetry */).WorkSchedulerTelemetryEvent.SKIP_IDLE_CALLBACK_DUE_TO_BACKGROUNDED]);
this._processWorkCallback();
}
}
}
function value_95227(a0) { // fn#95227, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:12690:1279, offset: 0x02135f06, size: 417 bytes, params: 2, frame: 19
var value;
var _consecutiveFlushesBeforeQueueEmpty;
var telemetry;
const WorkSchedulerTelemetryMeasurement = (require(12501) /* metro dependency 12501: WorkSchedulerTelemetry */).WorkSchedulerTelemetryMeasurement;
if (this._workCallbackFn != null) {
if (this._hasExceededMaxConsecutiveFlushes) {
value = environment.__proto__;
env1_9.log('Unable to fully flush work queue after max retries, skipping future deadline.');
this._workCallbackFn();
this.clearWorkTimeout();
telemetry = this.telemetry;
telemetry.measure(WorkSchedulerTelemetryMeasurement.COUNT_FLUSH_BEFORE_QUEUE_EMPTY,
this._consecutiveFlushesBeforeQueueEmpty);
telemetry = this.telemetry;
telemetry.track((require(12501) /* metro dependency 12501: WorkSchedulerTelemetry */).WorkSchedulerTelemetryEvent.EXCEEDED_MAX_CONSECUTIVE_FLUSHES);
this._consecutiveFlushesBeforeQueueEmpty = 0;
this._nextDispatchTimeout = DISPATCHER_LONG_TIMEOUT_MS;
return undefined;
}
var performance = global.performance;
value = performance.now();
var value2 = this._workCallbackFn(a0);
performance = global.performance;
var value3 = performance.now();
this.clearWorkTimeout();
value = value3 - value;
this._nextDispatchTimeout = value > DISPATCHER_IDEAL_TIME_LIMIT_MS ? DISPATCHER_LONG_TIMEOUT_MS : DISPATCHER_STANDARD_TIMEOUT_MS;
_consecutiveFlushesBeforeQueueEmpty = this._consecutiveFlushesBeforeQueueEmpty;
if (value2) {
if (_consecutiveFlushesBeforeQueueEmpty > 0) {
telemetry = this.telemetry;
telemetry.measure(WorkSchedulerTelemetryMeasurement.COUNT_FLUSH_BEFORE_QUEUE_EMPTY,
global.parseInt('' + this._consecutiveFlushesBeforeQueueEmpty));
}
this._consecutiveFlushesBeforeQueueEmpty = 0;
this._criticalWorkScheduled = false;
} else {
this._consecutiveFlushesBeforeQueueEmpty = _consecutiveFlushesBeforeQueueEmpty + 1;
}
}
}
function value_95234(a0) { // fn#95234, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:12690:3132, offset: 0x02136188, size: 202 bytes, params: 2, frame: 19
var environment;
var telemetry;
var time;
let value = a1;
const r3 = value !== undefined ? value : false;
this._workCallbackFn = a0;
if (!this.hasWorkScheduled) {
telemetry = this.telemetry;
time = telemetry.time;
value = environment.__proto__;
Reflect.apply(time, telemetry,
[(require(12501) /* metro dependency 12501: WorkSchedulerTelemetry */).WorkSchedulerTelemetryTiming.TIME_TO_QUEUE_EMPTY]);
if (this._nextDispatchTimeout === DISPATCHER_LONG_TIMEOUT_MS) {
telemetry = this.telemetry;
telemetry.track((require(12501) /* metro dependency 12501: WorkSchedulerTelemetry */).WorkSchedulerTelemetryEvent.LONGER_DISPATCH);
}
if (r3) {
this._queueIdleCallback();
} else {
this._flushTimeoutHandler = global.setTimeout(_fun95235, this._nextDispatchTimeout);
}
}
}
function _fun95235() { // fn#95235, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:12690:3445, offset: 0x02136252, size: 141 bytes, params: 1, frame: 16
var telemetry;
const defaultImport = importDefault(44) /* metro dependency 44 */;
let binding = env0_0;
defaultImport(binding._workCallbackFn != null, 'Work callback should be set');
const _isBackgrounded = binding._isBackgrounded;
binding = env0_0;
if (_isBackgrounded) {
telemetry = binding.telemetry;
telemetry.track((require(12501) /* metro dependency 12501: WorkSchedulerTelemetry */).WorkSchedulerTelemetryEvent.SKIP_IDLE_CALLBACK_DUE_TO_BACKGROUNDED);
return binding._processWorkCallback();
}
binding._queueIdleCallback();
}