70 lines
2.8 KiB
TypeScript
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;
|
|
}
|