This commit is contained in:
janisslsm committed 2026-11-01 12:12:55 +02:00
1 parent 1781d25a15
commit 732c0ad767
33051 files changed
+2591613 -3019689

No files matched your search

@@ -0,0 +1,3 @@
// Metro module 9063 (f9064).
export const TOOLTIP_DELAY_MS = 150;
export const DOT_UNICODE = "•";
@@ -0,0 +1,89 @@
// Metro module 9076 (f9077).
import { ActivityTypes } from "../../Constants";
import { StatusDisplayTypes } from "../../_bundle/Module9077";
import isEmbeddedActivity from "../activities/utils/isEmbeddedActivity";
import getChannelCopyForEmbeddedActivity from "../activities/utils/getChannelCopyForEmbeddedActivity";
import { intl, t } from "../../intl/index.native";
import isListeningOnSpotify from "../activities/utils/isListeningOnSpotify";
import { isStageActivity } from "../stage_channels/StageChannelRichPresenceUtils";
import isCrunchyrollActivity from "../activities/utils/isCrunchyrollActivity";
export default function getActivityStatusText(a0, r8 = false) {
let text3;
const text = a0?.name !== "" ? a0?.name : null;
const text2 = a0?.details !== "" ? a0?.details : null;
const r10 = a0?.state !== "" ? a0?.state : null;
const r13 = a0?.type === ActivityTypes.STREAMING ? text2 == null ? text : text2 : text;
const status_display_type = a0?.status_display_type;
L40: {
if (status_display_type === StatusDisplayTypes.NAME) {
text3 = text;
if (text3 != null) {
break L40;
}
}
if (a0?.status_display_type === StatusDisplayTypes.STATE) {
text3 = r10;
if (text3 == null) {
text3 = a0?.status_display_type === StatusDisplayTypes.DETAILS && text2 != null ? text2 : r13;
}
} else {
text3 = a0?.status_display_type === StatusDisplayTypes.DETAILS && text2 != null ? text2 : r13;
}
}
if (isEmbeddedActivity(a0)) {
const channelCopyForEmbeddedActivity = getChannelCopyForEmbeddedActivity(text);
return {
text: channelCopyForEmbeddedActivity,
tooltip: channelCopyForEmbeddedActivity
};
}
if (a0?.type === ActivityTypes.PLAYING && text3 != null) {
return {
text: text3,
tooltip: intl.formatToPlainString(t.lFApmz, {
game: text3
})
};
}
if (isListeningOnSpotify(a0) && r8 && r10 != null) {
const r148 = r10.split("; ");
const text4 = r148 == null ? void 0 : r148.join(", ");
return {
text: text4,
tooltip: intl.formatToPlainString(t.Vnuxue, {
name: text4
})
};
}
return isStageActivity(a0) && text != null ? {
text,
tooltip: intl.formatToPlainString(t.pW3Ip3, {
name: text
})
} : a0?.type === ActivityTypes.LISTENING && text3 != null ? {
text: text3,
tooltip: intl.formatToPlainString(t.Vnuxue, {
name: text3
})
} : isCrunchyrollActivity(a0) && (r8 && text2 != null) ? {
text: text2,
tooltip: intl.formatToPlainString(t.pW3Ip3, {
name: text2
})
} : a0?.type === ActivityTypes.WATCHING && text3 != null ? {
text: text3,
tooltip: intl.formatToPlainString(t.pW3Ip3, {
name: text3
})
} : a0?.type === ActivityTypes.COMPETING && text3 != null ? {
text: text3,
tooltip: intl.formatToPlainString(t.QQ2wVE, {
name: text3
})
} : a0?.type === ActivityTypes.STREAMING && text3 != null ? {
text: text3,
tooltip: intl.formatToPlainString(t["0wJXSh"], {
name: text3
})
} : {};
};
@@ -0,0 +1,44 @@
// Metro module 9085 (f9086).
import { useMemo } from "react";
import { createStyles } from "../../../design/components/Styles/native/createStyles";
import { AnimateEmoji } from "../../user_settings/UserSettings";
import AvatarUtils from "../../../utils/AvatarUtils";
import { ReactionIcon } from "../../../design/components/Icon/native/redesign/generated/ReactionIcon";
import Emoji from "../../emojis/native/Emoji";
const useStyles = createStyles({
emoji: {
flexShrink: 0,
width: "100%",
height: "100%"
},
text: {
textAlign: "center",
fontFamily: "System"
}
});
export default function ActivityEmoji(props) {
const { emoji, size, style, withPlaceholder = false, animate = true } = props;
const styles = useStyles();
const setting = AnimateEmoji.useSetting();
const animated = Boolean(emoji?.animated && setting && animate);
const memo = useMemo(() => {
if (emoji?.id != null) {
return AvatarUtils.getEmojiURL({
id: emoji.id,
size: 48,
animated
});
}
}, [emoji?.id, animated]);
return emoji == null ? withPlaceholder ? emoji == null ? <ReactionIcon style={style} size="sm" /> : <Emoji src={memo} name={emoji.name} style={[style, {
width: size,
height: size
}]} textEmojiStyle={[styles.emoji, styles.text, {
fontSize: size
}]} fastImageStyle={styles.emoji} adjustsFontSizeToFit /> : null : emoji == null ? <ReactionIcon style={style} size="sm" /> : <Emoji src={memo} name={emoji.name} style={[style, {
width: size,
height: size
}]} textEmojiStyle={[styles.emoji, styles.text, {
fontSize: size
}]} fastImageStyle={styles.emoji} adjustsFontSizeToFit />;
};
@@ -0,0 +1,81 @@
// 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>;
};
@@ -0,0 +1,16 @@
// Metro module 9068 (f9069).
import { jsx } from "react/jsx-runtime";
import { createStyles } from "../../../design/components/Styles/native/createStyles";
const useStyles = createStyles({
icon: {
flexShrink: 0
}
});
export default function ActivityStatusIcon({ icon, style, ...rest }) {
return jsx(icon, {
size: "xxs",
style: [useStyles().icon, style],
color: "status-positive",
...rest
});
};
@@ -0,0 +1,12 @@
// Metro module 9071 (f9072).
import { createStyles } from "../../../design/components/Styles/native/createStyles";
import { Text } from "../../../design/components/Text/native/Text";
const useStyles = createStyles({
text: {
flexShrink: 1
}
});
export default function ActivityStatusText(props) {
const { children, style, variant = "text-xs/medium", ...props2 } = props;
return <Text variant={variant} color="text-muted" style={[useStyles().text, style]} lineClamp={1} {...props2}>{children}</Text>;
};
@@ -0,0 +1,19 @@
// Metro module 9067 (f9068).
import { intl, t } from "../../../intl/index.native";
import ActivityStatusIcon from "./ActivityStatusIcon";
import { TvIcon } from "../../../design/components/Icon/native/redesign/generated/TvIcon";
import ActivityStatusText from "./ActivityStatusText";
export default function ApplicationStreamActivityStatus(props) {
const { game, iconStyle, textStyle, maxFontSizeMultiplier, hideIcon = false, hideText = false } = props;
if (hideIcon && hideText) {
return null;
}
const name = game?.name !== "" ? game?.name : null;
const r30 = name != null ? intl.format(t["0wJXSh"], {
name
}) : intl.string(t.eXan7B);
return <>
{hideIcon ? !hideIcon : <ActivityStatusIcon icon={TvIcon} style={iconStyle} />}
{hideText ? !hideText : <ActivityStatusText style={textStyle} maxFontSizeMultiplier={maxFontSizeMultiplier}>{r30}</ActivityStatusText>}
</>;
};
@@ -0,0 +1,43 @@
// Metro module 9073 (f9074).
import { ActivityTypes } from "../../../Constants";
import isEmbeddedActivity from "../../activities/utils/isEmbeddedActivity";
import { GameControllerIcon } from "../../../design/components/Icon/native/redesign/generated/GameControllerIcon";
import { AppsIcon } from "../../../design/components/Icon/native/redesign/generated/AppsIcon";
import { MusicIcon } from "../../../design/components/Icon/native/redesign/generated/MusicIcon";
import { TvIcon } from "../../../design/components/Icon/native/redesign/generated/TvIcon";
import getActivityStatusText from "../getActivityStatusText";
import ActivityStatusIcon from "./ActivityStatusIcon";
import ActivityStatusText from "./ActivityStatusText";
export default function PresenceActivityStatus(props) {
let AppsIcon2, text;
const { activity, iconStyle, textStyle, maxFontSizeMultiplier, hideIcon = false, hideText = false } = props;
if (hideIcon && hideText) {
return null;
}
L21: {
text = getActivityStatusText(activity, true).text;
if (isEmbeddedActivity(activity)) {
AppsIcon2 = AppsIcon;
} else if (activity.type === ActivityTypes.PLAYING) {
AppsIcon2 = GameControllerIcon;
} else if (activity.type === ActivityTypes.LISTENING) {
AppsIcon2 = MusicIcon;
} else {
if (activity.type !== ActivityTypes.WATCHING && activity.type !== ActivityTypes.STREAMING) {
const type = activity.type;
const COMPETING = ActivityTypes.COMPETING;
AppsIcon2 = null;
if (type !== COMPETING) {
break L21;
}
AppsIcon2 = GameControllerIcon;
break L21;
}
AppsIcon2 = TvIcon;
}
}
return <>
{(hideIcon ? !hideIcon : AppsIcon2 != null) && <ActivityStatusIcon icon={AppsIcon2} style={iconStyle} />}
{hideText ? !hideText : <ActivityStatusText style={textStyle} maxFontSizeMultiplier={maxFontSizeMultiplier}>{text}</ActivityStatusText>}
</>;
};
@@ -0,0 +1,52 @@
// Metro module 9081 (f9082).
import { createStyles } from "../../../design/components/Styles/native/createStyles";
import UserProfileVoiceActivityIcon from "../../user_profile/native/UserProfileVoiceActivityIcon";
import ActivityStatusText from "./ActivityStatusText";
import { intl, t } from "../../../intl/index.native";
const useStyles = createStyles({
icon: {
flexShrink: 0
}
});
export default function VoiceActivityStatus(props) {
let r19, r48;
const { channel, iconStyle, textStyle, maxFontSizeMultiplier, hideIcon = false, hideText = false } = props;
L18: {
const styles = useStyles();
if (hideIcon) {
r19 = null;
if (hideText) {
break L18;
}
}
const r25 = [hideIcon ? !hideIcon : <UserProfileVoiceActivityIcon channel={channel} size="xxs" color="status-positive" style={[styles.icon, iconStyle]} />, ,];
let r26 = !hideText;
if (!hideText) {
L16: {
if (!channel.isDM() && !channel.isGroupDM()) {
const isGuildStageVoice = channel.isGuildStageVoice();
const props2 = {
style: textStyle,
maxFontSizeMultiplier,
children: null
};
if (isGuildStageVoice) {
props2.children = intl.string(t.QygGCN);
r48 = <ActivityStatusText {...props2} />;
break L16;
}
props2.children = intl.string(t.msxteM);
r48 = <ActivityStatusText {...props2} />;
} else {
r48 = <ActivityStatusText style={textStyle} maxFontSizeMultiplier={maxFontSizeMultiplier}>
{intl.string(t["9FaEzi"])}
</ActivityStatusText>;
}
}
r26 = r48;
}
r25[1] = r26;
r19 = <>{r25}</>;
}
return r19;
};
@@ -0,0 +1,70 @@
// Metro module 9065 (f9066).
import ChannelStore from "../../stores/ChannelStore";
import PermissionStore from "../../stores/PermissionStore";
import VoiceStateStore from "../../stores/VoiceStateStore";
import { Permissions } from "../../_bundle/Module505";
import { useStateFromStoresObject } from "../../_bundle/Module589";
let c5932_6, c5932_7;
const getVisibleUserVoiceActivity = function getVisibleUserVoiceActivity(a0) {
const { userId: userId2, guildId: guildId2 } = a0;
let r8 = arguments[1];
if (r8 === void 0) {
r8 = c5932_6;
}
const r2 = r8 !== void 0;
const r12 = r2 ? r8 : c5932_6;
const voiceState = guildId2 != null && userId2 != null ? r12.VoiceStateStore.getDiscoverableVoiceState(guildId2, userId2) : userId2 != null ? r12.VoiceStateStore.getDiscoverableVoiceStateForUser(userId2) : void 0;
const r15 = r2 ? r8 : c5932_6;
const voiceChannel = voiceState?.channelId != null ? r15.ChannelStore.getChannel(voiceState.channelId) : void 0;
if (!r2) {
r8 = c5932_6;
}
return voiceState != null && ((voiceChannel == null ? void 0 : voiceChannel.isPrivate()) || r8.PermissionStore.can(Permissions.VIEW_CHANNEL, voiceChannel)) ? {
voiceState,
voiceChannel
} : c5932_7;
};
c5932_6 = {
ChannelStore,
PermissionStore,
VoiceStateStore
};
c5932_7 = Object.freeze({
voiceState: void 0,
voiceChannel: void 0
});
export default function useUserVoiceActivity({ userId, guildId }) {
return useStateFromStoresObject([ChannelStore, PermissionStore, VoiceStateStore], () => getVisibleUserVoiceActivity({
userId,
guildId
}, {
ChannelStore,
PermissionStore,
VoiceStateStore
}), [guildId, userId]);
};
export function getUserVoiceState(a0) {
const { userId: userId2, guildId: guildId2 } = a0;
let r2 = arguments[1];
if (r2 === void 0) {
r2 = c5932_6;
}
return guildId2 != null && userId2 != null ? r2.VoiceStateStore.getDiscoverableVoiceState(guildId2, userId2) : userId2 != null ? r2.VoiceStateStore.getDiscoverableVoiceStateForUser(userId2) : void 0;
}
export function canViewUserVoiceChannel(a0) {
const { userId: userId2, guildId: guildId2 } = a0;
let r6 = arguments[1];
if (r6 === void 0) {
r6 = c5932_6;
}
const r2 = r6 !== void 0;
const r7 = r2 ? r6 : c5932_6;
const r12 = guildId2 != null && userId2 != null ? r7.VoiceStateStore.getDiscoverableVoiceState(guildId2, userId2) : userId2 != null ? r7.VoiceStateStore.getDiscoverableVoiceStateForUser(userId2) : void 0;
const r15 = r2 ? r6 : c5932_6;
const r19 = r12?.channelId != null ? r15.ChannelStore.getChannel(r12.channelId) : void 0;
if (!r2) {
r6 = c5932_6;
}
return r12 != null && ((r19 == null ? void 0 : r19.isPrivate()) || r6.PermissionStore.can(Permissions.VIEW_CHANNEL, r19));
}
export { getVisibleUserVoiceActivity };