116 lines
5.7 KiB
TypeScript
116 lines
5.7 KiB
TypeScript
// Metro module 5137 (f5138).
|
|
import { useCallback, useEffect, useMemo } from "react";
|
|
import MemberVerificationFormStore from "../../guild_member_verification/MemberVerificationFormStore";
|
|
import ChannelStore from "../../../stores/ChannelStore";
|
|
import GuildStore from "../../../stores/GuildStore";
|
|
import SelectedChannelStore from "../../../stores/SelectedChannelStore";
|
|
import GuildOnboardingPromptsStore from "../GuildOnboardingPromptsStore";
|
|
import { GuildOnboardingModalStates } from "./GuildOnboardingConstants";
|
|
import { GuildFeatures, Routes } from "../../../Constants";
|
|
import { transitionTo } from "../../routing/router_utils";
|
|
import GuildOnboardingPrompts from "./GuildOnboardingPrompts";
|
|
import { getHeaderCloseButton } from "../../../design/components/Navigator/native/NavigatorHeader.native";
|
|
import GuildOnboardingConnectionPrompt from "./GuildOnboardingConnectionPrompt";
|
|
import { showRulesInOnboarding } from "../GuildOnboardingUtils";
|
|
import GuildOnboardingCompleted from "./GuildOnboardingCompleted";
|
|
import { RulesPrompt } from "./GuildOnboardingPrompt";
|
|
import { useStateFromStores, useStateFromStoresArray } from "../../../_bundle/Module589";
|
|
import GuildOnboardingActionCreators from "../GuildOnboardingActionCreators";
|
|
import MemberVerificationActionCreators from "../../guild_member_verification/MemberVerificationActionCreators";
|
|
import { Navigator } from "../../../design/components/Navigator/native/Navigator.native";
|
|
import { intl, t } from "../../../intl/index.native";
|
|
let headerRight;
|
|
const headerTitle = function headerTitle() {
|
|
return null;
|
|
};
|
|
headerRight = function headerRight() {
|
|
return null;
|
|
};
|
|
export default function GuildOnboardingModal(props) {
|
|
let stateFromStoresArray, callback, callback2;
|
|
const { guildId, onFinish, onClose: onClose2, landingAnimation, isFirstOpen, backShouldLeaveGuild } = props;
|
|
stateFromStoresArray = void 0;
|
|
callback = void 0;
|
|
callback2 = void 0;
|
|
const stateFromStores = useStateFromStores([GuildStore], () => {
|
|
const guild2 = GuildStore.getGuild(guildId);
|
|
return guild2 != null && (guild2.features.has(GuildFeatures.MEMBER_VERIFICATION_GATE_ENABLED) && !guild2.features.has(GuildFeatures.MEMBER_VERIFICATION_MANUAL_APPROVAL));
|
|
});
|
|
stateFromStoresArray = useStateFromStoresArray([GuildOnboardingPromptsStore], () => GuildOnboardingPromptsStore.getOnboardingPromptsForOnboarding(guildId));
|
|
const stateFromStores2 = useStateFromStores([GuildOnboardingPromptsStore], () => GuildOnboardingPromptsStore.getOnboardingConnections(guildId));
|
|
callback = useCallback((a0, a1, a2) => {
|
|
GuildOnboardingActionCreators.selectOption(guildId, a0, a1, a2);
|
|
}, [guildId]);
|
|
callback2 = useCallback(() => {
|
|
GuildOnboardingActionCreators.completeOnboarding(guildId, stateFromStoresArray);
|
|
}, [guildId, stateFromStoresArray]);
|
|
useEffect(() => {
|
|
if (stateFromStores) {
|
|
MemberVerificationActionCreators.fetchVerificationForm(guildId);
|
|
}
|
|
}, [guildId, stateFromStores]);
|
|
return <Navigator screens={useMemo(() => {
|
|
const guildId2 = guildId;
|
|
const stateFromStoresArray2 = stateFromStoresArray;
|
|
const callback3 = callback;
|
|
const callback4 = callback2;
|
|
const onFinish2 = onFinish;
|
|
const onClose3 = onClose2;
|
|
const landingAnimation2 = landingAnimation;
|
|
const isFirstOpen2 = isFirstOpen;
|
|
const backShouldLeaveGuild2 = backShouldLeaveGuild;
|
|
const guild = GuildStore.getGuild(guildId);
|
|
const rulesPrompt = MemberVerificationFormStore.getRulesPrompt(guildId);
|
|
const r19 = {};
|
|
r19[GuildOnboardingModalStates.PROMPT] = {
|
|
fullscreen: true,
|
|
headerTitle,
|
|
headerRight,
|
|
render: (a0) => {
|
|
let currentPromptIdx = a0?.currentPrompt;
|
|
if (currentPromptIdx == null) {
|
|
currentPromptIdx = 0;
|
|
}
|
|
return <GuildOnboardingPrompts guildId={guildId2} currentPromptIdx={currentPromptIdx} prompts={stateFromStoresArray2} selectOption={callback3} onClose={onClose3} landingAnimation={landingAnimation2} isFirstOpen={isFirstOpen2} backShouldLeaveGuild={backShouldLeaveGuild2} />;
|
|
}
|
|
};
|
|
r19[GuildOnboardingModalStates.CONNECTIONS] = {
|
|
fullscreen: true,
|
|
headerTitle,
|
|
headerRight,
|
|
headerLeft: getHeaderCloseButton(() => {
|
|
if (backShouldLeaveGuild2) {
|
|
const channel = ChannelStore.getChannel(SelectedChannelStore.getLastSelectedChannelId());
|
|
if (channel != null && channel.guild_id !== guildId2) {
|
|
transitionTo(Routes.CHANNEL(channel.guild_id, channel.id));
|
|
} else {
|
|
transitionTo(Routes.ME, {
|
|
navigationReplace: true
|
|
});
|
|
}
|
|
onClose3();
|
|
} else {
|
|
onClose3();
|
|
}
|
|
}),
|
|
render: () => <GuildOnboardingConnectionPrompt guildId={guildId2} isLastStep={stateFromStoresArray2.length === 0 && !showRulesInOnboarding(guild, rulesPrompt)} onComplete={callback4} />
|
|
};
|
|
r19[GuildOnboardingModalStates.COMPLETED] = {
|
|
fullscreen: true,
|
|
headerTitle,
|
|
headerRight,
|
|
render: () => <GuildOnboardingCompleted guildId={guildId2} prompts={stateFromStoresArray2} completeOnboarding={callback4} onClose={() => {
|
|
onClose3();
|
|
onFinish2();
|
|
}} />
|
|
};
|
|
r19[GuildOnboardingModalStates.RULES] = {
|
|
fullscreen: true,
|
|
headerTitle,
|
|
headerRight,
|
|
render: () => <RulesPrompt guildId={guildId2} onClose={onClose3} />
|
|
};
|
|
return r19;
|
|
}, [guildId, stateFromStoresArray, stateFromStores2, callback, callback2, onFinish, onClose2, landingAnimation, isFirstOpen, backShouldLeaveGuild])} initialRouteName={isFirstOpen && stateFromStores2.length > 0 ? GuildOnboardingModalStates.CONNECTIONS : GuildOnboardingModalStates.PROMPT} headerBackTitle={intl.string(t["13/7kX"])} />;
|
|
};
|