This commit is contained in:
janisslsm committed 2026-11-01 12:12:55 +02:00
1 parent 1781d25a15
commit 732c0ad767
33051 files changed
+2591613 -3019689

No files matched your search

+312
View File
@@ -0,0 +1,312 @@
// Metro module 10943 (f10944).
import SpotifyProtocolStore from "./SpotifyProtocolStore";
import { SpotifyEndpoints, SPOTIFY_APP_PROTOCOL } from "./SpotifyConstants";
import { Endpoints, PlatformTypes } from "../../Constants";
import { HTTP } from "../../_bundle/sendRequest";
import Dispatcher from "../../Dispatcher";
import { isDesktop } from "../../utils/PlatformUtils";
import GameUtils_native from "../../utils/GameUtils.native";
function $mk85947() {
return (a0) => a0.status === 202 ? Promise.reject(a0) : a0;
}
function $mk85948($env) {
return (a0) => {
let r7, r17;
const r4 = $env;
const r9 = r4[2].onlyRetryOnAuthorizationErrors !== true && a0.status === 202;
if (!(a0.status !== 401 && !r9) && r4[3] > 0) {
if (a0.status === 202) {
const r23 = $env.$parent;
r7 = (0, r23[0])(r23[2][3]).timeoutPromise(5000);
} else {
r7 = Promise.resolve();
}
r17 = r7.then($mk107590(r4)).then($mk107591(r4)).then((c30308_0) => new Promise((c31601_0) => setImmediate(() => c31601_0(c30308_0))));
} else {
r17 = Promise.reject(a0);
}
return r17;
};
}
function $mk85949($env) {
return (a0) => {
const code = a0.body?.code;
const r8 = $env;
const r12 = $env.$parent;
if (code === r12[6].CONNECTION_REVOKED) {
(0, r12[1])(r12[2][5]).dispatch({
type: "SPOTIFY_ACCOUNT_ACCESS_TOKEN_REVOKE",
accountId: r8[0]
});
} else if (a0.status === 429) {
const r9 = a0.headers["retry-after"];
const r10 = r12[1];
const r16 = r12[2];
const r21 = r9 * r10(r16[6]).Millis.SECOND;
const r25 = isNaN(r21) ? 5000 : r21 !== 0 ? r21 : 5000;
return (0, r12[0])(r16[3]).timeoutPromise(r25).then($mk107593(r8));
}
return Promise.reject(a0);
};
}
function $mk85950($env) {
return (a0) => {
const access_token = a0.body.access_token;
const r7 = $env.$parent;
(0, r7[1])(r7[2][5]).dispatch({
type: "SPOTIFY_ACCOUNT_ACCESS_TOKEN",
accountId: $env[0],
accessToken: access_token
});
return a0;
};
}
function $mk85951($env) {
return (a0) => {
let r15;
const r2 = $env;
if (r2[3] <= 0) {
r15 = Promise.reject(a0);
} else {
const r6 = $env.$parent;
r15 = (0, r6[0])(r6[2][3]).timeoutPromise(5000).then($mk107594(r2));
}
return r15;
};
}
function $mk107590($env) {
return () => {
let env30306;
const r5 = $env.$parent;
const r8 = $env[1];
const r9 = env30306 = {
$parent: r5
};
env30306[0] = r8;
return (0, r5[0])(r5[2][4]).HTTP.get({
url: r5[7].CONNECTION_ACCESS_TOKEN(r5[8].SPOTIFY, r8),
oldFormErrors: true,
rejectWithError: false
}).catch($mk85949(r9)).then($mk85950(r9));
};
}
function $mk107591($env) {
return (a0) => {
let env30307;
const r2 = $env;
const access_token = a0.body.access_token;
const r4 = r2[0];
const r12 = r2[1];
const r5 = r2[2];
const r14 = r2[3] - 1;
const r16 = env30307 = {
$parent: $env.$parent
};
env30307[0] = r4;
env30307[1] = r12;
env30307[2] = r5;
env30307[3] = r14;
const r17 = {
...r5,
headers: {
authorization: `Bearer ${access_token}`
}
};
env30307[2] = r17;
return r4(r17).then($mk85947()).catch($mk85948(r16));
};
}
function $mk107593($env) {
return () => {
let env30309;
const r5 = $env.$parent;
const r8 = $env[0];
const r9 = env30309 = {
$parent: r5
};
env30309[0] = r8;
return (0, r5[0])(r5[2][4]).HTTP.get({
url: r5[7].CONNECTION_ACCESS_TOKEN(r5[8].SPOTIFY, r8),
oldFormErrors: true,
rejectWithError: false
}).catch($mk85949(r9)).then($mk85950(r9));
};
}
function $mk107594($env) {
return () => {
let env30310;
const r1 = $env;
const r7 = $env.$parent;
const r6 = r1[0];
const r5 = r1[1];
const connection_id = r1[2];
const r10 = r1[3] - 1;
const r11 = env30310 = {
$parent: r7
};
env30310[0] = r6;
env30310[1] = r5;
env30310[2] = connection_id;
env30310[3] = r10;
return r7[9].put(r6, r5, {
url: r7[5].NOTIFICATIONS_PLAYER,
query: {
connection_id
}
}).catch($mk85951(r11));
};
}
let c7370_9;
let env7370 = {};
const apiRequest = function apiRequest(a0, a1, a2, a3) {
let env18385;
const r2 = env18385 = {
$parent: env7370
};
env18385[0] = a0;
env18385[1] = a1;
env18385[2] = a3;
let r11 = arguments[4];
if (r11 === void 0) {
r11 = 1;
}
env18385[3] = r11;
const r12 = {
...a3,
headers: {
authorization: `Bearer ${a2}`
}
};
env18385[2] = r12;
return a0(r12).then($mk85947()).catch($mk85948(r2));
};
c7370_9 = {
get: apiRequest.bind(null, HTTP.get),
put: apiRequest.bind(null, HTTP.put)
};
export { c7370_9 as SpotifyAPI };
export function getAccessToken(a0) {
let env18386;
const r1 = env18386 = {
$parent: env7370
};
env18386[0] = a0;
return HTTP.get({
url: Endpoints.CONNECTION_ACCESS_TOKEN(PlatformTypes.SPOTIFY, a0),
oldFormErrors: true,
rejectWithError: false
}).catch($mk85949(r1)).then($mk85950(r1));
}
export function subscribePlayerStateNotifications(a0, a1, a2) {
let env18387;
const r2 = env18387 = {
$parent: env7370
};
env18387[0] = a0;
env18387[1] = a1;
env18387[2] = a2;
let r3 = arguments[3];
if (r3 === void 0) {
r3 = 2;
}
env18387[3] = r3;
return c7370_9.put(a0, a1, {
url: SpotifyEndpoints.NOTIFICATIONS_PLAYER,
query: {
connection_id: a2
}
}).catch($mk85951(r2));
}
export function getProfile(a0, a1) {
const accountId = a0;
return c7370_9.get(a0, a1, {
url: SpotifyEndpoints.PROFILE
}).then((result) => {
Dispatcher.dispatch({
type: "SPOTIFY_PROFILE_UPDATE",
accountId,
isPremium: result.body.product === "premium"
});
return result;
});
}
export function getDevices(a0, a1) {
const accountId2 = a0;
return c7370_9.get(a0, a1, {
url: SpotifyEndpoints.PLAYER_DEVICES
}).then((result) => {
if (result.body) {
Dispatcher.dispatch({
type: "SPOTIFY_SET_DEVICES",
accountId: accountId2,
devices: result.body.devices
});
}
return result;
});
}
export function play(a0, a1, a2, a3) {
const id = a2;
let r4 = arguments[4];
if (r4 === void 0) {
r4 = {};
}
const uri = SpotifyEndpoints.PLAYER_OPEN(a3, a2, false);
const { deviceId, position, contextUri, repeat } = r4;
return c7370_9.put(a0, a1, {
url: SpotifyEndpoints.PLAYER_PLAY,
query: {
device_id: deviceId
},
body: {
context_uri: contextUri ?? void 0,
uris: contextUri == null ? [uri] : void 0,
offset: contextUri != null ? {
uri
} : void 0,
position_ms: position != null ? position : 0
}
}).then((result) => repeat != null ? c7370_9.put(a0, a1, {
url: SpotifyEndpoints.PLAYER_REPEAT,
query: {
device_id: deviceId,
state: repeat ? "context" : "off"
}
}) : result).then((result) => {
Dispatcher.dispatch({
type: "SPOTIFY_PLAYER_PLAY",
id,
position: position != null ? position : 0
});
return result;
});
}
export function pause(a0, a1) {
return c7370_9.put(a0, a1, {
url: SpotifyEndpoints.PLAYER_PAUSE
}).then((result) => {
Dispatcher.dispatch({
type: "SPOTIFY_PLAYER_PAUSE"
});
return result;
});
}
export function fetchIsSpotifyProtocolRegistered() {
if (!SpotifyProtocolStore.isProtocolRegistered()) {
if (isDesktop()) {
GameUtils_native.isProtocolRegistered(SPOTIFY_APP_PROTOCOL).then((result) => {
Dispatcher.dispatch({
type: "SPOTIFY_SET_PROTOCOL_REGISTERED",
isRegistered: result
});
});
}
}
}
export function setActiveDevice(a0, a1) {
Dispatcher.dispatch({
type: "SPOTIFY_SET_ACTIVE_DEVICE",
accountId: a0,
deviceId: a1
});
}
+76
View File
@@ -0,0 +1,76 @@
// Metro module 8175 (f8176).
import { PlatformTypes } from "../../Constants";
import Platforms from "../../lib/Platforms";
import { isAndroid } from "../../utils/PlatformUtils";
let c5191_0 = "spotify";
let c5191_1 = "spotify:";
const name = Platforms.get(PlatformTypes.SPOTIFY).name;
let c5191_2 = {
TRACK: "track",
ARTIST: "artist",
ALBUM: "album",
PLAYLIST: "playlist",
EPISODE: "episode",
SHOW: "show"
};
const r36 = {
USER_ACTIVITY_PLAY: "user_activity_play",
USER_ACTIVITY_SYNC: "user_activity_sync",
EMBED_SYNC: "embed_sync"
};
const r85 = Object.freeze({
PROFILE: `https://api.spotify.com/v1/me`,
NOTIFICATIONS_PLAYER: `https://api.spotify.com/v1/me/notifications/player`,
PLAYER: `https://api.spotify.com/v1/me/player`,
PLAYER_DEVICES: `https://api.spotify.com/v1/me/player/devices`,
PLAYER_PLAY: `https://api.spotify.com/v1/me/player/play`,
PLAYER_PAUSE: `https://api.spotify.com/v1/me/player/pause`,
PLAYER_REPEAT: `https://api.spotify.com/v1/me/player/repeat`,
WEB_OPEN: function WEB_OPEN(a0, a1, r4 = "desktop") {
return `https://open.spotify.com/${encodeURIComponent(a0)}/${encodeURIComponent(a1)}${`?utm_source=discord&utm_medium=${r4}`}`;
},
EMBED: function EMBED(a0, r5 = "desktop") {
return `https://open.spotify.com/embed${a0}${`?utm_source=discord&utm_medium=${r5}`}`;
},
PLAYER_OPEN: function PLAYER_OPEN(a0, a1, r3 = true, r10 = "desktop") {
return `${c5191_0}:${encodeURIComponent(a0)}:${encodeURIComponent(a1)}${r3 ? `?utm_source=discord&utm_medium=${r10}` : ""}`;
},
PREMIUM_SITE: `https://www.spotify.com/premium/${`?utm_source=discord&utm_medium=desktop`}`,
INSTALL_ATTRIBUTION: (a0) => `https://app.adjust.com/bdyga9?campaign=${a0}`,
APP_STORE: isAndroid() ? "https://play.google.com/store/apps/details?id=com.spotify.music&hl=en_US&gl=US" : "https://itunes.apple.com/us/app/spotify-music/id324684580?mt=8",
IOS_APP_STORE: "https://itunes.apple.com/us/app/spotify-music/id324684580?mt=8"
});
export const SPOTIFY_APP_PROTOCOL = "spotify";
export const SPOTIFY_PARTY_PREFIX = "spotify:";
export { name as SPOTIFY_PLATFORM_NAME };
export function isSpotifyParty(a0) {
return a0 != null && a0.startsWith(c5191_1);
}
export { c5191_2 as SpotifyResourceTypes };
export { r36 as SpotifyActionTypes };
export const SPOTIFY_HOSTNAMES = ["open.spotify.com", "www.spotify.com"];
export { r85 as SpotifyEndpoints };
export function getSpotifyResourceType(a0) {
if (typeof a0 !== "string") {
return null;
}
if (a0 === "track") {
return c5191_2.TRACK;
}
if (a0 === "artist") {
return c5191_2.ARTIST;
}
if (a0 === "album") {
return c5191_2.ALBUM;
}
if (a0 === "playlist") {
return c5191_2.PLAYLIST;
}
if (a0 === "episode") {
return c5191_2.EPISODE;
}
if (a0 === "show") {
return c5191_2.SHOW;
}
return null;
}
+16
View File
@@ -0,0 +1,16 @@
// Metro module 10942 (f10943).
import Module589 from "../../_bundle/Module589";
import Dispatcher from "../../Dispatcher";
let isRegistered = false;
class SpotifyProtocolStore extends Module589.Store {
static displayName = "SpotifyProtocolStore";
isProtocolRegistered() {
return isRegistered;
}
}
const spotifyProtocolStore = new SpotifyProtocolStore(Dispatcher, {
SPOTIFY_SET_PROTOCOL_REGISTERED: function handleSetProtocolRegistered(a0) {
isRegistered = a0.isRegistered;
}
});
export default spotifyProtocolStore;
File diff suppressed because it is too large. Load diff
+110
View File
@@ -0,0 +1,110 @@
// Metro module 10941 (f10942).
import RunningGameStore_native from "../game_detection/RunningGameStore.native";
import SpotifyProtocolStore from "./SpotifyProtocolStore";
import SpotifyStore from "./SpotifyStore";
import { SPOTIFY_APP_PROTOCOL, SpotifyResourceTypes, getSpotifyResourceType } from "./SpotifyConstants";
import { PlatformTypes } from "../../Constants";
import Durations from "../../utils/Durations";
import Platforms from "../../lib/Platforms";
import { setActiveDevice, getProfile } from "./SpotifyActionCreators";
import { getMetadata } from "../../actions/UserActivityActionCreators";
let c7368_11;
const asString = function asString(a0) {
if (typeof a0 === "string") {
return a0;
}
throw new Error("value is not a string");
};
c7368_11 = 30 * Durations.Millis.SECOND;
export function isSpotifyPlayable(a0) {
return a0.getActiveSocketAndDevice() != null || SpotifyProtocolStore.isProtocolRegistered();
}
export function ensureSpotifyPlayable() {
const activeSocketAndDevice = SpotifyStore.getActiveSocketAndDevice();
if (activeSocketAndDevice != null) {
return Promise.resolve(activeSocketAndDevice);
}
if (SpotifyProtocolStore.isProtocolRegistered()) {
const playableComputerDevices = SpotifyStore.getPlayableComputerDevices();
if (RunningGameStore_native.isObservedAppRunning(Platforms.get(PlatformTypes.SPOTIFY).name) && playableComputerDevices.length > 0) {
const r44 = playableComputerDevices[0];
const { socket: socket3, device: device2 } = r44;
setActiveDevice(socket3.accountId, device2.id);
return Promise.resolve({
socket: socket3,
device: device2
});
}
return new Promise((c26874_0, c26874_1) => {
let c26874_2;
const onSpotifyStoreChange2 = function onSpotifyStoreChange() {
const playableComputerDevices2 = SpotifyStore.getPlayableComputerDevices();
const _loop = function _loop(socket2, device) {
if (playableComputerDevices.find((playableComputerDevice) => playableComputerDevice.device.id === device.id) == null) {
clearTimeout(c26874_2);
SpotifyStore.removeChangeListener(onSpotifyStoreChange2);
setImmediate(() => {
setActiveDevice(socket2.accountId, device.id);
c26874_0({
socket: socket2,
device
});
});
}
};
for (const item of playableComputerDevices2) {
_loop(item.socket, item.device);
}
};
c26874_2 = setTimeout(() => {
SpotifyStore.removeChangeListener(onSpotifyStoreChange2);
c26874_1(new Error("timeout launching spotify"));
}, c7368_11);
SpotifyStore.addChangeListener(onSpotifyStoreChange2);
window.open(`${SPOTIFY_APP_PROTOCOL}:`);
});
}
return Promise.reject(new Error("protocol is not registered"));
}
export function isSpotifyPremium() {
const activeSocketAndDevice = SpotifyStore.getActiveSocketAndDevice();
return activeSocketAndDevice != null ? activeSocketAndDevice.socket.isPremium : null;
}
export function ensureSpotifyPremium() {
const activeSocketAndDevice = SpotifyStore.getActiveSocketAndDevice();
if (activeSocketAndDevice == null) {
return Promise.reject(new Error("no active profile"));
}
const socket = activeSocketAndDevice.socket;
return socket.isPremium ? Promise.resolve() : getProfile(socket.accountId, socket.accessToken).then(() => {
if (socket.isPremium) {
return void 0;
}
return Promise.reject(new Error("spotify account is not premium"));
});
}
export async function getSpotifyMetadataFromActivity(c26873_0, c26873_1) {
let c26873_4;
c26873_4 = void 0;
let c30305_0 = await getMetadata(c26873_0, c26873_1);
const type2 = c30305_0.type;
let type = type2;
if (type2 == null) {
type = SpotifyResourceTypes.TRACK;
}
asString(type);
let c30305_1 = getSpotifyResourceType(type);
if (c30305_1 === null) {
throw new Error(`invalid type ${c30305_0.type}`);
}
const context_uri = typeof c30305_0.context_uri === "string" ? c30305_0.context_uri : void 0;
const album_id = c30305_0.album_id;
asString(album_id);
return {
context_uri,
album_id,
artist_ids: Array.isArray(c30305_0.artist_ids) ? c30305_0.artist_ids.map(asString) : [],
type: c30305_1,
button_urls: Array.isArray(c30305_0.button_urls) ? c30305_0.button_urls.map(asString) : []
};
}