// Metro module 11956 (f11957).
import { useCallback, useMemo } from "react";
import { AnalyticsObjects, JoinGuildSources } from "../../../../Constants";
import { ProfileCustomizationScrollPositions } from "../../../user_settings/UserSettingsConstants";
import useGuildProfileCTA, { CTATypes } from "../../hooks/useGuildProfileCTA";
import useOpenProfileSettings from "../../../profile_customization/useOpenProfileSettings";
import ActionSheetActionCreators from "../../../action_sheet/native/ActionSheetActionCreators";
import { transitionToGuild } from "../../../routing/transitionToGuild.native";
import InstantInviteActionCreators from "../../../../actions/InstantInviteActionCreators";
import useGetJoinRequestGuild from "../../../guild_member_verification/hooks/useGetJoinRequestGuild";
import { GuildJoinRequestApplicationStatuses } from "../../../guild_member_verification/MemberVerificationTypes";
import { openMemberVerificationPendingAlert, openMemberVerificationRejectedAlert, openMemberVerificationIncompleteAlert } from "../../../guild_member_verification/native/MemberVerificationAlertActionCreators";
import { GuildProfileVisibility } from "../../GuildProfileTypes";
import { openMemberVerificationModal } from "../../../guild_member_verification/MemberVerificationModalActionCreators";
import { startLurking } from "../../../../utils/GuildDiscoveryUtils";
import LurkerServerPreviewJoinButton from "../../../lurker_mode/native/LurkerServerPreviewJoinButton";
import { Button } from "../../../../design/components/Button/native/Button.native";
import { intl, t } from "../../../../intl/index.native";
export default function GuildProfileCTA(props) {
let callback, c19290_5;
const { profile, context, inviteKey, isLurkerServerPreview = false } = props;
callback = void 0;
c19290_5 = void 0;
const guildProfileCTA = useGuildProfileCTA(profile, context, inviteKey);
const { guildId, validInviteKey, ctaType } = guildProfileCTA;
let c19290_3 = useOpenProfileSettings({
scrollPosition: ProfileCustomizationScrollPositions.GUILD_TAG
});
const callback2 = useCallback(() => {
ActionSheetActionCreators.hideActionSheet(`GuildProfileActionSheet:${guildId}`);
transitionToGuild(guildId);
}, [guildId]);
callback = useCallback(() => {
if (validInviteKey != null) {
ActionSheetActionCreators.hideActionSheet(`GuildProfileActionSheet:${guildId}`);
InstantInviteActionCreators.acceptInviteAndTransitionToInviteChannel({
inviteKey: validInviteKey,
context: {
location: "guild_profile"
}
});
}
}, [guildId, validInviteKey]);
const getJoinRequestGuild = useGetJoinRequestGuild(guildId);
c19290_5 = getJoinRequestGuild;
const callback3 = useCallback(() => {
const applicationStatus = c19290_5?.applicationStatus;
if (GuildJoinRequestApplicationStatuses.SUBMITTED === applicationStatus) {
openMemberVerificationPendingAlert(guildId);
} else if (GuildJoinRequestApplicationStatuses.REJECTED === applicationStatus) {
openMemberVerificationRejectedAlert({
guildId,
canWithdraw: true
});
} else if (GuildJoinRequestApplicationStatuses.STARTED === applicationStatus) {
openMemberVerificationIncompleteAlert(guildId);
}
}, [guildId, getJoinRequestGuild?.applicationStatus]);
const callback4 = useCallback(() => {
ActionSheetActionCreators.hideActionSheet(`GuildProfileActionSheet:${guildId}`);
if (profile.visibility !== GuildProfileVisibility.PUBLIC_WITH_RECRUITMENT && validInviteKey != null) {
callback();
} else {
openMemberVerificationModal(guildId);
}
}, [guildId, callback, profile.visibility, validInviteKey]);
const callback5 = useCallback(() => {
ActionSheetActionCreators.hideActionSheet(`GuildProfileActionSheet:${guildId}`);
startLurking(guildId, {
object: AnalyticsObjects.GUILD_PROFILE
});
}, [guildId]);
const memo = useMemo(() => ({
grow: true,
size: "lg",
variant: "active"
}), []);
if (isLurkerServerPreview) {
return ;
}
if (CTATypes.IS_MEMBER === ctaType) {
return ;
}
if (CTATypes.ADOPT_TAG === ctaType) {
return ;
}
if (CTATypes.HAS_APPLICATION === ctaType) {
return ;
}
if (CTATypes.APPLY_TO_JOIN === ctaType) {
return ;
}
if (CTATypes.LURK_DISCOVERABLE === ctaType) {
return ;
}
if (CTATypes.JOIN_VIA_INVITE === ctaType) {
return ;
}
if (CTATypes.ACCEPT_ROLES === ctaType) {
return ;
}
return null;
};