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,24 @@
// Metro module 4639 (f4640).
import { createApexExperiment } from "../../../experiments/apex/index";
const apexExperiment = createApexExperiment({
name: "2026-03-soundmoji-rendering",
kind: "user",
defaultConfig: {
enabled: false
},
variations: {
1: {
enabled: true
}
}
});
export function getSoundmojiRenderingExperiment(a0) {
return apexExperiment.getConfig({
location: a0.location
}).enabled;
}
export function useSoundmojiRenderingExperiment(a0) {
return apexExperiment.useConfig({
location: a0.location
}).enabled;
}
@@ -0,0 +1,35 @@
// Metro module 9346 (f9347).
import { createApexExperiment } from "../../../experiments/apex/index";
const apexExperiment = createApexExperiment({
name: "2026-03-soundmoji-sending",
kind: "user",
defaultConfig: {
enabled: false,
showSoundmojiInEmojiPicker: false
},
variations: {
1: {
enabled: true,
showSoundmojiInEmojiPicker: false
},
2: {
enabled: true,
showSoundmojiInEmojiPicker: true
}
}
});
export function getSoundmojiSendExperiment(a0) {
return apexExperiment.getConfig({
location: a0.location
}).enabled;
}
export function useSoundmojiSendExperiment(a0) {
return apexExperiment.useConfig({
location: a0.location
}).enabled;
}
export function useSoundmojiEmojiPickerSectionExperiment(a0) {
return apexExperiment.useConfig({
location: a0.location
}).showSoundmojiInEmojiPicker;
}
@@ -0,0 +1,10 @@
// Metro module 11126 (f11127).
import { getSoundmojiRenderingExperiment } from "../../SoundmojiRenderingExperiment";
import ActionSheetActionCreators from "../../../../../action_sheet/native/ActionSheetActionCreators";
export default function openSoundmojiActionSheet(a0) {
if (getSoundmojiRenderingExperiment({
location: "openSoundmojiActionSheet"
})) {
ActionSheetActionCreators.openLazy(import("../views/SoundmojiActionSheet"), "soundmoji_actionsheet_key", a0);
}
};
@@ -0,0 +1,70 @@
// Metro module 11127 (f11128).
import { useMemo } from "react";
import { View } from "react-native";
import { createStyles } from "../../../../../../design/components/Styles/native/createStyles";
import Module712 from "../../../../../../_bundle/Module712";
import { isIOS } from "../../../../../../utils/PlatformUtils";
import { getSoundmojiFromMessage } from "../../utils/getSoundmojiASTFromString";
import { BottomSheet } from "../../../../../../design/components/Sheet/native/BottomSheet.native";
import Emoji from "../../../../../emojis/native/Emoji";
import getSoundboardEmojiUrl from "../../../../../soundboard/native/utils/getSoundboardEmojiUrl";
import { Text } from "../../../../../../design/components/Text/native/Text";
import { intl, t } from "../../../../../../intl/index.native";
const useStyles = createStyles({
container: {
padding: Module712.space.PX_24,
gap: Module712.space.PX_16
},
soundmojiContainer: {
flexDirection: "row",
alignItems: "center"
},
emoji: {
width: 32,
height: 32,
fontSize: isIOS() ? 32 : void 0,
lineHeight: 36,
marginEnd: Module712.space.PX_16
},
textContainer: {
gap: Module712.space.PX_4,
display: "flex",
flex: 1
}
});
export default function SoundmojiActionSheet(props) {
const { guildId, channelId, messageId, soundId } = props;
const styles = useStyles();
const memo = useMemo(() => getSoundmojiFromMessage(guildId, channelId, messageId, soundId, []), [guildId, channelId, messageId, soundId]);
const r3 = memo == null;
let r23 = null;
if (!r3) {
let r35 = memo.emojiId != null || memo.emojiName != null;
if (r35) {
const props2 = {
fastImageStyle: styles.emoji,
textEmojiStyle: styles.emoji,
src: getSoundboardEmojiUrl(memo, 32),
name: null
};
let emojiName = memo.emojiName;
if (emojiName == null) {
emojiName = "";
}
props2.name = emojiName;
r35 = <Emoji {...props2} />;
}
r23 = <BottomSheet startExpanded bodyStyles={styles.container}>
<View style={styles.soundmojiContainer}>
{r35}
<View style={styles.textContainer}>
<Text variant="text-sm/bold">{memo.name}</Text>
<Text variant="text-sm/normal">
{intl.string(t.Tj5Nwi)}
</Text>
</View>
</View>
</BottomSheet>;
}
return r23;
};
@@ -0,0 +1,62 @@
// Metro module 4641 (f4642).
import MessageStore from "../../../../../stores/MessageStore";
import { DEFAULT_SOUND_GUILD_ID } from "../../../../soundboard/SoundboardConstants";
import { soundboardSoundFromAPI } from "../../../../soundboard/SoundboardTypes";
import { MessageReferenceTypes } from "../../../../../_bundle/Module694";
function $mk74859($env) {
return (a0) => String(a0.sound_id) === String($env[0]);
}
const getSoundFromSounds = function getSoundFromSounds(a0, a1) {
let env14376;
const r2 = env14376 = {};
env14376[0] = a1;
return a0 == null ? void 0 : a0.find($mk74859(r2));
};
export default function getSoundFromMessage(a0, a1, a2, a3) {
let r31;
let env14377;
const r4 = env14377 = {};
env14377[0] = a2;
const r7 = a3 == null ? void 0 : a3.find($mk74859(r4));
if (r7 != null) {
let guild_id2 = r7.guild_id;
if (guild_id2 == null) {
guild_id2 = DEFAULT_SOUND_GUILD_ID;
}
return soundboardSoundFromAPI(r7, guild_id2);
}
const message = MessageStore.getMessage(a0, a1);
if (message != null) {
if ((message == null ? void 0 : message.messageReference?.type) === MessageReferenceTypes.FORWARD) {
let r34 = message?.messageSnapshots;
if (r34 == null) {
r34 = [];
}
r31 = (function getSoundFromMessageSnapshot(a0, a1) {
let r0 = void 0;
for (const item of a0) {
const soundFromSounds = getSoundFromSounds(item.message?.soundboardSounds, a1);
if (soundFromSounds == null) {
continue;
}
r0 = soundFromSounds;
break;
}
return r0;
})(r34, a2);
} else {
const soundboardSounds = message?.soundboardSounds;
let env14378;
const r29 = env14378 = {};
env14378[0] = a2;
r31 = soundboardSounds == null ? void 0 : soundboardSounds.find($mk74859(r29));
}
if (r31 != null) {
let guild_id = r31.guild_id;
if (guild_id == null) {
guild_id = DEFAULT_SOUND_GUILD_ID;
}
return soundboardSoundFromAPI(r31, guild_id);
}
}
};
@@ -0,0 +1,4 @@
// Metro module 4643 (f4644).
export default function getSoundString(a0, a1) {
return `<sound:${a0}:${a1}>`;
};
@@ -0,0 +1,91 @@
// Metro module 4634 (f4635).
import SoundboardStore from "../../../../soundboard/SoundboardStore";
import MessageStore from "../../../../../stores/MessageStore";
import { MessageStates } from "../../../../../Constants";
import { getSoundmojiRenderingExperiment } from "../SoundmojiRenderingExperiment";
import isSoundValid from "./isSoundValid";
import getSoundFromMessage from "./getSoundFromMessage";
import getSoundString from "./getSoundString";
import { getEmojiURL } from "../../../../../utils/AvatarUtils";
export default function getSoundmojiASTFromString(a0, a1) {
let r25, guildId2, soundId;
L13: {
guildId2 = a0[1];
soundId = a0[2];
const { guildId, channelId, messageId, soundboardSounds } = a1;
const soundmojiRenderingExperiment = getSoundmojiRenderingExperiment({
location: "getSoundmojiASTFromString"
});
r25 = void 0;
if (soundmojiRenderingExperiment) {
const soundById = SoundboardStore.getSoundById(soundId);
const isSoundValid2 = isSoundValid(soundById, guildId, channelId);
if (messageId != null && channelId != null) {
const soundFromMessage = getSoundFromMessage(channelId, messageId, soundId, soundboardSounds);
r25 = soundFromMessage;
if (!isSoundValid2) {
break L13;
}
r25 = soundFromMessage;
if (soundFromMessage != null) {
break L13;
}
const state = MessageStore.getMessage(channelId, messageId)?.state;
const SENT = MessageStates.SENT;
r25 = soundFromMessage;
if (state === SENT) {
break L13;
}
r25 = soundById;
break L13;
}
r25 = isSoundValid2 ? soundById ?? void 0 : void 0;
}
}
if (r25 == null) {
return {
type: "text",
content: getSoundString(guildId2, soundId)
};
}
let content = r25?.name;
if (content == null) {
content = soundId;
}
return {
type: "soundboard",
soundId,
guildId: guildId2,
messageId: a1.messageId,
channelId: a1.channelId,
content,
emojiId: r25?.emojiId,
emojiName: r25?.emojiName,
emojiSrc: r25?.emojiId != null ? getEmojiURL({
id: r25?.emojiId,
animated: false,
size: 16
}) : void 0
};
};
export const soundmojiRawFormatRegex = /^<sound:(\d+):(\d+)>/;
export function getSoundmojiFromMessage(a0, a1, a2, a3, a4) {
if (getSoundmojiRenderingExperiment({
location: "getSoundmojiASTFromString"
})) {
const soundById = SoundboardStore.getSoundById(a3);
const isSoundValid2 = isSoundValid(soundById, a0, a1);
if (a2 != null && a1 != null) {
const soundFromMessage = getSoundFromMessage(a1, a2, a3, a4);
if (isSoundValid2 && soundFromMessage == null) {
if (MessageStore.getMessage(a1, a2)?.state !== MessageStates.SENT) {
return soundById;
}
}
return soundFromMessage;
}
if (isSoundValid2) {
return soundById ?? void 0;
}
}
}
@@ -0,0 +1,18 @@
// Metro module 4640 (f4641).
import ChannelStore from "../../../../../stores/ChannelStore";
import PermissionStore from "../../../../../stores/PermissionStore";
import UserStore from "../../../../../stores/UserStore";
import { DEFAULT_SOUND_GUILD_ID } from "../../../../soundboard/SoundboardConstants";
import { Permissions } from "../../../../../_bundle/Module505";
import PremiumUtils from "../../../../../utils/PremiumUtils";
export default function isSoundValid(a0, a1, a2) {
const channel = ChannelStore.getChannel(a2);
if (a0?.guildId === DEFAULT_SOUND_GUILD_ID) {
return true;
}
if (a0?.guildId !== channel?.guild_id && a0?.guildId !== a1) {
const canUseSoundboardEverywhere = PremiumUtils.canUseSoundboardEverywhere(UserStore.getCurrentUser());
return (channel == null || channel.guild_id == null || PermissionStore.can(Permissions.USE_EXTERNAL_SOUNDS, channel)) && canUseSoundboardEverywhere;
}
return true;
};