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,138 @@
// Metro module 11057 (f11058).
import { Fragment, useState, useMemo } from "react";
import { View } from "react-native";
import { AnalyticEvents } from "../../../Constants";
import { createStyles } from "../../../design/components/Styles/native/createStyles";
import Module712 from "../../../_bundle/Module712";
import { SafeAreaPaddingView } from "../../../components_native/common/SafeAreaView";
import { HeaderActionButton } from "../../../design/components/Navigator/native/HeaderActionButton.native";
import { intl, t } from "../../../intl/index.native";
import Module7699 from "../../../_bundle/Module7699";
import { generateFeedbackOptions, Feedback } from "../AutomodFeedback";
import useSafeAreaInsets_native from "../../safe_area/useSafeAreaInsets.native";
import { Text } from "../../../design/components/Text/native/Text";
import { FormRow, FormDivider } from "../../../design/void/Form/native/index";
import { RadioIndicator } from "../../../design/void/native";
import { Button } from "../../../design/components/Button/native/Button.native";
import { trackWithMetadata } from "../../app_analytics/AppAnalyticsUtils";
import { executeAlertAction } from "../GuildAutomodActionCreators";
import { AutomodAlertActionType } from "../AutomodAlert";
import { presentFeedbackSent } from "../../toast/native/ToastUtils";
import { Navigator } from "../../../design/components/Navigator/native/Navigator.native";
let initialRouteName, useStyles, SubmitFeedbackScreen;
const Navbar = function Navbar(props) {
const onClose = props.onClose;
const styles2 = useStyles();
return <SafeAreaPaddingView top style={styles2.header}>
<View style={styles2.closeButtonContainer}>
<HeaderActionButton accessibilityLabel={intl.string(t.cpT0Cq)} onPress={onClose} source={Module7699} />
</View>
</SafeAreaPaddingView>;
};
SubmitFeedbackScreen = function SubmitFeedbackScreen(props) {
const { feedback, onChange: onChange2, onSubmit: onSubmit3 } = props;
const styles = useStyles();
const r15 = generateFeedbackOptions();
let c18502_3 = r15;
const bottom = useSafeAreaInsets_native().bottom;
return <View style={styles.container}>
<Text style={styles.headerTitle} variant="heading-xl/bold" color="mobile-text-heading-primary">
{intl.string(t["7bdzNo"])}
</Text>
<Text style={styles.headerSubtitle} variant="text-sm/medium" color="text-default">
{intl.string(t.Lbpk6m)}
</Text>
<View style={styles.formBody}>
{r15.map(({ name, value }, index) => <Fragment key={value}>
<FormRow onPress={() => onChange2(value)} trailing={<RadioIndicator active={feedback === value} style={styles.radioIndicator} />} label={<Text style={styles.formRow} variant="text-md/semibold" color="interactive-text-active">{name}</Text>} />
{index < c18502_3.length - 1 && <FormDivider />}
</Fragment>)}
</View>
<View style={[styles.submitButtonContainer, {
paddingBottom: bottom + 16
}]}>
<Button size="md" text={intl.string(t.Z6DZZ6)} onPress={onSubmit3} />
</View>
</View>;
};
initialRouteName = "SUBMIT_FEEDBACK";
useStyles = createStyles({
container: {
flex: 1,
paddingHorizontal: 16,
paddingVertical: 0,
backgroundColor: Module712.colors.BACKGROUND_BASE_LOW,
flexDirection: "column",
height: "100%",
paddingTop: 8
},
header: {
flexDirection: "row",
justifyContent: "flex-end",
paddingVertical: 8,
backgroundColor: Module712.colors.BACKGROUND_BASE_LOW
},
headerTitle: {
textAlign: "center"
},
headerSubtitle: {
textAlign: "center",
marginTop: 8
},
closeButtonContainer: {
marginVertical: 14
},
formBody: {
marginTop: 24,
borderRadius: Module712.radii.sm,
backgroundColor: Module712.colors.BACKGROUND_SURFACE_HIGH
},
formRow: {
paddingVertical: 2
},
radioIndicator: {
marginRight: 0
},
submitButtonContainer: {
position: "absolute",
bottom: 0,
left: 0,
right: 0,
paddingHorizontal: 16,
paddingVertical: 16,
backgroundColor: Module712.colors.BACKGROUND_BASE_LOW
}
});
export default function AutomodSubmitFeedbackModal(props) {
const { onCloseModal, automodDecision } = props;
const top = useSafeAreaInsets_native().top;
const [state, setState] = useState(Feedback.BUG);
return <Navigator screens={useMemo(() => {
let onSubmit2;
const onCloseModal2 = onCloseModal;
const state2 = state;
const onChange3 = function onChange(a0) {
setState(a0);
};
onSubmit2 = function onSubmit() {
trackWithMetadata(AnalyticEvents.GUILD_AUTOMOD_FEEDBACK, {
feedback_type: state,
message_id: automodDecision.messageId,
content: automodDecision.messageContent,
decision_id: automodDecision.decisionId
});
executeAlertAction(automodDecision.messageId, automodDecision.channel, AutomodAlertActionType.SUBMIT_FEEDBACK);
presentFeedbackSent();
onCloseModal();
};
const r8 = {};
r8[initialRouteName] = {
ignoreKeyboard: true,
title: "",
customNavbar: () => <Navbar onClose={onCloseModal2} />,
headerLeft: () => null,
render: () => <SubmitFeedbackScreen feedback={state2} onChange={onChange3} onSubmit={onSubmit2} />
};
return r8;
}, [state, onCloseModal, automodDecision])} initialRouteName={initialRouteName} headerStatusBarHeight={top} />;
};
@@ -0,0 +1,119 @@
// Metro module 11060 (f11061).
import _objectWithoutProperties from "../../../_bundle/_objectWithoutProperties";
import { View } from "react-native";
import AuthenticationStore from "../../../stores/AuthenticationStore";
import GuildMemberStore from "../../../stores/GuildMemberStore";
import GuildStore from "../../../stores/GuildStore";
import { QUARANTINE_USER_ALERT_KEY } from "../Constants";
import { AnalyticEvents, UserSettingsSections } from "../../../Constants";
import { GuildMemberFlags } from "../../guild_member/GuildMemberConstants";
import { createStyles } from "../../../design/components/Styles/native/createStyles";
import Module712 from "../../../_bundle/Module712";
import Alert from "../../../components_native/common/Alert";
import { intl, t } from "../../../intl/index.native";
import { Icon } from "../../../design/void/native";
import Module11061 from "../../../_bundle/Module11061";
import { Text } from "../../../design/components/Text/native/Text";
import { useOpenFixQuarantinedProfileModal } from "../AutomodQuarantineUtils";
import { openUserSettings } from "../../user_settings/core/native/openUserSettings";
import { useStateFromStores } from "../../../_bundle/defaultAreStatesEqual";
import { getAutomodReason, getAutomodQuarantinedGuildMemberFlags } from "../AutomodPermissionUtils";
import useMountEffect from "../../../hooks/useMountEffect";
import AnalyticsUtils from "../../../utils/AnalyticsUtils";
let _excluded, _excluded2, _excluded3, useStyles, PerServerProfileAlert, ServerTagAlert;
const ChatBlockedAlert = function ChatBlockedAlert(props) {
const { title, description, buttonCta, onConfirm: onConfirm2, ...rest } = props;
const styles = useStyles();
return <Alert {...rest} style={styles.wrapper} cancelText={intl.string(t["ETE/oC"])} onCancel={rest?.onClose} confirmText={buttonCta} onConfirm={onConfirm2}>
<View style={styles.body}>
<Icon source={Module11061} size={Icon.Sizes.CUSTOM} style={styles.mainIcon} />
<Text style={styles.title} accessibilityRole="header" variant="heading-md/medium" color="mobile-text-heading-primary">{title}</Text>
<Text style={styles.description} variant="text-sm/medium" color="text-default">{description}</Text>
</View>
</Alert>;
};
PerServerProfileAlert = function PerServerProfileAlert(props) {
const { guildId: guildId2, guildName, automodReason, ...rest } = props;
let description = automodReason === GuildMemberFlags.AUTOMOD_QUARANTINED_USERNAME_OR_GUILD_NICKNAME ? intl.string(t.SpDXI7) : intl.string(t.TBeZmG);
let [c18507_0, r46] = useOpenFixQuarantinedProfileModal({
guildId: guildId2
});
if (!r46) {
description = intl.string(t.FFj5Dt);
}
const buttonCta = r46 ? intl.string(t["/PGQf0"]) : intl.string(t.WikgZ1);
return <ChatBlockedAlert {...rest} title={intl.format(t.kcYdTq, {
guildName
})} description={description} buttonCta={buttonCta} onConfirm={function onConfirm() {
c18507_0();
}} />;
};
ServerTagAlert = function ServerTagAlert(props) {
const guildName = props.guildName;
return <ChatBlockedAlert {..._objectWithoutProperties(props, _excluded3)} title={intl.format(t.c8TwbL, {
guildName
})} description={intl.string(t.EJJLHp)} buttonCta={intl.string(t.Viksoo)} onConfirm={function onConfirm() {
openUserSettings({
screen: UserSettingsSections.PROFILE_CUSTOMIZATION
});
}} />;
};
_excluded = ["title", "description", "buttonCta", "onConfirm"];
_excluded2 = ["guildId", "guildName", "automodReason"];
_excluded3 = ["guildName"];
useStyles = createStyles({
wrapper: {
padding: 16
},
body: {
flexDirection: "column",
alignItems: "center"
},
mainIcon: {
width: 48,
height: 48,
tintColor: Module712.colors.TEXT_FEEDBACK_CRITICAL,
marginBottom: 16
},
title: {
marginBottom: 16,
textAlign: "center"
},
description: {
textAlign: "center"
}
});
export default function AutomodUserProfileQuarantineAlert(props) {
let r49;
const guildId = props.guildId;
const stateFromStores = useStateFromStores([AuthenticationStore], () => AuthenticationStore.getId());
let guildName = useStateFromStores([GuildStore], () => GuildStore.getGuild(guildId), [guildId])?.name;
if (guildName == null) {
guildName = "";
}
L11: {
const stateFromStores2 = useStateFromStores([GuildMemberStore], () => {
if (guildId == null) {
return null;
}
return getAutomodReason(getAutomodQuarantinedGuildMemberFlags(GuildMemberStore.getMember(guildId, stateFromStores)));
}, [guildId, stateFromStores]);
useMountEffect(() => {
AnalyticsUtils.track(AnalyticEvents.OPEN_MODAL, {
type: QUARANTINE_USER_ALERT_KEY,
guild_id: guildId,
other_user_id: stateFromStores
});
});
if (stateFromStores2 !== GuildMemberFlags.AUTOMOD_QUARANTINED_BIO && stateFromStores2 !== GuildMemberFlags.AUTOMOD_QUARANTINED_USERNAME_OR_GUILD_NICKNAME) {
if (stateFromStores2 === GuildMemberFlags.AUTOMOD_QUARANTINED_SERVER_TAG) {
r49 = <ServerTagAlert guildName={guildName} {...props} />;
break L11;
}
r49 = <PerServerProfileAlert automodReason={stateFromStores2} guildName={guildName} {...props} />;
} else {
r49 = <PerServerProfileAlert automodReason={stateFromStores2} guildName={guildName} {...props} />;
}
}
return r49;
};
@@ -0,0 +1,132 @@
// Metro module 11024 (f11025).
import { memo, Fragment } from "react";
import GuildMemberStore from "../../../stores/GuildMemberStore";
import GuildStore from "../../../stores/GuildStore";
import PermissionStore from "../../../stores/PermissionStore";
import UserStore from "../../../stores/UserStore";
import { Permissions } from "../../../Constants";
import { createStyles } from "../../../design/components/Styles/native/createStyles";
import { useStateFromStores, useStateFromStoresObject } from "../../../_bundle/Module589";
import { canKickMember, canBanMember } from "../../guild_member/GuildMemberUtils";
import { canToggleCommunicationDisableOnUser } from "../../guild_communication_disabled/useCanToggleCommunicationDisableOnUser";
import NicknameUtils from "../../../utils/NicknameUtils";
import ActionSheetActionCreators from "../../action_sheet/native/ActionSheetActionCreators";
import { ActionSheetRow } from "../../../design/components/Sheet/native/ActionSheetRow.native";
import { intl, t } from "../../../intl/index.native";
import { SettingsIcon } from "../../../design/components/Icon/native/redesign/generated/SettingsIcon";
import ModalActionCreators from "../../../actions/ModalActionCreators";
import showModerateUserActionSheet from "./showModerateUserActionSheet";
import * as _CommunicationDisabledUtils from "../../guild_communication_disabled/CommunicationDisabledUtils";
import { ClockWarningIcon } from "../../../design/components/Icon/native/redesign/generated/ClockWarningIcon";
import { openEnableCommunication, openDisableCommunication } from "../../guild_communication_disabled/GuildDisableCommunicationActionCreators.native";
import { UserMinusIcon } from "../../../design/components/Icon/native/redesign/generated/UserMinusIcon";
import showKickConfirmModal from "../../guild_moderation/native/showKickConfirmModal";
import { HammerIcon } from "../../../design/components/Icon/native/redesign/generated/HammerIcon";
import showBanConfirmModal from "../../guild_moderation/native/showBanConfirmModal";
import { BottomSheet } from "../../../design/components/Sheet/native/BottomSheet.native";
import { BottomSheetTitleHeader } from "../../../design/components/Sheet/native/BottomSheetTitleHeader.native";
import MemberRolesList from "../../../components_native/MemberRolesList";
import { TableRowGroup } from "../../../design/components/TableRow/native/TableRowGroup.native";
const useStyles = createStyles({
container: {
padding: 16,
gap: 16
},
memberRoles: {
justifyContent: "flex-start"
}
});
const r39 = memo(function({ user, guild }) {
let hideActionSheet, isMemberCommunicationDisabled;
hideActionSheet = void 0;
isMemberCommunicationDisabled = void 0;
const styles = useStyles();
const stateFromStores = useStateFromStores([GuildMemberStore], () => GuildMemberStore.getMember(guild?.id, user.id), [user, guild]);
const userRoles = stateFromStores != null ? stateFromStores.roles : [];
const stateFromStoresObject = useStateFromStoresObject([PermissionStore, UserStore, GuildStore], () => ({
canKickUser: guild != null && canKickMember(user, guild),
canBanUser: guild != null && canBanMember(user, guild),
canChangeNick: guild != null && PermissionStore.canManageUser(Permissions.MANAGE_NICKNAMES, user, guild),
canManageRoles: guild != null && PermissionStore.can(Permissions.MANAGE_ROLES, guild),
canModerateMembers: guild != null && canToggleCommunicationDisableOnUser(guild.id, user.id, [UserStore, GuildStore, PermissionStore])
}), [user, guild]);
const { canKickUser, canBanUser, canChangeNick, canManageRoles, canModerateMembers } = stateFromStoresObject;
if (guild != null && stateFromStores != null) {
const name = NicknameUtils.getName(guild.id, void 0, user);
hideActionSheet = ActionSheetActionCreators.hideActionSheet;
const r47 = stateFromStores != null && ((canKickUser ? canKickUser : canBanUser) || canChangeNick || canManageRoles) && !user.isNonUserBot();
const r51 = [];
if (r47) {
r51.push(<ActionSheetRow label={intl.string(t.HxrBOZ)} icon={<ActionSheetRow.Icon IconComponent={SettingsIcon} />} onPress={() => {
hideActionSheet();
ModalActionCreators.pushLazy(import("../../guild_settings/native/GuildSettingsModalMemberEdit"), {
userId: user.id,
guildId: guild.id,
onClose: () => {
ModalActionCreators.pop();
showModerateUserActionSheet({
guild,
user
});
},
onRemove: () => {
ModalActionCreators.pop();
}
});
}} />);
}
if (stateFromStores != null && canModerateMembers) {
isMemberCommunicationDisabled = _CommunicationDisabledUtils.isMemberCommunicationDisabled(stateFromStores);
r51.push(<ActionSheetRow label={isMemberCommunicationDisabled ? intl.string(t.qXtNtS) : intl.string(t.xpsADY)} icon={<ActionSheetRow.Icon IconComponent={ClockWarningIcon} />} onPress={() => {
hideActionSheet();
if (isMemberCommunicationDisabled) {
openEnableCommunication({
guildId: stateFromStores.guildId,
userId: stateFromStores.userId
});
} else {
openDisableCommunication({
guildId: stateFromStores.guildId,
userId: stateFromStores.userId
});
}
}} />);
}
if (stateFromStores != null && canKickUser) {
r51.push(<ActionSheetRow label={intl.string(t["3glT6Z"])} icon={<ActionSheetRow.Icon IconComponent={UserMinusIcon} />} variant="danger" onPress={() => {
showKickConfirmModal({
guildId: guild.id,
userId: user.id,
cancelButtonCallback: () => showModerateUserActionSheet({
guild,
user
})
});
}} />);
}
if (stateFromStores != null && canBanUser) {
r51.push(<ActionSheetRow label={intl.string(t["5MBJ5M"])} icon={<ActionSheetRow.Icon IconComponent={HammerIcon} />} variant="danger" onPress={() => {
showBanConfirmModal({
guildId: guild.id,
userId: user.id,
cancelButtonCallback: () => showModerateUserActionSheet({
guild,
user
})
});
}} />);
}
return <BottomSheet header={<BottomSheetTitleHeader title={intl.formatToPlainString(t["792QKT"], {
nick: name
})} />} bodyStyles={styles.container}>
<MemberRolesList style={[styles.memberRoles]} guild={guild} userRoles={userRoles} />
<TableRowGroup hasIcons>
{r51.map((item, index) => <Fragment key={`action_${index}`}>
{item}
</Fragment>)}
</TableRowGroup>
</BottomSheet>;
}
return null;
});
export default r39;
@@ -0,0 +1,5 @@
// Metro module 11023 (f11024).
import ActionSheetActionCreators from "../../action_sheet/native/ActionSheetActionCreators";
export default function showModerateUserActionSheet(a0) {
ActionSheetActionCreators.openLazy(import("./ModerateUserActionSheet"), "ModerateUserActionSheet", a0);
};