Files
discord-decomp/modules/video_calls/native/components/UserVideoFailed.tsx
T
2026-11-01 12:12:55 +02:00

58 lines
2.4 KiB
TypeScript

// Metro module 15967 (f15968).
import { View } from "react-native";
import { VideoToggleState } from "../../../../Constants";
import { createStyles } from "../../../../design/components/Styles/native/createStyles";
import Module712 from "../../../../_bundle/Module712";
import { getErrorInfo } from "../../../errors/av_errors/AVError";
import { StreamFailed } from "../../../../design/components/Illustration/native/redesign/generated/StreamFailed";
import { Text } from "../../../../design/components/Text/native/Text";
import { intl, t } from "../../../../intl/index.native";
import { Button } from "../../../../design/components/Button/native/Button.native";
import { clearVideoStreamTimeout } from "../../../errors/VideoStreamReadyActionCreators";
import { MediaEngineContextTypes } from "../../../../_bundle/Module4286";
import AudioActionCreators from "../../../../actions/AudioActionCreators";
const useStyles = createStyles({
container: {
alignItems: "center",
justifyContent: "center",
backgroundColor: Module712.unsafe_rawColors.PRIMARY_700,
padding: 8
},
placeholderImage: {
marginBottom: 8,
width: "100%",
resizeMode: "contain"
},
button: {
marginTop: 16,
alignSelf: "center"
}
});
export default function UserVideoFailed(props) {
const { userId, style, avError, removeRetryButton, removeSplashImage, ...props2 } = props;
const styles = useStyles();
const errorCode = getErrorInfo(avError).errorCode;
return <View {...props2} style={[styles.container, style]}>
<>
{removeSplashImage ? !removeSplashImage : <StreamFailed style={styles.placeholderImage} />}
<Text variant="text-md/semibold" color="text-strong">
{intl.string(t["z+mxvo"])}
</Text>
</>
<Text variant="text-sm/semibold" color="text-muted" selectable>
{intl.formatToPlainString(t.ejOT95, {
errorCode
})}
</Text>
<View style={styles.button}>
{removeRetryButton ? !removeRetryButton : <Button variant="secondary" text={intl.string(t["hxmQ/e"])} onPress={function onPress() {
clearVideoStreamTimeout(MediaEngineContextTypes.DEFAULT, userId);
AudioActionCreators.setDisableLocalVideo(userId, VideoToggleState.DISABLED, MediaEngineContextTypes.DEFAULT, false);
setTimeout(() => {
AudioActionCreators.setDisableLocalVideo(userId, VideoToggleState.MANUAL_ENABLED, MediaEngineContextTypes.DEFAULT, false);
}, 1000);
}} />}
</View>
</View>;
};