144 lines
7.2 KiB
TypeScript
144 lines
7.2 KiB
TypeScript
// Metro module 8858 (f8859).
|
|
import * as Module19 from "react";
|
|
import { useCallback, useMemo, useEffect } from "react";
|
|
import { ScrollView } from "react-native";
|
|
import GameConsoleStore from "../../../game_console/GameConsoleStore";
|
|
import AudioManagerStore_android from "../../../voice_calls/native/AudioManagerStore.android";
|
|
import ChannelStore from "../../../../stores/ChannelStore";
|
|
import SessionsStore from "../../../../stores/SessionsStore";
|
|
import { VOICE_PANEL_AUDIO_OUTPUT_ACTION_SHEET_KEY } from "./VoicePanelHeaderConstants";
|
|
import { PlatformTypes } from "../../../../Constants";
|
|
import { createStyles } from "../../../../design/components/Styles/native/createStyles";
|
|
import ActionSheetActionCreators from "../../../action_sheet/native/ActionSheetActionCreators";
|
|
import { useStateFromStoresObject, useStateFromStores } from "../../../../_bundle/defaultAreStatesEqual";
|
|
import { setAudioOutputDevice } from "../../../voice_calls/native/AudioManagerActionCreator";
|
|
import { VoicePanelFormSection } from "../shared/FormComponents";
|
|
import { intl, t } from "../../../../intl/index.native";
|
|
import { TableRadioGroup } from "../../../../design/components/TableRow/native/TableRadioGroup.native";
|
|
import { TableRadioRow } from "../../../../design/components/TableRow/native/TableRadioRow.native";
|
|
import { TableRowIcon } from "../../../../design/components/TableRow/native/TableRowIcon.native";
|
|
import { audioDeviceToIconMap, getAudioDeviceToDisplayText } from "../../../voice_calls/native/CallsUtils";
|
|
import useGameConsoleAccounts from "../../../game_console/useGameConsoleAccounts";
|
|
import useVoiceStateForRemoteSession from "../../../game_console/hooks/useVoiceStateForRemoteSession";
|
|
import { onConnectToConsole } from "../../../video_calls/native/useOnConnectToConsole";
|
|
import { useIsDismissibleContentDismissed_UNSAFE, UNSAFE_markDismissibleContentAsDismissed } from "../../../dismissible_content/DismissibleContentUnsafeUtils";
|
|
import { DismissibleContent } from "../../../../_bundle/Module1358";
|
|
import getConsoleIcon from "../../../game_console/native/getConsoleIcon";
|
|
import { BottomSheet } from "../../../../design/components/Sheet/native/BottomSheet.native";
|
|
import { BottomSheetTitleHeader } from "../../../../design/components/Sheet/native/BottomSheetTitleHeader.native";
|
|
import NativeView from "../../../core/native/NativeView";
|
|
let useStyles, VoicePanelAudioConsoleSection;
|
|
const VoicePanelAudioPhoneOutputSection = function VoicePanelAudioPhoneOutputSection() {
|
|
let availableDevices, callback;
|
|
const styles = useStyles();
|
|
const stateFromStoresObject = useStateFromStoresObject([AudioManagerStore_android], () => ({
|
|
activeDevice: AudioManagerStore_android.getActiveAudioDevice(),
|
|
availableDevices: AudioManagerStore_android.getAudioDevices()
|
|
}));
|
|
const activeDevice = stateFromStoresObject.activeDevice;
|
|
availableDevices = stateFromStoresObject.availableDevices;
|
|
callback = useCallback((a0) => {
|
|
setAudioOutputDevice(a0);
|
|
ActionSheetActionCreators.hideActionSheet(VOICE_PANEL_AUDIO_OUTPUT_ACTION_SHEET_KEY);
|
|
}, []);
|
|
return availableDevices.length > 0 ? <VoicePanelFormSection style={styles.sectionContainer} title={intl.string(t.CxyS15)} hasIcons>
|
|
<TableRadioGroup value={activeDevice.deviceId} onChange={(c26300_0) => {
|
|
const r7 = availableDevices.find((availableDevice) => availableDevice.deviceId === c26300_0);
|
|
if (r7 != null) {
|
|
callback(r7);
|
|
}
|
|
}} hasIcons>
|
|
{availableDevices.map((availableDevice) => <TableRadioRow key={availableDevice.deviceId} value={availableDevice.deviceId} icon={<TableRowIcon source={audioDeviceToIconMap[availableDevice.simpleDeviceType]} />} label={getAudioDeviceToDisplayText(availableDevice)} subLabel={availableDevice.deviceName?.length > 0 ? availableDevice.deviceName : void 0} />)}
|
|
</TableRadioGroup>
|
|
</VoicePanelFormSection> : null;
|
|
};
|
|
VoicePanelAudioConsoleSection = function VoicePanelAudioConsoleSection(props) {
|
|
let stateFromStores2, c16832_5;
|
|
const channel = props.channel;
|
|
stateFromStores2 = void 0;
|
|
c16832_5 = void 0;
|
|
const styles = useStyles();
|
|
const gameConsoleAccounts = useGameConsoleAccounts();
|
|
let c16832_1 = gameConsoleAccounts;
|
|
let c16832_2 = useVoiceStateForRemoteSession();
|
|
const stateFromStores = useStateFromStores([GameConsoleStore], () => GameConsoleStore.getAwaitingRemoteSessionInfo());
|
|
stateFromStores2 = useStateFromStores([SessionsStore], () => {
|
|
let r7 = c16832_2?.sessionId;
|
|
if (r7 == null) {
|
|
r7 = "";
|
|
}
|
|
return SessionsStore.getSessionById(r7);
|
|
});
|
|
const memo = useMemo(() => {
|
|
let r3 = stateFromStores?.type;
|
|
if (r3 == null) {
|
|
r3 = stateFromStores2 == null ? void 0 : stateFromStores2.clientInfo?.os;
|
|
}
|
|
if (r3 == null) {
|
|
r3 = "";
|
|
}
|
|
return r3;
|
|
}, [stateFromStores, stateFromStores2]);
|
|
const callback2 = useCallback((c26301_0) => {
|
|
const r5 = c16832_1.find((item) => item.type === c26301_0);
|
|
if (r5 != null) {
|
|
onConnectToConsole(channel, r5);
|
|
ActionSheetActionCreators.hideActionSheet(VOICE_PANEL_AUDIO_OUTPUT_ACTION_SHEET_KEY);
|
|
} else {
|
|
ActionSheetActionCreators.hideActionSheet(VOICE_PANEL_AUDIO_OUTPUT_ACTION_SHEET_KEY);
|
|
}
|
|
}, [gameConsoleAccounts, channel]);
|
|
const r2 = !useIsDismissibleContentDismissed_UNSAFE(DismissibleContent.DONUT_MOBILE_NUX);
|
|
c16832_5 = r2;
|
|
useEffect(() => {
|
|
if (c16832_5 && c16832_1.length > 0) {
|
|
UNSAFE_markDismissibleContentAsDismissed(DismissibleContent.DONUT_MOBILE_NUX);
|
|
}
|
|
}, [gameConsoleAccounts, r2]);
|
|
return gameConsoleAccounts.length > 0 ? <VoicePanelFormSection title={intl.string(t.q22XnQ)} style={styles.sectionContainer} hasIcons>
|
|
<TableRadioGroup defaultValue={memo} onChange={callback2} hasIcons>
|
|
{gameConsoleAccounts.map((gameConsoleAccount) => {
|
|
const type = gameConsoleAccount.type;
|
|
const r6 = PlatformTypes.XBOX === type ? {
|
|
label: intl.string(t.Nfvo72),
|
|
variant: "xbox"
|
|
} : PlatformTypes.PLAYSTATION === type ? {
|
|
label: intl.string(t.fFl4jo),
|
|
variant: "playstation"
|
|
} : null;
|
|
return r6 != null && <TableRadioRow key={gameConsoleAccount.type} icon={<TableRowIcon source={getConsoleIcon(gameConsoleAccount.type)} variant={r6.variant} />} label={r6.label} value={gameConsoleAccount.type} />;
|
|
}).filter((item) => Boolean(item))}
|
|
</TableRadioGroup>
|
|
</VoicePanelFormSection> : null;
|
|
};
|
|
useStyles = createStyles({
|
|
sectionContainer: {
|
|
marginTop: 0,
|
|
marginBottom: 24
|
|
}
|
|
});
|
|
const r46 = Module19.memo(function VoicePanelAudioOutputActionSheet(props) {
|
|
const channelId = props.channelId;
|
|
let isConnectedToVoiceChannel = props.isConnectedToVoiceChannel;
|
|
const stateFromStores3 = useStateFromStores([ChannelStore], () => ChannelStore.getChannel(channelId));
|
|
let r20 = null;
|
|
if (stateFromStores3 != null) {
|
|
const props2 = {
|
|
header: <BottomSheetTitleHeader title={intl.string(t.iwxPM3)} />,
|
|
children: null
|
|
};
|
|
if (isConnectedToVoiceChannel) {
|
|
isConnectedToVoiceChannel = <VoicePanelAudioPhoneOutputSection />;
|
|
}
|
|
props2.children = <ScrollView>
|
|
<NativeView>
|
|
{isConnectedToVoiceChannel}
|
|
<VoicePanelAudioConsoleSection channel={stateFromStores3} />
|
|
</NativeView>
|
|
</ScrollView>;
|
|
r20 = <BottomSheet {...props2} />;
|
|
}
|
|
return r20;
|
|
});
|
|
export default r46;
|