/** * @file * React-based renderer for Bluemoji */ import React, { useState, useEffect } from "react"; import { Image, StyleSheet, AccessibilityInfo } from "react-native"; import LottieView from "lottie-react-native"; import * as BlueMojiRichtextFacet from "../../../lexicon/types/blue/moji/richtext/facet"; import * as BlueMojiCollectionItem from "../../../lexicon/types/blue/moji/collection/item"; const styles = StyleSheet.create({ emoji16: { width: 16, height: 16, }, }); export const RichTextBluemoji = ({ bluemoji, }: { bluemoji: BlueMojiRichtextFacet.Main; style?: { width: string; height: string }; }) => { const [reduceMotionEnabled, setReduceMotionEnabled] = useState(false); useEffect(() => { const reduceMotionChangedSubscription = AccessibilityInfo.addEventListener( "reduceMotionChanged", (isReduceMotionEnabled) => { setReduceMotionEnabled(isReduceMotionEnabled); }, ); AccessibilityInfo.isReduceMotionEnabled().then((isReduceMotionEnabled) => { setReduceMotionEnabled(isReduceMotionEnabled); }); return reduceMotionChangedSubscription.remove; }, []); if (BlueMojiCollectionItem.isFormats_v0(bluemoji.formats)) { const { did, formats } = bluemoji; if (formats.lottie) { ; } else if (formats.apng_128) { } else if (formats.png_128) { const cdnUri = `https://cdn.bsky.app/img/avatar_thumbnail/plain/${did}/${formats.png_128}@PNG`; return ; } } return null; };