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

129 lines
5.3 KiB
TypeScript

// Metro module 6558 (f6559).
import { View } from "react-native";
import EntitlementStore from "../../../stores/game_store/EntitlementStore";
import { SubscriptionStatusTypes } from "../../../Constants";
import { createStyles } from "../../../design/components/Styles/native/createStyles";
import Module712 from "../../../_bundle/Module712";
import PremiumUtils, { castPremiumSubscriptionAsSkuId, extendDateWithUnconsumedFractionalPremium } from "../../../utils/PremiumUtils";
import { intl, t } from "../../../intl/index.native";
import PremiumGroup_messages from "../premium_group/PremiumGroup.messages";
import GameIcon, { GameIconSizes } from "../../game_detection/native/GameIcon";
import { Text } from "../../../design/components/Text/native/Text";
import { useStateFromStoresArray } from "../../../_bundle/Module589";
import Module12 from "../../../_bundle/Module12";
let useStyles;
const AccountCreditTier = function AccountCreditTier(props) {
let r44, currentSubscription2, months, shouldAddDivider, skuId, styles, tierDisplayNameByPlanId;
L12: {
const planId = props.planId;
months = props.months;
currentSubscription2 = props.currentSubscription;
shouldAddDivider = props.shouldAddDivider;
const { unconsumedFractionalPremiumUnits, hasPremiumGroup: hasPremiumGroup2 } = props;
styles = useStyles();
skuId = castPremiumSubscriptionAsSkuId(PremiumUtils.getSkuIdForPlan(planId));
tierDisplayNameByPlanId = PremiumUtils.getTierDisplayNameByPlanId(planId);
if (hasPremiumGroup2) {
r44 = intl.string(PremiumGroup_messages["5asczk"]);
} else {
if (currentSubscription2 != null && currentSubscription2.planId === planId) {
let date = extendDateWithUnconsumedFractionalPremium(currentSubscription2.status === SubscriptionStatusTypes.PAUSED && currentSubscription2.pauseEndsAt != null ? new Date(currentSubscription2.pauseEndsAt) : new Date(currentSubscription2.currentPeriodEnd), unconsumedFractionalPremiumUnits);
const r71 = t["5CNRRA"];
if (date == null) {
date = 0;
}
r44 = intl.formatToPlainString(r71, {
date
});
break L12;
}
r44 = intl.formatToPlainString(t.eNXZ5O, {
planName: tierDisplayNameByPlanId
});
}
}
const r81 = currentSubscription2 != null && currentSubscription2.isPurchasedExternally;
return <View style={[styles.creditItem, shouldAddDivider ? styles.divider : null]}>
<GameIcon size={GameIconSizes.SMALL} skuId={skuId} />
<View style={styles.textContainer}>
<Text style={styles.headerText} variant="text-md/semibold" color="mobile-text-heading-primary">
{intl.format(t.LzobT9, {
planName: tierDisplayNameByPlanId
})}
</Text>
{r81 ? !r81 : <Text style={styles.subText} variant="text-xs/medium" color="text-default">{r44}</Text>}
</View>
<Text style={styles.timeText} variant="text-md/medium" color="text-default">
{intl.format(t["ess/xl"], {
count: months
})}
</Text>
</View>;
};
useStyles = createStyles({
title: {
marginBottom: 12
},
creditList: {
borderRadius: Module712.radii.xs,
backgroundColor: Module712.colors.BACKGROUND_SURFACE_HIGH
},
creditItem: {
flexDirection: "row",
alignItems: "center",
padding: 16
},
textContainer: {
marginLeft: 16,
marginRight: 16,
flexDirection: "column",
flex: 1
},
headerText: {
lineHeight: 20
},
subText: {
lineHeight: 16
},
timeText: {
lineHeight: 20,
alignSelf: "flex-start"
},
divider: {
borderBottomWidth: 1,
borderBottomColor: Module712.colors.BORDER_SUBTLE
},
creditDescription: {
marginTop: 8
}
});
export default function PremiumAccountCredit(props) {
let c15795_3;
const { currentSubscription, entitlements, style, creditListContainerStyle, hasPremiumGroup } = props;
c15795_3 = void 0;
const styles = useStyles();
const stateFromStoresArray = useStateFromStoresArray([EntitlementStore], () => EntitlementStore.getUnactivatedFractionalPremiumUnits());
if (entitlements != null && PremiumUtils.hasAccountCredit(entitlements)) {
const r16 = Module12(Array.from(entitlements)).filter(({ subscriptionPlanId, parentId, consumed }) => subscriptionPlanId != null && parentId != null && !consumed).groupBy((item) => item.subscriptionPlanId).value();
c15795_3 = r16;
return <View style={style}>
<Text style={styles.title} accessibilityRole="header" variant="eyebrow" color="text-default">
{intl.string(t.YugZY0)}
</Text>
<View style={[styles.creditList, creditListContainerStyle]}>
{Object.keys(r16).map((item) => {
const r4 = Object;
return <AccountCreditTier key={item} planId={item} months={c15795_3[item].length} currentSubscription={currentSubscription} shouldAddDivider={!(item === r4.keys(c15795_3)[Object.keys(c15795_3).length - 1])} unconsumedFractionalPremiumUnits={stateFromStoresArray} hasPremiumGroup={hasPremiumGroup} />;
})}
</View>
<Text style={styles.creditDescription} variant="text-sm/medium">
{intl.string(t.kNEjGm)}
</Text>
{currentSubscription != null ? currentSubscription.isPurchasedExternally ? <Text style={styles.creditDescription} variant="text-sm/medium">
{intl.string(t.azRP0E)}
</Text> : null : null}
</View>;
}
return null;
};