204 lines
7.3 KiB
TypeScript
204 lines
7.3 KiB
TypeScript
// Metro module 4367 (f4368).
|
|
import { Linking } from "react-native";
|
|
import ApplicationStreamingStore from "../../../stores/ApplicationStreamingStore";
|
|
import ChannelStore from "../../../stores/ChannelStore";
|
|
import SelectedChannelStore from "../../../stores/SelectedChannelStore";
|
|
import { Base64JPEGPrefix, Endpoints, IOS_BUNDLE_ID, NOOP_NULL } from "../../../Constants";
|
|
import { getAppIntentScheme } from "../../activities/Constants";
|
|
import Logger from "../../debug/Logger";
|
|
import { Timeout } from "../../../_bundle/Timeout";
|
|
import { DisableStreamPreviews } from "../../user_settings/UserSettings";
|
|
import Dispatcher from "../../../Dispatcher";
|
|
import { HTTP } from "../../../_bundle/sendRequest";
|
|
import LifecycleManager from "../../../lib/LifecycleManager";
|
|
import { getVoiceEngine } from "../../../_bundle/Module4238";
|
|
import Module38 from "../../../_bundle/Module38";
|
|
import { stopStream, startStream } from "../../../actions/StreamActionCreators";
|
|
import ChannelRTCActionCreators from "../../../actions/ChannelRTCActionCreators";
|
|
import { encodeStreamKey } from "../utils/StreamKeyUtils";
|
|
import { getWindowDimensions } from "../../screen/useWindowDimensions.native";
|
|
import { handleCloseScreenshare } from "../../video_calls/native/useScreenshareUtils";
|
|
import PushNotification from "../../../lib/pushnotification/PushNotification";
|
|
import { intl, t } from "../../../intl/index.native";
|
|
import { HermesBuiltin } from "../../../_hermes/prelude";
|
|
function $mk114513($env) {
|
|
return () => {
|
|
const r1 = $env;
|
|
return (0, handleThumbnailUpload)(r1[0], r1[1]);
|
|
};
|
|
}
|
|
let c2586_13, c2586_14, c2586_15, c2586_21, c2586_22;
|
|
let env2586 = {};
|
|
const handleThumbnailUpload = async function handleThumbnailUpload(streamKey, c25057_1) {
|
|
let c25057_2, c25057_3, c25057_4;
|
|
let c25057_5 = 0;
|
|
const r12 = env2586;
|
|
L13: {
|
|
L12: {
|
|
try {
|
|
let env29318;
|
|
c25057_3 = r12;
|
|
const r33 = env29318 = {
|
|
$parent: r12
|
|
};
|
|
c25057_2 = r33;
|
|
env29318[0] = streamKey;
|
|
env29318[1] = c25057_1;
|
|
if (DisableStreamPreviews.getSetting()) {
|
|
break L13;
|
|
}
|
|
c2586_14.stop();
|
|
const previewURL = `${Base64JPEGPrefix}${c25057_1}`;
|
|
Dispatcher.dispatch({
|
|
type: "STREAM_PREVIEW_FETCH_SUCCESS",
|
|
streamKey,
|
|
previewURL
|
|
});
|
|
c25057_5 = 1;
|
|
await HTTP.post({
|
|
url: Endpoints.STREAM_PREVIEW(streamKey),
|
|
body: {
|
|
thumbnail: previewURL
|
|
},
|
|
oldFormErrors: true,
|
|
rejectWithError: false
|
|
});
|
|
c25057_5 = 0;
|
|
} catch ($e) {
|
|
const r31 = $e;
|
|
let r8 = r31;
|
|
c25057_4 = r31;
|
|
if (c25057_5 !== 0) {
|
|
while (true) {
|
|
try {
|
|
const r86 = c25057_2;
|
|
const r88 = c25057_4;
|
|
c25057_5 = 0;
|
|
env29318[2] = r88;
|
|
c2586_13.error("Failed to post stream preview", env29318[2]);
|
|
c2586_14.start(60000, $mk114513(r86));
|
|
break L12;
|
|
} catch (r84) {
|
|
r8 = r84;
|
|
c25057_4 = r84;
|
|
if (c25057_5 === 0) {
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
throw r8;
|
|
}
|
|
}
|
|
return void 0;
|
|
}
|
|
};
|
|
const logger = new Logger("VoiceEngineStreamingManager");
|
|
c2586_13 = logger;
|
|
logger.enableNativeLogger(true);
|
|
c2586_14 = new Timeout();
|
|
c2586_15 = new Timeout();
|
|
env2586[16] = [];
|
|
env2586[20] = SelectedChannelStore.getVoiceChannelId();
|
|
c2586_21 = Symbol("#e");
|
|
class VoiceEngineStreamingManager extends LifecycleManager {
|
|
constructor() {
|
|
super(...arguments);
|
|
if (Object.prototype.hasOwnProperty.call(this, c2586_21)) {
|
|
HermesBuiltin.throwTypeError("Cannot initialize private field twice.");
|
|
throw new Error("unreachable");
|
|
}
|
|
this[c2586_21] = ({ channelId }) => {
|
|
if (env2586[20] !== channelId) {
|
|
const r5 = env2586[19];
|
|
if (r5 != null) {
|
|
r5.stopBroadcast();
|
|
}
|
|
ApplicationStreamingStore.getAllActiveStreams().forEach((item) => {
|
|
if (item.channelId !== channelId) {
|
|
stopStream(encodeStreamKey(item), false);
|
|
}
|
|
});
|
|
}
|
|
env2586[20] = channelId;
|
|
};
|
|
}
|
|
_initialize() {
|
|
const voiceEngine = getVoiceEngine();
|
|
env2586[19] = voiceEngine;
|
|
voiceEngine.setBroadcastRequestCallback(() => {
|
|
c2586_13.log("Broadcast Requested");
|
|
Module38(env2586[19] != null, "Voice Engine should be initialized in callback");
|
|
env2586[16] = [];
|
|
const channel = ChannelStore.getChannel(SelectedChannelStore.getVoiceChannelId());
|
|
const currentAppIntent = ApplicationStreamingStore.getCurrentAppIntent();
|
|
if (channel != null) {
|
|
startStream(channel.getGuildId(), channel.id, {
|
|
sourceId: "screen:0"
|
|
});
|
|
const currentUserActiveStream = ApplicationStreamingStore.getCurrentUserActiveStream();
|
|
if (currentUserActiveStream != null) {
|
|
ChannelRTCActionCreators.selectParticipant(channel.id, encodeStreamKey(currentUserActiveStream));
|
|
if (env2586[19].platform === "android") {
|
|
c2586_15.start(15000, () => {
|
|
Module38(env2586[19] != null, "Voice Engine should be initialized in callback");
|
|
const windowDimensions = getWindowDimensions();
|
|
const r31 = Math.min(512 / windowDimensions.width, 288 / windowDimensions.height);
|
|
env2586[19].setBroadcastThumbnailCallback(windowDimensions.width * r31, windowDimensions.height * r31, 300, (a0) => {
|
|
c2586_13.log("Broadcast thumbnail of size:", a0.length);
|
|
handleThumbnailUpload(encodeStreamKey(currentUserActiveStream), a0);
|
|
});
|
|
});
|
|
}
|
|
if (currentAppIntent != null) {
|
|
Linking.openURL((0, getAppIntentScheme)(currentAppIntent));
|
|
}
|
|
}
|
|
} else {
|
|
env2586[19].stopBroadcastWithError(-1, "Not currently in a voice channel");
|
|
}
|
|
});
|
|
env2586[19].setBroadcastFinishedCallback(() => {
|
|
c2586_13.log("Broadcast Finished");
|
|
c2586_14.stop();
|
|
c2586_15.stop();
|
|
handleCloseScreenshare();
|
|
});
|
|
env2586[19].setBroadcastAnnotatedCallback((a0) => {
|
|
c2586_13.log("Broadcast Annotated:", a0);
|
|
if (a0 !== IOS_BUNDLE_ID) {
|
|
const r11 = env2586[16].indexOf(a0, 0);
|
|
if (r11 > -1) {
|
|
env2586[16].splice(r11, 1);
|
|
}
|
|
env2586[16].push(a0);
|
|
}
|
|
});
|
|
env2586[19].setBroadcastBlockedCallback(() => {
|
|
c2586_13.log("Broadcast Blocked");
|
|
PushNotification.presentLocalNotification({
|
|
alertBody: intl.string(t.iYQlwv)
|
|
});
|
|
});
|
|
Dispatcher.subscribe("VOICE_CHANNEL_SELECT", this[c2586_21]);
|
|
}
|
|
_terminate() {
|
|
const voiceEngine = getVoiceEngine();
|
|
if (voiceEngine != null) {
|
|
voiceEngine.setBroadcastRequestCallback(NOOP_NULL);
|
|
voiceEngine.setBroadcastFinishedCallback(NOOP_NULL);
|
|
voiceEngine.setBroadcastAnnotatedCallback(NOOP_NULL);
|
|
voiceEngine.setBroadcastBlockedCallback(NOOP_NULL);
|
|
}
|
|
c2586_14.stop();
|
|
c2586_15.stop();
|
|
Dispatcher.unsubscribe("VOICE_CHANNEL_SELECT", this[c2586_21]);
|
|
}
|
|
getApplicationNames() {
|
|
return env2586[16];
|
|
}
|
|
}
|
|
c2586_22 = VoiceEngineStreamingManager;
|
|
const r76 = new VoiceEngineStreamingManager();
|
|
export default r76;
|