/* 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] */;