82 lines
4.3 KiB
TypeScript
82 lines
4.3 KiB
TypeScript
// Metro module 9062 (f9063).
|
|
import { useMemo } from "react";
|
|
import { View } from "react-native";
|
|
import PresenceStore from "../../../stores/PresenceStore";
|
|
import RelationshipStore from "../../../stores/RelationshipStore";
|
|
import UserStore from "../../../stores/UserStore";
|
|
import { DOT_UNICODE } from "../ActivityStatusConstants";
|
|
import { ActivityTypes } from "../../../Constants";
|
|
import { createStyles } from "../../../design/components/Styles/native/createStyles";
|
|
import { useStateFromStores } from "../../../_bundle/Module589";
|
|
import useDiscoverableApplicationStream from "../../blocking/useDiscoverableApplicationStream";
|
|
import useUserVoiceActivity from "../useUserVoiceActivity";
|
|
import { useGameMentionsAsPlainText } from "../../game_mentions/hooks/useGameMentionsAsPlainText";
|
|
import ApplicationStreamActivityStatus from "./ApplicationStreamActivityStatus";
|
|
import isGameActivity from "../../activities/utils/isGameActivity";
|
|
import PresenceActivityStatus from "./PresenceActivityStatus";
|
|
import VoiceActivityStatus from "./VoiceActivityStatus";
|
|
import ActivityEmoji from "./ActivityEmoji";
|
|
import ActivityStatusText from "./ActivityStatusText";
|
|
const useStyles = createStyles({
|
|
container: {
|
|
flexDirection: "row",
|
|
alignItems: "center",
|
|
gap: 4
|
|
},
|
|
icon: {
|
|
marginTop: 1
|
|
},
|
|
emoji: {
|
|
marginRight: 0
|
|
}
|
|
});
|
|
export default function ActivityStatus(props) {
|
|
let r71;
|
|
let stateFromStores;
|
|
const { userId, guildId, iconStyle, textStyle, emojiSize = 14, maxFontSizeMultiplier, animate = true, hideEmoji = false } = props;
|
|
stateFromStores = void 0;
|
|
const styles = useStyles();
|
|
const stateFromStores2 = useStateFromStores([UserStore], () => UserStore.getUser(userId));
|
|
stateFromStores = useStateFromStores([PresenceStore], () => PresenceStore.getActivities(userId));
|
|
const discoverableApplicationStream = useDiscoverableApplicationStream(userId);
|
|
const voiceChannel = useUserVoiceActivity({
|
|
userId,
|
|
guildId
|
|
}).voiceChannel;
|
|
const memo = useMemo(() => {
|
|
const r3 = stateFromStores == null ? void 0 : stateFromStores.find((stateFromStore) => stateFromStore.type === ActivityTypes.CUSTOM_STATUS);
|
|
if (r3 == null) {
|
|
return null;
|
|
}
|
|
const state = r3.state;
|
|
let r4 = state == null ? void 0 : state.trim();
|
|
if (r4 == null) {
|
|
r4 = null;
|
|
}
|
|
return (r4 !== "" ? r4 : null) == null ? r3.emoji == null ? null : r3 : r3;
|
|
}, [stateFromStores]);
|
|
const gameMentionsAsPlainText = useGameMentionsAsPlainText(memo?.state);
|
|
if (useStateFromStores([RelationshipStore], () => RelationshipStore.isBlockedOrIgnored(userId))) {
|
|
return null;
|
|
}
|
|
const bot = stateFromStores2?.bot;
|
|
const state = memo?.state;
|
|
const hideIcon = bot === true;
|
|
const hideText = state != null;
|
|
if (discoverableApplicationStream != null) {
|
|
r71 = <ApplicationStreamActivityStatus game={stateFromStores == null ? void 0 : stateFromStores.find(isGameActivity)} iconStyle={[styles.icon, iconStyle]} textStyle={textStyle} maxFontSizeMultiplier={maxFontSizeMultiplier} hideIcon={hideIcon} hideText={hideText} />;
|
|
} else {
|
|
const activity = stateFromStores == null ? void 0 : stateFromStores.find(({ type }) => type !== ActivityTypes.CUSTOM_STATUS && type !== ActivityTypes.HANG_STATUS);
|
|
r71 = activity != null ? <PresenceActivityStatus activity={activity} iconStyle={[styles.icon, iconStyle]} textStyle={textStyle} maxFontSizeMultiplier={maxFontSizeMultiplier} hideIcon={hideIcon} hideText={hideText} /> : voiceChannel != null ? <VoiceActivityStatus channel={voiceChannel} iconStyle={[styles.icon, iconStyle]} textStyle={textStyle} maxFontSizeMultiplier={maxFontSizeMultiplier} hideIcon={hideIcon} hideText={hideText} /> : null;
|
|
}
|
|
const r96 = memo == null ? null : memo != null ? <>
|
|
{memo.emoji != null && !hideEmoji && <ActivityEmoji emoji={memo.emoji} size={emojiSize} animate={animate} style={styles.emoji} />}
|
|
{memo.state != null && <ActivityStatusText variant="text-xs/normal" style={textStyle} maxFontSizeMultiplier={maxFontSizeMultiplier}>{gameMentionsAsPlainText}</ActivityStatusText>}
|
|
</> : null;
|
|
return <View style={styles.container}>
|
|
{r71}
|
|
{r71 != null && r96 != null && <ActivityStatusText variant="text-xs/normal" style={textStyle} maxFontSizeMultiplier={maxFontSizeMultiplier} accessibilityElementsHidden importantForAccessibility="no-hide-descendants">{DOT_UNICODE}</ActivityStatusText>}
|
|
{r96}
|
|
</View>;
|
|
};
|