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

69 lines
2.7 KiB
TypeScript

// Metro module 10963 (f10964).
import Module19, { useMemo } from "react";
import { AppState, View } from "react-native";
import AccessibilityStore from "../../a11y/AccessibilityStore";
import { createStyles } from "../../../design/components/Styles/native/createStyles";
import Module712 from "../../../_bundle/Module712";
import { isIOS } from "../../../utils/PlatformUtils";
import { useStateFromStores } from "../../../_bundle/Module589";
import { getQuestPrimaryReward } from "../utils/QuestRewardUtils";
import { getQuestAsset, QuestAssetType, getScaledImageUrl } from "../lib/AssetUtils";
import { VideoComponent } from "../../../components_native/common/Video";
import FastImage from "../../../components_native/common/FastImage";
const useStyles = createStyles(() => ({
container: {
borderRadius: Module712.radii.sm,
display: "flex",
justifyContent: "center",
alignItems: "center",
overflow: "hidden"
},
video: {
overflow: "hidden",
height: "100%",
width: "100%"
},
image: {
height: "100%",
width: "100%"
}
}));
export default function QuestRewardTile(props) {
let memo, setState;
const { quest, height, width, style, paused = false, withAnimation = isIOS(), accessibilityLabelPrefix } = props;
memo = void 0;
setState = void 0;
const stateFromStores = useStateFromStores([AccessibilityStore], () => AccessibilityStore.useReducedMotion);
const memo2 = useMemo(() => getQuestPrimaryReward(quest), [quest]);
const r37 = memo2.name != null ? memo2.name : memo2.messages.name;
memo = useMemo(() => getQuestAsset(quest, QuestAssetType.REWARD, void 0, true), [quest]);
const styles = useStyles();
let state;
[state, setState] = Module19.useState(AppState.currentState === "active");
Module19.useEffect(() => {
if (memo.isAnimated) {
let c26881_0 = AppState.addEventListener("change", (a0) => {
setState(a0 === "active");
});
return () => {
c26881_0.remove();
};
}
}, [memo.isAnimated]);
const memo3 = Module19.useMemo(() => getScaledImageUrl({
assetUrl: memo.url,
width,
height
}), [memo, width, height]);
return <View accessibilityLabel={[accessibilityLabelPrefix, r37].filter(Boolean).join(", ")} style={[styles.container, {
height,
width
}, style]}>
{memo.isAnimated && withAnimation ? <VideoComponent style={styles.video} source={{
uri: memo.url
}} disableFocus preventsDisplaySleepDuringVideoPlayback={false} importantForAccessibility="no-hide-descendants" poster={memo3} resizeMode="cover" paused={(state ? paused : !state) || stateFromStores} muted /> : <FastImage source={{
uri: memo3
}} style={styles.image} />}
</View>;
};