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

125 lines
4.1 KiB
TypeScript

// Metro module 6010 (f6011).
import GameConsoleStore from "../../game_console/GameConsoleStore";
import { ChannelRecordBase } from "../../../records/ChannelRecord";
import { GUILD_VOCAL_CHANNELS_KEY } from "../../../stores/GuildChannelStore";
import GuildStore from "../../../stores/GuildStore";
import PermissionStore from "../../../stores/PermissionStore";
import VoiceStateStore from "../../../stores/VoiceStateStore";
import { Permissions } from "../../../Constants";
import canJoinVoiceChannel from "../../channel/canJoinVoiceChannel";
import { intl, t } from "../../../intl/index.native";
import { isChannelFull } from "../../../utils/ChannelUtils";
import { shouldAgeVerifyForAgeGate, shouldShowAgeGateForChannelId } from "../../age_gate/AgeGateUtils";
import { useStateFromStoresArray } from "../../../_bundle/Module589";
let c3803_11, canWatchStream;
const canStreamInChannel = function canStreamInChannel(a0, a1, a2, r9 = true) {
if (a0.isPrivate()) {
return true;
}
const guild = a1.getGuild(a0.getGuildId());
let r17 = guild?.maxStageVideoChannelUsers;
if (r17 == null) {
r17 = 0;
}
const r19 = a0.isGuildStageVoice() && r17 <= 0;
let r20 = !r19;
if (!r19) {
if (r9) {
r9 = !canJoinVoiceChannel(a0, a2);
}
r20 = r9 ? !r9 : !!a2.can(Permissions.STREAM, a0) && (guild != null && guild.afkChannelId !== a0.id);
}
return r20;
};
canWatchStream = function canWatchStream(basicChannel2, a1, a2, a3, a4) {
let REMOTE_MODE;
if (basicChannel2 == null) {
return [false, c3803_11.NO_PERMISSION];
}
let r12 = a1.isInChannel(basicChannel2.id);
const r8 = basicChannel2 instanceof ChannelRecordBase && isChannelFull(basicChannel2, a1, a2);
let r23 = canJoinVoiceChannel(basicChannel2, a3);
const r26 = a4.getAwaitingRemoteSessionInfo() != null || a4.getRemoteSessionId() != null;
const r33 = shouldAgeVerifyForAgeGate() && shouldShowAgeGateForChannelId(basicChannel2.id);
L18: {
if (r26) {
REMOTE_MODE = c3803_11.REMOTE_MODE;
} else if (r33) {
REMOTE_MODE = c3803_11.AGE_RESTRICTED;
} else {
if (!r23 && !r12) {
REMOTE_MODE = c3803_11.NO_PERMISSION;
break L18;
}
REMOTE_MODE = r8 && !r12 ? c3803_11.CHANNEL_FULL : void 0;
}
}
let r44 = r26 ? !r26 : !r33;
if (r44) {
if (!r12) {
if (r23) {
r23 = !r8;
}
r12 = r23;
}
r44 = r12;
}
return [r44, REMOTE_MODE];
};
c3803_11 = {
REMOTE_MODE: 0,
0: "REMOTE_MODE",
CHANNEL_FULL: 1,
1: "CHANNEL_FULL",
NO_PERMISSION: 2,
2: "NO_PERMISSION",
AGE_RESTRICTED: 3,
3: "AGE_RESTRICTED"
};
export { canStreamInChannel };
export function getStreamCTAString(a0) {
if (c3803_11.REMOTE_MODE === a0) {
return intl.string(t["1i3tSY"]);
}
if (c3803_11.CHANNEL_FULL === a0) {
return intl.string(t.elyVbv);
}
if (c3803_11.NO_PERMISSION === a0) {
return intl.string(t.pgUTZC);
}
if (c3803_11.AGE_RESTRICTED === a0) {
return intl.string(t.b5FqhF);
}
return intl.string(t["7Xq/nV"]);
}
export function getStreamCTAAriaLabel(a0) {
if (c3803_11.REMOTE_MODE === a0) {
return `${intl.string(t["7Xq/nV"])}: ${intl.string(t["1i3tSY"])}`;
}
if (c3803_11.CHANNEL_FULL === a0) {
return `${intl.string(t["7Xq/nV"])}: ${intl.string(t.elyVbv)}`;
}
if (c3803_11.NO_PERMISSION === a0) {
return `${intl.string(t["7Xq/nV"])}: ${intl.string(t.pgUTZC)}`;
}
if (c3803_11.AGE_RESTRICTED === a0) {
return `${intl.string(t["7Xq/nV"])}: ${intl.string(t.b5FqhF)}`;
}
return `${intl.string(t["7Xq/nV"])}: ${intl.string(t["9C444m"])}`;
}
export { c3803_11 as StreamUnavailableReasons };
export { canWatchStream };
export function useCanWatchStream(c15361_0) {
return useStateFromStoresArray([VoiceStateStore, GuildStore, PermissionStore, GameConsoleStore], () => canWatchStream(c15361_0, VoiceStateStore, GuildStore, PermissionStore, GameConsoleStore));
}
export function getStreamEligibleChannels(a0, a1, a2) {
const r0 = [];
for (const item of a0[GUILD_VOCAL_CHANNELS_KEY]) {
const channel = item.channel;
if (canStreamInChannel(channel, a1, a2)) {
r0.push(channel);
}
}
return r0;
}