Files
discord-decomp/sources/modules/quests/native/VideoQuestModal/VideoQuestPlayer.tsx
T
2026-07-28 01:06:53 +03:00

1107 lines
61 KiB
TypeScript

/* Metro module 13605; source: modules/quests/native/VideoQuestModal/VideoQuestPlayer.tsx; dependencies: [57, 31, 27, 7030, 7095, 6528, 661, 33, 697, 8011, 4501, 674, 13597, 9483, 9495, 3769, 4017, 4577, 4581, 4504, 4507, 13603, 7116, 9564, 13606, 1582, 477, 1239, 9522, 9484, 566, 1216, 1585, 1244, 13614, 5278, 13524, 13526, 13528, 13529, 10234, 9376, 9554, 13530, 13531, 2] */
import Module00057 from '../../../../by-id/module-00057.js'; /* Metro dependency 57 */
import Module00674 from '../../../../by-id/module-00674.js'; /* Metro dependency 674 */
import UseSafeAreaInsetsNative from '../../../safe_area/useSafeAreaInsets.native.tsx'; /* Metro dependency 1585 */
import AppStateStore from '../../../../stores/native/AppStateStore.tsx'; /* Metro dependency 7030 */
import VideoQuestUIStore from '../../VideoQuestUIStore.tsx'; /* Metro dependency 7095 */
import Module08011 from '../../../../by-id/module-08011.jsx'; /* Metro dependency 8011 */
import UseVideoQuestPlayerAnalytics from './hooks/useVideoQuestPlayerAnalytics.tsx'; /* Metro dependency 13603 */
import * as FileImportTrackerModule from '../../../../by-id/module-00002-FileImportTracker.js'; /* Metro dependency 2 */
import * as ReactNativeModule from '../../../../by-id/module-00027-ReactNative.js'; /* Metro dependency 27 */
import * as ReactModule from '../../../../by-id/module-00031-React.js'; /* Metro dependency 31 */
import * as JsxRuntimeModule from '../../../../by-id/module-00033-JsxRuntime.js'; /* Metro dependency 33 */
import * as ConstantsModule from '../../../../Constants.tsx'; /* Metro dependency 661 */
import * as ComponentDispatchUtilsModule from '../../../../utils/ComponentDispatchUtils.tsx'; /* Metro dependency 1239 */
import * as Module03769Module from '../../../../by-id/module-03769.js'; /* Metro dependency 3769 */
import * as ReanimatedRexportModule from '../../../reanimated/ReanimatedRexport.tsx'; /* Metro dependency 4017 */
import * as CreateStylesModule from '../../../../design/components/Styles/native/createStyles.tsx'; /* Metro dependency 4501 */
import * as SpringModule from '../../../../design/animation/reanimated/spring/spring.tsx'; /* Metro dependency 4577 */
import * as SpringPresetsModule from '../../../../design/animation/reanimated/spring/springPresets.tsx'; /* Metro dependency 4581 */
import * as PressablesModule from '../../../../design/void/Pressables/native/Pressables.tsx'; /* Metro dependency 5278 */
import * as QuestConstantsModule from '../../QuestConstants.tsx'; /* Metro dependency 6528 */
import * as QuestTaskUtilsModule from '../../utils/QuestTaskUtils.tsx'; /* Metro dependency 7116 */
import * as QuestHooksModule from '../../hooks/QuestHooks.tsx'; /* Metro dependency 9483 */
import * as VideoQuestUtilsModule from '../../utils/VideoQuestUtils.tsx'; /* Metro dependency 9522 */
import * as AndroidRNVHttpEngineExperimentModule from '../../../media_uploads/experiments/AndroidRNVHttpEngineExperiment.tsx'; /* Metro dependency 9564 */
import * as VideoQuestPlayerControlButtonModule from './VideoQuestPlayerControlButton.tsx'; /* Metro dependency 13528 */
import * as SkipBackwardIconModule from './icons/SkipBackwardIcon.tsx'; /* Metro dependency 13529 */
import * as SkipForwardIconModule from './icons/SkipForwardIcon.tsx'; /* Metro dependency 13530 */
import * as VideoQuestModalContextModule from './VideoQuestModalContext.tsx'; /* Metro dependency 13597 */
import * as VideoQuestCaptionsModule from './captions/VideoQuestCaptions.tsx'; /* Metro dependency 13614 */
function _fun103435(global, require, importDefault, importAll, module, exports, dependencyMap) { // fn#103435, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13795:6, offset: 0x0226855b, size: 1271 bytes, params: 8, frame: 30
const env0_0 = require;
const Object = global.Object;
Object.defineProperty(exports, '__esModule', {value: true});
let value = ReactModule;
const StyleSheet = ReactNativeModule.StyleSheet;
object = {};
let PX_16 = (importDefault(697) /* metro dependency 697: native */).space.PX_16;
object.left = PX_16;
PX_16 = (importDefault(697) /* metro dependency 697: native */).space.PX_16;
object.right = PX_16;
PX_16 = (importDefault(697) /* metro dependency 697: native */).space.PX_16;
object.top = PX_16;
PX_16 = (importDefault(697) /* metro dependency 697: native */).space.PX_16;
object.bottom = PX_16;
const env0_16 = value.memo(Module08011);
object = {code: 'function hasVideoEnded_VideoQuestPlayerTsx1(currentTime,videoDuration){return currentTime>=videoDuration-1;}'};
const value5 = _fun103437();
const __1034392 = __103439;
__1034392.__closure = {hasVideoEnded: value5};
__1034392.__workletHash = 6684695599942;
__1034392.__initData = {code: 'function VideoQuestPlayerTsx2(currentTime,maxTimestamp,videoDuration,isQuestCompleted){const{hasVideoEnded}=this.__closure;return!hasVideoEnded(currentTime,videoDuration)&&(isQuestCompleted||currentTime<=maxTimestamp-1);}'};
const createStyles = CreateStylesModule.createStyles;
object = {};
const object3 = {};
copyDataProperties(object3, StyleSheet.absoluteFillObject, undefined);
object.container = object3;
const object4 = {};
copyDataProperties(object4, StyleSheet.absoluteFillObject, undefined);
const BACKGROUND_BASE_LOWEST = (importDefault(697) /* metro dependency 697: native */).colors.BACKGROUND_BASE_LOWEST;
object4['backgroundColor'] = BACKGROUND_BASE_LOWEST;
object4['justifyContent'] = 'center';
object4['alignItems'] = 'center';
object.loadingContainer = object4;
object.bufferingSpinner = {position: 'absolute'};
const object6 = {};
copyDataProperties(object6, StyleSheet.absoluteFillObject, undefined);
object6['justifyContent'] = 'center';
object6['alignItems'] = 'center';
object.bufferingSpinnerCentered = object6;
object.video = {'height': '100%', 'width': '100%'};
object.videoContainer = {'position': 'relative', 'height': '100%', 'width': '100%'};
const object7 = {};
copyDataProperties(object7, StyleSheet.absoluteFillObject, undefined);
const BLACK = (importDefault(697) /* metro dependency 697: native */).unsafe_rawColors.BLACK;
const value9 = Module00674(BLACK).alpha(0.5);
object7['backgroundColor'] = value9.hex();
object7['justifyContent'] = 'center';
object7['alignItems'] = 'center';
object7['flexDirection'] = 'column';
object.controls = object7;
let PX_8 = (importDefault(697) /* metro dependency 697: native */).space.PX_8;
object.controlsTopBottom = {'flexDirection': 'row', 'justifyContent': 'flex-end', 'padding': null,
'position': 'absolute', 'left': 0, 'right': 0, padding: PX_8};
const PX_24 = (importDefault(697) /* metro dependency 697: native */).space.PX_24;
object.controlsMiddle = {'justifyContent': 'center', 'alignItems': 'center', 'flexGrow': 1, 'flexDirection': 'row',
'gap': null, 'pointerEvents': 'box-none', gap: PX_24};
object.controlsTop = {top: 0};
object.controlsBottom = {bottom: 0};
PX_16 = (importDefault(697) /* metro dependency 697: native */).space.PX_16;
object.progressContainer = {'position': 'absolute', 'bottom': 0, 'right': 0, 'left': 0,
'justifyContent': 'flex-end', 'height': null, 'overflow': 'hidden', height: PX_16};
const WHITE = (importDefault(697) /* metro dependency 697: native */).colors.WHITE;
object.progress = {'height': 1, 'backgroundColor': null, 'shadowOffset': null, 'shadowRadius': 6,
'shadowOpacity': 1, 'elevation': 5, 'shadowColor': '#FFFFFF', backgroundColor: WHITE, shadowOffset: {'width': 0,
'height': 0}};
const TEXT_DEFAULT = (importDefault(697) /* metro dependency 697: native */).colors.TEXT_DEFAULT;
object.icon = {color: TEXT_DEFAULT};
const TEXT_SUBTLE = (importDefault(697) /* metro dependency 697: native */).colors.TEXT_SUBTLE;
object.iconDisabled = {color: TEXT_SUBTLE};
PX_8 = (importDefault(697) /* metro dependency 697: native */).space.PX_8;
object.controlButton = {padding: PX_8};
const env0_20 = Reflect.apply(createStyles, CreateStylesModule, [object]);
const env0_22 = {code: 'function VideoQuestPlayerTsx3(){const{hasLoaded,showControls,playerState,PlayerState,isVideoEnded,externallyPaused}=this.__closure;return hasLoaded&&(showControls.get()||playerState===PlayerState.PAUSED||playerState===PlayerState.ENDED||playerState===PlayerState.ERRORED||isVideoEnded||externallyPaused);}'};
const env0_23 = {code: "function VideoQuestPlayerTsx4(){const{shouldShowControls,withSpring,SUBTLE_SPRING}=this.__closure;const show=shouldShowControls();return{opacity:withSpring(show?1:0,SUBTLE_SPRING),pointerEvents:show?'auto':'none'};}"};
const env0_24 = {code: 'function VideoQuestPlayerTsx5(){const{withTiming,progress,timingFast}=this.__closure;return{width:withTiming(progress.get()*100+"%",timingFast,\'animate-always\')};}'};
value = value.memo(_fun103440);
(FileImportTrackerModule).fileFinishedImporting('modules/quests/native/VideoQuestModal/VideoQuestPlayer.tsx');
exports.PlayerState = {PAUSED: 'paused', PLAYING: 'playing', ENDED: 'ended', LOADING: 'loading', ERRORED: 'errored'};
exports.VideoQuestPlayer = value;
function getSafeAreaInsetOrPadding_103436(a0, a1) { // fn#103436, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13795:420, offset: 0x02268a52, size: 42 bytes, params: 3, frame: 14
const Math = global.Math;
return Math.max(a0[a1], env0_15[a1]);
}
function _fun103437() { // fn#103437, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13795:633, offset: 0x02268a7c, size: 48 bytes, params: 1, frame: 2
const closure = function(a0, a1) {
return a0 >= a1 - 1;
};
closure.__closure = {};
closure.__workletHash = 3281537893520;
closure.__initData = env0_17;
return closure;
}
function __103439(a0, a1, a2, a3) { // fn#103439, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13795:1050, offset: 0x02268aac, size: 52 bytes, params: 5, frame: 14
return !env0_18(a0, a2) && (a3 || a0 <= a1 - 1);
}
function _fun103440({style, onLoad, onEnd, onToggleFullscreen, orientation, contentInsets, handleToggleCaptions, handleOpenTranscript, isFullscreen, externallyPaused, captionsEnabled, sourceQuestContent, hasCaptionAsset, hasTranscriptAsset}) { // fn#103440, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13795:3378, offset: 0x02268ae0, size: 5093 bytes, params: 2, frame: 72
var getSafeAreaInsetOrPadding_103436Binding;
var object2;
const PressableOpacity = (PressablesModule).PressableOpacity;
var items7;
const orientation2 = orientation;
const externallyPaused2 = externallyPaused;
captionsEnabled = !(captionsEnabled === undefined) && captionsEnabled;
hasCaptionAsset = hasCaptionAsset === undefined || hasCaptionAsset;
hasTranscriptAsset = hasTranscriptAsset === undefined || hasTranscriptAsset;
let env0_21 = undefined;
const styles = useStyles();
let binding = externallyPaused2;
const value6 = binding.useRef(null);
const {quest,
videoSessionId} = (VideoQuestModalContextModule).useVideoQuestModalContext();
const value8 = (QuestHooksModule).useQuestTaskDetails(quest);
const userStatus = quest.userStatus;
const value9 = userStatus?.completedAt != null;
binding = externallyPaused2;
const value10 = binding.useMemo(_fun103441, [quest]);
const value11 = binding.useMemo(_fun103442, [quest]);
let r18 = value11?.url != null ? (require(9495) /* metro dependency 9495: AssetUtils */).QuestAssetType.VIDEO_PLAYER_VIDEO_HLS : (require(9495) /* metro dependency 9495: AssetUtils */).QuestAssetType.VIDEO_PLAYER_VIDEO;
binding = externallyPaused2;
let useState = binding.useState;
let targetSeconds = value8.targetSeconds;
const value12 = Reflect.apply(useState, binding, [targetSeconds]);
const binding2 = orientation2;
const value13 = binding2(value12, 2);
const property = value13[0];
const env0_12 = value13[1];
targetSeconds = value8.targetSeconds;
const videoQuestUIStoreBinding = VideoQuestUIStore;
const value15 = videoQuestUIStoreBinding(function(a0) {
return a0.setVideoProgress;
});
const value16 = videoQuestUIStoreBinding(_fun103444, (Module03769Module).shallow);
useState = binding.useState;
const LOADING = env0_21.LOADING;
const value17 = binding2(Reflect.apply(useState, binding, [LOADING]), 2);
const property2 = value17[0];
const property22 = property2;
const env0_17 = value17[1];
const env0_18 = binding.useRef(false);
useState = binding.useState;
const value18 = binding2(Reflect.apply(useState, binding, [false]), 2);
const property3 = value18[0];
const env0_20 = value18[1];
env0_21 = binding.useRef(value8.progressSeconds);
const env0_22 = binding.useRef(null);
const env0_23 = binding.useRef(0);
const r33 = property3 && property2 === env0_21.ENDED && env0_18(value16.timestampSec, value16.duration);
const env0_24 = r33;
const value21 = (ReanimatedRexportModule).useSharedValue(false);
let closure = shouldShowControls_103445;
closure.__closure = {hasLoaded: property3, showControls: value21, playerState: property2, PlayerState: env0_21,
isVideoEnded: r33, externallyPaused: externallyPaused};
closure.__workletHash = 9198261161185;
closure.__initData = env0_22;
let useAnimatedStyle = ReanimatedRexportModule.useAnimatedStyle;
const W_1034462 = W_103446;
object = {shouldShowControls: closure};
object.withSpring = (require(4577) /* metro dependency 4577: spring */).withSpring;
const SUBTLE_SPRING = (SpringPresetsModule).SUBTLE_SPRING;
object.SUBTLE_SPRING = SUBTLE_SPRING;
W_1034462.__closure = object;
W_1034462.__workletHash = 6174625876255;
W_1034462.__initData = env0_23;
const value22 = Reflect.apply(useAnimatedStyle, ReanimatedRexportModule, [W_1034462]);
const value23 = closure();
const value24 = ReanimatedRexportModule.useSharedValue(0);
useAnimatedStyle = ReanimatedRexportModule.useAnimatedStyle;
closure = Z_103447;
closure.__closure = {withTiming: (require(4504) /* metro dependency 4504: timing */).withTiming, progress: value24,
timingFast: (require(4507) /* metro dependency 4507: timingPresets */).timingFast};
closure.__workletHash = 4647711667921;
closure.__initData = env0_24;
const value25 = Reflect.apply(useAnimatedStyle, ReanimatedRexportModule, [closure]);
binding = externallyPaused2;
const env0_28 = binding.useRef(-1);
let useCallback = binding.useCallback;
const value26 = Reflect.apply(useCallback, binding, [function(a0) {
var env0_0 = a0;
return _fun103449;
}, [value21]]);
const defaultImport = UseVideoQuestPlayerAnalytics;
let id = quest.id;
const {handleBufferAnalytics, handleEndAnalytics, handleErrorAnalytics, handleLoadAnalytics,
handleLoadStartAnalytics, handlePausePlaybackAnalytics, handleProgressAnalytics, handleReadyForDisplayAnalytics,
handleResumePlaybackAnalytics, handleSeekAnalytics} = defaultImport({duration: property,
isQuestCompleted: value9, playerState: property2, questId: id, videoSessionId: videoSessionId,
videoAssetId: r18, sourceQuestContent: sourceQuestContent});
const value28 = binding.useRef(null);
id = quest.id;
const gameTitle = quest.config.messages.gameTitle;
const r57 = value11?.url ?? value10?.url;
const defaultWatchVideoTask = (QuestTaskUtilsModule).getDefaultWatchVideoTask(quest.config);
const videoTitle = defaultWatchVideoTask == null ? undefined : defaultWatchVideoTask.messages.videoTitle;
const r10 = value11?.url != null ? 'hls' : 'mp4';
const value32 = (AndroidRNVHttpEngineExperimentModule).useRnvHttpEngine();
binding = externallyPaused2;
binding.useEffect(_fun103451, [id, gameTitle, targetSeconds, r57, videoTitle, r10, value32]);
const [property4, env0_45] = orientation2(binding.useState(false), 2);
const value35 = binding.useCallback(_fun103453, [handleReadyForDisplayAnalytics]);
const value36 = binding.useCallback(_fun103454, [value16.maxTimestampSec]);
const value37 = binding.useCallback(_fun103455, [value9, value16.timestampSec, handleLoadAnalytics, onLoad,
value36]);
const value38 = binding.useCallback(_fun103456, [property2, handlePausePlaybackAnalytics,
handleResumePlaybackAnalytics, r33, value36]);
const value39 = binding.useCallback(_fun103457, [value38]);
binding.useEffect(_fun103460, [binding.useCallback(_fun103458, [property2, handlePausePlaybackAnalytics]),
binding.useCallback(_fun103459, [property2, handleResumePlaybackAnalytics])]);
const value42 = binding.useCallback(function() {
if (onToggleFullscreen != null) {
onToggleFullscreen({orientation: orientation});
}
}, [onToggleFullscreen, orientation]);
const value43 = binding.useCallback(_fun103463, [value21, value38]);
const value44 = binding.useCallback(_fun103464, [property, value24, handleSeekAnalytics, quest.id, value15]);
let ERRORED = env0_21.ERRORED;
const r32 = property2 === ERRORED || !__103439(value16.timestampSec, value16.maxTimestampSec, value16.duration,
value9);
binding = externallyPaused2;
const value47 = binding.useCallback(_fun103465, [value36, property, value24, r32]);
useCallback = binding.useCallback;
const value48 = value26(Reflect.apply(useCallback, binding, [_fun103466, [value36, property, value24, property2]]));
const value49 = value26(value47);
const value50 = binding.useRef(0);
const value51 = binding.useRef(0);
useCallback = binding.useCallback;
object = [value24, quest, value50, value51];
object[4] = value8.taskType;
object[5] = value15;
object[6] = handleProgressAnalytics;
const value52 = Reflect.apply(useCallback, binding, [_fun103467, object]);
const value53 = binding.useCallback(_fun103468, [property, quest, handleEndAnalytics, onEnd]);
const value54 = binding.useCallback(_fun103469, [handleLoadStartAnalytics]);
const value55 = binding.useCallback(_fun103470, [handleErrorAnalytics]);
const value56 = binding.useCallback(_fun103471, []);
const value57 = binding.useCallback(_fun103472, []);
const state = (require(566) /* metro dependency 566: flux */).useStateFromStores([AppStateStore], function() {
return AppStateStore.getState();
});
const ACTIVE = AppStates.ACTIVE;
const value58 = state === ACTIVE;
const value59 = binding.useMemo(_fun103474, [value11, value10]);
binding.useLayoutEffect(_fun103475, []);
let r31 = value58 ? property2 === env0_21.PAUSED : !value58;
r31 = !r31 ? property2 === env0_21.LOADING : r31;
r31 = !r31 ? externallyPaused : r31;
const {isBuffering, toggleBuffering} = useBufferingState_103477({handleBufferAnalytics: handleBufferAnalytics,
videoQoETracker: value28});
binding = externallyPaused2;
const value64 = binding.useCallback(_fun103479, [toggleBuffering, property2]);
const value65 = binding.useCallback(_fun103480, [toggleBuffering]);
const value66 = binding.useCallback(_fun103481, [toggleBuffering]);
const value67 = (UseSafeAreaInsetsNative)();
if (value59 == null) {
return null;
}
let r23 = isFullscreen && value67 != null;
if (r23) {
object = {};
getSafeAreaInsetOrPadding_103436Binding = getSafeAreaInsetOrPadding_103436;
object.paddingRight = getSafeAreaInsetOrPadding_103436Binding(value67, 'right');
object.paddingLeft = getSafeAreaInsetOrPadding_103436Binding(value67, 'left');
r23 = object;
}
const items2 = [styles.container, style];
const pressableBindingProps = {style: [styles.videoContainer], onPress: value43, accessible: !value23};
const intl = (require(1244) /* metro dependency 1244: indexNative */).intl;
let string = intl.string;
const t = (require(1244) /* metro dependency 1244: indexNative */).t;
pressableBindingProps.accessibilityLabel = Reflect.apply(string, intl, [r31 ? t.R3aFPe : t.fTMEUi]);
ERRORED = env0_21.ERRORED;
const items3 = [
property2 !== ERRORED && ((Component) => <Component mixWithOthers="inherit" httpEngine={value32} ref={value6} accessible={false} importantForAccessibility="no-hide-descendants" accessibilityRole="none" style={styles.video} paused={r31} source={value59} onBuffer={value64} onPlaybackStalled={value65} onPlaybackResume={value66} onLoad={value37} onSeek={value44} onProgress={value52} onLoadStart={value54} onEnd={value53} onError={value55} onReadyForDisplay={value35} onVideoTracks={value56} onLayout={value57} resizeMode="contain" />)(property22),
];
const VideoQuestCaptions = (VideoQuestCaptionsModule).VideoQuestCaptions;
items3[1] = (
<VideoQuestCaptions
quest={quest}
currentTime={value16.timestampSec}
visible={captionsEnabled}
style={{
top: contentInsets?.top ?? 0,
bottom: contentInsets?.bottom ?? 0,
left: contentInsets?.left ?? 0,
right: contentInsets?.right ?? 0,
}}
/>
);
items3[2] = isBuffering && <ActivityIndicator animating style={[styles.bufferingSpinner,
isFullscreen || orientation === 'landscape' ? styles.bufferingSpinnerCentered : {top: contentInsets?.top ?? 0,
left: contentInsets?.left ?? 0}]} color={(importDefault(697) /* metro dependency 697: native */).unsafe_rawColors.WHITE} />;
items3[3] = !property4 && <View style={styles.loadingContainer}><ActivityIndicator animating /></View>;
const View2 = (importDefault(4017) /* metro dependency 4017: ReanimatedRexport */).View;
const items5 = [styles.controls, value22];
const value74 = orientation === 'landscape';
if (value74) {
var viewProps = {style: [styles.controlsTopBottom, styles.controlsTop, r23]};
items7 = [
hasCaptionAsset && <PressableOpacity accessibilityRole="button" accessibilityLabel={intl.string((require(1244) /* metro dependency 1244: indexNative */).t.bDSZO1)} onPress={handleToggleCaptions} style={styles.controlButton}>{((ClosedCaptionsOutlineIcon) => <ClosedCaptionsOutlineIcon color={captionsEnabled ? styles.icon.color : styles.iconDisabled.color} />)((require(13524) /* metro dependency 13524: ClosedCaptionsOutlineIcon */).ClosedCaptionsOutlineIcon)}</PressableOpacity>,
];
items7[1] = hasTranscriptAsset && <PressableOpacity accessibilityRole="button" accessibilityLabel={intl.string((require(1244) /* metro dependency 1244: indexNative */).t.KCzjTi)} onPress={handleOpenTranscript} style={styles.controlButton}>{((TranscriptOutlineIcon) => <TranscriptOutlineIcon color={styles.iconDisabled.color} />)((require(13526) /* metro dependency 13526: TranscriptOutlineIcon */).TranscriptOutlineIcon)}</PressableOpacity>;
r18 = (
<View {...viewProps}>
{items7}
</View>
);
} else {
r18 = value74;
}
const items8 = [r18];
const VideoQuestPlayerControlButton = (VideoQuestPlayerControlButtonModule).VideoQuestPlayerControlButton;
ERRORED = env0_21.ERRORED;
string = intl.string;
const r9s3Uv = (require(1244) /* metro dependency 1244: indexNative */).t.r9s3Uv;
const SkipBackwardIcon = (SkipBackwardIconModule).SkipBackwardIcon;
const items9 = [
<VideoQuestPlayerControlButton
disabled={property2 === ERRORED}
accessibilityRole="button"
accessibilityLabel={Reflect.apply(string, intl, [r9s3Uv])}
onPress={value48}
>
<SkipBackwardIcon
color={styles.icon.color}
width={16}
height={16}
/>
</VideoQuestPlayerControlButton>,
];
string = intl.string;
const r36 = r33 || property2 === env0_21.ERRORED ? (require(1244) /* metro dependency 1244: indexNative */).t.K0e7M9 : r31 ? t.R3aFPe : t.fTMEUi;
if (r33 || property2 === env0_21.ERRORED) {
const RetryIcon = (require(10234) /* metro dependency 10234: RetryIcon */).RetryIcon;
r31 = <RetryIcon size="lg" />;
} else {
r31 = ((Component) => <Component size="lg" />)(r31 ? (require(9376) /* metro dependency 9376: PlayIcon */).PlayIcon : (require(9554) /* metro dependency 9554: PauseIcon */).PauseIcon);
}
items9[1] = (
<VideoQuestPlayerControlButton
accessibilityRole="button"
accessibilityLabel={Reflect.apply(string, intl, [r36])}
onPress={value39}
>
{r31}
</VideoQuestPlayerControlButton>
);
string = intl.string;
const zWDcNP = (require(1244) /* metro dependency 1244: indexNative */).t.zWDcNP;
const SkipForwardIcon = (SkipForwardIconModule).SkipForwardIcon;
items9[2] = (
<VideoQuestPlayerControlButton
disabled={r32}
accessibilityRole="button"
accessibilityLabel={Reflect.apply(string, intl, [zWDcNP])}
onPress={value49}
>
<SkipForwardIcon
color={styles.icon.color}
width={16}
height={16}
/>
</VideoQuestPlayerControlButton>
);
items8[1] = (
<View style={styles.controlsMiddle}>
{items9}
</View>
);
items8[2] = value74 && <View style={[styles.controlsTopBottom, styles.controlsBottom,
r23]}><PressableOpacity accessibilityRole="button" accessibilityLabel={intl.string((require(1244) /* metro dependency 1244: indexNative */).t.vKZT5t)} onPress={value42} style={styles.controlButton}>{((FullscreenEnterIcon) => <FullscreenEnterIcon />)((require(13531) /* metro dependency 13531: FullscreenEnterIcon */).FullscreenEnterIcon)}</PressableOpacity></View>;
items3[4] = (
<View2 style={items5} accessible={false}>
{items8}
</View2>
);
items3[5] = value74 && <View style={styles.progressContainer}>{((View) => <View style={[styles.progress,
value25]} />)((importDefault(4017) /* metro dependency 4017: ReanimatedRexport */).View)}</View>;
return (
<View style={items2} accessible={false}>
<Pressable {...pressableBindingProps}>
{items3}
</Pressable>
</View>
);
function _fun103441() { // fn#103441, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13795:3861, offset: 0x02269ec5, size: 75 bytes, params: 1, frame: 18
let value = environment.__proto__;
value = require(9495) /* metro dependency 9495: AssetUtils */;
const getQuestAsset = value.getQuestAsset;
const questBinding = quest;
const QuestAssetType = (require(9495) /* metro dependency 9495: AssetUtils */).QuestAssetType;
const VIDEO_PLAYER_VIDEO = QuestAssetType.VIDEO_PLAYER_VIDEO;
return Reflect.apply(getQuestAsset, value, [questBinding, VIDEO_PLAYER_VIDEO, undefined, true]);
}
function _fun103442() { // fn#103442, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13795:3966, offset: 0x02269f10, size: 75 bytes, params: 1, frame: 18
let value = environment.__proto__;
value = require(9495) /* metro dependency 9495: AssetUtils */;
const getQuestAsset = value.getQuestAsset;
const questBinding = quest;
const QuestAssetType = (require(9495) /* metro dependency 9495: AssetUtils */).QuestAssetType;
const VIDEO_PLAYER_VIDEO_HLS = QuestAssetType.VIDEO_PLAYER_VIDEO_HLS;
return Reflect.apply(getQuestAsset, value, [questBinding, VIDEO_PLAYER_VIDEO_HLS, undefined, true]);
}
function _fun103444({videoProgress}) { // fn#103444, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13795:4302, offset: 0x02269f5b, size: 76 bytes, params: 2, frame: 4
var r0;
var object;
var progressSeconds;
const property = videoProgress[quest.id];
if (property != null) {
r0 = property;
} else {
object = {};
progressSeconds = ReactNativeModule.ActivityIndicator.progressSeconds;
object.timestampSec = progressSeconds;
object.duration = ConstantsModule.AppStates;
progressSeconds = ReactNativeModule.ActivityIndicator.progressSeconds;
object.maxTimestampSec = progressSeconds;
r0 = object;
}
return r0;
}
function shouldShowControls_103445() { // fn#103445, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13795:4727, offset: 0x02269fa7, size: 114 bytes, params: 1, frame: 12
var r1;
var r0;
const binding = env0_19;
if (binding) {
r1 = env0_25.get() || env0_16 === env1_21.PAUSED;
r1 = !r1 ? env0_16 === env1_21.ENDED : r1;
r1 = !r1 ? env0_16 === env1_21.ERRORED : r1;
r1 = !r1 ? env0_24 : r1;
r1 = !r1 ? externallyPaused : r1;
r0 = r1;
} else {
r0 = binding;
}
return r0;
}
function W_103446() { // fn#103446, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13795:5000, offset: 0x0226a019, size: 105 bytes, params: 1, frame: 18
const shouldShowControls_1034452 = shouldShowControls_103445();
const withSpring = SpringModule.withSpring;
const r3 = shouldShowControls_1034452 ? 1 : 0;
const SUBTLE_SPRING = (SpringPresetsModule).SUBTLE_SPRING;
return {opacity: Reflect.apply(withSpring, SpringModule, [r3, SUBTLE_SPRING]),
pointerEvents: shouldShowControls_1034452 ? 'auto' : 'none'};
}
function Z_103447() { // fn#103447, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13795:5342, offset: 0x0226a082, size: 100 bytes, params: 1, frame: 18
const object = {};
let value = environment.__proto__;
value = require(4504) /* metro dependency 4504: timing */;
object.width = value.withTiming(100 * env0_27.get() + '%',
(require(4507) /* metro dependency 4507: timingPresets */).timingFast, 'animate-always');
return object;
}
function _fun103448(a0) { // fn#103448, offset: 0x0226a0e6, size: 18 bytes, params: 2, frame: 2
const env0_0 = a0;
return _fun103449;
function _fun103449(a0) { // fn#103449, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13795:5604, offset: 0x0226a0f8, size: 135 bytes, params: 2, frame: 18
var binding3;
var items2;
const value = copyRestArgs(0, undefined);
global.clearTimeout(env1_28.current);
const binding = env1_25;
binding.set(true);
env1_28.current = global.setTimeout(_fun103450, 2000);
if (env0_0 != null) {
binding3 = env0_0;
items2 = [];
arraySpread(items2, value, 0, binding);
return apply(binding3, items2, undefined, binding);
}
function _fun103450() { // fn#103450, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13795:5675, offset: 0x0226a17f, size: 23 bytes, params: 1, frame: 11
env2_25.set(false);
}
}
}
function _fun103451() { // fn#103451, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13795:6461, offset: 0x0226a196, size: 404 bytes, params: 1, frame: 18
var r3;
var constants;
var binding;
var MobileMuxWrapper;
var value6;
var mobileMuxWrapper;
let current = ReactNativeModule.View.current;
if (current != null) {
if (env0_41 == null) {
return undefined;
}
if (env0_41.length === 0) {
return undefined;
}
var value3 = undefined;
var moduleValue = require(13606) /* metro dependency 13606: videoQoe */;
var getVideoQoEMetricsConfig = moduleValue.getVideoQoEMetricsConfig;
var object = {};
var VIDEO_MODAL_MOBILE = QuestsExperimentLocations.VIDEO_MODAL_MOBILE;
object.location = VIDEO_MODAL_MOBILE;
if (Reflect.apply(getVideoQoEMetricsConfig, moduleValue, [object]).externalAnalyticsEnabled) {
constants = (require(1582) /* metro dependency 1582: ClientInfoUtils */).getConstants();
r3 = env0_44 != null ? (require(9564) /* metro dependency 9564: AndroidRNVHttpEngineExperiment */).getMuxExperimentDimension() ?? value3 : value3;
object = {};
current = ReactNativeModule.View.current;
object.videoRef = current;
object.feature = 'quests';
object.appVersion = constants.Version;
object.releaseChannel = constants.ReleaseChannel;
object.contentMetadata = {contentId: env0_41, videoStreamType: env0_43, contentType: 'quests',
durationMs: 1000 * targetSeconds, title: videoTitle, questId: id, gameName: gameTitle,
experimentName: r3};
binding = env0_38;
MobileMuxWrapper = (require(13606) /* metro dependency 13606: videoQoe */).MobileMuxWrapper;
value6 = Object.create(MobileMuxWrapper.prototype, {constructor: {value: MobileMuxWrapper}});
mobileMuxWrapper = new MobileMuxWrapper(object);
binding.current = mobileMuxWrapper instanceof Object ? mobileMuxWrapper : value6;
current = env0_38.current;
current.initialize();
return _fun103452;
}
}
function _fun103452() { // fn#103452, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13795:7015, offset: 0x0226a32a, size: 80 bytes, params: 1, frame: 13
let current = env1_38.current;
if (current != null) {
current = env1_38.current;
current.onProgress(env1_21.current);
current = env1_38.current;
current.destroy();
env1_38.current = null;
}
}
}
function _fun103453() { // fn#103453, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13795:7208, offset: 0x0226a37a, size: 51 bytes, params: 1, frame: 12
handleReadyForDisplayAnalytics();
const current = env0_38.current;
if (current != null) {
current.onReadyForDisplay();
}
env0_45(true);
}
function _fun103454(a0) { // fn#103454, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13795:7301, offset: 0x0226a3ad, size: 222 bytes, params: 2, frame: 16
var Math;
var max;
var Math2;
var value3;
var value4;
var moduleValue;
var binding;
let current = ReactNativeModule.View.current;
if (current != null) {
Math = global.Math;
max = Math.max;
Math2 = global.Math;
value3 = Reflect.apply(max, Math, [0, Math2.min(a0, env0_15.maxTimestampSec)]);
value4 = environment.__proto__;
moduleValue = require(477) /* metro dependency 477: PlatformUtils */;
if (moduleValue.isAndroid()) {
binding = env0_23;
current = binding.current;
binding.current = (current + 1) % 100;
current = ReactNativeModule.View.current;
current.seek(value3 + 0.0001 * env0_23.current);
} else {
ReactNativeModule.View.current.seek(value3);
}
env0_22.current = value3;
}
}
function _fun103455(a0) { // fn#103455, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13795:7535, offset: 0x0226a48b, size: 305 bytes, params: 2, frame: 20
var timestampSec;
var binding;
var value9;
const duration = a0.duration;
const videoTracks = a0.videoTracks;
const trackId = a0.trackId;
const naturalSize = a0.naturalSize;
env0_12(duration);
env0_20(true);
handleLoadAnalytics();
let current = env0_38.current;
if (current != null) {
current.onLoad(duration);
}
if (naturalSize != null) {
current = env0_38.current;
if (current != null) {
current.updateVideoSourceDimensions(naturalSize.width, naturalSize.height);
}
}
let r3 = videoTracks != null && videoTracks.length > 0 && trackId != null && trackId.length > 0;
if (r3) {
current = env0_38.current;
if (current != null) {
current.onVideoTrackChange(trackId, videoTracks);
}
}
if (ReactNativeModule.View.current != null) {
timestampSec = env0_15.timestampSec;
binding = env0_8;
r3 = !binding && timestampSec > 5;
r3 = r3 && timestampSec < duration - 3;
if (r3) {
env0_46(timestampSec - 1);
}
binding = env0_17;
value9 = environment.__proto__;
binding(env1_21.PLAYING);
if (onLoad != null) {
onLoad(a0);
}
}
}
function _fun103456() { // fn#103456, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13795:7979, offset: 0x0226a5bc, size: 296 bytes, params: 1, frame: 14
var current;
const value = a0;
let shouldRestartVideo = (value !== undefined ? value : {}).shouldRestartVideo;
shouldRestartVideo = shouldRestartVideo === undefined || shouldRestartVideo;
const binding = env0_16;
const ERRORED = env1_21.ERRORED;
if (binding === ERRORED) {
env0_46(0);
env0_17(env1_21.PLAYING);
handleResumePlaybackAnalytics();
current = env0_38.current;
if (current != null) {
current.onPlay();
}
} else if (env0_24) {
if (shouldRestartVideo) {
env0_46(0);
env0_17(env1_21.PLAYING);
handleResumePlaybackAnalytics();
current = env0_38.current;
if (current != null) {
current.onPlay();
}
} else if (env0_16 === env1_21.PAUSED) {
env0_17(env1_21.PLAYING);
handleResumePlaybackAnalytics();
current = env0_38.current;
if (current != null) {
current.onPlay();
}
} else if (env0_16 === env1_21.LOADING) {
env0_17(env1_21.PLAYING);
handleResumePlaybackAnalytics();
current = env0_38.current;
if (current != null) {
current.onPlay();
}
} else if (env0_16 === env1_21.PLAYING) {
env0_17(env1_21.PAUSED);
handlePausePlaybackAnalytics();
current = env0_38.current;
if (current != null) {
current.onPause();
}
}
} else if (env0_16 === env1_21.PAUSED) {
env0_17(env1_21.PLAYING);
handleResumePlaybackAnalytics();
current = env0_38.current;
if (current != null) {
current.onPlay();
}
} else if (env0_16 === env1_21.LOADING) {
env0_17(env1_21.PLAYING);
handleResumePlaybackAnalytics();
current = env0_38.current;
if (current != null) {
current.onPlay();
}
} else if (env0_16 === env1_21.PLAYING) {
env0_17(env1_21.PAUSED);
handlePausePlaybackAnalytics();
current = env0_38.current;
if (current != null) {
current.onPause();
}
}
}
function _fun103457() { // fn#103457, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13795:8319, offset: 0x0226a6e4, size: 15 bytes, params: 1, frame: 9
return env0_47();
}
function _fun103458() { // fn#103458, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13795:8353, offset: 0x0226a6f3, size: 106 bytes, params: 1, frame: 12
var current;
env0_18.current = false;
const binding = env0_16;
const PLAYING = env1_21.PLAYING;
if (binding === PLAYING) {
env0_18.current = true;
env0_17(env1_21.PAUSED);
handlePausePlaybackAnalytics();
current = env0_38.current;
if (current != null) {
current.onPause();
}
}
}
function _fun103459() { // fn#103459, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13795:8493, offset: 0x0226a75d, size: 106 bytes, params: 1, frame: 12
var binding;
var value2;
let current = env0_18.current;
if (current) {
env0_18.current = false;
binding = env0_16;
value2 = environment.__proto__;
if (binding !== env1_21.ERRORED) {
env0_17(env1_21.PLAYING);
handleResumePlaybackAnalytics();
current = env0_38.current;
if (current != null) {
current.onPlay();
}
}
}
}
function _fun103460() { // fn#103460, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13795:8626, offset: 0x0226a7c7, size: 108 bytes, params: 1, frame: 19
const ComponentDispatch = (ComponentDispatchUtilsModule).ComponentDispatch;
let subscribe = ComponentDispatch.subscribe;
const QUEST_GAME_LINK_OPENED = ComponentActions.QUEST_GAME_LINK_OPENED;
Reflect.apply(subscribe, ComponentDispatch, [QUEST_GAME_LINK_OPENED, env0_48]);
subscribe = ComponentDispatch.subscribe;
const QUEST_APP_STORE_OVERLAY_FINISHED = ComponentActions.QUEST_APP_STORE_OVERLAY_FINISHED;
Reflect.apply(subscribe, ComponentDispatch, [QUEST_APP_STORE_OVERLAY_FINISHED, env0_49]);
return _fun103461;
function _fun103461() { // fn#103461, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13795:8773, offset: 0x0226a833, size: 99 bytes, params: 1, frame: 19
const ComponentDispatch = (ComponentDispatchUtilsModule).ComponentDispatch;
let unsubscribe = ComponentDispatch.unsubscribe;
const QUEST_GAME_LINK_OPENED = ComponentActions.QUEST_GAME_LINK_OPENED;
Reflect.apply(unsubscribe, ComponentDispatch, [QUEST_GAME_LINK_OPENED, env1_48]);
unsubscribe = ComponentDispatch.unsubscribe;
const QUEST_APP_STORE_OVERLAY_FINISHED = ComponentActions.QUEST_APP_STORE_OVERLAY_FINISHED;
Reflect.apply(unsubscribe, ComponentDispatch, [QUEST_APP_STORE_OVERLAY_FINISHED, env1_49]);
}
}
function _fun103463() { // fn#103463, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13795:9018, offset: 0x0226a896, size: 57 bytes, params: 1, frame: 12
const binding = env0_25;
const get = binding.get;
if (Reflect.apply(get, binding, [])) {
env0_25.set(false);
}
env0_47({shouldRestartVideo: false});
}
function _fun103464(a0) { // fn#103464, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13795:9101, offset: 0x0226a8cf, size: 187 bytes, params: 2, frame: 18
var binding;
var currentTime;
var set;
var id;
let current = ReactNativeModule.View.current;
if (current != null) {
binding = env0_21;
currentTime = a0.currentTime;
binding.current = currentTime;
env0_22.current = null;
if (ConstantsModule.AppStates > 0) {
binding = env0_27;
set = binding.set;
currentTime = a0.currentTime;
Reflect.apply(set, binding, [currentTime / ConstantsModule.AppStates]);
binding = JsxRuntimeModule.jsxs;
id = quest.id;
currentTime = a0.currentTime;
binding(id, currentTime, ConstantsModule.AppStates);
}
handleSeekAnalytics();
current = env0_38.current;
if (current != null) {
current.updatePlayheadTime(a0.currentTime);
}
current = env0_38.current;
if (current != null) {
current.onSeek();
}
}
}
function _fun103465() { // fn#103465, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13795:9443, offset: 0x0226a98a, size: 68 bytes, params: 1, frame: 12
if (!env0_50) {
env0_46((env0_22.current ?? env0_27.get() * ConstantsModule.AppStates) + 10);
}
}
function _fun103466() { // fn#103466, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13795:9551, offset: 0x0226a9ce, size: 99 bytes, params: 1, frame: 13
env0_46((env0_22.current ?? env0_27.get() * ConstantsModule.AppStates) - 10);
const binding = env0_16;
const ENDED = env1_21.ENDED;
if (binding === ENDED) {
env0_17(env1_21.PLAYING);
}
}
function _fun103467(a0) { // fn#103467, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13795:9712, offset: 0x0226aa31, size: 381 bytes, params: 2, frame: 18
var value2;
var moduleValue;
var sendVideoProgress;
var questBinding;
var handleProgressAnalyticsBinding;
var value5;
var moduleValue2;
var updateOptimisticProgress;
var id;
var taskType;
let seekableDuration = a0.seekableDuration;
const value = 0;
const r5 = value === seekableDuration ? value : a0.currentTime / a0.seekableDuration;
let binding = env0_21;
binding.current = a0.currentTime;
let currentTime = a0.currentTime;
let current = env0_51.current;
if (currentTime >= current) {
value2 = environment.__proto__;
moduleValue = require(9522) /* metro dependency 9522: VideoQuestUtils */;
sendVideoProgress = moduleValue.sendVideoProgress;
questBinding = quest;
currentTime = a0.currentTime;
Reflect.apply(sendVideoProgress, moduleValue, [questBinding, currentTime]);
handleProgressAnalyticsBinding = handleProgressAnalytics;
seekableDuration = a0.seekableDuration;
currentTime = a0.currentTime;
handleProgressAnalyticsBinding(r5, seekableDuration, currentTime);
binding = env0_51;
currentTime = a0.currentTime;
binding.current = currentTime + 6 + 2 * global.Math.random();
}
currentTime = a0.currentTime;
if (currentTime >= env0_52.current) {
value5 = environment.__proto__;
moduleValue2 = require(9484) /* metro dependency 9484: QuestActionCreators */;
updateOptimisticProgress = moduleValue2.updateOptimisticProgress;
id = quest.id;
taskType = ReactNativeModule.ActivityIndicator.taskType;
currentTime = a0.currentTime;
Reflect.apply(updateOptimisticProgress, moduleValue2, [id, taskType, currentTime]);
binding = env0_52;
currentTime = a0.currentTime;
binding.current = currentTime + 1;
}
(0, JsxRuntimeModule.jsxs)(quest.id, a0.currentTime, a0.seekableDuration);
env0_27.set(r5);
current = env0_38.current;
if (current != null) {
current.onProgress(a0.currentTime);
}
}
function _fun103468() { // fn#103468, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13795:10242, offset: 0x0226abae, size: 146 bytes, params: 1, frame: 16
VideoQuestUtilsModule.sendVideoProgress(quest, ConstantsModule.AppStates);
handleEndAnalytics();
const binding = env0_17;
const ENDED = env1_21.ENDED;
binding(ENDED);
let current = env0_38.current;
if (current != null) {
current.onProgress(ConstantsModule.AppStates);
}
current = env0_38.current;
if (current != null) {
current.onEnd();
}
if (onEnd != null) {
onEnd();
}
}
function _fun103469() { // fn#103469, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13795:10424, offset: 0x0226ac40, size: 85 bytes, params: 1, frame: 13
const binding = env0_17;
const LOADING = env1_21.LOADING;
binding(LOADING);
handleLoadStartAnalytics();
let current = env0_38.current;
if (current != null) {
current.onLoadStart();
}
current = env0_38.current;
if (current != null) {
current.onPlay();
}
}
function _fun103470(a0) { // fn#103470, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13795:10553, offset: 0x0226ac95, size: 67 bytes, params: 2, frame: 13
const binding = env0_17;
const ERRORED = env1_21.ERRORED;
binding(ERRORED);
handleErrorAnalytics(a0);
const current = env0_38.current;
if (current != null) {
current.onError(a0);
}
}
function _fun103471(a0) { // fn#103471, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13795:10644, offset: 0x0226acd8, size: 122 bytes, params: 2, frame: 14
var current;
let r2 = a0 != null && a0.videoTracks != null && a0.videoTracks.length > 0;
r2 = r2 && a0.selectedVideoTrackId != null && a0.selectedVideoTrackId.length > 0;
if (r2) {
current = env0_38.current;
if (current != null) {
current.onVideoTrackChange(a0.selectedVideoTrackId, a0.videoTracks);
}
}
}
function _fun103472(a0) { // fn#103472, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13795:10878, offset: 0x0226ad52, size: 103 bytes, params: 2, frame: 15
var width;
var height;
var current;
const value = undefined;
let layout = a0 == null || a0.nativeEvent == null ? value : a0.nativeEvent.layout;
if (layout != null) {
layout = a0.nativeEvent.layout;
width = layout.width;
height = layout.height;
if (width > 0) {
if (height > 0) {
current = env0_38.current;
if (current != null) {
current.updateVideoDimensions(width, height);
}
}
}
}
return value;
}
function _fun103474() { // fn#103474, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13795:11149, offset: 0x0226adb9, size: 64 bytes, params: 1, frame: 6
var url;
var r0;
const value2 = null;
if (value2 == env0_9) {
r0 = value2;
} else {
url = value2 == QuestConstantsModule.QuestsExperimentLocations ? undefined : QuestConstantsModule.QuestsExperimentLocations.url;
url = value2 == url ? env0_9.url : url;
r0 = {uri: url};
}
return r0;
}
function _fun103475() { // fn#103475, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13795:11259, offset: 0x0226adf9, size: 67 bytes, params: 1, frame: 12
var environment;
var current;
let value = environment.__proto__;
value = require(477) /* metro dependency 477: PlatformUtils */;
if (value.isAndroid()) {
current = ReactNativeModule.View.current;
return _fun103476;
}
function _fun103476() { // fn#103476, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13795:11311, offset: 0x0226ae3c, size: 115 bytes, params: 1, frame: 13
var r1;
var value;
var value2;
var setNativeProps;
var value3;
var error;
try {
value = environment;
value2 = current == null;
if (value2) {
r1 = value2;
} else {
setNativeProps = current.setNativeProps;
value3 = setNativeProps == null;
r1 = value3;
}
if (!r1) {
current.setNativeProps({paused: true, src: {uri: null}});
}
} catch (error) {
value = environment.__proto__.__proto__;
value = importDefault(1216) /* metro dependency 1216: SentryUtilsNative */;
value.captureException(error);
}
}
}
function useBufferingState_103477({handleBufferAnalytics, videoQoETracker}) { // fn#103477, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13795:11493, offset: 0x0226aeaf, size: 134 bytes, params: 2, frame: 17
var environment;
let value = environment.__proto__;
const binding = env1_4;
const env0_2 = binding.useRef(false);
value = env1_3(binding.useState(false), 2);
const property = value[0];
const env0_3 = value[1];
const useCallback = binding.useCallback;
let object = [handleBufferAnalytics, videoQoETracker];
object = {isBuffering: property, toggleBuffering: Reflect.apply(useCallback, binding, [_fun103478, object])};
return object;
function _fun103478(a0) { // fn#103478, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13795:11641, offset: 0x0226af35, size: 77 bytes, params: 2, frame: 12
env0_3(a0);
let current = env0_2.current;
if (a0 !== current) {
env0_2.current = a0;
handleBufferAnalytics(a0);
current = videoQoETracker.current;
if (current != null) {
current.onBuffer(a0);
}
}
}
}
function _fun103479({isBuffering}) { // fn#103479, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13795:11880, offset: 0x0226af82, size: 109 bytes, params: 2, frame: 13
var binding;
var value2;
var moduleValue;
if (isBuffering) {
binding = env0_16;
value2 = environment.__proto__;
if (binding === env1_21.LOADING) {
toggleBuffering(true);
} else {
moduleValue = require(477) /* metro dependency 477: PlatformUtils */;
if (moduleValue.isIOS()) {
if (!isBuffering) {
toggleBuffering(false);
}
} else {
toggleBuffering(true);
}
}
} else if (!isBuffering) {
toggleBuffering(false);
}
}
function _fun103480() { // fn#103480, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13795:11983, offset: 0x0226afef, size: 54 bytes, params: 1, frame: 11
let value = environment.__proto__;
value = require(477) /* metro dependency 477: PlatformUtils */;
if (value.isIOS()) {
toggleBuffering(true);
}
}
function _fun103481() { // fn#103481, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13795:12039, offset: 0x0226b025, size: 54 bytes, params: 1, frame: 11
let value = environment.__proto__;
value = require(477) /* metro dependency 477: PlatformUtils */;
if (value.isIOS()) {
toggleBuffering(false);
}
}
}
}
global.__d(_fun103435, 13605, [57, 31, 27, 7030, 7095, 6528, 661, 33, 697, 8011, 4501, 674, 13597, 9483, 9495, 3769,
4017, 4577, 4581, 4504, 4507, 13603, 7116, 9564, 13606, 1582, 477, 1239, 9522, 9484, 566, 1216, 1585, 1244,
13614, 5278, 13524, 13526, 13528, 13529, 10234, 9376, 9554, 13530, 13531,
2]) /* metro module 13605, dependencies: [57, 31, 27, 7030, 7095, 6528, 661, 33, 697, 8011, 4501, 674, 13597, 9483, 9495, 3769, 4017, 4577, 4581, 4504, 4507, 13603, 7116, 9564, 13606, 1582, 477, 1239, 9522, 9484, 566, 1216, 1585, 1244, 13614, 5278, 13524, 13526, 13528, 13529, 10234, 9376, 9554, 13530, 13531, 2] */;