551 lines
24 KiB
TypeScript
551 lines
24 KiB
TypeScript
// Metro module 15926 (f15927).
|
|
import * as Module19 from "react";
|
|
import { useContext, useLayoutEffect, useState, useCallback, useMemo } from "react";
|
|
import { StyleSheet, Platform } from "react-native";
|
|
import ChannelRTCStore from "../../../calls/ChannelRTCStore";
|
|
import ExperimentStore from "../../../experiments/ExperimentStore";
|
|
import StageMusicStore from "../../../stage_channels/StageMusicStore";
|
|
import AuthenticationStore from "../../../../stores/AuthenticationStore";
|
|
import ChannelStore from "../../../../stores/ChannelStore";
|
|
import MediaEngineStore from "../../../../stores/MediaEngineStore";
|
|
import RelationshipStore from "../../../../stores/RelationshipStore";
|
|
import SpeakingStore from "../../../../stores/SpeakingStore";
|
|
import UserStore from "../../../../stores/UserStore";
|
|
import { DRAWER_SPRING_PHYSICS_GESTURE_ACTIVE, MODE_CHANGE_PHYSICS, UI_SHOW_HIDE_PHYSICS, VoicePanelModes } from "../../VoicePanelConstants";
|
|
import { EDGE_GUTTER } from "../card/VoicePanelCardConstants";
|
|
import { VoicePanelControlsModes } from "../controls/VoicePanelControlsConstants";
|
|
import { ParticipantTypes } from "../../../calls/CallConstants";
|
|
import { ThemeTypes } from "../../../../_bundle/Module505";
|
|
import { createStyles } from "../../../../design/components/Styles/native/createStyles";
|
|
import Module712 from "../../../../_bundle/Module712";
|
|
import * as _ReanimatedRexport from "../../../reanimated/ReanimatedRexport";
|
|
import { useDerivedValue, useAnimatedProps, useAnimatedStyle, useSharedValue, useAnimatedReaction } from "../../../reanimated/ReanimatedRexport";
|
|
import * as _spring from "../../../../design/animation/reanimated/spring/spring";
|
|
import ReanimatedNativeView from "../../../core/native/ReanimatedNativeView";
|
|
import VisualEffectViewAnimated from "../../../visual_effect_view/native/VisualEffectViewAnimated";
|
|
import NativeView from "../../../core/native/NativeView";
|
|
import VoicePanelStateContext from "../VoicePanelStateContext";
|
|
import useMyCurrentStageChannelRole from "../../../stage_channels/useMyCurrentStageChannelRole";
|
|
import { useStateFromStores } from "../../../../_bundle/Module589";
|
|
import { useShowStageMusicMuteButton } from "../../../stage_channels/StageMusicManager";
|
|
import VoicePanelIconButton from "../shared/VoicePanelIconButton";
|
|
import { intl, t } from "../../../../intl/index.native";
|
|
import Module10708 from "../../../../_bundle/Module10708";
|
|
import Module9075 from "../../../../_bundle/Module9075";
|
|
import { updateStageMusicMuted } from "../../../stage_channels/StageMusicActionCreators";
|
|
import { useIsScreenReaderEnabled } from "../../../a11y/native/useIsScreenReaderEnabled.native";
|
|
import useIsConnectedToVoiceChannel from "../hooks/useIsConnectedToVoiceChannel";
|
|
import MobileGoLiveEntrypointExperiment, { MobileGoLiveEntrypointTreatment } from "../../../go_live/MobileGoLiveEntrypointExperiment";
|
|
import { computeChannelName } from "../../../channel/useChannelName";
|
|
import { useToken } from "../../../../design/tokens/native/useToken";
|
|
import calculateVoicePanelHeaderSpecs from "./calculateVoicePanelHeaderSpecs";
|
|
import * as _timing from "../../../../design/animation/reanimated/timing/timing";
|
|
import { useCanInviteMembers } from "../hooks/useCanInviteMembers";
|
|
import { useInviteMembersCallback } from "../hooks/useInviteMembersCallback";
|
|
import useVoicePanelNavArrowPressed from "../hooks/useVoicePanelNavArrowPressed";
|
|
import { useNavigatorBackPressHandler } from "../../../../design/components/Navigator/native/useNavigatorBackPressHandler.native";
|
|
import useStableParticipant, { isStableUserParticipant, stableParticipantHasVideo } from "../utils/useStableParticipant";
|
|
import AudioActionCreators from "../../../../actions/AudioActionCreators";
|
|
import { useIsSecureFramesUIEnabled } from "../../../rtc/hooks/useIsSecureFramesUIEnabled";
|
|
import { useIsUserSecureFramesVerified, useIsStreamSecureFramesVerified } from "../../../rtc/hooks/useIsSecureFramesVerified";
|
|
import { ThemeContextProvider } from "../../../../_bundle/Module3901";
|
|
import ThemedHeaderBackgroundGradient from "../../../main_tabs_v2/native/panels/ThemedHeaderBackgroundGradient";
|
|
import VoicePanelHeaderUserState from "./VoicePanelHeaderUserState";
|
|
import Module8393 from "../../../../_bundle/Module8393";
|
|
import VoicePanelTitleButton from "../shared/VoicePanelTitleButton";
|
|
import { ShieldLockIcon } from "../../../../design/components/Icon/native/redesign/generated/ShieldLockIcon";
|
|
import { ChannelTypes } from "../../../../_bundle/Module692";
|
|
import VoicePanelHeaderSpeaker from "./VoicePanelHeaderSpeaker";
|
|
import Module10223 from "../../../../_bundle/Module10223";
|
|
import Module15954 from "../../../../_bundle/Module15954";
|
|
import VoicePanelHeaderChatButton from "./VoicePanelHeaderChatButton";
|
|
let OPACITY_TIMING, useStyles, c11409_27, HEADER_CHANGE_PHYSICS, __initData, __initData2, __initData3, Component, __initData4, __initData5, Component2, __initData6, __initData7, __initData8, __initData9, __initData10, __initData11, __initData12;
|
|
const MusicMuteButton = function MusicMuteButton(props) {
|
|
const channelId2 = props.channelId;
|
|
const speaker = useMyCurrentStageChannelRole(channelId2)?.speaker;
|
|
const stateFromStores = useStateFromStores([StageMusicStore], () => StageMusicStore.isMuted());
|
|
return useShowStageMusicMuteButton(channelId2) ? speaker ? <VoicePanelIconButton accessibilityLabel={stateFromStores ? intl.string(t.ScHlfl) : intl.string(t.zqxfrf)} icon={stateFromStores ? Module10708 : Module9075} onPress={() => updateStageMusicMuted(!stateFromStores)} /> : null : null;
|
|
};
|
|
Platform;
|
|
OPACITY_TIMING = {
|
|
duration: 300
|
|
};
|
|
useStyles = createStyles({
|
|
headerWrapper: {
|
|
zIndex: 1,
|
|
position: "absolute",
|
|
top: 0,
|
|
left: 0,
|
|
width: "100%",
|
|
paddingBottom: EDGE_GUTTER,
|
|
overflow: "hidden"
|
|
},
|
|
blurStyles: {
|
|
...StyleSheet.absoluteFillObject,
|
|
opacity: 0.7
|
|
},
|
|
leftWrapper: {
|
|
position: "relative",
|
|
justifyContent: "flex-start",
|
|
flexDirection: "row",
|
|
alignItems: "center",
|
|
flexShrink: 1,
|
|
gap: 12
|
|
},
|
|
rightWrapper: {
|
|
flexDirection: "row",
|
|
alignItems: "center",
|
|
gap: 12,
|
|
paddingLeft: 12
|
|
},
|
|
headerOuter: {
|
|
flexDirection: "row",
|
|
alignItems: "center"
|
|
},
|
|
headerInner: {
|
|
flexDirection: "row",
|
|
alignItems: "center",
|
|
flexShrink: 1,
|
|
flexGrow: 1
|
|
},
|
|
headerContentWrapper: {
|
|
position: "relative"
|
|
},
|
|
stroke: {
|
|
height: StyleSheet.hairlineWidth,
|
|
opacity: 0.2
|
|
},
|
|
strokeAlt: {
|
|
height: StyleSheet.hairlineWidth,
|
|
opacity: 0.8
|
|
},
|
|
strokeContainer: {
|
|
position: "absolute",
|
|
left: 0,
|
|
right: 0,
|
|
bottom: 0,
|
|
height: StyleSheet.hairlineWidth
|
|
},
|
|
focusedSpeakingDotWrapper: {
|
|
width: 12,
|
|
height: 12,
|
|
borderRadius: Module712.radii.round,
|
|
padding: 2
|
|
},
|
|
focusedSpeakingDot: {
|
|
width: 8,
|
|
height: 8,
|
|
borderRadius: Module712.radii.round
|
|
},
|
|
shieldIconMargin: {
|
|
marginLeft: -8
|
|
}
|
|
});
|
|
c11409_27 = {
|
|
DOWN: 0,
|
|
0: "DOWN",
|
|
LEFT: 1,
|
|
1: "LEFT"
|
|
};
|
|
HEADER_CHANGE_PHYSICS = {
|
|
...MODE_CHANGE_PHYSICS,
|
|
overshootClamping: true
|
|
};
|
|
__initData = {
|
|
code: "function VoicePanelHeaderTsx1(){const{isHeaderHidden,focused,scrollPosition}=this.__closure;return!isHeaderHidden.get()&&(focused.get()!=null||scrollPosition.get()>0);}"
|
|
};
|
|
__initData2 = {
|
|
code: "function VoicePanelHeaderTsx2(){const{withSpring,showHeaderBlur}=this.__closure;return{blurAmount:withSpring(showHeaderBlur.get()?0.3:0)};}"
|
|
};
|
|
__initData3 = {
|
|
code: "function VoicePanelHeaderTsx3(){const{withSpring,showHeaderBlur,HEADER_CHANGE_PHYSICS}=this.__closure;return{opacity:withSpring(showHeaderBlur.get()?1:0,HEADER_CHANGE_PHYSICS)};}"
|
|
};
|
|
Component = Module19.memo(function({ isHeaderHidden, scrollPosition, focused }) {
|
|
let derivedValue;
|
|
derivedValue = void 0;
|
|
const styles = useStyles();
|
|
const l = function l() {
|
|
const r7 = isHeaderHidden.get();
|
|
return r7 ? !r7 : focused.get() != null || scrollPosition.get() > 0;
|
|
};
|
|
l.__closure = {
|
|
isHeaderHidden,
|
|
focused,
|
|
scrollPosition
|
|
};
|
|
l.__workletHash = 8127245112238;
|
|
l.__initData = __initData;
|
|
derivedValue = useDerivedValue(l);
|
|
const c = () => ({
|
|
blurAmount: _spring.withSpring(derivedValue.get() ? 0.3 : 0)
|
|
});
|
|
c.__closure = {
|
|
withSpring: _spring.withSpring,
|
|
showHeaderBlur: derivedValue
|
|
};
|
|
c.__workletHash = 10074943135400;
|
|
c.__initData = __initData2;
|
|
const animatedProps = useAnimatedProps(c);
|
|
const r34 = () => ({
|
|
opacity: _spring.withSpring(derivedValue.get() ? 1 : 0, HEADER_CHANGE_PHYSICS)
|
|
});
|
|
r34.__closure = {
|
|
withSpring: _spring.withSpring,
|
|
showHeaderBlur: derivedValue,
|
|
HEADER_CHANGE_PHYSICS
|
|
};
|
|
r34.__workletHash = 2825977044105;
|
|
r34.__initData = __initData3;
|
|
return <ReanimatedNativeView style={[StyleSheet.absoluteFill, useAnimatedStyle(r34)]} pointerEvents="none">
|
|
<VisualEffectViewAnimated style={styles.blurStyles} blurStyle="ultra-thin" blurTheme="dark" animatedProps={animatedProps} />
|
|
<NativeView style={styles.strokeContainer}>
|
|
<NativeView style={styles.stroke} />
|
|
<NativeView style={styles.strokeAlt} />
|
|
</NativeView>
|
|
</ReanimatedNativeView>;
|
|
});
|
|
__initData4 = {
|
|
code: "function VoicePanelHeaderTsx4(){const{focused,controlsSpecs,VoicePanelControlsModes,speaking}=this.__closure;return focused.get()!=null&&controlsSpecs.get().mode!==VoicePanelControlsModes.HIDDEN&&speaking.get();}"
|
|
};
|
|
__initData5 = {
|
|
code: "function VoicePanelHeaderTsx5(){const{showSpeakingIndicator}=this.__closure;return{opacity:showSpeakingIndicator.get()?1:0};}"
|
|
};
|
|
Component2 = Module19.memo(function() {
|
|
let derivedValue2;
|
|
const id = AuthenticationStore.getId();
|
|
const context = useContext(VoicePanelStateContext);
|
|
const { focused: focused2, controlsSpecs } = context;
|
|
const sharedValue = useSharedValue(SpeakingStore.isSpeaking(id));
|
|
useLayoutEffect(() => {
|
|
const handleChange2 = function handleChange() {
|
|
sharedValue.set(SpeakingStore.isSpeaking(id));
|
|
};
|
|
sharedValue.set(SpeakingStore.isSpeaking(id));
|
|
SpeakingStore.addReactChangeListener(handleChange2);
|
|
return () => {
|
|
SpeakingStore.removeReactChangeListener(handleChange2);
|
|
};
|
|
}, [id, sharedValue]);
|
|
const styles = useStyles();
|
|
const r33 = () => focused2.get() != null && controlsSpecs.get().mode !== VoicePanelControlsModes.HIDDEN && sharedValue.get();
|
|
r33.__closure = {
|
|
focused: focused2,
|
|
controlsSpecs,
|
|
VoicePanelControlsModes,
|
|
speaking: sharedValue
|
|
};
|
|
r33.__workletHash = 5466722752449;
|
|
r33.__initData = __initData4;
|
|
derivedValue2 = useDerivedValue(r33);
|
|
const _ = () => ({
|
|
opacity: derivedValue2.get() ? 1 : 0
|
|
});
|
|
_.__closure = {
|
|
showSpeakingIndicator: derivedValue2
|
|
};
|
|
_.__workletHash = 16177124708898;
|
|
_.__initData = __initData5;
|
|
return <ReanimatedNativeView style={[styles.focusedSpeakingDotWrapper, useAnimatedStyle(_)]} pointerEvents="none">
|
|
<ReanimatedNativeView style={styles.focusedSpeakingDot} />
|
|
</ReanimatedNativeView>;
|
|
});
|
|
__initData6 = {
|
|
code: "function VoicePanelHeaderTsx6(){const{focused}=this.__closure;var _focused$get;return(_focused$get=focused.get())===null||_focused$get===void 0?void 0:_focused$get.id;}"
|
|
};
|
|
__initData7 = {
|
|
code: "function VoicePanelHeaderTsx7(manualId,previousManualId){const{runOnJS,handleFocusChange}=this.__closure;if(manualId!==previousManualId){runOnJS(handleFocusChange)(manualId);}}"
|
|
};
|
|
__initData8 = {
|
|
code: "function VoicePanelHeaderTsx8(){const{calculateVoicePanelHeaderSpecs,safeArea,edgeGutter,mode,VoicePanelModes,gestureState,connected,EDGE_GUTTER}=this.__closure;const specs=calculateVoicePanelHeaderSpecs(safeArea.get(),edgeGutter);if(mode.get()===VoicePanelModes.PIP||gestureState.get().active&&!gestureState.get().requiresPop&&connected.get()||mode.get()===VoicePanelModes.DISMISSED&&connected.get()){return-(specs.height+EDGE_GUTTER);}return 0;}"
|
|
};
|
|
__initData9 = {
|
|
code: "function VoicePanelHeaderTsx9(){const{calculateVoicePanelHeaderSpecs,safeArea,edgeGutter,mode,VoicePanelModes,connected,EDGE_GUTTER,withTiming,OPACITY_TIMING,withSpring,yOffset,wrapperOffset,DRAWER_SPRING_PHYSICS_GESTURE_ACTIVE,UI_SHOW_HIDE_PHYSICS}=this.__closure;const specs=calculateVoicePanelHeaderSpecs(safeArea.get(),edgeGutter);const pipMode=mode.get()===VoicePanelModes.PIP;const height=!connected.get()?specs.height-specs.paddingTop+EDGE_GUTTER:specs.height;const paddingTop=!connected.get()?EDGE_GUTTER:specs.paddingTop;return{...specs,paddingTop:paddingTop,borderTopLeftRadius:!connected.get()?24:0,borderTopRightRadius:!connected.get()?24:0,height:height,opacity:withTiming(pipMode||mode.get()===VoicePanelModes.DISMISSED?0:1,OPACITY_TIMING),transform:[{translateY:withSpring(yOffset.get(),!connected.get()&&wrapperOffset.get().gestureActive?DRAWER_SPRING_PHYSICS_GESTURE_ACTIVE:UI_SHOW_HIDE_PHYSICS)}]};}"
|
|
};
|
|
__initData10 = {
|
|
code: "function VoicePanelHeaderTsx10(){const{controlsSpecs,VoicePanelControlsModes,isScreenReaderEnabled}=this.__closure;return controlsSpecs.get().mode===VoicePanelControlsModes.HIDDEN&&!isScreenReaderEnabled;}"
|
|
};
|
|
__initData11 = {
|
|
code: "function VoicePanelHeaderTsx11(){const{calculateVoicePanelHeaderSpecs,safeArea,edgeGutter,withTiming,isHeaderHidden,OPACITY_TIMING,withSpring,MODE_CHANGE_PHYSICS}=this.__closure;const{height:height}=calculateVoicePanelHeaderSpecs(safeArea.get(),edgeGutter);return{opacity:withTiming(isHeaderHidden.get()?0:1,OPACITY_TIMING),transform:[{translateY:withSpring(isHeaderHidden.get()?-height:0,MODE_CHANGE_PHYSICS)}]};}"
|
|
};
|
|
__initData12 = {
|
|
code: "function VoicePanelHeaderTsx12(){const{isHeaderHidden}=this.__closure;return{pointerEvents:isHeaderHidden.get()?'none':'box-none',importantForAccessibility:isHeaderHidden.get()?'no-hide-descendants':'auto',accessibilityElementsHidden:isHeaderHidden.get()};}"
|
|
};
|
|
const r127 = Module19.memo(function VoicePanelHeader(props) {
|
|
let setState, setState2, callback, token, derivedValue3, derivedValue4, LEFT, c22614_16;
|
|
const { wrapperOffset, gestureState, layout } = props;
|
|
setState = void 0;
|
|
setState2 = void 0;
|
|
callback = void 0;
|
|
token = void 0;
|
|
derivedValue3 = void 0;
|
|
derivedValue4 = void 0;
|
|
LEFT = void 0;
|
|
c22614_16 = void 0;
|
|
const styles = useStyles();
|
|
const context = useContext(VoicePanelStateContext);
|
|
const { guildId, channelId, channelType, focused: focused3, controlsSpecs: controlsSpecs2, mode, safeArea, connected, scrollPosition: scrollPosition2 } = context;
|
|
const isScreenReaderEnabled = useIsScreenReaderEnabled();
|
|
const isConnectedToVoiceChannel = useIsConnectedToVoiceChannel(channelId);
|
|
const treatment = MobileGoLiveEntrypointExperiment.useConfig({
|
|
location: "VoicePanelHeader"
|
|
}).treatment;
|
|
const stateFromStores2 = useStateFromStores([UserStore, RelationshipStore, ChannelStore, ExperimentStore], () => {
|
|
const channel = ChannelStore.getChannel(channelId);
|
|
let r11 = channel != null ? computeChannelName(channel, UserStore, RelationshipStore) : void 0;
|
|
if (r11 == null) {
|
|
r11 = intl.string(t.zLZPmk);
|
|
}
|
|
return r11;
|
|
}, [channelId]);
|
|
let state;
|
|
[state, setState] = useState(void 0);
|
|
let state2;
|
|
[state2, setState2] = useState(null);
|
|
callback = useCallback((a0) => {
|
|
const r0 = a0 == null;
|
|
let r3 = null;
|
|
if (!r0) {
|
|
const participant = ChannelRTCStore.getParticipant(channelId, a0);
|
|
r3 = participant == null ? null : participant.type;
|
|
}
|
|
setState2(r3);
|
|
setState(a0);
|
|
}, [channelId]);
|
|
const I = () => focused3.get()?.id;
|
|
I.__closure = {
|
|
focused: focused3
|
|
};
|
|
I.__workletHash = 7943480174143;
|
|
I.__initData = __initData6;
|
|
const f = function f(a0, a1) {
|
|
if (a0 !== a1) {
|
|
_ReanimatedRexport.runOnJS(callback)(a0);
|
|
}
|
|
};
|
|
f.__closure = {
|
|
runOnJS: _ReanimatedRexport.runOnJS,
|
|
handleFocusChange: callback
|
|
};
|
|
f.__workletHash = 13084116412140;
|
|
f.__initData = __initData7;
|
|
useAnimatedReaction(I, f);
|
|
token = useToken(Module712.modules.mobile.VOICE_PANEL_GUTTER);
|
|
const he = function he() {
|
|
let r14, r31;
|
|
L7: {
|
|
L6: {
|
|
r14 = calculateVoicePanelHeaderSpecs(safeArea.get(), token);
|
|
if (mode.get() !== VoicePanelModes.PIP) {
|
|
if (gestureState.get().active && !gestureState.get().requiresPop && connected.get()) {
|
|
break L6;
|
|
}
|
|
const r29 = mode.get();
|
|
const DISMISSED = VoicePanelModes.DISMISSED;
|
|
r31 = 0;
|
|
if (r29 !== DISMISSED) {
|
|
break L7;
|
|
}
|
|
const r34 = connected.get();
|
|
r31 = 0;
|
|
if (!r34) {
|
|
break L7;
|
|
}
|
|
}
|
|
}
|
|
r31 = -(r14.height + EDGE_GUTTER);
|
|
}
|
|
return r31;
|
|
};
|
|
he.__closure = {
|
|
calculateVoicePanelHeaderSpecs,
|
|
safeArea,
|
|
edgeGutter: token,
|
|
mode,
|
|
VoicePanelModes,
|
|
gestureState,
|
|
connected,
|
|
EDGE_GUTTER
|
|
};
|
|
he.__workletHash = 13290333964417;
|
|
he.__initData = __initData8;
|
|
derivedValue3 = useDerivedValue(he);
|
|
const _e = function _e() {
|
|
const r12 = calculateVoicePanelHeaderSpecs(safeArea.get(), token);
|
|
const r15 = mode.get();
|
|
const PIP = VoicePanelModes.PIP;
|
|
const r25 = connected.get();
|
|
const height = r12.height;
|
|
const height2 = r25 ? height : height - r12.paddingTop + EDGE_GUTTER;
|
|
const paddingTop = connected.get() ? r12.paddingTop : EDGE_GUTTER;
|
|
const r36 = connected.get();
|
|
let borderTopRightRadius = 24;
|
|
const borderTopLeftRadius = r36 ? 0 : 24;
|
|
if (connected.get()) {
|
|
borderTopRightRadius = 0;
|
|
}
|
|
return {
|
|
...r12,
|
|
paddingTop,
|
|
borderTopLeftRadius,
|
|
borderTopRightRadius,
|
|
height: height2,
|
|
opacity: _timing.withTiming(r15 !== PIP ? mode.get() === VoicePanelModes.DISMISSED ? 0 : 1 : 0, OPACITY_TIMING),
|
|
transform: [{
|
|
translateY: _spring.withSpring(derivedValue3.get(), !connected.get() && wrapperOffset.get().gestureActive ? DRAWER_SPRING_PHYSICS_GESTURE_ACTIVE : UI_SHOW_HIDE_PHYSICS)
|
|
}]
|
|
};
|
|
};
|
|
_e.__closure = {
|
|
calculateVoicePanelHeaderSpecs,
|
|
safeArea,
|
|
edgeGutter: token,
|
|
mode,
|
|
VoicePanelModes,
|
|
connected,
|
|
EDGE_GUTTER,
|
|
withTiming: _timing.withTiming,
|
|
OPACITY_TIMING,
|
|
withSpring: _spring.withSpring,
|
|
yOffset: derivedValue3,
|
|
wrapperOffset,
|
|
DRAWER_SPRING_PHYSICS_GESTURE_ACTIVE,
|
|
UI_SHOW_HIDE_PHYSICS
|
|
};
|
|
_e.__workletHash = 11065699618122;
|
|
_e.__initData = __initData9;
|
|
const animatedStyle = useAnimatedStyle(_e);
|
|
const pe = function pe() {
|
|
return controlsSpecs2.get().mode === VoicePanelControlsModes.HIDDEN && !isScreenReaderEnabled;
|
|
};
|
|
pe.__closure = {
|
|
controlsSpecs: controlsSpecs2,
|
|
VoicePanelControlsModes,
|
|
isScreenReaderEnabled
|
|
};
|
|
pe.__workletHash = 16725581527938;
|
|
pe.__initData = __initData10;
|
|
derivedValue4 = useDerivedValue(pe);
|
|
const Se = function Se() {
|
|
const height = calculateVoicePanelHeaderSpecs(safeArea.get(), token).height;
|
|
return {
|
|
opacity: _timing.withTiming(derivedValue4.get() ? 0 : 1, OPACITY_TIMING),
|
|
transform: [{
|
|
translateY: _spring.withSpring(derivedValue4.get() ? -height : 0, MODE_CHANGE_PHYSICS)
|
|
}]
|
|
};
|
|
};
|
|
Se.__closure = {
|
|
calculateVoicePanelHeaderSpecs,
|
|
safeArea,
|
|
edgeGutter: token,
|
|
withTiming: _timing.withTiming,
|
|
isHeaderHidden: derivedValue4,
|
|
OPACITY_TIMING,
|
|
withSpring: _spring.withSpring,
|
|
MODE_CHANGE_PHYSICS
|
|
};
|
|
Se.__workletHash = 13148362186846;
|
|
Se.__initData = __initData11;
|
|
const animatedStyle2 = useAnimatedStyle(Se);
|
|
const fe = () => ({
|
|
pointerEvents: derivedValue4.get() ? "none" : "box-none",
|
|
importantForAccessibility: derivedValue4.get() ? "no-hide-descendants" : "auto",
|
|
accessibilityElementsHidden: derivedValue4.get()
|
|
});
|
|
fe.__closure = {
|
|
isHeaderHidden: derivedValue4
|
|
};
|
|
fe.__workletHash = 4740985143159;
|
|
fe.__initData = __initData12;
|
|
const animatedProps = useAnimatedProps(fe);
|
|
let r164 = useCanInviteMembers(channelId);
|
|
const inviteMembersCallback = useInviteMembersCallback(channelId);
|
|
const voicePanelNavArrowPressed = useVoicePanelNavArrowPressed();
|
|
useNavigatorBackPressHandler(voicePanelNavArrowPressed);
|
|
LEFT = state2 != null ? c11409_27.LEFT : c11409_27.DOWN;
|
|
const accessibilityLabel = LEFT === c11409_27.LEFT ? intl.string(t["9M6OdC"]) : isConnectedToVoiceChannel ? intl.string(t.RLCTQG) : intl.string(t["5lPjGj"]);
|
|
const stableParticipant = useStableParticipant(AuthenticationStore.getId(), channelId, guildId);
|
|
c22614_16 = stableParticipant;
|
|
const stateFromStores3 = useStateFromStores([MediaEngineStore], () => {
|
|
let r49;
|
|
if (c22614_16 != null && isStableUserParticipant(c22614_16) && stableParticipantHasVideo(c22614_16)) {
|
|
const videoDevices = MediaEngineStore.getVideoDevices();
|
|
const r10 = Object.keys(videoDevices);
|
|
if (!(r10.length < 2)) {
|
|
const videoDeviceId = MediaEngineStore.getVideoDeviceId();
|
|
const facing = videoDevices[videoDeviceId]?.facing;
|
|
const r32 = r10.find((item) => item !== videoDeviceId);
|
|
const r34 = r32 != null ? videoDevices[r32]?.facing : void 0;
|
|
L22: {
|
|
if (facing != null && r34 != null) {
|
|
if (facing === "back" && r34 === "front") {
|
|
r49 = intl.string(t["/R1SBx"]);
|
|
break L22;
|
|
}
|
|
if (facing === "front" && r34 === "back") {
|
|
r49 = intl.string(t["7YZ/Si"]);
|
|
break L22;
|
|
}
|
|
r49 = intl.string(t["t9eQ/g"]);
|
|
} else {
|
|
r49 = intl.string(t["t9eQ/g"]);
|
|
}
|
|
}
|
|
return r49;
|
|
}
|
|
}
|
|
}, [stableParticipant]);
|
|
const callback2 = useCallback(() => {
|
|
const videoDeviceId2 = MediaEngineStore.getVideoDeviceId();
|
|
const r14 = Object.keys(MediaEngineStore.getVideoDevices()).find((item) => item !== videoDeviceId2);
|
|
if (r14 != null) {
|
|
AudioActionCreators.setVideoDevice(r14);
|
|
}
|
|
}, []);
|
|
const memo = useMemo(() => ({
|
|
transform: [{
|
|
rotateZ: LEFT === c11409_27.LEFT ? "90deg" : "0deg"
|
|
}]
|
|
}), [LEFT]);
|
|
const isSecureFramesUIEnabled = useIsSecureFramesUIEnabled({
|
|
channelId
|
|
});
|
|
const isUserSecureFramesVerified = useIsUserSecureFramesVerified({
|
|
userId: state2 === ParticipantTypes.USER ? state ?? null : null,
|
|
channelId
|
|
});
|
|
let r38 = useIsStreamSecureFramesVerified({
|
|
streamKey: state2 === ParticipantTypes.STREAM ? state ?? null : null,
|
|
channelId
|
|
});
|
|
if (ParticipantTypes.STREAM !== state2) {
|
|
r38 = ParticipantTypes.USER === state2 ? isUserSecureFramesVerified : false;
|
|
}
|
|
const theme = isConnectedToVoiceChannel ? ThemeTypes.MIDNIGHT : void 0;
|
|
const r257 = [<Component isHeaderHidden={derivedValue4} scrollPosition={scrollPosition2} focused={focused3} />, isConnectedToVoiceChannel && <ThemedHeaderBackgroundGradient baseColor={Module712.colors.BLACK} minHeight={0} />, ,];
|
|
const r275 = [state2 === ParticipantTypes.USER ? <VoicePanelHeaderUserState isHeaderHidden={derivedValue4} /> : null, ,];
|
|
const r312 = [<NativeView style={styles.leftWrapper} pointerEvents="box-none">
|
|
<VoicePanelIconButton icon={Module8393} accessibilityLabel={accessibilityLabel} onPress={voicePanelNavArrowPressed} style={memo} />
|
|
<ReanimatedNativeView style={styles.headerInner}>
|
|
<VoicePanelTitleButton />
|
|
{isSecureFramesUIEnabled ? r38 ? <ShieldLockIcon size="xs" color={Module712.colors.TEXT_SUBTLE} style={styles.shieldIconMargin} /> : null : null}
|
|
</ReanimatedNativeView>
|
|
</NativeView>, ,];
|
|
const r320 = [<Component2 />, channelType === ChannelTypes.GUILD_STAGE_VOICE && <MusicMuteButton channelId={channelId} />, <VoicePanelHeaderSpeaker isConnectedToVoiceChannel={isConnectedToVoiceChannel} channelId={channelId} />, , , ,];
|
|
if (r164) {
|
|
r164 = <VoicePanelIconButton icon={Module10223} accessibilityLabel={intl.formatToPlainString(t["dHHb/2"], {
|
|
channelName: stateFromStores2
|
|
})} onPress={inviteMembersCallback} />;
|
|
}
|
|
r320[3] = r164;
|
|
r320[4] = stateFromStores3 != null ? <VoicePanelIconButton icon={Module15954} onPress={callback2} accessibilityLabel={stateFromStores3} /> : null;
|
|
r320[5] = treatment === MobileGoLiveEntrypointTreatment.SCREENSHARE_REPLACES_CHAT && <VoicePanelHeaderChatButton channelId={channelId} />;
|
|
r312[1] = <ReanimatedNativeView style={styles.rightWrapper} layout={layout}>{r320}</ReanimatedNativeView>;
|
|
r275[1] = <ReanimatedNativeView style={[styles.headerOuter, animatedStyle2]} animatedProps={animatedProps}>{r312}</ReanimatedNativeView>;
|
|
r257[2] = <ReanimatedNativeView style={styles.headerContentWrapper} pointerEvents="box-none" layout={layout}>{r275}</ReanimatedNativeView>;
|
|
return <ThemeContextProvider theme={theme}>
|
|
<ReanimatedNativeView style={[styles.headerWrapper, animatedStyle]} pointerEvents="box-none" layout={layout}>{r257}</ReanimatedNativeView>
|
|
</ThemeContextProvider>;
|
|
});
|
|
export default r127;
|