171 lines
6.5 KiB
TypeScript
171 lines
6.5 KiB
TypeScript
// Metro module 8669 (f8670).
|
|
import { useMemo } from "react";
|
|
import { View } from "react-native";
|
|
import { transformSKUToCollectiblesItem } from "../../collectibles/records/CollectiblesItemRecord";
|
|
import { SKUProductLines } from "../../../Constants";
|
|
import { createStyles } from "../../../design/components/Styles/native/createStyles";
|
|
import { DEFAULT_ITEM_SIZE } from "../../wishlists/native/WishlistItemCardBase";
|
|
import Module712 from "../../../_bundle/Module712";
|
|
import { isValidCollectiblesBundleItems } from "../../collectibles/utils/bundleUtils";
|
|
import { ItemsSortingHat } from "../../collectibles/hooks/useShopProductItems";
|
|
import BundleSampleV2 from "../../collectibles/native/BundleSampleV2";
|
|
import { CollectiblesItemType } from "../../../_bundle/Module1901";
|
|
import AvatarDecorationSampleV2 from "../../collectibles/native/AvatarDecorationSampleV2";
|
|
import ProfileEffectSampleV2 from "../../collectibles/native/ProfileEffectSampleV2";
|
|
import ProfileFrameSamplePreview from "../../collectibles/profile_frames/native/previews/ProfileFrameSamplePreview";
|
|
import NameplateCardPreview from "../../collectibles/nameplates/native/NameplateCardPreview";
|
|
import { useIsEligibleForSocialLayerStorefrontMobilePurchasing } from "../../slayer_storefront/experiments/SocialLayerStorefrontMobilePurchasingExperiment";
|
|
import SlayerStorefrontItemCard from "../../slayer_storefront/native/SlayerStorefrontItemCard";
|
|
import { useToken } from "../../../design/tokens/native/useToken";
|
|
import { ThemeAwareNitroWishlistingWumpusRive } from "../../../_bundle/Module3901";
|
|
import { assertNever } from "../../../utils/GlobalUtils";
|
|
let useStyles, targetSize, CollectiblesSKUPreview, SocialLayerStorefrontSKUPreview, PremiumSKUPreview;
|
|
const CollectiblesPreview = function CollectiblesPreview(props) {
|
|
const { collectiblesItemData, size = DEFAULT_ITEM_SIZE } = props;
|
|
let r22 = size;
|
|
if (typeof r22 === "number") {
|
|
r22 = {
|
|
width: size,
|
|
height: size
|
|
};
|
|
}
|
|
const styles = useStyles(r22.width, r22.height);
|
|
if (collectiblesItemData.type === "bundle") {
|
|
if (isValidCollectiblesBundleItems(collectiblesItemData.items)) {
|
|
const itemsSortingHat = new ItemsSortingHat(collectiblesItemData.items);
|
|
return <View style={styles.container}>
|
|
<View style={[styles.scaler, styles.bundleContainer]}>
|
|
<BundleSampleV2 deco={itemsSortingHat.firstAvatarDecoration} pfx={itemsSortingHat.firstProfileEffect} nameplate={itemsSortingHat.firstNameplate} size="small" previewAssets={collectiblesItemData.previewAssets} disableStaticBackground targetSize={targetSize} />
|
|
</View>
|
|
</View>;
|
|
}
|
|
return null;
|
|
}
|
|
const type = collectiblesItemData.item.type;
|
|
if (CollectiblesItemType.AVATAR_DECORATION === type) {
|
|
return <View style={styles.container}>
|
|
<View style={styles.scaler}>
|
|
<AvatarDecorationSampleV2 item={collectiblesItemData.item} size={100} />
|
|
</View>
|
|
</View>;
|
|
}
|
|
if (CollectiblesItemType.PROFILE_EFFECT === type) {
|
|
return <View style={styles.container}>
|
|
<View style={styles.scaler}>
|
|
<ProfileEffectSampleV2 item={collectiblesItemData.item} hideBackground />
|
|
</View>
|
|
</View>;
|
|
}
|
|
if (CollectiblesItemType.PROFILE_FRAME === type) {
|
|
return <View style={styles.container}>
|
|
<View style={[styles.scaler, styles.profileFrameContainer]}>
|
|
<ProfileFrameSamplePreview profileFrame={collectiblesItemData.item} previewWidth={DEFAULT_ITEM_SIZE - Module712.space.PX_48} previewHeight={DEFAULT_ITEM_SIZE} />
|
|
</View>
|
|
</View>;
|
|
}
|
|
if (CollectiblesItemType.NAMEPLATE === type) {
|
|
return <View style={styles.container}>
|
|
<View style={styles.scaler}>
|
|
<NameplateCardPreview item={collectiblesItemData.item} />
|
|
</View>
|
|
</View>;
|
|
}
|
|
return null;
|
|
};
|
|
CollectiblesSKUPreview = function CollectiblesSKUPreview(props) {
|
|
const { sku, size = DEFAULT_ITEM_SIZE } = props;
|
|
const memo = useMemo(() => transformSKUToCollectiblesItem(sku), [sku]);
|
|
return memo != null ? <CollectiblesPreview collectiblesItemData={memo} size={size} /> : null;
|
|
};
|
|
SocialLayerStorefrontSKUPreview = function SocialLayerStorefrontSKUPreview(props) {
|
|
const { sku: sku2, size = DEFAULT_ITEM_SIZE } = props;
|
|
let r11 = size;
|
|
if (typeof r11 === "number") {
|
|
r11 = {
|
|
width: size,
|
|
height: size
|
|
};
|
|
}
|
|
const styles = useStyles(r11.width, r11.height);
|
|
return useIsEligibleForSocialLayerStorefrontMobilePurchasing({
|
|
location: "sku_preview"
|
|
}) ? <SlayerStorefrontItemCard sku={sku2} containerStyle={styles.socialLayerStorefrontContainer} /> : null;
|
|
};
|
|
PremiumSKUPreview = function PremiumSKUPreview(props) {
|
|
let size = props.size;
|
|
if (size === void 0) {
|
|
size = DEFAULT_ITEM_SIZE;
|
|
}
|
|
let r12 = size;
|
|
if (typeof r12 === "number") {
|
|
r12 = {
|
|
width: size,
|
|
height: size
|
|
};
|
|
}
|
|
return <View style={useStyles(r12.width, r12.height).premiumRiveContainer}>
|
|
<ThemeAwareNitroWishlistingWumpusRive dataBinding={{
|
|
logoColor: useToken(Module712.colors.TEXT_DEFAULT)
|
|
}} />
|
|
</View>;
|
|
};
|
|
useStyles = createStyles((a0, a1) => ({
|
|
container: {
|
|
width: "100%",
|
|
height: "100%",
|
|
display: "flex",
|
|
justifyContent: "center",
|
|
alignItems: "center"
|
|
},
|
|
scaler: {
|
|
width: DEFAULT_ITEM_SIZE,
|
|
height: DEFAULT_ITEM_SIZE,
|
|
justifyContent: "center",
|
|
alignItems: "center",
|
|
transform: [{
|
|
scaleX: a0 / DEFAULT_ITEM_SIZE
|
|
}, {
|
|
scaleY: a1 / DEFAULT_ITEM_SIZE
|
|
}]
|
|
},
|
|
bundleContainer: {
|
|
paddingTop: 20
|
|
},
|
|
socialLayerStorefrontContainer: {
|
|
width: a0,
|
|
height: a1
|
|
},
|
|
profileFrameContainer: {
|
|
padding: Module712.space.PX_8
|
|
},
|
|
premiumRiveContainer: {
|
|
width: a0,
|
|
height: a1
|
|
}
|
|
}));
|
|
targetSize = {
|
|
width: DEFAULT_ITEM_SIZE,
|
|
height: DEFAULT_ITEM_SIZE
|
|
};
|
|
export default function SKUPreview(props) {
|
|
const { sku: sku2, size = DEFAULT_ITEM_SIZE } = props;
|
|
const productLine = sku2.productLine;
|
|
if (SKUProductLines.COLLECTIBLES === productLine) {
|
|
return <CollectiblesSKUPreview sku={sku2} size={size} />;
|
|
}
|
|
if (SKUProductLines.SOCIAL_LAYER_GAME_ITEM === productLine) {
|
|
return <SocialLayerStorefrontSKUPreview sku={sku2} size={size} />;
|
|
}
|
|
if (SKUProductLines.PREMIUM === productLine) {
|
|
return <PremiumSKUPreview size={size} />;
|
|
}
|
|
if (SKUProductLines.APPLICATION !== productLine && SKUProductLines.BOOST !== productLine && SKUProductLines.GUILD_ROLE !== productLine && SKUProductLines.GUILD_PRODUCT !== productLine) {
|
|
assertNever(sku2.productLine);
|
|
return void 0;
|
|
}
|
|
return null;
|
|
};
|
|
export { CollectiblesPreview };
|
|
export { SocialLayerStorefrontSKUPreview };
|
|
export { PremiumSKUPreview };
|