133 lines
6.6 KiB
TypeScript
133 lines
6.6 KiB
TypeScript
// 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;
|