Files
discord-decomp/modules/nuf/native/components/NewUserModal.tsx
T
2026-11-01 12:12:55 +02:00

99 lines
4.5 KiB
TypeScript

// Metro module 16274 (f16275).
import { useState, useRef, useCallback, lazy } from "react";
import { NativeModules } from "react-native";
import { jsx } from "react/jsx-runtime";
import { createNativeStackNavigator } from "../../../../_bundle/Module9109";
import { createStyles } from "../../../../design/components/Styles/native/createStyles";
import Module712 from "../../../../_bundle/Module712";
import { openAlert } from "../../../../design/components/AlertModal/native/useAlertStore.native";
import { useAccessibilityNativeStackOptions } from "../../../../design/components/Navigator/native/Navigator.native";
import { getNextOnboardingStep, continueToNextStep } from "../NewUserUtils";
import ModalActionCreators from "../../../../actions/ModalActionCreators";
import { NEW_USER_MODAL_KEY } from "./NewUserModalTypes";
import { useNavigatorBackPressHandler } from "../../../../design/components/Navigator/native/useNavigatorBackPressHandler.native";
import { isAndroid } from "../../../../utils/PlatformUtils";
import { RedesignNotificationScreen } from "./notification/RedesignNotificationModal";
import * as _RedesignAddAvatarModal from "../../../avatar/native/components/RedesignAddAvatarModal";
import SkipHeaderButton from "./SkipHeaderButton";
import { ContactSyncOnboardingModal } from "../../../contact_sync/native/components/RedesignContactSyncModal";
import * as _RedesignDiscoverabilityModal from "./RedesignDiscoverabilityModal";
import * as _ConnectGuardianModal from "./ConnectGuardianModal";
const nativeStackNavigator = createNativeStackNavigator();
const useStyles = createStyles({
header: {
borderBottomWidth: 0,
backgroundColor: Module712.colors.BACKGROUND_BASE_LOW,
shadowColor: "transparent"
}
});
export default function NewUserModal(props) {
let initialRouteName = props.initialRouteName;
const initialOnboardingStepIndex = props.initialOnboardingStepIndex;
const styles = useStyles();
const [state, setState] = useState(initialOnboardingStepIndex);
const [state2, setState2] = useState(initialOnboardingStepIndex);
const ref = useRef(null);
const accessibilityNativeStackOptions = useAccessibilityNativeStackOptions();
const callback = useCallback((a0) => {
getNextOnboardingStep(a0 == null ? false : a0, state2, state).then(({ lastShownStepIndex, onboardingStepIndex, continueNavigation }) => {
setState(onboardingStepIndex);
setState2(lastShownStepIndex);
if (continueNavigation && ref.current != null) {
continueToNextStep(onboardingStepIndex, ref.current);
} else {
ModalActionCreators.popWithKey(NEW_USER_MODAL_KEY);
}
});
}, [state2, state]);
useNavigatorBackPressHandler(() => {
NativeModules.MinimizeApp.minimizeApp();
return true;
});
const Navigator = nativeStackNavigator.Navigator;
if (initialRouteName == null) {
initialRouteName = "choose-avatar";
}
return <Navigator screenOptions={(a0) => {
ref.current = a0.navigation;
return {
headerStyle: styles.header,
headerShadowVisible: false,
title: "",
headerLeft: () => null,
headerRight: () => null,
fullScreenGestureEnabled: false,
presentation: isAndroid() ? "transparentModal" : "card",
animation: "slide_from_right",
headerBackVisible: false,
...accessibilityNativeStackOptions
};
}} initialRouteName={initialRouteName}>
<nativeStackNavigator.Screen name="enable-notification" getComponent={() => RedesignNotificationScreen} initialParams={{
onComplete: callback
}} />
<nativeStackNavigator.Screen name="choose-avatar" getComponent={() => _RedesignAddAvatarModal.default} options={() => ({
headerRight: (a0) => <SkipHeaderButton {...a0} onPress={() => {
const callback2 = callback;
openAlert("skip-avatar-upload", jsx(lazy(() => import("../../../avatar/native/components/RedesignSkipAvatarUploadAlertModal")), {
onConfirm: () => callback2(true)
}));
}} />
})} initialParams={{
onComplete: callback
}} />
<nativeStackNavigator.Screen name="contact-sync" options={{
headerShown: false
}} getComponent={() => ContactSyncOnboardingModal} initialParams={{
onComplete: callback
}} />
<nativeStackNavigator.Screen name="discoverability" options={{
headerShown: false
}} getComponent={() => _RedesignDiscoverabilityModal.default} initialParams={{
onComplete: callback
}} />
<nativeStackNavigator.Screen name="connect-guardian" getComponent={() => _ConnectGuardianModal.default} initialParams={{
onComplete: callback
}} />
</Navigator>;
};