Files
discord-decomp/modules/premium/referral_program/native/ReferralProgramShareConfirmationActionSheet.tsx
T
2026-11-01 12:12:55 +02:00

109 lines
4.5 KiB
TypeScript

// Metro module 12479 (f12480).
import { View } from "react-native";
import { HelpdeskArticles } from "../../../../Constants";
import { createStyles } from "../../../../design/components/Styles/native/createStyles";
import Module712 from "../../../../_bundle/Module712";
import UserUtils from "../../../../utils/UserUtils";
import { CreateReferralStatus } from "../../ReferralTrialActionCreators";
import { Avatar, AvatarSizes } from "../../../../design/void/native";
import { Text } from "../../../../design/components/Text/native/Text";
import { intl, t } from "../../../../intl/index.native";
import { Button } from "../../../../design/components/Button/native/Button.native";
import { ChatIcon } from "../../../../design/components/Icon/native/redesign/generated/ChatIcon";
import ActionSheetActionCreators from "../../../action_sheet/native/ActionSheetActionCreators";
import ChannelActionCreators from "../../../../actions/ChannelActionCreators";
import HelpdeskUtils from "../../../../utils/HelpdeskUtils";
import { BottomSheet } from "../../../../design/components/Sheet/native/BottomSheet.native";
import { BottomSheetTitleHeader } from "../../../../design/components/Sheet/native/BottomSheetTitleHeader.native";
import { Stack } from "../../../../design/components/Stack/native/Stack.native";
import { FistBumpSpotIllustration } from "../../../../design/assets/native";
let useStyles;
const SharedUser = function SharedUser(props) {
const { user, trialCreationResult: trialCreationResult2 } = props;
const styles = useStyles();
const name = UserUtils.getName(user);
const r1 = trialCreationResult2 === CreateReferralStatus.FAIL;
return <View style={styles.recipientRow}>
<Avatar style={[styles.avatarContainer, r1 && styles.erroredAvatar]} size={AvatarSizes.REFRESH_MEDIUM_32} user={user} guildId={void 0} />
{r1 ? <>
<Text variant="text-md/medium" color="text-muted" style={styles.recipientDisplayName}>{name}</Text>
<Text variant="text-md/medium" color="text-muted">
{intl.format(t.RO3T4B, {
userName: name
})}
</Text>
</> : <Text variant="text-md/medium" color="text-strong" style={styles.recipientDisplayName}>{name}</Text>}
<Button variant="secondary" size="sm" text={intl.string(t["g33r/P"])} icon={<ChatIcon size="xs" color={Module712.colors.CONTROL_SECONDARY_TEXT_DEFAULT} />} onPress={function onPress() {
ActionSheetActionCreators.hideActionSheet();
ChannelActionCreators.openPrivateChannel({
recipientIds: user.id
});
}} />
</View>;
};
useStyles = createStyles({
content: {
paddingHorizontal: Module712.space.PX_16
},
headerAsset: {
alignSelf: "center"
},
header: {
marginTop: Module712.space.PX_16,
alignSelf: "center",
paddingHorizontal: Module712.space.PX_8,
textAlign: "center"
},
subheader: {
textAlign: "center",
paddingHorizontal: Module712.space.PX_8,
marginTop: Module712.space.PX_8
},
recipientContainer: {
gap: Module712.space.PX_16,
marginTop: Module712.space.PX_16,
paddingBottom: 21
},
recipientRow: {
flexDirection: "row",
alignItems: "center",
padding: Module712.space.PX_12,
gap: Module712.space.PX_12,
borderRadius: Module712.radii.md,
borderWidth: 1,
borderColor: Module712.colors.BORDER_MUTED
},
recipientDisplayName: {
flex: 1
},
erroredAvatar: {
opacity: 0.5
},
avatarContainer: {
alignSelf: "center",
justifyContent: "center"
}
});
export default function ReferralProgramShareConfirmationActionSheet(props) {
const { selectedUsers, trialCreationResult } = props;
const styles = useStyles();
return <BottomSheet startExpanded contentStyles={styles.content} header={<BottomSheetTitleHeader title={null} />}>
<Stack>
<View style={styles.headerAsset}>
<FistBumpSpotIllustration />
</View>
<Text variant="heading-lg/bold" color="mobile-text-heading-primary" style={styles.header}>
{Array.from(trialCreationResult.values()).filter((item) => item === CreateReferralStatus.SUCCESS).length === 0 ? intl.string(t["7VBEue"]) : intl.string(t.tKCltd)}
</Text>
<Text variant="text-md/medium" color="text-default" style={styles.subheader}>
{intl.format(t.AwGSWl, {
helpdeskArticle: HelpdeskUtils.getArticleURL(HelpdeskArticles.REFERRAL_PROGRAM)
})}
</Text>
<View style={styles.recipientContainer}>
{Array.from(selectedUsers).map((item) => <SharedUser key={item.id} user={item} trialCreationResult={trialCreationResult.get(item.id)} />)}
</View>
</Stack>
</BottomSheet>;
};