Files
discord-decomp/utils/StreamQualityUtils.tsx
T
2026-11-01 12:12:55 +02:00

97 lines
4.6 KiB
TypeScript

// Metro module 8851 (f8852).
import { useMemo } from "react";
import ApplicationStreamingSettingsStore from "../stores/ApplicationStreamingSettingsStore";
import AuthenticationStore from "../stores/AuthenticationStore";
import GuildStore from "../stores/GuildStore";
import RTCConnectionStore from "../stores/RTCConnectionStore";
import UserStore from "../stores/UserStore";
import { AnalyticEvents } from "../Constants";
import { ApplicationStreamFPS, ApplicationStreamResolutions, ApplicationStreamSettingRequirements, getApplicationFramerate, getApplicationResolution } from "../modules/go_live/StreamSettingsConstants";
import { StreamQualitiesToPremiumType } from "../modules/premium/PremiumConstants";
import { ResolutionTypes } from "../_bundle/Module4250";
import { intl, t } from "../intl/index.native";
import { useStateFromStoresObject, useStateFromStores } from "../_bundle/Module589";
import AnalyticsUtils from "./AnalyticsUtils";
function $mk81482($env) {
return (a0) => {
const r2 = $env;
return (a0.preset == null || a0.preset === r2[0]) && a0.resolution === r2[1] && a0.fps === r2[2];
};
}
export function isPremiumResolution(a0) {
if (a0 != null) {
const r6 = a0.maxResolution.type === ResolutionTypes.SOURCE ? ApplicationStreamResolutions.RESOLUTION_SOURCE : a0.maxResolution.height;
const applicationResolution = getApplicationResolution(r6);
return getApplicationFramerate(a0.maxFrameRate) !== ApplicationStreamFPS.FPS_5 && ApplicationStreamSettingRequirements.find((applicationStreamSettingRequirement) => applicationStreamSettingRequirement.resolution === applicationResolution && applicationStreamSettingRequirement.fps !== ApplicationStreamFPS.FPS_5 && !(applicationStreamSettingRequirement.quality != null || applicationStreamSettingRequirement.guildPremiumTier != null)) == null;
}
}
export function isPremiumFPS(a0) {
if (a0 != null) {
const applicationFramerate = getApplicationFramerate(a0.maxFrameRate);
return ApplicationStreamSettingRequirements.find((applicationStreamSettingRequirement) => applicationStreamSettingRequirement.fps === applicationFramerate && !(applicationStreamSettingRequirement.quality != null || applicationStreamSettingRequirement.guildPremiumTier != null)) == null;
}
}
export function isPremiumRequirement(a0) {
return a0.quality != null || a0.guildPremiumTier != null;
}
export function getPremiumRequirement(a0, a1, a2) {
let env16826;
const r0 = env16826 = {};
env16826[0] = a0;
env16826[1] = a1;
env16826[2] = a2;
return ApplicationStreamSettingRequirements.find($mk81482(r0));
}
export function getResolutionText(a0) {
return a0.type === ResolutionTypes.SOURCE ? intl.string(t.XjXqzh) : intl.formatToPlainString(t.TEOC0I, {
resolution: a0.height
});
}
export function getFPSText(a0) {
return intl.formatToPlainString(t.Qb44XH, {
fps: a0
});
}
export function getMaxQuality(a0) {
return a0.maxResolution == null ? null : a0.maxFrameRate == null ? null : {
maxFrameRate: a0.maxFrameRate,
maxResolution: a0.maxResolution
};
}
export function useMaxQuality(a0) {
let stateFromStores;
const stateFromStoresObject = useStateFromStoresObject([ApplicationStreamingSettingsStore], () => ApplicationStreamingSettingsStore.getState());
stateFromStores = useStateFromStores([AuthenticationStore], () => AuthenticationStore.getId());
return useMemo(() => stateFromStores === a0.user.id ? {
maxFrameRate: stateFromStoresObject.fps,
maxResolution: {
height: stateFromStoresObject.resolution,
width: 0,
type: stateFromStoresObject.resolution === 0 ? ResolutionTypes.SOURCE : ResolutionTypes.FIXED
}
} : a0.maxResolution == null ? null : a0.maxFrameRate == null ? null : {
maxFrameRate: a0.maxFrameRate,
maxResolution: a0.maxResolution
}, [stateFromStores, a0, stateFromStoresObject]);
}
export function trackStreamSettingsUpdate(a0, a1, a2, a3) {
let env16830;
const r3 = env16830 = {};
env16830[0] = a0;
env16830[1] = a1;
env16830[2] = a2;
const r7 = ApplicationStreamSettingRequirements.find($mk81482(r3));
const currentUser = UserStore.getCurrentUser();
const guildId = RTCConnectionStore.getGuildId();
AnalyticsUtils.track(AnalyticEvents.STREAM_SETTINGS_UPDATE, {
user_premium_tier: currentUser?.premiumType,
guild_premium_tier: (guildId != null ? GuildStore.getGuild(guildId) : null)?.premiumTier,
stream_quality_user_premium_tier: r7?.quality != null ? StreamQualitiesToPremiumType[r7.quality] : null,
stream_quality_guild_premium_tier: r7?.guildPremiumTier,
stream_quality_preset: a0,
stream_quality_resolution: a1,
stream_quality_frame_rate: a2,
soundshare_enabled: a3
});
}