87 lines
4.1 KiB
TypeScript
87 lines
4.1 KiB
TypeScript
// Metro module 9019 (f9020).
|
|
import { View } from "react-native";
|
|
import { createStyles } from "../../../design/components/Styles/native/createStyles";
|
|
import Module712 from "../../../_bundle/Module712";
|
|
import { getTextForDisclosure, ApplicationDisclosure } from "../../applications/disclosures";
|
|
import { GlobeEarthIcon } from "../../../design/components/Icon/native/redesign/generated/GlobeEarthIcon";
|
|
import { EmbedIcon } from "../../../design/components/Icon/native/redesign/generated/EmbedIcon";
|
|
import SnowflakeUtils from "../../../utils/SnowflakeUtils";
|
|
import { getSecurityMessage } from "../scopes";
|
|
import { LinkIcon } from "../../../design/components/Icon/native/redesign/generated/LinkIcon";
|
|
import { intl, t } from "../../../intl/index.native";
|
|
import { LockIcon } from "../../../design/components/Icon/native/redesign/generated/LockIcon";
|
|
import { getApplicationDetailsText } from "../Utils";
|
|
import { HammerIcon } from "../../../design/components/Icon/native/redesign/generated/HammerIcon";
|
|
import { ClockIcon } from "../../../design/components/Icon/native/redesign/generated/ClockIcon";
|
|
import { OAuth2Scopes } from "../../../_bundle/Module8174";
|
|
import { RobotIcon } from "../../../design/components/Icon/native/redesign/generated/RobotIcon";
|
|
import { ShieldIcon } from "../../../design/components/Icon/native/redesign/generated/ShieldIcon";
|
|
import { Text } from "../../../design/components/Text/native/Text";
|
|
let useStyles;
|
|
const ApplicationDetailsEntry = function ApplicationDetailsEntry(props) {
|
|
const { iconComponent, text } = props;
|
|
const styles = useStyles();
|
|
return <View style={styles.entry}>
|
|
{iconComponent != null ? iconComponent({
|
|
style: styles.entryIcon
|
|
}) : null}
|
|
<Text variant="text-sm/normal" color="text-default" style={styles.entryText}>{text}</Text>
|
|
</View>;
|
|
};
|
|
useStyles = createStyles({
|
|
applicationDetails: {
|
|
flexDirection: "column",
|
|
gap: 16
|
|
},
|
|
entry: {
|
|
flexDirection: "row",
|
|
alignItems: "center",
|
|
gap: 8
|
|
},
|
|
entryText: {
|
|
flex: 1
|
|
},
|
|
entryIcon: {
|
|
width: 16,
|
|
height: 16,
|
|
tintColor: Module712.colors.TEXT_MUTED
|
|
}
|
|
});
|
|
export default function ApplicationDetails(props) {
|
|
const { application, scopes: scopes2, redirectUri, approximateGuildCount, isEmbeddedFlow, disclosures: disclosures2, connectedAccount } = props;
|
|
const styles = useStyles();
|
|
const date = new Date(SnowflakeUtils.extractTimestamp(application.id));
|
|
const securityMessage = getSecurityMessage(scopes2);
|
|
let origin = null;
|
|
if (redirectUri != null && !isEmbeddedFlow) {
|
|
try {
|
|
origin = new URL(redirectUri).href.split("/").slice(0, 3).join("/");
|
|
} catch ($e) {
|
|
origin = redirectUri;
|
|
}
|
|
}
|
|
const r72 = [origin != null ? <ApplicationDetailsEntry iconComponent={LinkIcon} text={intl.format(t["5k5OKD"], {
|
|
origin
|
|
})} /> : null, <ApplicationDetailsEntry iconComponent={LockIcon} text={getApplicationDetailsText(application)} />, , , , , ,];
|
|
const r85 = connectedAccount != null ? <ApplicationDetailsEntry iconComponent={HammerIcon} text={intl.string(t["8qui3M"])} /> : null;
|
|
const date2 = date;
|
|
r72[2] = r85;
|
|
r72[3] = <ApplicationDetailsEntry iconComponent={ClockIcon} text={intl.formatToPlainString(t["+1bjc8"], {
|
|
date: date2
|
|
})} />;
|
|
r72[4] = scopes2.includes(OAuth2Scopes.BOT) ? approximateGuildCount != null ? <ApplicationDetailsEntry iconComponent={RobotIcon} text={intl.formatToPlainString(t.UHGHSP, {
|
|
guildCount: approximateGuildCount
|
|
})} /> : null : null;
|
|
r72[5] = <ApplicationDetailsEntry iconComponent={ShieldIcon} text={securityMessage} />;
|
|
r72[6] = disclosures2 != null ? disclosures2.map((item) => {
|
|
const textForDisclosure = getTextForDisclosure(item);
|
|
const props = ApplicationDisclosure.IP_LOCATION === item ? {
|
|
iconComponent: GlobeEarthIcon
|
|
} : ApplicationDisclosure.DISPLAYS_ADVERTISEMENTS === item ? {
|
|
iconComponent: EmbedIcon
|
|
} : null;
|
|
return props != null ? textForDisclosure != null ? <ApplicationDetailsEntry key={item.toFixed()} text={textForDisclosure} {...props} /> : null : null;
|
|
}) : null;
|
|
return <View style={styles.applicationDetails}>{r72}</View>;
|
|
};
|