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

103 lines
4.1 KiB
TypeScript

// Metro module 11616 (f11617).
import { View } from "react-native";
import { createStyles } from "../../../../design/components/Styles/native/createStyles";
import { CircleCheckIcon } from "../../../../design/components/Icon/native/redesign/generated/CircleCheckIcon";
import Module712 from "../../../../_bundle/Module712";
import { Text } from "../../../../design/components/Text/native/Text";
import { CircleErrorIcon } from "../../../../design/components/Icon/native/redesign/generated/CircleErrorIcon";
import { intl, t } from "../../../../intl/index.native";
import GuildPowerups_messages from "../GuildPowerups.messages";
import entitlementExpirationDateToString from "../utils/entitlementExpirationDateToString";
import getGuildPowerupFormattedDateString from "../utils/getGuildPowerupFormattedDateString";
import { BoostGemIcon } from "../../../../design/components/Icon/native/redesign/generated/BoostGemIcon";
let useStyles, GuildPowerupCardFooterExpiring, GuildPowerupCardFooterRemoving, GuildPowerupCardFooterStatus, GuildPowerupCardFooterCost;
const GuildPowerupCardFooterActive = function GuildPowerupCardFooterActive(props) {
const text = props.text;
return <View style={useStyles().inline}>
<CircleCheckIcon size="xs" color={Module712.colors.STATUS_POSITIVE} />
<Text color="status-positive" variant="text-sm/bold">{text}</Text>
</View>;
};
GuildPowerupCardFooterExpiring = function GuildPowerupCardFooterExpiring(props) {
const dateString = props.dateString;
return <View style={useStyles().inline}>
<CircleErrorIcon size="xs" color={Module712.colors.STATUS_WARNING} />
<Text color="text-feedback-warning" variant="text-sm/bold">
{intl.formatToMarkdownString(GuildPowerups_messages["ol/ao/"], {
dateString: entitlementExpirationDateToString(dateString)
})}
</Text>
</View>;
};
GuildPowerupCardFooterRemoving = function GuildPowerupCardFooterRemoving(props) {
const removingAt = props.removingAt;
return <View style={useStyles().inline}>
<CircleErrorIcon size="xs" color={Module712.colors.STATUS_WARNING} />
<Text color="text-feedback-warning" variant="text-sm/bold">
{intl.formatToPlainString(GuildPowerups_messages["6e2ry1"], {
dateString: getGuildPowerupFormattedDateString(removingAt)
})}
</Text>
</View>;
};
GuildPowerupCardFooterStatus = function GuildPowerupCardFooterStatus(props) {
const status = props.status;
if (status == null) {
return null;
}
const type = status.type;
if (type === "expiring") {
return <GuildPowerupCardFooterExpiring dateString={status.expiringAt} />;
}
if (type === "removing") {
return <GuildPowerupCardFooterRemoving removingAt={status.removingAt} />;
}
if (type === "active") {
return <GuildPowerupCardFooterActive text={status.statusText} />;
}
};
GuildPowerupCardFooterCost = function GuildPowerupCardFooterCost(props) {
const cost = props.cost;
let costDecorator = props.costDecorator;
const styles = useStyles();
const r2 = cost == null;
let r17 = null;
if (!r2) {
const r27 = [<BoostGemIcon size="sm" color={Module712.unsafe_rawColors.GUILD_BOOSTING_PINK} />, ,];
const t2Wbo1 = t.t2Wbo1;
if (costDecorator == null) {
costDecorator = "";
}
r27[1] = <Text variant="heading-sm/semibold" color="text-subtle">
{intl.formatToPlainString(t2Wbo1, {
required: cost,
decorator: costDecorator
})}
</Text>;
r17 = <View style={styles.inline}>{r27}</View>;
}
return r17;
};
useStyles = createStyles({
container: {
justifyContent: "space-between"
},
inline: {
flexDirection: "row",
alignItems: "center",
gap: 2
}
});
export { GuildPowerupCardFooterActive };
export { GuildPowerupCardFooterExpiring };
export { GuildPowerupCardFooterRemoving };
export { GuildPowerupCardFooterStatus };
export { GuildPowerupCardFooterCost };
export function GuildPowerupsCardFooter(props) {
const styles = useStyles();
return <View style={[styles.inline, styles.container, props.style]}>
<GuildPowerupCardFooterCost cost={props.cost} costDecorator={props.costDecorator} />
<GuildPowerupCardFooterStatus status={props.status} />
</View>;
}