195 lines
7.1 KiB
TypeScript
195 lines
7.1 KiB
TypeScript
// Metro module 11839 (f11840).
|
|
import { useLayoutEffect, useCallback, useState } from "react";
|
|
import { FlatList, View } from "react-native";
|
|
import { HubEmailConnectionSteps } from "../../HubConstants";
|
|
import { createStyles } from "../../../../design/components/Styles/native/createStyles";
|
|
import Module712 from "../../../../_bundle/Module712";
|
|
import { FormRow } from "../../../../design/void/Form/native/index";
|
|
import GuildIcon from "../../../guild/native/GuildIcon";
|
|
import { fromGuildBasic } from "../../../../utils/GuildRecordUtils";
|
|
import { Text } from "../../../../design/components/Text/native/Text";
|
|
import { intl, t } from "../../../../intl/index.native";
|
|
import useSafeAreaInsets_native from "../../../safe_area/useSafeAreaInsets.native";
|
|
import { Button } from "../../../../design/components/Button/native/Button.native";
|
|
import { LegacyText } from "../../../../design/void/native";
|
|
import { useNavigation } from "../../../../design/components/Navigator/native/useNavigation.native";
|
|
import { HeaderActionButton } from "../../../../design/components/Navigator/native/HeaderActionButton.native";
|
|
import { MagnifyingGlassIcon } from "../../../../design/components/Icon/native/redesign/generated/MagnifyingGlassIcon";
|
|
import HubActionCreators from "../../../../actions/HubActionCreators";
|
|
import { APIError } from "../../../../errors/index";
|
|
import { HubEmailConnectionScreen } from "./HubEmailConnectionModal";
|
|
let useStyles, HubEmailConnectionGuildSelectHeader, HubEmailConnectionGuildSelectFooter;
|
|
const HubEmailConnectionGuildSelectRow = function HubEmailConnectionGuildSelectRow(props) {
|
|
const { guildInfo, signup, loading } = props;
|
|
const styles2 = useStyles();
|
|
return <FormRow onPress={signup} disabled={loading} DEPRECATED_style={styles2.rowContainer} label={guildInfo.name} leading={<GuildIcon style={styles2.guildIcon} guild={fromGuildBasic({
|
|
...guildInfo,
|
|
features: []
|
|
})} />} trailing={<FormRow.Arrow />} />;
|
|
};
|
|
HubEmailConnectionGuildSelectHeader = function HubEmailConnectionGuildSelectHeader() {
|
|
const styles2 = useStyles();
|
|
return <View style={styles2.header}>
|
|
<Text style={styles2.title} accessibilityRole="header" variant="heading-xl/extrabold" color="mobile-text-heading-primary">
|
|
{intl.string(t.mOMeiR)}
|
|
</Text>
|
|
</View>;
|
|
};
|
|
HubEmailConnectionGuildSelectFooter = function HubEmailConnectionGuildSelectFooter(props) {
|
|
const { errors, loading, onFooterButtonPressed } = props;
|
|
const styles2 = useStyles();
|
|
return <View style={[styles2.footerSafeAreaContainer, {
|
|
paddingBottom: useSafeAreaInsets_native().bottom
|
|
}]}>
|
|
<View style={styles2.footerContainer}>
|
|
<Button variant="secondary" loading={loading} disabled={loading} grow text={intl.string(t.G3Zk7V)} onPress={onFooterButtonPressed} />
|
|
{errors != null && <LegacyText style={styles2.error}>
|
|
{errors == null ? void 0 : errors.getAnyErrorMessage()}
|
|
</LegacyText>}
|
|
</View>
|
|
</View>;
|
|
};
|
|
useStyles = createStyles({
|
|
rowContainer: {
|
|
marginHorizontal: 16,
|
|
borderRadius: Module712.radii.sm,
|
|
padding: 12,
|
|
backgroundColor: Module712.colors.BACKGROUND_MOD_NORMAL
|
|
},
|
|
guildIcon: {
|
|
borderRadius: Module712.radii.sm
|
|
},
|
|
separator: {
|
|
height: 8
|
|
},
|
|
header: {
|
|
padding: 16,
|
|
alignItems: "center",
|
|
justifyContent: "center"
|
|
},
|
|
title: {
|
|
marginBottom: 8,
|
|
textAlign: "center"
|
|
},
|
|
footerSafeAreaContainer: {
|
|
backgroundColor: Module712.colors.BACKGROUND_BASE_LOW,
|
|
position: "absolute",
|
|
bottom: 0,
|
|
width: "100%"
|
|
},
|
|
footerContainer: {
|
|
paddingHorizontal: 16,
|
|
height: 110,
|
|
justifyContent: "center",
|
|
alignItems: "center"
|
|
},
|
|
error: {
|
|
color: Module712.unsafe_rawColors.RED_400,
|
|
alignSelf: "center",
|
|
fontSize: 14,
|
|
marginVertical: 8
|
|
}
|
|
});
|
|
export default function HubEmailConnectionGuildSelect(props) {
|
|
let setState, state, setState2;
|
|
const { onClose, email, guildsInfo } = props;
|
|
setState = void 0;
|
|
state = void 0;
|
|
setState2 = void 0;
|
|
const styles = useStyles();
|
|
const navigation = useNavigation();
|
|
useLayoutEffect(() => {
|
|
navigation.setOptions({
|
|
headerRight: () => <HeaderActionButton IconComponent={MagnifyingGlassIcon} onPress={() => {
|
|
navigation.push(HubEmailConnectionSteps.SELECT_SCHOOL_SEARCH, {
|
|
email,
|
|
onClose,
|
|
guildsInfo
|
|
});
|
|
}} accessibilityLabel={intl.string(t["5h0QOP"])} />
|
|
});
|
|
}, [email, guildsInfo, navigation, onClose]);
|
|
const callback = useCallback(() => {
|
|
navigation.push(HubEmailConnectionSteps.SUBMIT_SCHOOL, {
|
|
email,
|
|
onClose
|
|
});
|
|
}, [email, navigation, onClose]);
|
|
const bottom = useSafeAreaInsets_native().bottom;
|
|
let errors;
|
|
[errors, setState] = useState(null);
|
|
[state, setState2] = useState(false);
|
|
return <HubEmailConnectionScreen>
|
|
<FlatList data={guildsInfo} ListHeaderComponent={() => <HubEmailConnectionGuildSelectHeader />} renderItem={({ item }) => {
|
|
const id = item.id;
|
|
return <HubEmailConnectionGuildSelectRow guildInfo={item} signup={async () => {
|
|
let c30465_2;
|
|
let c30465_3 = 0;
|
|
let c31645_0;
|
|
L10: {
|
|
try {
|
|
setState(null);
|
|
setState2(true);
|
|
c30465_3 = 2;
|
|
await HubActionCreators.sendVerificationEmail(email, true, id);
|
|
navigation.push(HubEmailConnectionSteps.VERIFY_PIN, {
|
|
email,
|
|
onClose,
|
|
guildId: id
|
|
});
|
|
c30465_3 = 1;
|
|
c30465_3 = 0;
|
|
(0, setState2)(false);
|
|
} catch ($e) {
|
|
const r33 = $e;
|
|
let r7 = r33;
|
|
c30465_2 = r33;
|
|
let r34 = c30465_3;
|
|
if (r34 !== 0) {
|
|
while (true) {
|
|
if (r34 === 1) {
|
|
try {
|
|
const r108 = c30465_2;
|
|
c30465_3 = 0;
|
|
(0, setState2)(false);
|
|
throw r108;
|
|
} catch (r106) {
|
|
r7 = r106;
|
|
c30465_2 = r106;
|
|
r34 = c30465_3;
|
|
if (r34 === 0) {
|
|
break;
|
|
}
|
|
}
|
|
} else {
|
|
try {
|
|
const r85 = c30465_2;
|
|
c30465_3 = 1;
|
|
c31645_0 = r85;
|
|
setState(new APIError(c31645_0));
|
|
c30465_3 = 0;
|
|
(0, setState2)(false);
|
|
break L10;
|
|
} catch (r82) {
|
|
r7 = r82;
|
|
c30465_2 = r82;
|
|
r34 = c30465_3;
|
|
if (r34 === 0) {
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
throw r7;
|
|
}
|
|
}
|
|
}} loading={state} />;
|
|
}} ItemSeparatorComponent={() => <View style={styles.separator} />} contentContainerStyle={{
|
|
paddingBottom: 110 + bottom + 8
|
|
}} />
|
|
<HubEmailConnectionGuildSelectFooter errors={errors} loading={state} onFooterButtonPressed={callback} />
|
|
</HubEmailConnectionScreen>;
|
|
};
|
|
export { HubEmailConnectionGuildSelectRow };
|