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

96 lines
4.0 KiB
TypeScript

// Metro module 11850 (f11851).
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 { closeDiscoverabilityModal, startContactSyncForDiscoverability } from "../NUFActionCreators";
import DiscoverabilityLanding from "./DiscoverabilityLanding";
import ContactSyncNameInput from "../../../contact_sync/native/components/ContactSyncNameInput";
import { ImpressionNames } from "../../../../_bundle/Module503";
import { Navigator } from "../../../../design/components/Navigator/native/Navigator.native";
import { intl, t } from "../../../../intl/index.native";
let useStyles, DiscoverabilityNameScene;
const DiscoverabilityLandingScene = function DiscoverabilityLandingScene() {
let allowPhone, allowEmail, allowEmail2;
const navigation = useNavigation();
const stateFromStores = useStateFromStores([UserStore], () => UserStore.getCurrentUser()?.phone);
const contactSyncModalStore = useContactSyncModalStore();
allowPhone = contactSyncModalStore.allowPhone;
allowEmail = contactSyncModalStore.allowEmail;
allowEmail2 = allowPhone ? allowPhone : allowEmail;
return <DiscoverabilityLanding onNext={useCallback(() => {
ContactSyncActionCreators.updateDiscoverability({
phone: allowPhone,
email: allowEmail
});
if (allowEmail2 && (stateFromStores != null && allowPhone)) {
navigation.push(DiscoverabilityScenes.NAME);
} else {
closeDiscoverabilityModal(false);
}
}, [navigation, stateFromStores, allowEmail, allowPhone, allowEmail2])} />;
};
DiscoverabilityNameScene = function DiscoverabilityNameScene() {
const styles = useStyles();
const contactSyncModalStore = useContactSyncModalStore();
let name = contactSyncModalStore.name;
const allowPhone2 = contactSyncModalStore.allowPhone;
useEffect(() => {
if (!allowPhone2) {
closeDiscoverabilityModal(false);
}
}, [allowPhone2]);
const callback = useCallback((a0) => {
startContactSyncForDiscoverability(a0);
closeDiscoverabilityModal(false);
}, []);
if (name == null) {
name = "";
}
return <View style={styles.container}>
<ContactSyncNameInput onNext={callback} loading={false} initialName={name} />
</View>;
};
const DiscoverabilityModal = function DiscoverabilityModal() {
return <Navigator screens={useMemo(() => {
const r1 = {};
r1[DiscoverabilityScenes.LANDING] = {
ignoreKeyboard: true,
impressionName: ImpressionNames.DISCOVERABILITY,
fullscreen: true,
headerLeft: () => null,
headerTitle: () => null,
render: () => <DiscoverabilityLandingScene />
};
r1[DiscoverabilityScenes.NAME] = {
ignoreKeyboard: true,
impressionName: ImpressionNames.DISCOVERABILITY,
fullscreen: true,
headerTitle: () => null,
render: () => <DiscoverabilityNameScene />
};
return r1;
}, [])} initialRouteName={DiscoverabilityScenes.LANDING} headerBackTitle={intl.string(t["13/7kX"])} />;
};
useStyles = createStyles({
container: {
flex: 1,
backgroundColor: Module712.colors.BACKGROUND_BASE_LOW,
justifyContent: "center",
paddingBottom: 44,
paddingTop: NAV_BAR_HEIGHT + 32
}
});
DiscoverabilityModal.modalConfig = {
animation: ModalAnimation.SLIDE_IN_OUT
};
export default DiscoverabilityModal;