332 lines
14 KiB
TypeScript
332 lines
14 KiB
TypeScript
// Metro module 15650 (f15651).
|
|
import { useLayoutEffect, useMemo, useState, useEffect, useCallback } from "react";
|
|
import { View, ScrollView } from "react-native";
|
|
import ChannelSettingsPermissionsStore from "../../../../stores/ChannelSettingsPermissionsStore";
|
|
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 RelationshipStore from "../../../../stores/RelationshipStore";
|
|
import UserStore from "../../../../stores/UserStore";
|
|
import { SettingMode } from "../../ChannelPermissionsConstants";
|
|
import { Permissions, ChannelTypes, AnalyticEvents, ChannelSettingsSections, SettingsPaneTypes } from "../../../../Constants";
|
|
import { createStyles } from "../../../../design/components/Styles/native/createStyles";
|
|
import Module712 from "../../../../_bundle/Module712";
|
|
import { useNavigation } from "../../../../design/components/Navigator/native/useNavigation.native";
|
|
import { useStateFromStoresObject, useStateFromStores } from "../../../../_bundle/Module589";
|
|
import * as _ChannelPermissionsUtils from "../../ChannelPermissionsUtils";
|
|
import { flipEveryonePermission, grantUserChannelAccess, getExistingRolesRows, getExistingMembersRows } from "../../ChannelPermissionsUtils";
|
|
import { savePermissionUpdates, setAdvancedMode } from "../../../../actions/ChannelSettingsPermissionsActionCreators";
|
|
import { checkChattableChannelThresholdMetAfterChannelPermissionDeny } from "../../../guild_onboarding/DefaultChannelThresholdUtils";
|
|
import { intl, t } from "../../../../intl/index.native";
|
|
import { computeChannelName } from "../../../channel/useChannelName";
|
|
import AlertActionCreators from "../../../../actions/AlertActionCreators";
|
|
import ChannelOverwritesItem from "./ChannelOverwritesItem";
|
|
import * as _PermissionUtils from "../../../../utils/PermissionUtils";
|
|
import { Stack } from "../../../../design/components/Stack/native/Stack.native";
|
|
import { TableRowGroup } from "../../../../design/components/TableRow/native/TableRowGroup.native";
|
|
import { TableSwitchRow } from "../../../../design/components/TableRow/native/TableSwitchRow.native";
|
|
import { HelpMessage, HelpMessageTypes } from "../../../../design/void/native";
|
|
import { TableRow } from "../../../../design/components/TableRow/native/TableRow.native";
|
|
import { CirclePlusIcon } from "../../../../design/components/Icon/native/redesign/generated/CirclePlusIcon";
|
|
import { openAddMembersActionSheet } from "../ChannelPermissionsUtils";
|
|
import { useNavigatorBackPressHandler } from "../../../../design/components/Navigator/native/useNavigatorBackPressHandler.native";
|
|
import AppAnalyticsUtils from "../../../app_analytics/AppAnalyticsUtils";
|
|
import { useSegmentedControlState } from "../../../../design/components/SegmentedControl/native/SegmentedControlState.native";
|
|
import { SegmentedControl } from "../../../../design/components/SegmentedControl/native/SegmentedControl.native";
|
|
import ViewModerators from "../../../stage_channels/native/channel_permissions/ViewModerators";
|
|
import ChannelSettingsPermissionsOverview from "../../../../components_native/channel_settings/ChannelSettingsPermissionsOverview";
|
|
function $mk118501($env) {
|
|
return () => {
|
|
const r1 = $env;
|
|
const r2 = r1[2];
|
|
r2(_ChannelPermissionsUtils.isPrivateGuildChannel(r1[0]));
|
|
};
|
|
}
|
|
let onBack, c11171_25, useStyles;
|
|
let env11171 = {};
|
|
const ChannelPermissionSettingsBasicView = function ChannelPermissionSettingsBasicView(props) {
|
|
let env22287 = {
|
|
$parent: env11171
|
|
};
|
|
const channel = props.channel;
|
|
env22287[0] = channel;
|
|
const privateToggleState = props.privateToggleState;
|
|
env22287[1] = privateToggleState;
|
|
env22287[2] = props.setPrivateToggleState;
|
|
env22287[3] = void 0;
|
|
env22287[4] = void 0;
|
|
env22287[5] = void 0;
|
|
env22287[9] = void 0;
|
|
env22287[6] = function togglePrivateChannel() {
|
|
return env22287[7].apply(this, arguments);
|
|
};
|
|
env22287[7] = function _togglePrivateChannel() {
|
|
const r9 = async () => {
|
|
const isPrivateGuildChannel = _ChannelPermissionsUtils.isPrivateGuildChannel(env22287[0]);
|
|
const accessPermissions = env22287[0].accessPermissions;
|
|
let c31778_0 = flipEveryonePermission(env22287[0], accessPermissions, isPrivateGuildChannel);
|
|
const currentUser = UserStore.getCurrentUser();
|
|
const r51 = PermissionStore.can(Permissions.ADMINISTRATOR, env22287[4]);
|
|
if (env22287[9] || currentUser == null || r51) {
|
|
await savePermissionUpdates(env22287[0].id, [c31778_0]);
|
|
} else {
|
|
await grantUserChannelAccess(env22287[0], accessPermissions);
|
|
await savePermissionUpdates(env22287[0].id, [c31778_0]);
|
|
}
|
|
};
|
|
env22287[7] = r9;
|
|
return r9.apply(this, arguments);
|
|
};
|
|
env22287[8] = function _onPrivateChannelSwitchChange() {
|
|
const r9 = async () => {
|
|
let c30911_0, c30911_1;
|
|
L28: {
|
|
L21: {
|
|
L14: {
|
|
let env31779;
|
|
const r9 = env22287;
|
|
c30911_1 = r9;
|
|
const r29 = env31779 = {
|
|
$parent: r9
|
|
};
|
|
c30911_0 = r29;
|
|
env31779[0] = void 0;
|
|
env31779[1] = void 0;
|
|
env31779[2] = void 0;
|
|
if (env22287[0].guild_id != null && !env22287[1]) {
|
|
if (await checkChattableChannelThresholdMetAfterChannelPermissionDeny(env22287[0], Permissions.VIEW_CHANNEL)) {
|
|
env31779[0] = env22287[1] ? intl.string(t.vw48TT) : intl.string(t["47gQYL"]);
|
|
env31779[1] = computeChannelName(env22287[0], UserStore, RelationshipStore);
|
|
env31779[2] = env22287[1] ? intl.format(t.hGzPnx, {
|
|
channelName: env31779[1]
|
|
}) : intl.format(t.rKzX1E, {
|
|
channelName: env31779[1]
|
|
});
|
|
(0, env22287[2])(!env22287[1]);
|
|
AlertActionCreators.show({
|
|
title: env31779[0],
|
|
body: env31779[2],
|
|
cancelText: intl.string(t["ETE/oC"]),
|
|
confirmText: intl.string(t.p89ACt),
|
|
onConfirm: env22287[6],
|
|
hideActionSheet: false,
|
|
onCancel: $mk118501(env22287)
|
|
});
|
|
break L21;
|
|
}
|
|
break L14;
|
|
}
|
|
env31779[0] = env22287[1] ? intl.string(t.vw48TT) : intl.string(t["47gQYL"]);
|
|
env31779[1] = computeChannelName(env22287[0], UserStore, RelationshipStore);
|
|
env31779[2] = env22287[1] ? intl.format(t.hGzPnx, {
|
|
channelName: env31779[1]
|
|
}) : intl.format(t.rKzX1E, {
|
|
channelName: env31779[1]
|
|
});
|
|
(0, env22287[2])(!env22287[1]);
|
|
AlertActionCreators.show({
|
|
title: env31779[0],
|
|
body: env31779[2],
|
|
cancelText: intl.string(t["ETE/oC"]),
|
|
confirmText: intl.string(t.p89ACt),
|
|
onConfirm: env22287[6],
|
|
hideActionSheet: false,
|
|
onCancel: $mk118501(env22287)
|
|
});
|
|
break L28;
|
|
}
|
|
return void 0;
|
|
}
|
|
return void 0;
|
|
}
|
|
};
|
|
env22287[8] = r9;
|
|
return r9.apply(this, arguments);
|
|
};
|
|
const styles = useStyles();
|
|
const navigation = useNavigation();
|
|
env22287[3] = navigation;
|
|
const stateFromStoresObject = useStateFromStoresObject([GuildStore, GuildRoleStore], () => {
|
|
const guild = GuildStore.getGuild(env22287[0].getGuildId());
|
|
return {
|
|
guild,
|
|
sortedGuildRoles: guild != null ? GuildRoleStore.getSortedRoles(guild.id) : void 0
|
|
};
|
|
});
|
|
const guild = stateFromStoresObject.guild;
|
|
env22287[4] = guild;
|
|
const sortedGuildRoles = stateFromStoresObject.sortedGuildRoles;
|
|
env22287[5] = sortedGuildRoles;
|
|
useLayoutEffect(() => {
|
|
env22287[3].setOptions({
|
|
headerRight: void 0
|
|
});
|
|
}, [navigation]);
|
|
const memo = useMemo(() => {
|
|
let r17;
|
|
const r6 = env22287[4];
|
|
if (r6 != null) {
|
|
const r5 = env22287[5];
|
|
if (r5 != null) {
|
|
const r16 = env22287[0];
|
|
r17 = getExistingRolesRows(r6, r5, r16, r16.accessPermissions);
|
|
} else {
|
|
r17 = [];
|
|
}
|
|
} else {
|
|
r17 = [];
|
|
}
|
|
return r17;
|
|
}, [guild, sortedGuildRoles, channel]);
|
|
if (guild != null && sortedGuildRoles != null) {
|
|
const isCategory = channel.isCategory();
|
|
const existingMembersRows = getExistingMembersRows(GuildMemberStore.getMemberIds(guild?.id), channel, guild, channel.accessPermissions);
|
|
const isPrivateGuildChannel = _ChannelPermissionsUtils.isPrivateGuildChannel(channel);
|
|
env22287[9] = isPrivateGuildChannel;
|
|
const canEveryoneRole2 = _PermissionUtils.canEveryoneRole(Permissions.VIEW_CHANNEL, guild);
|
|
const canEveryoneRole = _PermissionUtils.canEveryoneRole(Permissions.ADMINISTRATOR, guild);
|
|
const type = channel.type;
|
|
const r84 = intl.string(t.hfbjIH);
|
|
return <Stack style={{
|
|
paddingHorizontal: Module712.space.PX_16
|
|
}} spacing={Module712.space.PX_16}>
|
|
<TableRowGroup title={type === ChannelTypes.GUILD_CATEGORY ? intl.string(t.RQUk61) : type === ChannelTypes.GUILD_VOICE ? intl.string(t.cLjvKg) : r84} hasIcons={false}>
|
|
<TableSwitchRow label={isCategory ? intl.string(t.lEPAZ5) : intl.string(t.aUI70g)} value={privateToggleState} onValueChange={function onPrivateChannelSwitchChange() {
|
|
return env22287[8].apply(this, arguments);
|
|
}} />
|
|
</TableRowGroup>
|
|
{canEveryoneRole && <View style={styles.adminWarning}>
|
|
<HelpMessage messageType={HelpMessageTypes.WARNING}>
|
|
{intl.string(t["5f3HIC"])}
|
|
</HelpMessage>
|
|
</View>}
|
|
{(canEveryoneRole ? !canEveryoneRole : !canEveryoneRole2) && !isPrivateGuildChannel && <View style={styles.adminWarning}>
|
|
<HelpMessage messageType={HelpMessageTypes.WARNING}>
|
|
{intl.string(t.ZAk4Q9)}
|
|
</HelpMessage>
|
|
</View>}
|
|
<TableRowGroup hasIcons>
|
|
<TableRow arrow icon={<CirclePlusIcon />} label={intl.string(t.dMJ3Y6)} onPress={() => {
|
|
const r3 = env22287[0];
|
|
if (r3 != null) {
|
|
openAddMembersActionSheet(r3);
|
|
}
|
|
}} />
|
|
</TableRowGroup>
|
|
<TableRowGroup title={intl.string(t.ES4CC6)} hasIcons>
|
|
{memo.map((a0) => {
|
|
const r10 = env22287[0];
|
|
return <ChannelOverwritesItem key={a0.id} item={a0} channelId={r10.id} showType showRemove guildId={r10.guild_id} />;
|
|
})}
|
|
</TableRowGroup>
|
|
<TableRowGroup hasIcons>
|
|
{existingMembersRows.map((existingMembersRow) => {
|
|
const r10 = env22287[0];
|
|
return <ChannelOverwritesItem key={existingMembersRow.id} item={existingMembersRow} channelId={r10.id} showType showRemove guildId={r10.guild_id} />;
|
|
})}
|
|
</TableRowGroup>
|
|
</Stack>;
|
|
}
|
|
return null;
|
|
};
|
|
onBack = function onBack() {
|
|
AlertActionCreators.close();
|
|
return false;
|
|
};
|
|
c11171_25 = {
|
|
BASIC: 0,
|
|
0: "BASIC",
|
|
ADVANCED: 1,
|
|
1: "ADVANCED",
|
|
MODERATORS: 2,
|
|
2: "MODERATORS"
|
|
};
|
|
useStyles = createStyles({
|
|
container: {
|
|
flex: 1,
|
|
paddingTop: 16,
|
|
backgroundColor: Module712.colors.BACKGROUND_BASE_LOWER
|
|
},
|
|
content: {
|
|
marginTop: 16,
|
|
flex: 1
|
|
},
|
|
adminWarning: {
|
|
marginTop: Module712.space.PX_12
|
|
}
|
|
});
|
|
export default function EasyChannelPermissionSettings(props) {
|
|
let r43, MODERATORS;
|
|
let state, setState, setState2;
|
|
const { channelId, origin } = props;
|
|
state = void 0;
|
|
setState = void 0;
|
|
setState2 = void 0;
|
|
useNavigatorBackPressHandler(onBack);
|
|
const styles = useStyles();
|
|
const stateFromStores = useStateFromStores([ChannelStore], () => ChannelStore.getChannel(channelId));
|
|
const stateFromStores2 = useStateFromStores([ChannelSettingsPermissionsStore], () => ChannelSettingsPermissionsStore.advancedMode);
|
|
const r10 = stateFromStores == null ? void 0 : stateFromStores.isGuildStageVoice();
|
|
if (r10) {
|
|
MODERATORS = c11171_25.MODERATORS;
|
|
r43 = c11171_25;
|
|
} else if (stateFromStores2) {
|
|
MODERATORS = c11171_25.ADVANCED;
|
|
r43 = c11171_25;
|
|
} else {
|
|
MODERATORS = c11171_25.BASIC;
|
|
r43 = c11171_25;
|
|
}
|
|
[state, setState] = useState(MODERATORS);
|
|
let privateToggleState;
|
|
[privateToggleState, setState2] = useState(_ChannelPermissionsUtils.isPrivateGuildChannel(stateFromStores));
|
|
useEffect(() => {
|
|
AppAnalyticsUtils.trackWithMetadata(AnalyticEvents.SETTINGS_PANE_VIEWED, {
|
|
settings_type: "channel",
|
|
origin_pane: origin === ChannelSettingsSections.OVERVIEW ? SettingsPaneTypes.CHANNEL_SETTINGS : null,
|
|
destination_pane: ChannelSettingsSections.PERMISSIONS
|
|
});
|
|
}, [origin]);
|
|
const callback = useCallback((a0) => {
|
|
if (a0 === c11171_25.ADVANCED) {
|
|
setAdvancedMode(true);
|
|
} else {
|
|
setState2(_ChannelPermissionsUtils.isPrivateGuildChannel(stateFromStores));
|
|
setAdvancedMode(false);
|
|
}
|
|
setState(a0);
|
|
}, [stateFromStores]);
|
|
const r20 = [intl.string(t["Mw/UDN"]), intl.string(t["0a6awf"])];
|
|
if ((stateFromStores == null ? void 0 : stateFromStores.isGuildStageVoice()) === true) {
|
|
r20.push(intl.string(t.YIIUJ3));
|
|
}
|
|
const segmentedControlState = useSegmentedControlState({
|
|
pageWidth: 0,
|
|
defaultIndex: state,
|
|
onSetActiveIndex: callback,
|
|
items: r20.map((item) => ({
|
|
id: item,
|
|
label: item,
|
|
page: null
|
|
}))
|
|
});
|
|
useEffect(() => {
|
|
AppAnalyticsUtils.trackWithMetadata(AnalyticEvents.CHANNEL_PERMISSIONS_PAGE_VIEWED, {
|
|
mode: state === c11171_25.BASIC ? SettingMode.BASIC : SettingMode.ADVANCED,
|
|
channel_is_private: _ChannelPermissionsUtils.isPrivateGuildChannel(stateFromStores)
|
|
});
|
|
}, [stateFromStores, state]);
|
|
return stateFromStores != null ? <View style={styles.container}>
|
|
<View style={{
|
|
paddingHorizontal: Module712.space.PX_12
|
|
}}>
|
|
<SegmentedControl state={segmentedControlState} />
|
|
</View>
|
|
<ScrollView style={styles.content}>
|
|
{state === r43.BASIC ? <ChannelPermissionSettingsBasicView channel={stateFromStores} privateToggleState={privateToggleState} setPrivateToggleState={setState2} /> : state === r43.MODERATORS ? <ViewModerators channel={stateFromStores} /> : <ChannelSettingsPermissionsOverview channelId={stateFromStores.id} />}
|
|
</ScrollView>
|
|
</View> : null;
|
|
};
|