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

70 lines
2.8 KiB
TypeScript

// Metro module 9635 (f9636).
import { PixelRatio } from "react-native";
import ThemeStore from "../../user_settings/ThemeStore";
import { StickerFormat } from "../StickersTypes";
import * as _StickersUtils from "../StickersUtils";
import { isGuildSticker, getStickerExtensionFromFormatType } from "../StickersUtils";
import { intl, t } from "../../../intl/index.native";
import NativeLottieView, { NativeLottieRenderMode } from "./NativeLottieView";
import NativeAPNGView from "../../../components_native/common/NativeAPNGView";
import FastImage from "../../../components_native/common/FastImage";
import { isThemeDark } from "../../../design/shared";
import Module5207 from "../../../_bundle/Module5207";
import Module5208 from "../../../_bundle/Module5208";
export default function Sticker(props) {
const { sticker, size, animated = true, opaque = true } = props;
const opacity = opaque ? 1 : 0.3;
let url = sticker.format_type === StickerFormat.LOTTIE ? _StickersUtils.getStickerAssetUrl(sticker) : sticker.format_type === StickerFormat.APNG ? _StickersUtils.getStickerAssetUrl(sticker, {
isPreview: !animated,
size
}) : _StickersUtils.getStickerAssetUrl(sticker, {
isPreview: !animated,
size: PixelRatio.getPixelSizeForLayoutSize(size)
});
if (url == null) {
url = "";
}
const accessibilityLabel = intl.formatToPlainString(t.rk6pOw, {
stickerName: sticker.name
});
if (sticker.format_type === StickerFormat.LOTTIE) {
let id = sticker.id;
if (id == null) {
id = "";
}
return <NativeLottieView url={url} asset={id} width={size} height={size} opacity={opacity} renderMode={animated ? NativeLottieRenderMode.LOOP : NativeLottieRenderMode.STILL} accessibilityLabel={accessibilityLabel} />;
}
L19: {
if (sticker.format_type === StickerFormat.APNG) {
if ("type" in sticker && !isGuildSticker(sticker)) {
break L19;
}
return <NativeAPNGView style={{
height: size,
width: size,
opacity
}} url={url} name={`${sticker.id}.${getStickerExtensionFromFormatType(sticker.format_type)}`} accessibilityLabel={accessibilityLabel} />;
}
}
return <FastImage resizeMode="contain" style={{
height: size,
width: size,
opacity
}} placeholder={isThemeDark(ThemeStore.theme) ? Module5207 : Module5208} source={{
uri: url
}} accessible accessibilityLabel={accessibilityLabel} />;
};
export function getStickerAssetUrl(a0, a1, a2) {
let r25 = a0.format_type === StickerFormat.LOTTIE ? _StickersUtils.getStickerAssetUrl(a0) : a0.format_type === StickerFormat.APNG ? _StickersUtils.getStickerAssetUrl(a0, {
isPreview: !a2,
size: a1
}) : _StickersUtils.getStickerAssetUrl(a0, {
isPreview: !a2,
size: PixelRatio.getPixelSizeForLayoutSize(a1)
});
if (r25 == null) {
r25 = "";
}
return r25;
}