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

97 lines
3.3 KiB
TypeScript

// Metro module 8743 (f8744).
import { memo } from "react";
import { View } from "react-native";
import { isAvatarDecorationRecord } from "../records/AvatarDecorationRecord";
import { isNameplateRecord } from "../records/NameplateRecord";
import { isProfileEffectRecord } from "../records/ProfileEffectRecord";
import { isProfileFrameRecord } from "../records/ProfileFrameRecord";
import { PROFILE_FRAME_ASPECT_RATIO } from "../profile_frames/native/ProfileFrameConstants";
import { SAMPLE_PROFILE_ASPECT_RATIO } from "./CollectiblesPreviewConstants";
import Module712 from "../../../_bundle/Module712";
import { createStyles } from "../../../design/components/Styles/native/createStyles";
import AvatarDecorationSampleV2 from "./AvatarDecorationSampleV2";
import ProfileFrameSamplePreview from "../profile_frames/native/previews/ProfileFrameSamplePreview";
import FastImage from "../../../components_native/common/FastImage";
import Module8695 from "../../../_bundle/Module8695";
import ProfileEffect from "../profile_effects/native/ProfileEffect";
import { getNameplateData } from "../nameplates/utils";
import Nameplate from "../nameplates/native/Nameplate";
const PX_8 = Module712.space.PX_8;
const useStyles = createStyles({
tile: {
overflow: "hidden",
alignItems: "center",
justifyContent: "center"
},
framePreview: {
width: "100%",
height: "100%",
paddingVertical: PX_8,
overflow: "hidden",
alignItems: "center",
justifyContent: "center"
},
profileEffect: {
overflow: "hidden",
width: "100%",
height: "100%",
borderRadius: Module712.radii.sm
},
sampleProfile: {
aspectRatio: SAMPLE_PROFILE_ASPECT_RATIO,
width: "100%"
},
nameplate: {
overflow: "hidden",
borderTopRightRadius: Module712.radii.xs,
borderBottomRightRadius: Module712.radii.xs
},
nameplateTile: {
alignItems: "flex-start"
},
nameplateStrip: {
width: "90%",
aspectRatio: 1.6,
position: "relative"
}
});
const r70 = memo(function CollectiblesItemMiniPreview(props) {
const { item, size } = props;
const styles = useStyles();
const style = [styles.tile, {
width: size,
height: size
}];
if (isAvatarDecorationRecord(item)) {
return <View style={style}>
<AvatarDecorationSampleV2 item={item} size={0.75 * size} />
</View>;
}
if (isProfileFrameRecord(item)) {
return <View style={style}>
<View style={styles.framePreview}>
<ProfileFrameSamplePreview profileFrame={item} previewWidth={size * PROFILE_FRAME_ASPECT_RATIO} previewHeight={size - 2 * PX_8} profileBackgroundColor={Module712.colors.BACKGROUND_BASE_LOW} />
</View>
</View>;
}
if (isProfileEffectRecord(item)) {
return <View style={style}>
<View style={styles.profileEffect} accessible={false} importantForAccessibility="no">
<FastImage source={{
uri: Module8695
}} style={styles.sampleProfile} resizeMode="cover" />
<ProfileEffect skuId={item.skuId} bannerAdjustment={0} useThumbnail />
</View>
</View>;
}
if (isNameplateRecord(item)) {
return <View style={[style, styles.nameplateTile]}>
<View style={styles.nameplateStrip}>
<Nameplate nameplate={getNameplateData(item)} fullOpacity style={styles.nameplate} />
</View>
</View>;
}
return null;
});
export default r70;