This commit is contained in:
janisslsm committed 2026-11-01 12:12:55 +02:00
1 parent 1781d25a15
commit 732c0ad767
33051 files changed
+2591613 -3019689

No files matched your search

+164
View File
@@ -0,0 +1,164 @@
// Metro module 10411 (f10412).
import { memo, useState, useRef, useEffect } from "react";
import ChannelStore from "../../stores/ChannelStore";
import MediaEngineStore from "../../stores/MediaEngineStore";
import RTCConnectionStore from "../../stores/RTCConnectionStore";
import { InputModes } from "../../Constants";
import { createStyles } from "../../design/components/Styles/native/createStyles";
import Module712 from "../../_bundle/Module712";
import { hexWithOpacity } from "../../utils/ColorUtils";
import { useStateFromStores } from "../../_bundle/Module589";
import useCanSpeakInChannel from "../../modules/stage_channels/useCanSpeakInChannel";
import { useVoiceChatNavigationContext } from "../../modules/voice_chat/native/VoiceChatModalContext";
import { setPushToTalkState } from "../../modules/media_engine/MediaEngineActionCreators";
import { Gesture, GestureDetector } from "../../_bundle/Module5273";
import * as _ReanimatedRexport from "../../modules/reanimated/ReanimatedRexport";
import ReanimatedRexport from "../../modules/reanimated/ReanimatedRexport";
import { Button } from "../../design/void/native";
import { intl, t } from "../../intl/index.native";
let c6966_10 = {
BRAND: "brand",
BLUR: "blur"
};
const useStyles = createStyles({
button: {
margin: 13
},
container: {
borderRadius: Module712.radii.xs,
overflow: "hidden",
backgroundColor: hexWithOpacity(Module712.unsafe_rawColors.WHITE, 0.24)
},
buttonBlur: {
backgroundColor: "transparent"
},
buttonBlurPressed: {
backgroundColor: hexWithOpacity(Module712.unsafe_rawColors.BLACK, 0.6)
},
textStyle: {
fontSize: 16
},
brandButtonContainer: {
backgroundColor: Module712.colors.BACKGROUND_BASE_LOW
}
});
const __initData = {
code: "function CallPTTButtonTsx1(){const{runOnJS,setDragging}=this.__closure;runOnJS(setDragging)(false);}"
};
const __initData2 = {
code: "function CallPTTButtonTsx2(){const{runOnJS,setDragging,setPressed,setIsSwipeToChatDisabled}=this.__closure;runOnJS(setDragging)(true);runOnJS(setPressed)(false);if(setIsSwipeToChatDisabled!=null){runOnJS(setIsSwipeToChatDisabled)(false);}}"
};
const r73 = memo((a0) => {
let style2, style3;
let look = a0.look;
if (look === void 0) {
look = c6966_10.BRAND;
}
let stateFromStores, state, setState, state2, setState2, ref, setIsSwipeToChatDisabled;
const { style, sendCallback, stopCallback } = a0;
stateFromStores = void 0;
state = void 0;
setState = void 0;
state2 = void 0;
setState2 = void 0;
ref = void 0;
setIsSwipeToChatDisabled = void 0;
const styles = useStyles();
const stateFromStores2 = useStateFromStores([MediaEngineStore], () => MediaEngineStore.getMode());
stateFromStores = useStateFromStores([RTCConnectionStore], () => RTCConnectionStore.getChannelId());
const stateFromStores3 = useStateFromStores([ChannelStore], () => ChannelStore.getChannel(stateFromStores), [stateFromStores]);
const canSpeakInChannel = useCanSpeakInChannel(stateFromStores);
[state, setState] = useState(false);
[state2, setState2] = useState(false);
const r57 = (stateFromStores3 == null ? void 0 : stateFromStores3.isGuildStageVoice()) && !canSpeakInChannel;
ref = useRef(false);
setIsSwipeToChatDisabled = useVoiceChatNavigationContext()?.setIsSwipeToChatDisabled;
useEffect(() => {
let current = state;
if (!state) {
current = state2;
}
if (current !== ref.current) {
setPushToTalkState(current);
if (current) {
if (sendCallback != null) {
sendCallback();
}
} else if (stopCallback != null) {
stopCallback();
}
}
ref.current = current;
}, [ref, state, state2, sendCallback, stopCallback]);
const r73 = Gesture.Pan();
const F = function F() {
_ReanimatedRexport.runOnJS(setState2)(true);
_ReanimatedRexport.runOnJS(setState)(false);
if (setIsSwipeToChatDisabled != null) {
_ReanimatedRexport.runOnJS(setIsSwipeToChatDisabled)(false);
}
};
F.__closure = {
runOnJS: _ReanimatedRexport.runOnJS,
setDragging: setState2,
setPressed: setState,
setIsSwipeToChatDisabled
};
F.__workletHash = 10056118853836;
F.__initData = __initData2;
const r82 = r73.onStart(F);
const N = function N() {
_ReanimatedRexport.runOnJS(setState2)(false);
};
N.__closure = {
runOnJS: _ReanimatedRexport.runOnJS,
setDragging: setState2
};
N.__workletHash = 8439106360958;
N.__initData = __initData;
const gesture = r82.onEnd(N);
const r92 = stateFromStores == null;
let r93 = null;
if (!r92) {
const VOICE_ACTIVITY = InputModes.VOICE_ACTIVITY;
r93 = null;
if (VOICE_ACTIVITY !== stateFromStores2) {
r93 = null;
if (!r57) {
L18: {
if (look === c6966_10.BRAND) {
const r103 = [styles.brandButtonContainer];
style3 = [styles.button, style];
style2 = r103;
} else {
style2 = [styles.button, styles.container, style];
if (!state && !state2) {
style3 = styles.buttonBlur;
break L18;
}
style3 = styles.buttonBlurPressed;
}
}
r93 = <GestureDetector gesture={gesture}>
<ReanimatedRexport.View style={style2}>
<Button style={style3} textStyle={styles.textStyle} text={intl.string(t.Q8gkVL)} onTouchStart={function onTouchStart() {
setState(true);
setState2(false);
if (setIsSwipeToChatDisabled != null) {
setIsSwipeToChatDisabled(true);
}
}} onTouchEnd={function onTouchEnd() {
setState(false);
if (setIsSwipeToChatDisabled != null) {
setIsSwipeToChatDisabled(false);
}
}} darkenOnPress />
</ReanimatedRexport.View>
</GestureDetector>;
}
}
}
return r93;
});
export default r73;
export { c6966_10 as CallPTTButtonLooks };
+171
View File
@@ -0,0 +1,171 @@
// Metro module 10829 (f10830).
import { memo, useEffect } from "react";
import { ScrollView, View, StyleSheet } from "react-native";
import ChannelStore from "../../stores/ChannelStore";
import GuildStore from "../../stores/GuildStore";
import RTCConnectionStore from "../../stores/RTCConnectionStore";
import RTCDebugStore from "../../stores/RTCDebugStore";
import StreamRTCConnectionStore from "../../stores/StreamRTCConnectionStore";
import UserStore from "../../stores/UserStore";
import { MediaEngineContextTypes } from "../../_bundle/Module4250";
import { createStyles } from "../../design/components/Styles/native/createStyles";
import { hexWithOpacity } from "../../utils/ColorUtils";
import Module712 from "../../_bundle/Module712";
import { LegacyText } from "../../design/void/native";
import { useStateFromStoresObject, useStateFromStores } from "../../_bundle/Module589";
import useChannelName from "../../modules/channel/useChannelName";
import RTCConnectionUtils from "../../utils/RTCConnectionUtils";
import { open, close } from "../../actions/RTCDebugActionCreators";
import Dispatcher from "../../Dispatcher";
import { SafeAreaPaddingView } from "../common/SafeAreaView";
import { Button } from "../../design/components/Button/native/Button.native";
import { intl, t } from "../../intl/index.native";
let asString, useStyles, Section, ObjectKV, Component2, Component3, RTCDebugGeneral, c7276_25, RTCDebugContext;
const Text = function Text(props) {
return <LegacyText {...props} style={useStyles().text} />;
};
Section = function Section(props) {
const { title, children } = props;
return <>
<Text>
{title}
:
</Text>
<View style={useStyles().indent}>{children}</View>
</>;
};
ObjectKV = function ObjectKV({ obj }) {
const styles = useStyles();
return Object.entries(obj).map((item) => {
const [key, r30] = item;
const obj = Array.isArray(r30) ? typeof r30.at(-1)?.value === "number" ? r30.at(-1).value : r30 : r30;
return obj != null && typeof obj === "object" ? <Section key={key} title={key}>
<ObjectKV obj={obj} />
</Section> : <View key={key} style={styles.row}>
<Text>
{key}
{": "}
{"" + obj}
</Text>
</View>;
});
};
RTCDebugGeneral = function RTCDebugGeneral() {
let guildId, channelId;
const stateFromStoresObject = useStateFromStoresObject([RTCConnectionStore], () => ({
guildId: RTCConnectionStore.getGuildId(),
channelId: RTCConnectionStore.getChannelId()
}), []);
guildId = stateFromStoresObject.guildId;
channelId = stateFromStoresObject.channelId;
const stateFromStores = useStateFromStores([GuildStore], () => GuildStore.getGuild(guildId), [guildId]);
return <Section title="general">
<ObjectKV obj={{
guild: {
id: guildId,
name: stateFromStores != null ? stateFromStores.name : null
},
channel: {
id: channelId,
name: useChannelName(useStateFromStores([ChannelStore], () => ChannelStore.getChannel(channelId), [channelId]))
}
}} />
</Section>;
};
RTCDebugContext = function RTCDebugContext({ context }) {
const stateFromStores = useStateFromStores([RTCDebugStore], () => RTCDebugStore.getAllStats(context), [context]);
return stateFromStores == null ? null : stateFromStores.length !== 0 ? stateFromStores.map((stateFromStore) => {
const Component = c7276_25[context];
const r22 = Component != null ? <Component /> : null;
let inbound;
const r27 = [r22, <Section title="transport">
<ObjectKV obj={stateFromStore.transport} />
</Section>, <Section title="outbound">
{stateFromStore.rtp.outbound.map((item, index) => <Component2 key={index} data={item} />)}
</Section>, ,];
inbound = stateFromStore.rtp.inbound;
const r44 = Object.keys(inbound);
r27[3] = r44.length !== 0 ? <Section title="inbound">
{r44.map((item) => <Component3 key={item} userId={item} data={inbound[item]} />)}
</Section> : null;
return <Section key={stateFromStore.mediaEngineConnectionId} title={`${context} - ${stateFromStore.mediaEngineConnectionId}`}>{r27}</Section>;
}) : null;
};
asString = (a0) => {};
useStyles = createStyles({
container: {
...StyleSheet.absoluteFillObject,
backgroundColor: hexWithOpacity(Module712.unsafe_rawColors.BLACK, 0.7)
},
scroller: {
flex: 1,
margin: 8
},
indent: {
marginLeft: 16
},
row: {
flexDirection: "row"
},
text: {
color: Module712.unsafe_rawColors.WHITE,
fontSize: 14
},
buttonClose: {
flexGrow: 0,
margin: 8
}
});
Component2 = memo(({ data }) => {
const { type, ...rest } = data;
return <Section title={data.type}>
<ObjectKV obj={rest} />
</Section>;
});
Component3 = memo(({ userId, data }) => {
const stateFromStores = useStateFromStores([UserStore], () => UserStore.getUser(userId), [userId]);
const r21 = `${userId}`;
return <Section title={stateFromStores != null ? r21 + ` (${stateFromStores.toString()})` : r21}>
{data.map((item, index) => <Component2 key={index} data={item} />)}
</Section>;
});
const r80 = {};
r80[MediaEngineContextTypes.DEFAULT] = function DefaultContextInfo() {
return <ObjectKV obj={useStateFromStoresObject([RTCConnectionStore], () => ({
mediaSessionId: RTCConnectionStore.getMediaSessionId(),
state: RTCConnectionStore.getState(),
hostname: RTCConnectionUtils.getShortHostname(RTCConnectionStore.getHostname()),
quality: RTCConnectionStore.getQuality(),
averagePing: RTCConnectionStore.getAveragePing(),
lastPing: RTCConnectionStore.getLastPing(),
outboundLossRate: RTCConnectionStore.getOutboundLossRate(),
duration: RTCConnectionStore.getDuration()
}), [])} />;
};
r80[MediaEngineContextTypes.STREAM] = function StreamContextInfo() {
const r7 = StreamRTCConnectionStore.getAllActiveStreamKeys()[0];
let c18293_0 = r7;
return <ObjectKV obj={useStateFromStoresObject([StreamRTCConnectionStore], () => ({
mediaSessionId: StreamRTCConnectionStore.getMediaSessionId(c18293_0),
hostname: RTCConnectionUtils.getShortHostname(StreamRTCConnectionStore.getHostname(c18293_0)),
quality: StreamRTCConnectionStore.getQuality(c18293_0)
}), [r7])} />;
};
c7276_25 = r80;
export default function RTCDebugOverlay(props) {
const { onClose, style } = props;
const styles2 = useStyles();
useEffect(() => {
open();
return () => Dispatcher.wait(close);
}, []);
return <SafeAreaPaddingView top left right bottom style={[styles2.container, style]}>
<ScrollView style={styles2.scroller} indicatorStyle="white">
<RTCDebugGeneral />
{Object.values(MediaEngineContextTypes).map((item) => <RTCDebugContext key={item} context={item} />)}
</ScrollView>
<View style={styles2.buttonClose}>
<Button text={intl.string(t.cpT0Cq)} onPress={onClose} />
</View>
</SafeAreaPaddingView>;
};
@@ -0,0 +1,90 @@
// Metro module 16171 (f16172).
import AuthenticationStore from "../../../stores/AuthenticationStore";
import { AnalyticEvents } from "../../../Constants";
import { FeedbackCategory, FeedbackType, StreamFeedbackOption } from "../../../modules/feedback/Constants";
import { useGetStreamApplication } from "../../../modules/go_live/utils/StreamerApplicationSelectors";
import { useStateFromStores } from "../../../_bundle/Module589";
import { intl, t } from "../../../intl/index.native";
import Feedback_messages from "../../../modules/feedback/intl/Feedback.messages";
import { getStreamFeedbackOptions, processOptOut } from "../../../modules/feedback/FeedbackUtils";
import FeedbackActionSheetV2 from "../../../modules/feedback/native/FeedbackActionSheetV2";
import AnalyticsUtils from "../../../utils/AnalyticsUtils";
import trackStreamProblem from "../../../modules/go_live/utils/trackStreamProblem";
import { shouldShowLogUploadForCategory } from "../../../modules/feedback/shouldShowLogUploadForCategory";
import ActionSheetActionCreators from "../../../modules/action_sheet/native/ActionSheetActionCreators";
import { presentFeedbackSent } from "../../../modules/toast/native/ToastUtils";
export default function StreamFeedbackActionSheet(props) {
const { stream, analyticsData } = props;
const getStreamApplication = useGetStreamApplication(stream);
const stateFromStores = useStateFromStores([AuthenticationStore], () => AuthenticationStore.getId() === stream.ownerId);
const headerLabel = intl.string(t["5smP3R"]);
const r10 = intl.string(t["0uxA2V"]);
let ratingBody = intl.string(t.CqjnLN);
const r52 = {
value: stateFromStores ? FeedbackCategory.STREAMING : FeedbackCategory.STREAM_WATCHING,
label: intl.string(stateFromStores ? Feedback_messages["0ZBLiZ"] : Feedback_messages.TVTIT1),
problemsHeader: intl.string(t["6Y1t5P"]),
problemOptions: getStreamFeedbackOptions({
isStreamer: stateFromStores
}),
freeformConfig: {
value: StreamFeedbackOption.FREEFORM,
label: intl.string(t.emlT91)
}
};
if (stateFromStores) {
ratingBody = r10;
}
return <FeedbackActionSheetV2 headerLabel={headerLabel} showHeaderCloseButton ratingBody={ratingBody} categoriesHeader={intl.string(Feedback_messages.tq8598)} optionsTree={[r52]} trackOpen={function trackOpen() {
AnalyticsUtils.track(AnalyticEvents.OPEN_POPOUT, {
type: "Stream Feedback Sheet",
other_user_id: stream.ownerId,
application_id: getStreamApplication != null ? getStreamApplication.id : null,
application_name: getStreamApplication != null ? getStreamApplication.name : null,
game_id: getStreamApplication != null ? getStreamApplication.id : null
});
}} trackReport={function trackReport(a0) {
const { dontShowAgain, rating, category, reason } = a0;
let feedback = a0.feedback;
if (dontShowAgain) {
processOptOut({
feedbackType: FeedbackType.STREAM,
location: "StreamFeedbackActionSheet"
});
}
L17: {
if (rating != null) {
let problem = reason?.value;
if (problem == null) {
problem = null;
}
let variant = reason?.variant;
if (variant == null) {
variant = null;
}
if (feedback == null) {
feedback = "";
}
trackStreamProblem({
category,
problem,
variant,
stream,
feedback,
streamApplication: getStreamApplication,
analyticsData,
location: "Stream End",
rating
});
if (reason != null && shouldShowLogUploadForCategory(rating, category, reason)) {
ActionSheetActionCreators.openLazy(import("../../../modules/feedback/native/UploadLogsActionSheet"), "UploadLogs", {
mediaSessionId: analyticsData.media_session_id,
rtcConnectionId: analyticsData.rtc_connection_id
});
break L17;
}
presentFeedbackSent();
}
}
}} />;
};
@@ -0,0 +1,28 @@
// Metro module 16695 (f16696).
import { Image as Image2 } from "react-native";
import { getErrorInfo, AVError } from "../../../modules/errors/av_errors/AVError";
import { intl, t } from "../../../intl/index.native";
import Alert from "../../common/Alert";
import { Text } from "../../../design/components/Text/native/Text";
import Module16696 from "../../../_bundle/Module16696";
let c12029_6 = {
image: {
alignSelf: "center",
marginTop: 32
},
body: {
marginTop: 16
}
};
export default function StreamFullAlert(props) {
const r13 = intl.formatToPlainString(t.ejOT95, {
errorCode: getErrorInfo(AVError.STREAM_FULL)?.errorCode
});
return <Alert {...props} title={intl.string(t.GzjdO5)}>
<Text variant="text-md/normal" style={c12029_6.body}>
{intl.string(t.VVZDBL)}
</Text>
<Text variant="text-md/normal" selectable color="text-muted" style={c12029_6.body}>{r13}</Text>
<Image2 source={Module16696} style={c12029_6.image} />
</Alert>;
};
@@ -0,0 +1,60 @@
// Metro module 16036 (f16037).
import PresenceStore from "../../../stores/PresenceStore";
import { AnalyticEvents } from "../../../Constants";
import { createStyles } from "../../../design/components/Styles/native/createStyles";
import Module712 from "../../../_bundle/Module712";
import useMountEffect from "../../../hooks/useMountEffect";
import { getStreamerApplication } from "../../../modules/go_live/utils/StreamerApplicationSelectors";
import AnalyticsUtils from "../../../utils/AnalyticsUtils";
import trackStreamProblem from "../../../modules/go_live/utils/trackStreamProblem";
import ActionSheetActionCreators from "../../../modules/action_sheet/native/ActionSheetActionCreators";
import { presentFeedbackSent } from "../../../modules/toast/native/ToastUtils";
import getStreamIssueReportOptions from "../../../modules/go_live/utils/getStreamIssueReportOptions";
import { ActionSheetRow } from "../../../design/components/Sheet/native/ActionSheetRow.native";
import { ActionSheet } from "../../../design/components/Sheet/native/ActionSheet.native";
import { BottomSheetTitleHeader } from "../../../design/components/Sheet/native/BottomSheetTitleHeader.native";
import { intl, t } from "../../../intl/index.native";
import { BottomSheetScrollView } from "../../../_bundle/Module5245";
const useStyles = createStyles({
container: {
padding: 16,
backgroundColor: Module712.colors.BACKGROUND_SURFACE_HIGH
}
});
export default function ReportProblem(props) {
const { stream, analyticsData } = props;
const styles = useStyles();
useMountEffect(() => {
const streamerApplication = getStreamerApplication(stream, PresenceStore);
AnalyticsUtils.track(AnalyticEvents.OPEN_POPOUT, {
type: "Stream Issue Sheet",
other_user_id: stream.ownerId,
application_id: streamerApplication != null ? streamerApplication.id : null,
application_name: streamerApplication != null ? streamerApplication.name : null,
game_id: streamerApplication != null ? streamerApplication.id : null
});
});
const r8 = getStreamIssueReportOptions({
isStreamer: false,
isEndStream: false
}).map((item, index) => {
const value = item.value;
return <ActionSheetRow key={index} label={item.label} arrow onPress={() => {
trackStreamProblem({
problem: value,
stream,
feedback: "",
streamApplication: getStreamerApplication(stream, PresenceStore),
analyticsData,
location: "Stream"
});
ActionSheetActionCreators.hideActionSheet();
presentFeedbackSent();
}} />;
});
return <ActionSheet scrollable header={<BottomSheetTitleHeader title={intl.string(t.XuqqwI)} />}>
<BottomSheetScrollView style={styles.container}>
<ActionSheetRow.Group hasIcons={false}>{r8}</ActionSheetRow.Group>
</BottomSheetScrollView>
</ActionSheet>;
};
@@ -0,0 +1,85 @@
// Metro module 10547 (f10548).
import { View } from "react-native";
import ChannelStore from "../../../stores/ChannelStore";
import { Fonts } from "../../../Constants";
import { createStyles } from "../../../design/components/Styles/native/createStyles";
import Module712 from "../../../_bundle/Module712";
import { StreamEnded } from "../../../design/components/Illustration/native/redesign/generated/StreamEnded";
import { LegacyText } from "../../../design/void/native";
import { intl, t } from "../../../intl/index.native";
import { StreamFailed } from "../../../design/components/Illustration/native/redesign/generated/StreamFailed";
import { getErrorInfo, AVError } from "../../../modules/errors/av_errors/AVError";
import { useStateFromStores } from "../../../_bundle/Module589";
import useMountEffect from "../../../hooks/useMountEffect";
import { stopStream } from "../../../actions/StreamActionCreators";
import { encodeStreamKey } from "../../../modules/go_live/utils/StreamKeyUtils";
import { Text } from "../../../design/components/Text/native/Text";
import { BaseTextButton } from "../../../design/components/Button/native/BaseTextButton.native";
let c7088_8 = {
NONE: "NONE",
STREAM_ENDED: "STREAM_ENDED",
STREAM_FAILED: "STREAM_FAILED"
};
const useStyles = createStyles({
container: {
alignItems: "center",
justifyContent: "center",
backgroundColor: Module712.unsafe_rawColors.PRIMARY_700,
padding: 8
},
placeholderImage: {
marginBottom: 8,
width: "100%",
resizeMode: "contain"
},
placeholderText: {
color: Module712.unsafe_rawColors.WHITE,
fontFamily: Fonts.PRIMARY_SEMIBOLD,
fontSize: 16,
lineHeight: 20,
textAlign: "center"
},
buttonWrapper: {
marginTop: 16,
alignSelf: "center"
},
buttonPill: {
borderRadius: Module712.radii.round
}
});
export default function VideoEmptyState(props) {
const { type, style, avError, removeSplashImage, removeCloseButton, stream, ...props2 } = props;
const styles = useStyles();
const r31 = c7088_8.STREAM_ENDED === type ? <>
{removeSplashImage ? !removeSplashImage : <StreamEnded style={styles.placeholderImage} />}
<LegacyText style={styles.placeholderText}>
{intl.formatToMarkdownString(t["1Ww0Hi"], {})}
</LegacyText>
</> : c7088_8.STREAM_FAILED === type ? <>
{removeSplashImage ? !removeSplashImage : <StreamFailed style={styles.placeholderImage} />}
<LegacyText style={styles.placeholderText}>
{intl.string(t.rSlOep)}
</LegacyText>
</> : c7088_8.NONE === type ? null : void 0;
const errorCode = avError != null ? getErrorInfo(avError).errorCode : type === c7088_8.STREAM_FAILED ? getErrorInfo(AVError.STREAM_FAILED_TO_START).errorCode : null;
const stateFromStores = useStateFromStores([ChannelStore], () => ChannelStore.getChannel(stream.channelId), [stream.channelId]);
useMountEffect(() => {
if (stateFromStores == null ? void 0 : stateFromStores.isGuildStageVoice()) {
stopStream(encodeStreamKey(stream));
}
});
return <View {...props2} style={[styles.container, style]}>
{r31}
{errorCode != null && <Text variant="text-sm/semibold" color="text-muted" selectable>
{intl.formatToPlainString(t.ejOT95, {
errorCode
})}
</Text>}
{removeCloseButton ? !removeCloseButton : <View style={styles.buttonWrapper}>
<BaseTextButton pillStyle={styles.buttonPill} variant="secondary" text={intl.string(t["4EGMWL"])} onPress={() => {
stopStream(encodeStreamKey(stream));
}} />
</View>}
</View>;
};
export { c7088_8 as VideoEmptyTypes };