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,509 @@
// Metro module 8284 (f8285).
import _objectWithoutProperties from "../../../../_bundle/_objectWithoutProperties";
import _slicedToArray from "../../../../_bundle/_slicedToArray";
import { useState, useEffect } from "react";
import { ScrollView, View } from "react-native";
import GuildMemberStore from "../../../../stores/GuildMemberStore";
import GuildRoleStore from "../../../../stores/GuildRoleStore";
import GuildStore from "../../../../stores/GuildStore";
import UserStore from "../../../../stores/UserStore";
import { MEMBER_REQUEST_COUNT, RowType } from "../../ChannelPermissionsConstants";
import { Permissions } from "../../../../_bundle/Module505";
import { jsx } from "react/jsx-runtime";
import { createStyles } from "../../../../design/components/Styles/native/createStyles";
import Module712 from "../../../../_bundle/Module712";
import { NONE, canEveryoneRole } from "../../../../utils/PermissionUtils";
import useSafeAreaInsetsKeyboardAware_native from "../../../safe_area/useSafeAreaInsetsKeyboardAware.native";
import RegexUtils from "../../../../utils/RegexUtils";
import { useStateFromStores, useStateFromStoresArray } from "../../../../_bundle/Module589";
import { getRolesRows, getNoRolesRow, getMembersRows } from "../../ChannelPermissionsUtils";
import { AccessibilityAnnouncer } from "../../../../_bundle/Module3902";
import { intl, t } from "../../../../intl/index.native";
import { HelpMessage, HelpMessageTypes, EmptyState, Avatar } from "../../../../design/void/native";
import { Text } from "../../../../design/components/Text/native/Text";
import { ChannelOverwritesCheckboxItem } from "../components/ChannelOverwritesItem";
import { BottomSheetScrollView } from "../../../../_bundle/Module5245";
import { BottomSheetFlashList, FlashList } from "../../../../_bundle/noop_6676";
import TagListInput_native from "../../../../design/components/TagListInput/native/TagListInput.native";
import GuildUtils from "../../../../utils/GuildUtils";
import { NoResultsAlt } from "../../../../design/components/Illustration/native/redesign/generated/NoResultsAlt";
import useChannelName from "../../../channel/useChannelName";
import { permissionOverwriteForRole, permissionOverwriteForUser } from "../../../../utils/ChannelUtils";
import { savePermissionUpdates } from "../../../../actions/ChannelSettingsPermissionsActionCreators";
import { memberOrRoleAddedToast } from "../../../toast/native/ToastUtils";
import ActionSheetActionCreators from "../../../action_sheet/native/ActionSheetActionCreators";
import { BottomSheet } from "../../../../design/components/Sheet/native/BottomSheet.native";
import { BottomSheetTitleHeader } from "../../../../design/components/Sheet/native/BottomSheetTitleHeader.native";
import { Button } from "../../../../design/components/Button/native/Button.native";
import { HermesBuiltin } from "../../../../_hermes/prelude";
let AddMembersBody, useStyles;
let env5279 = {};
const _toPropertyKey = function _toPropertyKey(a0) {
let r2 = a0;
if (typeof a0 === "object") {
r2 = a0;
if (a0) {
const r5 = a0[Symbol.toPrimitive];
if (r5 !== void 0) {
r2 = r5.call(a0, "string");
if (typeof r2 === "object") {
throw new TypeError("@@toPrimitive must return a primitive value.");
}
} else {
r2 = String(a0);
}
}
}
let r19 = r2;
if (typeof r19 !== "symbol") {
r19 = "" + r2;
}
return r19;
};
AddMembersBody = function AddMembersBody(props) {
let data;
let c16460_3, state, setState, state2, setState2, count, c16460_9, c16460_10, c16460_11, c16460_12;
const { channel, guild, pendingAdditions, setPendingAdditions, permission = NONE, inActionSheet, ...rest } = props;
c16460_3 = void 0;
state = void 0;
setState = void 0;
state2 = void 0;
setState2 = void 0;
count = void 0;
c16460_9 = void 0;
c16460_10 = void 0;
c16460_11 = void 0;
c16460_12 = void 0;
const filterByQuery = function filterByQuery(a0) {
const r11 = state2.trim();
return new RegExp(`${RegexUtils.escape(state ? r11.slice(1) : r11)}`, "i").test(a0);
};
const styles = useStyles();
c16460_3 = styles;
[state, setState] = useState(false);
[state2, setState2] = useState("");
const insets = useSafeAreaInsetsKeyboardAware_native({
isKeyboardAwareOnAndroid: !inActionSheet
}).insets;
let r27 = canEveryoneRole(Permissions.ADMINISTRATOR, guild);
const stateFromStores = useStateFromStores([GuildRoleStore], () => GuildRoleStore.getSortedRoles(guild.id));
const stateFromStoresArray = useStateFromStoresArray([GuildMemberStore], () => GuildMemberStore.getMemberIds(guild.id));
if (state) {
data = [];
} else {
const rolesRows = getRolesRows(guild, stateFromStores, channel, permission, filterByQuery);
data = rolesRows.length === 0 && state2.trim() === "" && stateFromStores.length === 1 ? getNoRolesRow() : rolesRows;
}
const membersRows = getMembersRows(stateFromStoresArray, channel, guild, permission, filterByQuery);
count = data.length + membersRows.length;
useEffect(() => {
if (state2 !== "") {
AccessibilityAnnouncer.announce(intl.formatToPlainString(t.ZGVL3g, {
count
}), "polite");
}
}, [count, state2]);
const r113 = data.length > 0 ? [intl.string(t["LPJmL/"])] : [];
const data2 = [];
const r0 = HermesBuiltin.arraySpread(data2, data, HermesBuiltin.arraySpread(data2, r113, 0));
HermesBuiltin.arraySpread(data2, membersRows, HermesBuiltin.arraySpread(data2, membersRows.length > 0 ? [intl.string(t["9Oq93m"])] : [], r0));
const r152 = data.length > 0 ? 1 : 0;
c16460_9 = r152;
const r4 = r152 + data.length - 1;
c16460_10 = r4;
const r2 = membersRows.length > 0 ? r4 + 2 : r4;
const r157 = [];
c16460_11 = r2;
c16460_12 = r2 + membersRows.length - 1;
r157.push({
title: intl.string(t["LPJmL/"]),
data
});
r157.push({
title: intl.string(t["9Oq93m"]),
data: membersRows
});
const tags = Object.values(pendingAdditions).map((item) => ({
...item.display,
id: item.row.id
}));
const Component = inActionSheet ? BottomSheetScrollView : ScrollView;
const Component2 = inActionSheet ? BottomSheetFlashList : FlashList;
const r227 = [<View style={styles.inputContainer}>
<TagListInput_native accessibilityLabel={intl.string(t["5h0QOP"])} placeholder={intl.string(t.TVZdKh)} tags={tags} onChangeText={function onChangeText(text) {
const r11 = text.trim();
const r2 = r11.charAt(0) === "@";
GuildUtils.requestMembers(guild.id, r2 ? r11.slice(1) : r11, MEMBER_REQUEST_COUNT);
setState2(text);
setState(r2);
}} onRemove={function onRemove(event) {
let c26172_0 = Object.keys(pendingAdditions)[event];
setPendingAdditions((prevPendingAdditions) => {
prevPendingAdditions[c26172_0];
return _objectWithoutProperties(prevPendingAdditions, [c26172_0].map(_toPropertyKey));
});
}} />
</View>, , ,];
if (r27) {
r27 = <View style={styles.adminWarning}>
<HelpMessage messageType={HelpMessageTypes.WARNING}>
{intl.string(t["5f3HIC"])}
</HelpMessage>
</View>;
}
r227[1] = r27;
r227[2] = state2 !== "" && (data.length === 0 && membersRows.length === 0) ? <Component {...rest}>
<EmptyState Illustration={NoResultsAlt} style={styles.emptyState} bodyStyle={styles.emptyStateText} body={intl.format(t.ErpIY3, {
query: state2
})} />
</Component> : <Component2 {...rest} extraData={pendingAdditions} data={data2} contentContainerStyle={{
paddingHorizontal: Module712.space.PX_16,
paddingBottom: Module712.space.PX_16 + insets.bottom
}} renderItem={function renderRow({ item, index }) {
return typeof item === "string" ? <Text style={[c16460_3.sectionRowWrapper, index === 0 ? {
paddingTop: 0
} : {}]} maxFontSizeMultiplier={2} accessibilityRole="header" variant="text-sm/semibold" color="interactive-text-default">{item}</Text> : <ChannelOverwritesCheckboxItem start={c16460_9 === index || c16460_11 === index} end={c16460_10 === index || c16460_12 === index} item={item} guildId={guild.id} onPress={() => {
const item2 = item;
if (item.rowType !== RowType.EMPTY_STATE) {
setPendingAdditions((prevPendingAdditions) => {
let display;
const r2 = {
...prevPendingAdditions
};
const r20 = `${item2.rowType}:${item2.id}`;
if (r20 in r2) {
delete r2[r20];
} else {
L8: {
const rowType = item2.rowType;
if (RowType.ROLE !== rowType && RowType.ADMINISTRATOR !== rowType) {
if (RowType.MEMBER !== rowType) {
const OWNER = RowType.OWNER;
display = void 0;
if (OWNER !== rowType) {
break L8;
}
}
const user = UserStore.getUser(item2.id);
const r1 = user != null;
display = void 0;
if (!r1) {
break L8;
}
display = {
text: item2.name,
icon: (0, jsx)(Avatar, {
user,
guildId: guild.id,
avatarStyle: c16460_3.tagAvatar,
style: c16460_3.tagAvatar
})
};
} else {
display = {
text: item2.name,
icon: (0, jsx)(View, {
style: [c16460_3.tagRoleColor, {
backgroundColor: item2.colorString
}]
})
};
}
}
if (display != null) {
r2[r20] = {
display,
row: item2
};
}
}
return r2;
});
}
}} checked={`${item.rowType}:${item.id}` in pendingAdditions} />;
}} keyboardShouldPersistTaps="handled" />;
return <>{r227}</>;
};
useStyles = createStyles({
container: {
flex: 1
},
inputContainer: {
alignItems: "stretch",
paddingHorizontal: Module712.space.PX_16,
paddingVertical: Module712.space.PX_12
},
tagRoleColor: {
height: 12,
width: 12,
borderRadius: 6
},
tagAvatar: {
width: 16,
height: 16,
borderRadius: Module712.radii.sm
},
emptyState: {
paddingTop: Module712.space.PX_16
},
emptyStateText: {
color: Module712.colors.TEXT_DEFAULT
},
sectionRowWrapper: {
paddingVertical: Module712.space.PX_12
},
adminWarning: {
marginHorizontal: 16,
marginVertical: 8
}
});
export default function AddMembersActionSheet(props) {
let env16461 = {
$parent: env5279
};
const channel = props.channel;
env16461[0] = channel;
const canSkip = props.canSkip;
env16461[1] = void 0;
env16461[2] = function _handleAddPressed() {
const r9 = async () => {
let c29938_0, c29938_1, c29938_2;
let c29938_4 = 0;
let c29938_3 = 0;
let r27 = void 0;
let r4 = 0;
let r12 = env16461;
L37: {
L30: {
L31: {
L38: {
L13: {
L14: {
try {
const r29 = c29938_4;
if (r29 !== 0) {
if (r29 === 1) {
c29938_3 = 0;
break L13;
}
if (r4 === 1) {
throw r27;
}
if (r4 === 2) {
c29938_3 = 0;
break L14;
}
memberOrRoleAddedToast(env31463[2], env31463[1]);
ActionSheetActionCreators.hideActionSheet();
c29938_3 = 0;
break L13;
}
if (r4 === 1) {
throw r27;
}
if (r4 === 2) {
break L38;
}
let env31463;
c29938_1 = r12;
const r51 = env31463 = {
$parent: r12
};
c29938_0 = r51;
const r52 = [];
env31463[0] = r52;
env31463[1] = 0;
Object.values(env16461[1]).forEach(({ row }) => {
if (row.id != null && row.id !== "") {
if (row.rowType === RowType.ROLE) {
env31463[2] = env31463[2] + 1;
env31463[0].push(permissionOverwriteForRole(row.id, env16461[0].type));
} else if (row.rowType === RowType.MEMBER) {
env31463[1] = env31463[1] + 1;
env31463[0].push(permissionOverwriteForUser(row.id, env16461[0].type));
}
}
});
c29938_3 = 1;
const r67 = savePermissionUpdates(env16461[0].id, r52);
c29938_4 = 2;
r27 = await r67;
r4 = 0;
r12 = env16461;
while (true) {
const r80 = c29938_4;
if (r80 !== 0) {
if (r80 === 1) {
c29938_3 = 0;
break L30;
}
if (r4 === 1) {
throw r27;
}
if (r4 === 2) {
c29938_3 = 0;
break L31;
}
memberOrRoleAddedToast(env31463[2], env31463[1]);
ActionSheetActionCreators.hideActionSheet();
c29938_3 = 0;
break L30;
}
if (r4 === 1) {
throw r27;
}
if (r4 === 2) {
break L37;
}
let env31463;
c29938_1 = r12;
const r104 = env31463 = {
$parent: r12
};
c29938_0 = r104;
const r105 = [];
env31463[0] = r105;
env31463[1] = 0;
Object.values(env16461[1]).forEach(({ row }) => {
if (row.id != null && row.id !== "") {
if (row.rowType === RowType.ROLE) {
env31463[2] = env31463[2] + 1;
env31463[0].push(permissionOverwriteForRole(row.id, env16461[0].type));
} else if (row.rowType === RowType.MEMBER) {
env31463[1] = env31463[1] + 1;
env31463[0].push(permissionOverwriteForUser(row.id, env16461[0].type));
}
}
});
c29938_3 = 1;
const r120 = savePermissionUpdates(env16461[0].id, r105);
c29938_4 = 2;
r27 = await r120;
r4 = 0;
r12 = env16461;
}
} catch ($e) {
const r30 = $e;
let r7 = r30;
c29938_2 = r30;
if (c29938_3 !== 0) {
while (true) {
c29938_4 = 1;
try {
let r134 = c29938_4;
while (r134 === 0) {
if (r4 === 1) {
throw r27;
}
if (r4 === 2) {
break L37;
}
let env31463;
c29938_1 = r12;
const r160 = env31463 = {
$parent: r12
};
c29938_0 = r160;
const r161 = [];
env31463[0] = r161;
env31463[1] = 0;
Object.values(env16461[1]).forEach(({ row }) => {
if (row.id != null && row.id !== "") {
if (row.rowType === RowType.ROLE) {
env31463[2] = env31463[2] + 1;
env31463[0].push(permissionOverwriteForRole(row.id, env16461[0].type));
} else if (row.rowType === RowType.MEMBER) {
env31463[1] = env31463[1] + 1;
env31463[0].push(permissionOverwriteForUser(row.id, env16461[0].type));
}
}
});
c29938_3 = 1;
const r176 = savePermissionUpdates(env16461[0].id, r161);
c29938_4 = 2;
r27 = await r176;
r4 = 0;
r12 = env16461;
r134 = c29938_4;
}
if (r134 === 1) {
c29938_3 = 0;
break L30;
}
if (r4 === 1) {
throw r27;
}
if (r4 === 2) {
c29938_3 = 0;
break L31;
}
memberOrRoleAddedToast(env31463[2], env31463[1]);
ActionSheetActionCreators.hideActionSheet();
c29938_3 = 0;
break L30;
} catch (r135) {
r7 = r135;
c29938_2 = r135;
if (c29938_3 === 0) {
break;
}
}
}
}
throw r7;
}
}
return r27;
}
return void 0;
}
return r27;
}
return r27;
}
return void 0;
}
return r27;
};
env16461[2] = r9;
return r9.apply(this, arguments);
};
const styles = useStyles();
const r27 = _slicedToArray(useState({}), 2);
const pendingAdditions2 = r27[0];
env16461[1] = pendingAdditions2;
const setPendingAdditions2 = r27[1];
const stateFromStores = useStateFromStores([GuildStore], () => {
const r5 = env16461[0];
return GuildStore.getGuild(r5 == null ? void 0 : r5.getGuildId());
});
let subtitle = useChannelName(channel, true);
if (subtitle == null) {
subtitle = "";
}
if (stateFromStores == null) {
return null;
}
const disabled = Object.keys(pendingAdditions2).length === 0;
return <BottomSheet scrollable header={<BottomSheetTitleHeader title={intl.string(t.dMJ3Y6)} subtitle={subtitle} trailing={<Button {...canSkip && disabled ? {
size: "sm",
text: intl.string(t["5Wxrcd"]),
onPress: () => {
ActionSheetActionCreators.hideActionSheet();
},
variant: "secondary"
} : {
size: "sm",
text: intl.string(t.OYkgVk),
onPress: function handleAddPressed() {
return env16461[2].apply(this, arguments);
},
variant: disabled ? "secondary" : "primary",
disabled
}} />} />} startExpanded>
<View style={styles.container}>
<AddMembersBody channel={channel} guild={stateFromStores} permission={channel.accessPermissions} pendingAdditions={pendingAdditions2} setPendingAdditions={setPendingAdditions2} inActionSheet />
</View>
</BottomSheet>;
};
export { AddMembersBody };
@@ -0,0 +1,106 @@
// Metro module 10919 (f10920).
import { View } from "react-native";
import ChannelStore from "../../../../stores/ChannelStore";
import GuildMemberStore from "../../../../stores/GuildMemberStore";
import GuildRoleStore from "../../../../stores/GuildRoleStore";
import GuildStore from "../../../../stores/GuildStore";
import PermissionStore from "../../../../stores/PermissionStore";
import { ChannelSettingsSections, Permissions } from "../../../../Constants";
import { createStyles } from "../../../../design/components/Styles/native/createStyles";
import Module712 from "../../../../_bundle/Module712";
import useSafeAreaInsets_native from "../../../safe_area/useSafeAreaInsets.native";
import { useStateFromStores, useStateFromStoresObject, useStateFromStoresArray } from "../../../../_bundle/Module589";
import { useNavigation } from "../../../../design/components/Navigator/native/useNavigation.native";
import useChannelName from "../../../channel/useChannelName";
import { getExistingRolesRows, getExistingMembersRows } from "../../ChannelPermissionsUtils";
import { intl, t } from "../../../../intl/index.native";
import { BottomSheet } from "../../../../design/components/Sheet/native/BottomSheet.native";
import { BottomSheetTitleHeader } from "../../../../design/components/Sheet/native/BottomSheetTitleHeader.native";
import { PressableOpacity } from "../../../../design/void/Pressables/native/Pressables";
import ActionSheetActionCreators from "../../../action_sheet/native/ActionSheetActionCreators";
import ChannelSettingsActionCreators from "../../../../actions/ChannelSettingsActionCreators";
import { navigateToChannelDetailsScreen } from "../../../main_tabs_v2/native/sidebar/details/ChannelDetailsUtils";
import { SettingsIcon } from "../../../../design/components/Icon/native/redesign/generated/SettingsIcon";
import { RowButton } from "../../../../design/components/TableRow/native/RowButton.native";
import { openAddMembersActionSheet } from "../ChannelPermissionsUtils";
import { GroupPlusIcon } from "../../../../design/components/Icon/native/redesign/generated/GroupPlusIcon";
import { HelpMessage, HelpMessageTypes } from "../../../../design/void/native";
import { BottomSheetSectionList } from "../../../../_bundle/Module5245";
import ChannelOverwritesItem from "../components/ChannelOverwritesItem";
import { Text } from "../../../../design/components/Text/native/Text";
const useStyles = createStyles({
container: {
paddingHorizontal: 16,
flex: 1
},
sectionRowWrapper: {
paddingVertical: Module712.space.PX_12
},
warning: {
margin: 16,
marginBottom: 0
}
});
export default function ChannelMembersActionSheet(props) {
let navigation, showRemove;
const { channelId, guildId } = props;
navigation = void 0;
showRemove = void 0;
const styles = useStyles();
const safeAreaInsets_native = useSafeAreaInsets_native();
const stateFromStores = useStateFromStores([ChannelStore], () => ChannelStore.getChannel(channelId));
const stateFromStoresObject = useStateFromStoresObject([GuildStore, GuildRoleStore], () => {
const guild = GuildStore.getGuild(stateFromStores == null ? void 0 : stateFromStores.getGuildId());
return {
guild,
sortedGuildRoles: guild != null ? GuildRoleStore.getSortedRoles(guild.id) : void 0
};
}, [stateFromStores]);
const { guild, sortedGuildRoles } = stateFromStoresObject;
const stateFromStoresArray = useStateFromStoresArray([GuildMemberStore], () => GuildMemberStore.getMemberIds(stateFromStores == null ? void 0 : stateFromStores.getGuildId()), [stateFromStores]);
navigation = useNavigation();
const channelName = useChannelName(stateFromStores);
if (stateFromStores != null && guild != null && sortedGuildRoles != null) {
showRemove = PermissionStore.can(Permissions.MANAGE_ROLES, stateFromStores);
const existingRolesRows = getExistingRolesRows(guild, sortedGuildRoles, stateFromStores, stateFromStores.accessPermissions);
const existingMembersRows = getExistingMembersRows(stateFromStoresArray, stateFromStores, guild, stateFromStores.accessPermissions);
const sections = [];
sections.push({
title: intl.string(t["LPJmL/"]),
data: existingRolesRows
});
sections.push({
title: intl.string(t["9Oq93m"]),
data: existingMembersRows
});
return <BottomSheet scrollable header={<BottomSheetTitleHeader title={intl.string(t.ES4CC6)} subtitle={`#${channelName}`} trailing={showRemove ? <PressableOpacity onPress={function onPress() {
ActionSheetActionCreators.hideActionSheet();
ChannelSettingsActionCreators.init(channelId);
navigateToChannelDetailsScreen(navigation, ChannelSettingsSections.PERMISSIONS, channelId, "channel-members-action-sheet");
}} accessibilityRole="button" accessibilityLabel={intl.string(t.XPDhcc)}>
<SettingsIcon />
</PressableOpacity> : showRemove} />} startExpanded>
<View style={styles.container}>
{showRemove ? <RowButton label={intl.string(t.dMJ3Y6)} onPress={() => openAddMembersActionSheet(stateFromStores)} icon={<GroupPlusIcon />} /> : <View style={styles.warning}>
<HelpMessage messageType={HelpMessageTypes.INFO}>
{intl.string(t.VOuiSj)}
</HelpMessage>
</View>}
<BottomSheetSectionList contentContainerStyle={{
paddingBottom: safeAreaInsets_native.bottom + Module712.space.PX_16
}} renderItem={function renderItem(info) {
const { item, index } = info;
return <ChannelOverwritesItem start={index === 0} end={index === info.section.data.length - 1} guildId={guildId} item={item} channelId={channelId} showType showRemove={showRemove} />;
}} renderSectionHeader={function renderSectionHeader({ section }) {
return <Text style={styles.sectionRowWrapper} maxFontSizeMultiplier={2} accessibilityRole="header" variant="text-sm/semibold" color="interactive-text-default">
{intl.format(t.u8CWLl, {
numberOfItems: section.data.length,
sectionTitle: section.title
})}
</Text>;
}} sections={sections} stickySectionHeadersEnabled={false} />
</View>
</BottomSheet>;
}
return null;
};