430 lines
13 KiB
TypeScript
430 lines
13 KiB
TypeScript
// Metro module 10475 (f10476).
|
|
import ConnectedAccountsStore from "./ConnectedAccountsStore";
|
|
import StreamerModeStore from "./StreamerModeStore";
|
|
import { PlatformTypes } from "../Constants";
|
|
import Durations from "../utils/Durations";
|
|
import { HTTP } from "../_bundle/sendRequest";
|
|
import ConnectedAccountsActionCreators from "../actions/ConnectedAccountsActionCreators";
|
|
import Dispatcher from "../Dispatcher";
|
|
import { getAssetFromImageURL } from "../utils/ApplicationAssetUtils";
|
|
import Platforms from "../lib/Platforms";
|
|
import isUndefinedOrNull from "../_bundle/isUndefinedOrNull";
|
|
import Module589 from "../_bundle/Module589";
|
|
function $mk115679($env) {
|
|
return function getTwitchGame() {
|
|
return $env[16].apply(this, arguments);
|
|
};
|
|
}
|
|
function $mk115680($env) {
|
|
return function parseUsernameFromThumbnail(a0) {
|
|
const r5 = c7022_9.exec(a0);
|
|
return r5 == null ? void 0 : r5[1];
|
|
};
|
|
}
|
|
function $mk115681($env) {
|
|
return (a0) => {
|
|
const r0 = $env;
|
|
return r0[2]._checkTwitch(r0[0], a0);
|
|
};
|
|
}
|
|
function $mk115683($env) {
|
|
return (a0) => {
|
|
const r0 = $env;
|
|
return r0[2]._checkYouTube(r0[0], a0);
|
|
};
|
|
}
|
|
let streamerModeUpdate, c7022_7, c7022_8, c7022_9, c7022_13, c7022_14, c7022_17, c7022_19;
|
|
let env7022 = {};
|
|
const makeTwitchRequest = function makeTwitchRequest(a0, a1, a2) {
|
|
return HTTP.get({
|
|
url: `https://api.twitch.tv/helix${a0}`,
|
|
query: a1,
|
|
headers: {
|
|
"Client-ID": "33kozedd0zs6fbauka98psnc7zwom2s",
|
|
Authorization: `Bearer ${a2}`
|
|
},
|
|
rejectWithError: false
|
|
});
|
|
};
|
|
env7022[16] = function _getTwitchGame() {
|
|
const r8 = async (id, c26677_1) => {
|
|
let r26;
|
|
let c30224_0, c30224_1, c30224_2;
|
|
L14: {
|
|
c30224_0 = id;
|
|
c30224_1 = void 0;
|
|
c30224_2 = void 0;
|
|
r26 = c7022_14[id];
|
|
if (r26 != null) {
|
|
break L14;
|
|
}
|
|
c30224_1 = (await makeTwitchRequest("/games", {
|
|
id
|
|
}, c26677_1)).body.data;
|
|
c30224_2 = c30224_1[0]?.name;
|
|
c7022_14[c30224_0] = c30224_2;
|
|
return c30224_2;
|
|
}
|
|
return r26;
|
|
};
|
|
env7022[16] = r8;
|
|
return r8.apply(this, arguments);
|
|
};
|
|
streamerModeUpdate = function streamerModeUpdate() {
|
|
if (StreamerModeStore.enabled) {
|
|
c7022_17.start();
|
|
} else {
|
|
c7022_17.stop();
|
|
}
|
|
};
|
|
c7022_7 = 1 * Durations.Millis.MINUTE;
|
|
c7022_8 = 5 * Durations.Millis.MINUTE;
|
|
c7022_9 = /live_user_(.*)-\{width\}/;
|
|
env7022[10] = null;
|
|
env7022[11] = 0;
|
|
env7022[12] = null;
|
|
c7022_13 = new Set();
|
|
c7022_14 = {};
|
|
class StreamingPoller {
|
|
_started = false;
|
|
start() {
|
|
if (!this._started) {
|
|
this._started = true;
|
|
if (ConnectedAccountsStore.isFetching()) {
|
|
ConnectedAccountsActionCreators.fetch();
|
|
} else {
|
|
this._check();
|
|
}
|
|
}
|
|
}
|
|
stop() {
|
|
this._started = false;
|
|
env7022[12] = null;
|
|
env7022[11] = 0;
|
|
if (this._nextCheck != null) {
|
|
clearTimeout(this._nextCheck);
|
|
}
|
|
Dispatcher.dispatch({
|
|
type: "STREAMING_UPDATE",
|
|
stream: null
|
|
});
|
|
}
|
|
async _checkTwitch(a0) {
|
|
let r186, r206;
|
|
let env17989 = {
|
|
$parent: env7022
|
|
};
|
|
env17989[0] = a0;
|
|
let r5 = arguments[1];
|
|
if (r5 === void 0) {
|
|
r5 = null;
|
|
}
|
|
env17989[1] = r5;
|
|
env17989[2] = this;
|
|
let accessToken, assetFromImageURL, name, c26678_3, c26678_4, c26678_5;
|
|
let c26678_6 = 0;
|
|
const r22 = env17989;
|
|
L36: {
|
|
L35: {
|
|
L34: {
|
|
try {
|
|
let env30225;
|
|
c26678_4 = r22;
|
|
const r45 = env30225 = {
|
|
$parent: r22
|
|
};
|
|
c26678_3 = r45;
|
|
env30225[0] = void 0;
|
|
env30225[1] = void 0;
|
|
env30225[2] = void 0;
|
|
env30225[3] = void 0;
|
|
env30225[4] = void 0;
|
|
env30225[5] = void 0;
|
|
env30225[6] = void 0;
|
|
env30225[7] = void 0;
|
|
env30225[8] = void 0;
|
|
env30225[9] = void 0;
|
|
if (env17989[0].revoked) {
|
|
break L36;
|
|
}
|
|
accessToken = env17989[1];
|
|
if (accessToken == null) {
|
|
accessToken = env17989[0].accessToken;
|
|
}
|
|
env17989[1] = accessToken;
|
|
if (accessToken == null) {
|
|
break L35;
|
|
}
|
|
c26678_6 = 1;
|
|
env30225[0] = (await makeTwitchRequest("/streams", {
|
|
user_id: env17989[0].id,
|
|
first: 1
|
|
}, env17989[1])).body.data[0];
|
|
if (env30225[0] != null && env30225[0].type === "live") {
|
|
env30225[1] = env30225[0].thumbnail_url;
|
|
env30225[2] = env30225[0].game_id;
|
|
env30225[3] = env30225[0].title;
|
|
const r102 = env30225[1] != null;
|
|
let large_image = void 0;
|
|
if (r102) {
|
|
assetFromImageURL = getAssetFromImageURL(PlatformTypes.TWITCH, env30225[1]);
|
|
if (assetFromImageURL == null) {
|
|
assetFromImageURL = void 0;
|
|
}
|
|
large_image = assetFromImageURL;
|
|
}
|
|
env30225[4] = {
|
|
large_image
|
|
};
|
|
const r106 = env30225[2];
|
|
const r107 = env17989[1];
|
|
env30225[5] = await $mk115679(env7022)(r106, r107);
|
|
env30225[6] = Platforms.get(PlatformTypes.TWITCH);
|
|
const r156 = env30225[1];
|
|
name = $mk115680(env7022)(r156);
|
|
if (name == null) {
|
|
name = env17989[0].name;
|
|
}
|
|
env30225[7] = name;
|
|
env30225[8] = env30225[3] != null ? env30225[3] !== "" ? env30225[3].slice(0, 128) : void 0 : void 0;
|
|
env30225[9] = env30225[5] != null ? env30225[5] !== "" ? env30225[5].slice(0, 128) : void 0 : void 0;
|
|
const r177 = env30225[6];
|
|
const getPlatformUserUrl = r177.getPlatformUserUrl;
|
|
r186 = {
|
|
url: getPlatformUserUrl == null ? void 0 : getPlatformUserUrl.call(r177, {
|
|
id: env17989[0].id,
|
|
name: env30225[7]
|
|
}),
|
|
name: env30225[6].name,
|
|
assets: env30225[4],
|
|
details: env30225[8],
|
|
state: env30225[9]
|
|
};
|
|
c26678_6 = 0;
|
|
break L34;
|
|
}
|
|
throw new Error("no stream");
|
|
} catch ($e) {
|
|
const r43 = $e;
|
|
let r13 = r43;
|
|
c26678_5 = r43;
|
|
if (c26678_6 !== 0) {
|
|
while (true) {
|
|
try {
|
|
const r203 = c26678_5;
|
|
c26678_6 = 0;
|
|
r206 = r203.status === 401 ? env17989[1] == null ? ConnectedAccountsActionCreators.refreshAccessToken(env17989[0].type, env17989[0].id).then($mk115681(env17989)).catch(() => null) : null : null;
|
|
} catch (r201) {
|
|
r13 = r201;
|
|
c26678_5 = r201;
|
|
if (c26678_6 === 0) {
|
|
break;
|
|
}
|
|
continue;
|
|
}
|
|
return r206;
|
|
}
|
|
}
|
|
throw r13;
|
|
}
|
|
}
|
|
return r186;
|
|
}
|
|
return null;
|
|
}
|
|
return null;
|
|
}
|
|
async _checkYouTube(a0) {
|
|
let r135, r166;
|
|
let env17990 = {
|
|
$parent: env7022
|
|
};
|
|
env17990[0] = a0;
|
|
let r5 = arguments[1];
|
|
if (r5 === void 0) {
|
|
r5 = null;
|
|
}
|
|
env17990[1] = r5;
|
|
env17990[2] = this;
|
|
let assetFromImageURL2, c26679_1, c26679_2, c26679_3;
|
|
let c26679_4 = 0;
|
|
const r22 = env17990;
|
|
L23: {
|
|
try {
|
|
let env30226;
|
|
c26679_2 = r22;
|
|
const r44 = env30226 = {
|
|
$parent: r22
|
|
};
|
|
c26679_1 = r44;
|
|
env30226[0] = void 0;
|
|
env30226[1] = void 0;
|
|
env30226[2] = void 0;
|
|
env30226[3] = void 0;
|
|
env30226[4] = void 0;
|
|
env30226[5] = void 0;
|
|
env30226[6] = void 0;
|
|
env30226[7] = void 0;
|
|
env30226[8] = void 0;
|
|
env7022[12] = null;
|
|
if (env17990[0].revoked) {
|
|
break L23;
|
|
}
|
|
if (c7022_13.has(env17990[0].id)) {
|
|
break L23;
|
|
}
|
|
c26679_4 = 1;
|
|
env30226[0] = (await HTTP.get({
|
|
url: "https://www.googleapis.com/youtube/v3/liveBroadcasts",
|
|
query: {
|
|
part: "id,snippet",
|
|
broadcastStatus: "active",
|
|
broadcastType: "all"
|
|
},
|
|
headers: {
|
|
Authorization: `Bearer ${env17990[1] != null ? env17990[1] : env17990[0].accessToken}`
|
|
},
|
|
oldFormErrors: true,
|
|
rejectWithError: false
|
|
})).body.items;
|
|
if (env30226[0].length < 1) {
|
|
throw new Error("no stream");
|
|
}
|
|
env30226[1] = env30226[0][0];
|
|
env30226[2] = env30226[1].id;
|
|
env30226[3] = env30226[1].snippet;
|
|
env30226[4] = env30226[3].title;
|
|
env30226[5] = env30226[3].thumbnails;
|
|
assetFromImageURL2 = getAssetFromImageURL(PlatformTypes.YOUTUBE, env30226[5].high.url);
|
|
if (assetFromImageURL2 == null) {
|
|
assetFromImageURL2 = void 0;
|
|
}
|
|
env30226[6] = {
|
|
large_image: assetFromImageURL2
|
|
};
|
|
env30226[7] = env30226[4] != null ? env30226[4] !== "" ? env30226[4].slice(0, 128) : void 0 : void 0;
|
|
env30226[8] = env30226[2];
|
|
r135 = {
|
|
url: `https://youtube.com/watch?v=${env30226[8]}`,
|
|
name: Platforms.get(PlatformTypes.YOUTUBE).name,
|
|
details: env30226[7],
|
|
assets: env30226[6]
|
|
};
|
|
env7022[12] = r135;
|
|
c26679_4 = 0;
|
|
} catch ($e) {
|
|
const r42 = $e;
|
|
let r13 = r42;
|
|
c26679_3 = r42;
|
|
if (c26679_4 !== 0) {
|
|
while (true) {
|
|
L34: {
|
|
try {
|
|
const r159 = c26679_3;
|
|
c26679_4 = 0;
|
|
env30226[9] = r159;
|
|
if (env30226[9].status === 401 && env17990[1] == null) {
|
|
r166 = ConnectedAccountsActionCreators.refreshAccessToken(env17990[0].type, env17990[0].id).then($mk115683(env17990)).catch(() => null);
|
|
break L34;
|
|
}
|
|
const status = env30226[9].status;
|
|
r166 = null;
|
|
if (status === 403) {
|
|
c7022_13.add(env17990[0].id);
|
|
r166 = null;
|
|
}
|
|
} catch (r156) {
|
|
r13 = r156;
|
|
c26679_3 = r156;
|
|
if (c26679_4 === 0) {
|
|
break;
|
|
}
|
|
continue;
|
|
}
|
|
}
|
|
return r166;
|
|
}
|
|
}
|
|
throw r13;
|
|
}
|
|
return r135;
|
|
}
|
|
return null;
|
|
}
|
|
_check() {
|
|
let c17991_0;
|
|
if (this._started) {
|
|
const accounts = ConnectedAccountsStore.getAccounts();
|
|
if (accounts != null) {
|
|
if (this._nextCheck != null) {
|
|
clearTimeout(this._nextCheck);
|
|
}
|
|
const r8 = [PlatformTypes.TWITCH];
|
|
c17991_0 = r8;
|
|
const r20 = Date.now();
|
|
if (env7022[11] <= r20) {
|
|
r8.push(PlatformTypes.YOUTUBE);
|
|
env7022[11] = r20 + c7022_8;
|
|
}
|
|
Promise.allSettled(accounts.filter((account) => c17991_0.includes(account.type)).map((item) => item.type === PlatformTypes.TWITCH ? this._checkTwitch(item) : this._checkYouTube(item))).then((result) => {
|
|
if (this._started) {
|
|
let stream = result.find((item) => item.status === "fulfilled" && item.value != null)?.value;
|
|
if (stream == null && env7022[12] != null) {
|
|
stream = env7022[12];
|
|
}
|
|
Dispatcher.dispatch({
|
|
type: "STREAMING_UPDATE",
|
|
stream
|
|
});
|
|
}
|
|
this._scheduleCheck();
|
|
});
|
|
}
|
|
}
|
|
}
|
|
_scheduleCheck() {
|
|
if (this._started) {
|
|
this._nextCheck = setTimeout(() => this._check(), c7022_7);
|
|
}
|
|
}
|
|
}
|
|
const r64 = {
|
|
__proto__: StreamingPoller.prototype
|
|
};
|
|
r64._started = false;
|
|
c7022_17 = r64;
|
|
class ExternalStreamingStore extends Module589.Store {
|
|
static displayName = "ExternalStreamingStore";
|
|
constructor() {
|
|
super(...arguments);
|
|
}
|
|
initialize() {
|
|
const enabled = StreamerModeStore.enabled;
|
|
if (enabled) {
|
|
c7022_17.start();
|
|
} else {
|
|
c7022_17.stop();
|
|
}
|
|
this.waitFor(ConnectedAccountsStore, StreamerModeStore);
|
|
this.syncWith([StreamerModeStore], streamerModeUpdate);
|
|
}
|
|
getStream() {
|
|
return env7022[10];
|
|
}
|
|
}
|
|
c7022_19 = ExternalStreamingStore;
|
|
const r82 = new ExternalStreamingStore(Dispatcher, {
|
|
STREAMING_UPDATE: function streamUpdate(a0) {
|
|
if (isUndefinedOrNull(a0.stream, env7022[10])) {
|
|
return false;
|
|
}
|
|
let stream = a0.stream;
|
|
if (stream == null) {
|
|
stream = null;
|
|
}
|
|
env7022[10] = stream;
|
|
},
|
|
USER_CONNECTIONS_UPDATE: () => c7022_17._check()
|
|
});
|
|
export default r82;
|