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

298 lines
15 KiB
TypeScript

/* Metro module 13604; source: modules/video_player/useVideoSegmentAnalytics.tsx; dependencies: [57, 31, 7096, 2] */
import Module00057 from '../../by-id/module-00057.js'; /* Metro dependency 57 */
import * as FileImportTrackerModule from '../../by-id/module-00002-FileImportTracker.js'; /* Metro dependency 2 */
import * as ReactModule from '../../by-id/module-00031-React.js'; /* Metro dependency 31 */
import * as DiscordVideoPlayerTypesModule from '../../external/discord_common/js/packages/video-player/DiscordVideoPlayerTypes.tsx'; /* Metro dependency 7096 */
function _fun103421(global, require, importDefault, importAll, module, exports, dependencyMap) { // fn#103421, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13794:6, offset: 0x02267dfe, size: 193 bytes, params: 8, frame: 18
const env0_0 = require;
const Object = global.Object;
Object.defineProperty(exports, '__esModule', {value: true});
(FileImportTrackerModule).fileFinishedImporting('modules/video_player/useVideoSegmentAnalytics.tsx');
exports.default = useVideoSegmentAnalytics;
exports.SEGMENT_ANALYTICS_EMIT_INTERVAL_MS = 4000;
exports.SEGMENT_ANALYTICS_MIN_DURATION_MS = 2000;
function useVideoSegmentAnalytics({getCurrentVideoTime, onAnalytics, emitIntervalMs, minSegmentDurationMs}) { // fn#103422, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13794:260, offset: 0x02267ebf, size: 563 bytes, params: 2, frame: 28
const emitIntervalMs2 = emitIntervalMs;
const binding = minSegmentDurationMs;
let useState = binding.useState;
const value2 = Reflect.apply(useState, binding, [null]);
const binding2 = emitIntervalMs2;
const value3 = binding2(value2, 2);
const property = value3[0];
const env0_5 = value3[1];
useState = binding.useState;
const value4 = binding2(Reflect.apply(useState, binding, [false]), 2);
const property2 = value4[0];
const env0_7 = value4[1];
useState = binding.useState;
const value5 = binding2(Reflect.apply(useState, binding, [false]), 2);
const property3 = value5[0];
const env0_9 = value5[1];
useState = binding.useState;
const value6 = binding2(Reflect.apply(useState, binding, [false]), 2);
const property4 = value6[0];
const env0_11 = value6[1];
const env0_12 = useRef(null);
const Date = global.Date;
const env0_13 = useRef(Date.now());
const env0_14 = useRef(false);
const value7 = useCallback(_fun103423, [onAnalytics]);
const value8 = useCallback(_fun103424, [getCurrentVideoTime, property3, property4]);
const value9 = useCallback(_fun103425, [property, value7, emitIntervalMs, minSegmentDurationMs,
getCurrentVideoTime]);
useEffect(_fun103426, [property3, property4]);
useEffect(_fun103427, [property2, property3, property4, property, value9, value7, value8, getCurrentVideoTime]);
const value = useCallback(_fun103430, [property, value7, getCurrentVideoTime]);
useRef(value).current = value;
object = {};
object.handlePlayerStateChange = useCallback(_fun103431, []);
object.handleLoadEnd = useCallback(_fun103432, []);
object.handleFirstFrame = useCallback(_fun103433, []);
object.handleSeek = useCallback(_fun103434, []);
return object;
function _fun103423(a0) { // fn#103423, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13794:578, offset: 0x022680f2, size: 128 bytes, params: 2, frame: 13
var onAnalyticsBinding;
var object;
var startTimeMs;
var endTimeMs;
let segmentEndSec = a0.segmentEndSec;
let segmentStartSec = a0.segmentStartSec;
if (!(segmentEndSec < segmentStartSec)) {
onAnalyticsBinding = onAnalytics;
object = {};
startTimeMs = a0.startTimeMs;
object.start_time = startTimeMs;
endTimeMs = a0.endTimeMs;
object.end_time = endTimeMs;
endTimeMs = a0.endTimeMs;
startTimeMs = a0.startTimeMs;
object.duration = endTimeMs - startTimeMs;
segmentStartSec = a0.segmentStartSec;
object.segment_start_sec = segmentStartSec;
segmentEndSec = a0.segmentEndSec;
object.segment_end_sec = segmentEndSec;
segmentEndSec = a0.segmentEndSec;
segmentStartSec = a0.segmentStartSec;
object.segment_duration_sec = segmentEndSec - segmentStartSec;
onAnalyticsBinding(object);
}
}
function _fun103424() { // fn#103424, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13794:838, offset: 0x02268172, size: 95 bytes, params: 1, frame: 15
var value3;
const currentVideoTime = getCurrentVideoTime();
if (currentVideoTime != null) {
if (env0_8) {
if (env0_10) {
value3 = global.Date.now();
env0_5({startTimeMs: value3, endTimeMs: value3, segmentStartSec: currentVideoTime,
segmentEndSec: currentVideoTime});
env0_14.current = true;
}
}
}
}
function _fun103425() { // fn#103425, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13794:983, offset: 0x022681d1, size: 192 bytes, params: 1, frame: 17
var r7;
var r3;
var value3;
var value5;
var value6;
var minSegmentDurationMsBinding;
var binding;
var object;
const currentVideoTime = getCurrentVideoTime();
if (currentVideoTime != null) {
if (ReactModule.useRef != null) {
value3 = global.Date.now();
value5 = value3 - env0_13.current < emitIntervalMs;
if (value5) {
r3 = value5;
} else {
value6 = currentVideoTime - ReactModule.useRef.segmentStartSec;
minSegmentDurationMsBinding = minSegmentDurationMs;
r3 = value6 < minSegmentDurationMsBinding / 1000;
r7 = minSegmentDurationMsBinding;
}
if (!r3) {
binding = env0_15;
object = {};
copyDataProperties(object, ReactModule.useRef, r7);
object['endTimeMs'] = value3;
object['segmentEndSec'] = currentVideoTime;
binding(object);
binding = env0_5;
binding({startTimeMs: value3, endTimeMs: value3, segmentStartSec: currentVideoTime,
segmentEndSec: currentVideoTime});
env0_13.current = value3;
}
}
}
}
function _fun103426() { // fn#103426, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13794:1214, offset: 0x02268291, size: 46 bytes, params: 1, frame: 12
if (!(env0_8 && env0_10)) {
env0_5(null);
env0_14.current = false;
}
}
function _fun103427() { // fn#103427, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13794:1260, offset: 0x022682bf, size: 273 bytes, params: 1, frame: 18
var currentVideoTime;
var value3;
var binding;
var object;
var clearInterval;
if (ReactModule.useEffect) {
if (env0_8) {
if (env0_10) {
if (!env0_14.current) {
env0_16();
}
env0_12.current = global.window.setInterval(_fun103428, 200);
} else {
currentVideoTime = getCurrentVideoTime();
if (ReactModule.useRef != null) {
if (currentVideoTime != null) {
value3 = global.Date.now();
if (currentVideoTime - ReactModule.useRef.segmentStartSec > 0.2) {
binding = env0_15;
object = {};
copyDataProperties(object, ReactModule.useRef, value3);
object['endTimeMs'] = value3;
object['segmentEndSec'] = currentVideoTime;
binding(object);
}
}
}
env0_5(null);
env0_14.current = false;
if (env0_12.current != null) {
clearInterval = global.clearInterval;
binding = env0_12;
clearInterval(binding.current);
binding.current = null;
}
}
} else {
currentVideoTime = getCurrentVideoTime();
if (ReactModule.useRef != null) {
if (currentVideoTime != null) {
value3 = global.Date.now();
if (currentVideoTime - ReactModule.useRef.segmentStartSec > 0.2) {
binding = env0_15;
object = {};
copyDataProperties(object, ReactModule.useRef, value3);
object['endTimeMs'] = value3;
object['segmentEndSec'] = currentVideoTime;
binding(object);
}
}
}
env0_5(null);
env0_14.current = false;
if (env0_12.current != null) {
clearInterval = global.clearInterval;
binding = env0_12;
clearInterval(binding.current);
binding.current = null;
}
}
} else {
currentVideoTime = getCurrentVideoTime();
if (ReactModule.useRef != null) {
if (currentVideoTime != null) {
value3 = global.Date.now();
if (currentVideoTime - ReactModule.useRef.segmentStartSec > 0.2) {
binding = env0_15;
object = {};
copyDataProperties(object, ReactModule.useRef, value3);
object['endTimeMs'] = value3;
object['segmentEndSec'] = currentVideoTime;
binding(object);
}
}
}
env0_5(null);
env0_14.current = false;
if (env0_12.current != null) {
clearInterval = global.clearInterval;
binding = env0_12;
clearInterval(binding.current);
binding.current = null;
}
}
return _fun103429;
function _fun103428() { // fn#103428, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13794:1321, offset: 0x022683d0, size: 15 bytes, params: 1, frame: 9
env1_17();
}
function _fun103429() { // fn#103429, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13794:1538, offset: 0x022683df, size: 52 bytes, params: 1, frame: 13
var clearInterval;
var binding;
if (env1_12.current != null) {
clearInterval = global.clearInterval;
binding = env1_12;
clearInterval(binding.current);
binding.current = null;
}
}
}
function _fun103430() { // fn#103430, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13794:1633, offset: 0x02268413, size: 135 bytes, params: 1, frame: 17
var value3;
var binding;
var object;
const currentVideoTime = getCurrentVideoTime();
if (ReactModule.useRef != null) {
if (currentVideoTime != null) {
value3 = global.Date.now();
if (currentVideoTime - ReactModule.useRef.segmentStartSec > 0.2) {
binding = env0_15;
object = {};
copyDataProperties(object, ReactModule.useRef, value3);
object['endTimeMs'] = value3;
object['segmentEndSec'] = currentVideoTime;
binding(object);
}
env0_5(null);
env0_14.current = false;
}
}
}
function _fun103431(a0) { // fn#103431, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13794:1835, offset: 0x0226849a, size: 155 bytes, params: 2, frame: 14
const VideoPlayerState = (DiscordVideoPlayerTypesModule).VideoPlayerState;
const PLAYING = VideoPlayerState.PLAYING;
if (PLAYING === a0) {
env0_7(true);
} else if (VideoPlayerState.PAUSED === a0) {
env0_18.current();
env0_7(false);
} else if (VideoPlayerState.ENDED === a0) {
env0_18.current();
env0_7(false);
}
}
function _fun103432() { // fn#103432, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13794:2014, offset: 0x021ec76e, size: 18 bytes, params: 1, frame: 11
env0_9(true);
}
function _fun103433() { // fn#103433, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13794:2051, offset: 0x02268535, size: 18 bytes, params: 1, frame: 11
env0_11(true);
}
function _fun103434() { // fn#103434, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13794:2082, offset: 0x02268547, size: 20 bytes, params: 1, frame: 9
env0_18.current();
}
}
}
global.__d(_fun103421, 13604, [57, 31, 7096, 2]) /* metro module 13604, dependencies: [57, 31, 7096, 2] */;