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

116 lines
4.8 KiB
TypeScript

// Metro module 16277 (f16278).
import { useCallback, useEffect, useMemo } from "react";
import { View } from "react-native";
import { useContactSyncModalStore } from "../../../contact_sync/native/ContactSyncModalStore";
import UserStore from "../../../../stores/UserStore";
import { ModalAnimation } from "../../../../Constants";
import { createStyles } from "../../../../design/components/Styles/native/createStyles";
import Module712 from "../../../../_bundle/Module712";
import { NAV_BAR_HEIGHT } from "../../../../design/components/Navigator/native/NavigatorConstants.native";
import { useNavigation } from "../../../../design/components/Navigator/native/useNavigation.native";
import { useStateFromStores } from "../../../../_bundle/Module589";
import ContactSyncActionCreators from "../../../contact_sync/native/ContactSyncActionCreators";
import { DiscoverabilityScenes } from "../../../../ConstantsIOS";
import RedesignDiscoverabilityLanding from "./RedesignDiscoverabilityLanding";
import { startContactSyncForDiscoverability } from "../NUFActionCreators";
import ContactSyncNameInput from "../../../contact_sync/native/components/ContactSyncNameInput";
import { ImpressionNames } from "../../../../_bundle/Module503";
import SkipHeaderButton from "./SkipHeaderButton";
import { Navigator } from "../../../../design/components/Navigator/native/Navigator.native";
import { intl, t } from "../../../../intl/index.native";
let useStyles, DiscoverabilityNameScene;
const DiscoverabilityLandingScene = function DiscoverabilityLandingScene(props) {
let allowPhone, name, allowEmail, allowEmail2;
const onComplete = props.onComplete;
allowPhone = void 0;
name = void 0;
allowEmail = void 0;
allowEmail2 = void 0;
const navigation = useNavigation();
const stateFromStores = useStateFromStores([UserStore], () => UserStore.getCurrentUser()?.phone);
const contactSyncModalStore = useContactSyncModalStore();
allowPhone = contactSyncModalStore.allowPhone;
name = contactSyncModalStore.name;
allowEmail = contactSyncModalStore.allowEmail;
allowEmail2 = allowPhone ? allowPhone : allowEmail;
return <RedesignDiscoverabilityLanding onNext={useCallback(() => {
ContactSyncActionCreators.updateDiscoverability({
phone: allowPhone,
email: allowEmail
});
if (allowEmail2 && (stateFromStores != null && (allowPhone && name == null))) {
navigation.push(DiscoverabilityScenes.NAME);
} else {
onComplete();
}
}, [allowPhone, allowEmail, allowEmail2, stateFromStores, name, navigation, onComplete])} />;
};
DiscoverabilityNameScene = function DiscoverabilityNameScene(props) {
const onComplete2 = props.onComplete;
const styles = useStyles();
const contactSyncModalStore = useContactSyncModalStore();
let name2 = contactSyncModalStore.name;
const allowPhone2 = contactSyncModalStore.allowPhone;
useEffect(() => {
if (!allowPhone2) {
onComplete2();
}
}, [allowPhone2, onComplete2]);
const callback = useCallback((a0) => {
startContactSyncForDiscoverability(a0);
onComplete2();
}, [onComplete2]);
if (name2 == null) {
name2 = "";
}
return <View style={styles.container}>
<ContactSyncNameInput onNext={callback} loading={false} initialName={name2} />
</View>;
};
const RedesignDiscoverabilityModal = function RedesignDiscoverabilityModal(props) {
const onComplete3 = props.route.params.onComplete;
return <Navigator headerStyle={useStyles().header} screens={useMemo(() => {
let r8 = onComplete3;
if (onComplete3 == null) {
r8 = () => {};
}
const onComplete4 = r8;
const r10 = {};
r10[DiscoverabilityScenes.LANDING] = {
ignoreKeyboard: true,
impressionName: ImpressionNames.DISCOVERABILITY,
fullscreen: true,
headerLeft: () => null,
headerTitle: () => null,
headerRight: (a0) => <SkipHeaderButton insideNavigator {...a0} onPress={() => onComplete4(true)} />,
render: () => <DiscoverabilityLandingScene onComplete={onComplete4} />
};
r10[DiscoverabilityScenes.NAME] = {
ignoreKeyboard: true,
impressionName: ImpressionNames.DISCOVERABILITY,
fullscreen: true,
headerTitle: () => null,
render: () => <DiscoverabilityNameScene onComplete={onComplete4} />
};
return r10;
}, [onComplete3])} initialRouteName={DiscoverabilityScenes.LANDING} headerBackTitle={intl.string(t["13/7kX"])} />;
};
useStyles = createStyles({
header: {
borderBottomWidth: 0,
backgroundColor: Module712.colors.BACKGROUND_BASE_LOW,
shadowColor: "transparent"
},
container: {
flex: 1,
backgroundColor: Module712.colors.BACKGROUND_BASE_LOW,
justifyContent: "center",
paddingBottom: 44,
paddingTop: NAV_BAR_HEIGHT + 32
}
});
RedesignDiscoverabilityModal.modalConfig = {
animation: ModalAnimation.SLIDE_IN_OUT
};
export default RedesignDiscoverabilityModal;