// Metro module 15984 (f15985). import { useContext, useCallback, useState, memo, useEffect } from "react"; import { StyleSheet } from "react-native"; import EmbeddedActivitiesStore from "../../../activities/EmbeddedActivitiesStore"; import GameConsoleStore from "../../../game_console/GameConsoleStore"; import VoiceChannelBlockedUserStore from "../../../shared_space_warnings/VoiceChannelBlockedUserStore"; import ApplicationStreamingStore from "../../../../stores/ApplicationStreamingStore"; import AuthenticationStore from "../../../../stores/AuthenticationStore"; import ChannelStore from "../../../../stores/ChannelStore"; import PermissionStore from "../../../../stores/PermissionStore"; import SessionsStore from "../../../../stores/SessionsStore"; import UserStore from "../../../../stores/UserStore"; import VoiceStateStore from "../../../../stores/VoiceStateStore"; import SortedVoiceStateStore from "../../../../stores/views/SortedVoiceStateStore"; import { MODE_CHANGE_PHYSICS } from "../../VoicePanelConstants"; import { EDGE_GUTTER } from "../card/VoicePanelCardConstants"; import { AnalyticEvents, AnalyticsSections, Permissions } from "../../../../Constants"; import { VoiceChannelWarningSurfaces } from "../../../shared_space_warnings/SharedSpaceWarningConstants"; import { createStyles } from "../../../../design/components/Styles/native/createStyles"; import { BASE_VOICE_PANEL_HEADER_HEIGHT } from "../header/calculateVoicePanelHeaderSpecs"; import Module712 from "../../../../_bundle/Module712"; import VoicePanelStateContext from "../VoicePanelStateContext"; import SelectedChannelActionCreators from "../../../../actions/SelectedChannelActionCreators"; import { watchStream } from "../../../../actions/StreamActionCreators"; import { encodeStreamKey } from "../../../go_live/utils/StreamKeyUtils"; import { useStateFromStores } from "../../../../_bundle/Module589"; import NativeView from "../../../core/native/NativeView"; import { Text } from "../../../../design/components/Text/native/Text"; import { t, intl } from "../../../../intl/index.native"; import { VoicePanelStreamPreview } from "../shared/VoicePanelStreamPreview"; import useGetOrFetchApplications from "../../../applications/useGetOrFetchApplications"; import { getEmbeddedActivityLocationChannelId } from "../../../activities/utils/embeddedActivityLocationUtils"; import useActivityUsers from "../../../activities/useActivityUsers"; import { getWindowDimensions } from "../../../screen/useWindowDimensions.native"; import * as _ReanimatedRexport from "../../../reanimated/ReanimatedRexport"; import { useAnimatedReaction, useAnimatedStyle } from "../../../reanimated/ReanimatedRexport"; import { useEmbeddedActivityJoinability, EmbeddedActivityJoinability } from "../../../activities/utils/getEmbeddedActivityJoinability"; import handlePressJoinActivity, { maybeJoinEmbeddedActivity } from "../../../activities/handlePressJoinActivity"; import useEmbeddedActivityBackground from "../../../activities/utils/useEmbeddedActivityBackground"; import { PressableOpacity } from "../../../../design/void/Pressables/native/Pressables"; import ActivityShelfItemBackground from "../controls/activities/ActivityShelfItemBackground"; import { Button } from "../../../../design/components/Button/native/Button.native"; import useTrackImpression from "../../../app_analytics/useTrackImpression"; import { ImpressionNames } from "../../../../_bundle/Module503"; import { CircleErrorIcon } from "../../../../design/components/Icon/native/redesign/generated/CircleErrorIcon"; import { VoicePanelFormSection, MemberRowItem } from "../shared/FormComponents"; import NicknameUtils from "../../../../utils/NicknameUtils"; import { TableRow } from "../../../../design/components/TableRow/native/TableRow.native"; import roundToNearestPixel from "../utils/roundToNearestPixel"; import useShowChannelOptInNotice from "../../../opt_in_channels/useShowChannelOptInNotice"; import useAnalyticsLocations from "../../../app_analytics/useAnalyticsLocations"; import AnalyticsLocation from "../../../app_analytics/AnalyticsLocation"; import AnalyticsUtils from "../../../../utils/AnalyticsUtils"; import VoicePanelChannelOptInNotice from "../shared/VoicePanelChannelOptInNotice"; import * as _spring from "../../../../design/animation/reanimated/spring/spring"; import * as _TransitionGroup from "../../../../design/components/TransitionGroup/TransitionGroup"; import { TransitionItem } from "../../../../design/components/TransitionGroup/TransitionGroup"; import ReanimatedNativeView from "../../../core/native/ReanimatedNativeView"; import useIsConnectedToVoiceChannel from "../hooks/useIsConnectedToVoiceChannel"; import { areVoicePanelPreJoinContentPropsEqual } from "./VoicePanelPreJoinUtils"; let useStyles, Component2, __initData, __initData2, ActivityInfo, Component, RoomMembersSection, RoomMembers, Component3, VoicePanelPreJoinContentInner, __initData3, __initData4, PreJoinTransitioner, renderItem; const StreamPreview = function StreamPreview(props) { let stateFromStores; const { voiceState, stream, channelId } = props; stateFromStores = void 0; const styles = useStyles(); const context = useContext(VoicePanelStateContext); const { mode, setFocused } = context; const callback = useCallback(() => { SelectedChannelActionCreators.selectVoiceChannel(channelId); watchStream(stream, { forceMultiple: true }); setFocused(encodeStreamKey(stream)); }, [channelId, stream, setFocused]); stateFromStores = useStateFromStores([ChannelStore], () => ChannelStore.getChannel(channelId)); const stateFromStores2 = useStateFromStores([PermissionStore], () => PermissionStore.can(Permissions.CONNECT, stateFromStores)); const I0mOAs = t.I0mOAs; let nick = voiceState.nick; if (nick == null) { nick = voiceState.user.username; } return {intl.format(I0mOAs, { username: nick })} ; }; ActivityInfo = function ActivityInfo(props) { let setState, embeddedActivityJoinability, c22675_7; const { activity, analyticsLocations } = props; setState = void 0; embeddedActivityJoinability = void 0; c22675_7 = void 0; const styles = useStyles(); const [inputApplication] = useGetOrFetchApplications([activity.applicationId]); const activityUsers = useActivityUsers(activity.applicationId, getEmbeddedActivityLocationChannelId(activity.location)); const context = useContext(VoicePanelStateContext); const { channelId: channelId2, windowDimensions } = context; let size; [size, setState] = useState(() => getWindowDimensions().width - 2 * (EDGE_GUTTER + 16)); const u = () => windowDimensions.get().width; u.__closure = { windowDimensions }; u.__workletHash = 16837592262556; u.__initData = __initData; const c = function c(a0, a1) { if (a0 !== a1) { _ReanimatedRexport.runOnJS(setState)(a0 - 2 * (EDGE_GUTTER + 16)); } }; c.__closure = { runOnJS: _ReanimatedRexport.runOnJS, setActivityPreviewWidth: setState, EDGE_GUTTER }; c.__workletHash = 1481130207412; c.__initData = __initData2; useAnimatedReaction(u, c); embeddedActivityJoinability = useEmbeddedActivityJoinability({ userId: AuthenticationStore.getId(), channelId: channelId2, application: inputApplication }); const r2 = embeddedActivityJoinability === EmbeddedActivityJoinability.CAN_JOIN; c22675_7 = r2; const callback = useCallback(() => { let c28195_0 = async () => { L13: { if (c22675_7) { if (inputApplication != null) { await maybeJoinEmbeddedActivity({ channelId: channelId2, applicationId: inputApplication.id, launchId: activity.launchId, inputApplication, analyticsLocations }); break L13; } } else { SelectedChannelActionCreators.selectVoiceChannel(channelId2); } return void 0; } }; handlePressJoinActivity({ embeddedActivityJoinability, handleCanJoin: function() { return c28195_0.apply(this, arguments); } }); }, [activity.launchId, analyticsLocations, inputApplication, r2, channelId2, embeddedActivityJoinability]); const embeddedActivityBackground = useEmbeddedActivityBackground({ applicationId: activity.applicationId, size, names: ["embedded_background"] }); const r3 = inputApplication == null; let r87 = null; if (!r3) { const r111 = [ {intl.format(t["n/IJ6Y"], { n: activityUsers.length })} , ,]; const r126 = [ , ,]; const props2 = { text: intl.formatToPlainString(t["YV/hE8"], { name: inputApplication.name }), size: "sm", iconPosition: "start", variant: "primary-overlay", icon: null, onPress: null }; const Icon = Button.Icon; let uri = inputApplication.getIconURL(20); if (uri == null) { uri = void 0; } props2.icon = ; props2.onPress = callback; r126[1] =