Files
discord-decomp/modules/guild_profile/hooks/useGuildProfileCTA.tsx
T
2026-11-01 12:12:55 +02:00

191 lines
7.4 KiB
TypeScript

// Metro module 10983 (f10984).
import { useMemo } from "react";
import AuthenticationStore from "../../../stores/AuthenticationStore";
import GuildMemberStore from "../../../stores/GuildMemberStore";
import GuildStore from "../../../stores/GuildStore";
import InviteStore from "../../../stores/InviteStore";
import UserStore from "../../../stores/UserStore";
import { GuildFeatures, InviteStates } from "../../../Constants";
import { useStateFromStores, useStateFromStoresObject } from "../../../_bundle/Module589";
import { hasFlag } from "../../../_bundle/Module1384";
import { GuildInviteFlags } from "../../../_bundle/Module6709";
import usePendingFolderGuildIds, { getPendingFolderGuildIds } from "../../guilds_bar/usePendingFolderGuildIds";
import { guildSupportsTags } from "../../guild_tag/GuildTagUtils";
import { GuildProfileVisibility } from "../GuildProfileTypes";
let c7398_11 = {
IS_MEMBER: 0,
0: "IS_MEMBER",
ADOPT_TAG: 1,
1: "ADOPT_TAG",
HAS_APPLICATION: 2,
2: "HAS_APPLICATION",
APPLY_TO_JOIN: 3,
3: "APPLY_TO_JOIN",
LURK_DISCOVERABLE: 4,
4: "LURK_DISCOVERABLE",
JOIN_VIA_INVITE: 5,
5: "JOIN_VIA_INVITE",
ACCEPT_ROLES: 6,
6: "ACCEPT_ROLES"
};
let c7398_12 = {
INVITE: "INVITE"
};
export default function useGuildProfileCTA(a0, a1, a2) {
let stateFromStores2, stateFromStores3, stateFromStores4, validInviteKey, isBypassInvite, inviteRoles, c18428_12;
const { id, features } = a0;
const stateFromStores = useStateFromStores([AuthenticationStore], () => AuthenticationStore.getId());
stateFromStores2 = useStateFromStores([GuildStore], () => GuildStore.getGuild(id));
stateFromStores3 = useStateFromStores([UserStore], () => UserStore.getUser(stateFromStores), [stateFromStores]);
stateFromStores4 = useStateFromStores([GuildMemberStore], () => (id != null ? GuildMemberStore.getMember(id, stateFromStores) : null)?.joinedAt != null, [id, stateFromStores]);
const stateFromStoresObject = useStateFromStoresObject([InviteStore], () => {
let r20;
let validInviteKey2 = a2;
if (validInviteKey2 == null) {
validInviteKey2 = InviteStore.getInviteKeyForGuildId(id);
}
const r12 = validInviteKey2 != null ? InviteStore.getInvite(validInviteKey2) : null;
if (r12 != null && (r12.state !== InviteStates.BANNED && r12.state !== InviteStates.EXPIRED)) {
let flags = r12.flags;
if (flags == null) {
flags = 0;
}
r20 = {
validInviteKey: validInviteKey2,
isBypassInvite: hasFlag(flags, GuildInviteFlags.IS_APPLICATION_BYPASS),
inviteRoles: r12.roles
};
} else {
r20 = {
validInviteKey: null,
isBypassInvite: false,
inviteRoles: null
};
}
return r20;
}, [id, a2]);
validInviteKey = stateFromStoresObject.validInviteKey;
isBypassInvite = stateFromStoresObject.isBypassInvite;
inviteRoles = stateFromStoresObject.inviteRoles;
const pendingFolderGuildIds = usePendingFolderGuildIds();
c18428_12 = pendingFolderGuildIds;
return {
guildId: id,
ctaType: useMemo(() => {
let HAS_APPLICATION;
if (stateFromStores4) {
if (a1 === c7398_12.INVITE && inviteRoles != null && inviteRoles.length > 0 && stateFromStores3 != null) {
const member = GuildMemberStore.getMember(id, stateFromStores3.id);
const r69 = Set;
let r71 = member?.roles;
if (r71 == null) {
r71 = [];
}
let c26896_0 = new r69(r71);
if (inviteRoles.some((inviteRole) => !c26896_0.has(inviteRole.id))) {
return c7398_11.ACCEPT_ROLES;
}
}
const primaryGuild = stateFromStores3?.primaryGuild;
const r86 = primaryGuild?.identityGuildId === id && primaryGuild?.identityEnabled === true;
return a1 !== c7398_12.INVITE && (a0.tag != null && (!r86 && (stateFromStores2 != null && guildSupportsTags(stateFromStores2)))) ? c7398_11.ADOPT_TAG : c7398_11.IS_MEMBER;
}
L22: {
if (c18428_12.includes(id)) {
HAS_APPLICATION = c7398_11.HAS_APPLICATION;
} else {
const r20 = features == null ? void 0 : features.includes(GuildFeatures.MEMBER_VERIFICATION_GATE_ENABLED);
L12: {
if (r20 && (features == null ? void 0 : features.includes(GuildFeatures.MEMBER_VERIFICATION_MANUAL_APPROVAL))) {
if (validInviteKey == null && a0.visibility !== GuildProfileVisibility.PUBLIC_WITH_RECRUITMENT) {
break L12;
}
if (!isBypassInvite) {
HAS_APPLICATION = c7398_11.APPLY_TO_JOIN;
break L22;
}
}
}
HAS_APPLICATION = validInviteKey != null ? c7398_11.JOIN_VIA_INVITE : (features == null ? void 0 : features.includes(GuildFeatures.DISCOVERABLE)) ? c7398_11.LURK_DISCOVERABLE : null;
}
}
return HAS_APPLICATION;
}, [stateFromStores4, pendingFolderGuildIds, id, features, validInviteKey, a0.visibility, a0.tag, isBypassInvite, a1, stateFromStores2, inviteRoles, stateFromStores3]),
validInviteKey
};
};
export { c7398_11 as CTATypes };
export { c7398_12 as GuildProfileCTAContext };
export function getGuildProfileCTAType(a0, a1) {
let HAS_APPLICATION;
const { id: id2, features: features2 } = a0;
const id3 = AuthenticationStore.getId();
const user = UserStore.getUser(id3);
const joinedAt = (id2 != null ? GuildMemberStore.getMember(id2, id3) : null)?.joinedAt;
let r29 = a1;
const r30 = joinedAt != null;
if (a1 == null) {
r29 = InviteStore.getInviteKeyForGuildId(id2);
}
const r33 = r29 != null ? InviteStore.getInvite(r29) : null;
const r5 = r33 == null;
let r36 = false;
let r37 = null;
if (!r5) {
const state = r33.state;
const BANNED = InviteStates.BANNED;
r36 = false;
r37 = null;
if (state !== BANNED) {
const state2 = r33.state;
const EXPIRED = InviteStates.EXPIRED;
r36 = false;
r37 = null;
if (state2 !== EXPIRED) {
let flags = r33.flags;
if (flags == null) {
flags = 0;
}
r36 = hasFlag(flags, GuildInviteFlags.IS_APPLICATION_BYPASS);
r37 = r29;
}
}
}
const pendingFolderGuildIds = getPendingFolderGuildIds();
if (r30) {
if (r33?.roles != null && r33.roles.length > 0 && user != null) {
const member = GuildMemberStore.getMember(id2, user.id);
const r91 = Set;
let r93 = member?.roles;
if (r93 == null) {
r93 = [];
}
let c18429_0 = new r91(r93);
if (r33.roles.some((role) => !c18429_0.has(role.id))) {
return c7398_11.ACCEPT_ROLES;
}
}
return c7398_11.IS_MEMBER;
}
L36: {
if (pendingFolderGuildIds.includes(id2)) {
HAS_APPLICATION = c7398_11.HAS_APPLICATION;
} else {
const r57 = features2 == null ? void 0 : features2.includes(GuildFeatures.MEMBER_VERIFICATION_GATE_ENABLED);
L26: {
if (r57 && (features2 == null ? void 0 : features2.includes(GuildFeatures.MEMBER_VERIFICATION_MANUAL_APPROVAL))) {
if (r37 == null && a0.visibility !== GuildProfileVisibility.PUBLIC_WITH_RECRUITMENT) {
break L26;
}
if (!r36) {
HAS_APPLICATION = c7398_11.APPLY_TO_JOIN;
break L36;
}
}
}
HAS_APPLICATION = r37 != null ? c7398_11.JOIN_VIA_INVITE : (features2 == null ? void 0 : features2.includes(GuildFeatures.DISCOVERABLE)) ? c7398_11.LURK_DISCOVERABLE : null;
}
}
return HAS_APPLICATION;
}