487 lines
14 KiB
TypeScript
487 lines
14 KiB
TypeScript
// Metro module 8277 (f8278).
|
|
import { isGuildVocalChannelType } from "../../records/ChannelRecord";
|
|
import { isGuildOwner } from "../../records/GuildRecord";
|
|
import { hasPermission, isEveryoneRole } from "../../records/GuildRoleRecord";
|
|
import GuildMemberStore from "../../stores/GuildMemberStore";
|
|
import UserStore from "../../stores/UserStore";
|
|
import { RowType } from "./ChannelPermissionsConstants";
|
|
import { Permissions, DEFAULT_ROLE_COLOR_HEX, ChannelTypes } from "../../Constants";
|
|
import { compareGuildRoles } from "../../utils/GuildRoleUtils";
|
|
import { intl, t } from "../../intl/index.native";
|
|
import { has, remove, add } from "../../_bundle/HighLow";
|
|
import SnowflakeUtils from "../../utils/SnowflakeUtils";
|
|
import UserUtils from "../../utils/UserUtils";
|
|
import { isNotNullish } from "../../utils/GlobalUtils";
|
|
import { makeEveryoneOverwrite, NONE } from "../../utils/PermissionUtils";
|
|
import { updatePermission, savePermissionUpdates } from "../../actions/ChannelSettingsPermissionsActionCreators";
|
|
import { PermissionOverwriteType } from "../../flow/Server";
|
|
import { permissionOverwriteForRole, permissionOverwriteForUser } from "../../utils/ChannelUtils";
|
|
function $mk80289($env) {
|
|
return (a0) => {
|
|
const r5 = $env.$parent;
|
|
let r14 = (0, r5[6])(a0, r5[11].ADMINISTRATOR);
|
|
if (!r14) {
|
|
const r15 = $env;
|
|
const r9 = r15[0];
|
|
const id = a0.id;
|
|
const r12 = r15[1];
|
|
const r10 = r15[2];
|
|
const currentUser = r5[9].getCurrentUser();
|
|
const r3 = currentUser == null;
|
|
let r1 = false;
|
|
if (!r3) {
|
|
if (r9 == null) {
|
|
r1 = currentUser.id !== id;
|
|
} else {
|
|
let r19 = r9.permissionOverwrites[id];
|
|
if ((r10 == null ? void 0 : r10[id]) != null) {
|
|
r19 = r10[id];
|
|
}
|
|
r1 = r19 == null || !(0, r5[2])(r5[3][9]).has(r19.allow, r12);
|
|
}
|
|
}
|
|
r14 = r1 ? !r1 : !(0, r5[7])(a0);
|
|
}
|
|
return r14;
|
|
};
|
|
}
|
|
function $mk80290($env) {
|
|
return (a0) => {
|
|
const r5 = $env;
|
|
const r7 = $env.$parent;
|
|
let r15 = (0, r7[6])(a0, r7[11].ADMINISTRATOR);
|
|
if (!r15) {
|
|
const r10 = r5[0];
|
|
const id = a0.id;
|
|
const r13 = r5[1];
|
|
const r11 = r5[2];
|
|
const currentUser = r7[9].getCurrentUser();
|
|
const r3 = currentUser == null;
|
|
let r1 = false;
|
|
if (!r3) {
|
|
if (r10 == null) {
|
|
r1 = currentUser.id !== id;
|
|
} else {
|
|
let r19 = r10.permissionOverwrites[id];
|
|
if ((r11 == null ? void 0 : r11[id]) != null) {
|
|
r19 = r11[id];
|
|
}
|
|
r1 = r19 == null || !(0, r7[2])(r7[3][9]).has(r19.allow, r13);
|
|
}
|
|
}
|
|
r15 = r1 ? !r1 : !(0, r7[7])(a0);
|
|
}
|
|
if (!r15) {
|
|
const r34 = r7[2];
|
|
const r35 = r7[3];
|
|
r15 = r34(r35[9]).has(r34(r35[9]).combine(a0.permissions, r5[0].permissionOverwrites[a0.id]?.allow), r5[1]);
|
|
}
|
|
return r15;
|
|
};
|
|
}
|
|
function $mk80291($env) {
|
|
return (a0) => {
|
|
const r6 = $env;
|
|
const r5 = $env.$parent;
|
|
const r9 = r6[0];
|
|
const id = a0.id;
|
|
const r12 = r6[2];
|
|
const r10 = r6[3];
|
|
const currentUser = r5[9].getCurrentUser();
|
|
const r2 = currentUser == null;
|
|
let r0 = false;
|
|
if (!r2) {
|
|
if (r9 == null) {
|
|
r0 = currentUser.id !== id;
|
|
} else {
|
|
let r15 = r9.permissionOverwrites[id];
|
|
if ((r10 == null ? void 0 : r10[id]) != null) {
|
|
r15 = r10[id];
|
|
}
|
|
r0 = r15 == null || !(0, r5[2])(r5[3][9]).has(r15.allow, r12);
|
|
}
|
|
}
|
|
return r0 ? (0, r5[5])(r6[1], a0) : !r0;
|
|
};
|
|
}
|
|
let sortRoles, getMemberRowData, sortMembers;
|
|
let env5272 = {};
|
|
export function getRoleRowData(a0, r5 = false) {
|
|
const rowType = hasPermission(a0, Permissions.ADMINISTRATOR) ? RowType.ADMINISTRATOR : RowType.ROLE;
|
|
let colorString = a0.colorString;
|
|
if (colorString == null) {
|
|
colorString = DEFAULT_ROLE_COLOR_HEX;
|
|
}
|
|
return {
|
|
rowType,
|
|
colorString,
|
|
name: a0.name,
|
|
id: a0.id,
|
|
disabled: hasPermission(a0, Permissions.ADMINISTRATOR) || r5,
|
|
key: `${rowType}:${a0.id}`,
|
|
tags: a0.tags
|
|
};
|
|
}
|
|
sortRoles = function sortRoles(a0, a1) {
|
|
const hasPermission2 = hasPermission(a0, Permissions.ADMINISTRATOR);
|
|
let r0 = 1;
|
|
const r1 = hasPermission2 ? 0 : 1;
|
|
if (hasPermission(a1, Permissions.ADMINISTRATOR)) {
|
|
r0 = 0;
|
|
}
|
|
return r1 !== r0 ? r1 - r0 : compareGuildRoles(a0, a1);
|
|
};
|
|
getMemberRowData = function getMemberRowData(a0, a1) {
|
|
const rowType = isGuildOwner(a1, a0) ? RowType.OWNER : RowType.MEMBER;
|
|
let name = GuildMemberStore.getNick(a1.id, a0.id);
|
|
if (name == null) {
|
|
name = UserUtils.getName(a0);
|
|
}
|
|
return {
|
|
rowType,
|
|
name,
|
|
username: UserUtils.getUserTag(a0),
|
|
id: a0.id,
|
|
avatarURL: a0.getAvatarURL(a1.id, 24),
|
|
bot: a0.bot,
|
|
verifiedBot: a0.isVerifiedBot(),
|
|
disabled: isGuildOwner(a1, a0),
|
|
key: `${rowType}:${a0.id}`
|
|
};
|
|
};
|
|
sortMembers = function sortMembers(a0, a1) {
|
|
return a0.rowType !== a1.rowType ? a0.rowType - a1.rowType : a0.name.toLocaleLowerCase().localeCompare(a1.name.toLocaleLowerCase());
|
|
};
|
|
export { sortRoles };
|
|
export function getNoRolesRow(name = intl.string(t["gnsna/"])) {
|
|
return [{
|
|
rowType: RowType.EMPTY_STATE,
|
|
colorString: DEFAULT_ROLE_COLOR_HEX,
|
|
name,
|
|
disabled: true,
|
|
id: "EMPTY_STATE"
|
|
}];
|
|
}
|
|
export function isEveryoneRoleId(a0, a1) {
|
|
return SnowflakeUtils.castGuildIdAsEveryoneGuildRoleId(a0) === a1;
|
|
}
|
|
export function getRolesRows(a0, a1, c16444_0, c16444_1, r3 = () => true) {
|
|
let c16444_2;
|
|
c16444_2 = r3;
|
|
return a1.filter((item) => {
|
|
const r15 = (0, hasPermission)(item, Permissions.ADMINISTRATOR);
|
|
let r16 = !r15;
|
|
if (!r15) {
|
|
const id = item.id;
|
|
const currentUser = UserStore.getCurrentUser();
|
|
const r3 = currentUser == null;
|
|
let r1 = false;
|
|
if (!r3) {
|
|
if (c16444_0 == null) {
|
|
r1 = currentUser.id !== id;
|
|
} else {
|
|
const r20 = c16444_0.permissionOverwrites[id];
|
|
r1 = r20 == null || !has(r20.allow, c16444_1);
|
|
}
|
|
}
|
|
r16 = r1;
|
|
}
|
|
if (r16) {
|
|
r16 = !(0, isEveryoneRole)(item);
|
|
}
|
|
if (r16) {
|
|
r16 = c16444_2(item.name);
|
|
}
|
|
return r16;
|
|
}).sort(sortRoles).map((item) => getRoleRowData(item));
|
|
}
|
|
export function getRolesRowsWithPermissionDisabled(a0, a1, c16445_0, c16445_1, r3 = () => true) {
|
|
let c16445_2;
|
|
c16445_2 = r3;
|
|
return a1.filter((item) => {
|
|
const r15 = (0, hasPermission)(item, Permissions.ADMINISTRATOR);
|
|
let r16 = !r15;
|
|
if (!r15) {
|
|
const id = item.id;
|
|
const currentUser = UserStore.getCurrentUser();
|
|
const r3 = currentUser == null;
|
|
let r1 = false;
|
|
if (!r3) {
|
|
if (c16445_0 == null) {
|
|
r1 = currentUser.id !== id;
|
|
} else {
|
|
const r20 = c16445_0.permissionOverwrites[id];
|
|
r1 = r20 == null || !has(r20.allow, c16445_1);
|
|
}
|
|
}
|
|
r16 = r1;
|
|
}
|
|
if (r16) {
|
|
r16 = !(0, isEveryoneRole)(item);
|
|
}
|
|
if (r16) {
|
|
r16 = c16445_2(item.name);
|
|
}
|
|
return r16;
|
|
}).sort(sortRoles).map((item) => getRoleRowData(item, (0, hasPermission)(item, c16445_1)));
|
|
}
|
|
export function getExistingRoles(a0, a1, a2, a3, a4) {
|
|
let env16441;
|
|
const r0 = env16441 = {
|
|
$parent: env5272
|
|
};
|
|
env16441[0] = a2;
|
|
env16441[1] = a3;
|
|
env16441[2] = a4;
|
|
return a1.filter($mk80289(r0));
|
|
}
|
|
export function getAllExistingRolesWithPermission(a0, a1, a2, a3, a4) {
|
|
let env16442;
|
|
const r0 = env16442 = {
|
|
$parent: env5272
|
|
};
|
|
env16442[0] = a2;
|
|
env16442[1] = a3;
|
|
env16442[2] = a4;
|
|
return a1.filter($mk80290(r0));
|
|
}
|
|
export function getExistingRolesRows(a0, a1, a2, a3, a4) {
|
|
let env16446;
|
|
const r2 = env16446 = {
|
|
$parent: env5272
|
|
};
|
|
env16446[0] = a2;
|
|
env16446[1] = a3;
|
|
env16446[2] = a4;
|
|
let r19 = a1.filter($mk80289(r2)).sort(sortRoles).map((item) => getRoleRowData(item));
|
|
if (r19.length === 0) {
|
|
let name = intl.string(t.nZfHsf);
|
|
if (name === void 0) {
|
|
name = intl.string(t["gnsna/"]);
|
|
}
|
|
r19 = [{
|
|
rowType: RowType.EMPTY_STATE,
|
|
colorString: DEFAULT_ROLE_COLOR_HEX,
|
|
name,
|
|
disabled: true,
|
|
id: "EMPTY_STATE"
|
|
}];
|
|
}
|
|
return r19;
|
|
}
|
|
export function getExistingRolesRowWithPermissionDisabled(a0, a1, a2, a3, a4) {
|
|
let env16448;
|
|
const r3 = env16448 = {
|
|
$parent: env5272
|
|
};
|
|
env16448[0] = a2;
|
|
env16448[1] = a3;
|
|
env16448[2] = a4;
|
|
let r18 = a1.filter($mk80290(r3)).sort(sortRoles).map((item) => getRoleRowData(item, (0, hasPermission)(item, a3)));
|
|
if (r18.length === 0) {
|
|
let name = intl.string(t.nZfHsf);
|
|
if (name === void 0) {
|
|
name = intl.string(t["gnsna/"]);
|
|
}
|
|
r18 = [{
|
|
rowType: RowType.EMPTY_STATE,
|
|
colorString: DEFAULT_ROLE_COLOR_HEX,
|
|
name,
|
|
disabled: true,
|
|
id: "EMPTY_STATE"
|
|
}];
|
|
}
|
|
return r18;
|
|
}
|
|
export function getMembersRows(a0, c16449_0, c16449_1, c16449_2, r3 = () => true) {
|
|
let c16449_3;
|
|
c16449_3 = r3;
|
|
return a0.map(UserStore.getUser).filter(isNotNullish).filter((item) => {
|
|
const isGuildOwner2 = isGuildOwner(c16449_1, item);
|
|
let r15 = !isGuildOwner2;
|
|
if (!isGuildOwner2) {
|
|
const id = item.id;
|
|
const currentUser = UserStore.getCurrentUser();
|
|
const r3 = currentUser == null;
|
|
let r1 = false;
|
|
if (!r3) {
|
|
if (c16449_0 == null) {
|
|
r1 = currentUser.id !== id;
|
|
} else {
|
|
const r19 = c16449_0.permissionOverwrites[id];
|
|
r1 = r19 == null || !has(r19.allow, c16449_2);
|
|
}
|
|
}
|
|
r15 = r1;
|
|
}
|
|
if (r15) {
|
|
let r33 = GuildMemberStore.getNick(c16449_1.id, item.id);
|
|
if (r33 == null) {
|
|
r33 = UserUtils.getName(item);
|
|
}
|
|
r15 = c16449_3(r33) || c16449_3(item.username) || c16449_3(item.discriminator);
|
|
}
|
|
return r15;
|
|
}).map((item) => getMemberRowData(item, c16449_1)).sort(sortMembers);
|
|
}
|
|
export function getExistingMembers(a0, a1, a2, a3, a4) {
|
|
let env16443;
|
|
const r1 = env16443 = {
|
|
$parent: env5272
|
|
};
|
|
env16443[0] = a1;
|
|
env16443[1] = a2;
|
|
env16443[2] = a3;
|
|
env16443[3] = a4;
|
|
return a0.map(UserStore.getUser).filter(isNotNullish).filter($mk80291(r1));
|
|
}
|
|
export function getExistingMembersRows(a0, a1, a2, a3, a4) {
|
|
let env16451;
|
|
const r3 = env16451 = {
|
|
$parent: env5272
|
|
};
|
|
env16451[0] = a1;
|
|
env16451[1] = a2;
|
|
env16451[2] = a3;
|
|
env16451[3] = a4;
|
|
return a0.map(UserStore.getUser).filter(isNotNullish).filter($mk80291(r3)).map((item) => getMemberRowData(item, a2)).sort(sortMembers);
|
|
}
|
|
export function getRowTypeLabel(a0, a1) {
|
|
if (RowType.ROLE === a0) {
|
|
return intl.string(t.ZxoFOG);
|
|
}
|
|
if (RowType.OWNER === a0) {
|
|
return intl.string(t.NWhYJg);
|
|
}
|
|
if (RowType.ADMINISTRATOR === a0) {
|
|
return intl.string(t["dwlcc+"]);
|
|
}
|
|
if (RowType.MEMBER === a0) {
|
|
return a1 ? intl.string(t.UAJxZi) : null;
|
|
}
|
|
if (RowType.USER === a0) {
|
|
return intl.string(t.KD6OJJ);
|
|
}
|
|
if (RowType.GUILD === a0) {
|
|
return intl.string(t["5qyruI"]);
|
|
}
|
|
if (RowType.EMPTY_STATE === a0) {
|
|
return null;
|
|
}
|
|
}
|
|
export function getRemoveTooltipHint(a0) {
|
|
if (RowType.ROLE === a0) {
|
|
return intl.string(t["Gzc/a8"]);
|
|
}
|
|
if (RowType.OWNER === a0) {
|
|
return intl.string(t.icuNBM);
|
|
}
|
|
if (RowType.ADMINISTRATOR === a0) {
|
|
return intl.string(t.eTmN5a);
|
|
}
|
|
if (RowType.MEMBER === a0) {
|
|
return intl.string(t["Gzc/a8"]);
|
|
}
|
|
RowType.EMPTY_STATE;
|
|
return null;
|
|
}
|
|
export function flipEveryonePermission(a0, a1, a2) {
|
|
let r11 = a0.permissionOverwrites[a0.guild_id];
|
|
if (r11 == null) {
|
|
r11 = makeEveryoneOverwrite(a0.guild_id);
|
|
}
|
|
const r20 = {
|
|
...r11
|
|
};
|
|
r20.deny = remove(r20.deny, a1);
|
|
r20.allow = remove(r20.allow, a1);
|
|
if (!a2) {
|
|
r20.deny = add(r20.deny, a1);
|
|
}
|
|
return r20;
|
|
}
|
|
export function toggleChannelEveryonePermission(a0, a1, a2) {
|
|
let r16 = a0.permissionOverwrites[a0.guild_id];
|
|
if (r16 == null) {
|
|
r16 = makeEveryoneOverwrite(a0.guild_id);
|
|
}
|
|
const r23 = {
|
|
...r16
|
|
};
|
|
r23.deny = remove(r23.deny, a1);
|
|
r23.allow = remove(r23.allow, a1);
|
|
if (!a2) {
|
|
r23.deny = add(r23.deny, a1);
|
|
}
|
|
updatePermission(a0, r23.id, r23.allow, r23.deny);
|
|
}
|
|
export function grantUserChannelAccess(a0, a1) {
|
|
const currentUser = UserStore.getCurrentUser();
|
|
if (currentUser != null) {
|
|
const r19 = a0.permissionOverwrites[currentUser.id];
|
|
if (r19 == null) {
|
|
return savePermissionUpdates(a0.id, [{
|
|
id: currentUser.id,
|
|
type: PermissionOverwriteType.MEMBER,
|
|
allow: add(NONE, a1),
|
|
deny: NONE
|
|
}], true);
|
|
}
|
|
const { allow, deny } = r19;
|
|
return updatePermission(a0, r19.id, add(allow, a1), deny);
|
|
}
|
|
}
|
|
export function isPrivateGuildChannel(a0, a1) {
|
|
if (a0 == null) {
|
|
return false;
|
|
}
|
|
let r8 = a0.permissionOverwrites[a0.guild_id];
|
|
if ((a1 == null ? void 0 : a1[a0.guild_id]) != null) {
|
|
r8 = a1[a0.guild_id];
|
|
}
|
|
return r8 != null && has(r8.deny, a0.accessPermissions);
|
|
}
|
|
export function isPrivateTextChannel(a0) {
|
|
const r6 = a0.permissionOverwrites[a0.guild_id];
|
|
return r6 != null && a0.type === ChannelTypes.GUILD_TEXT && has(r6.deny, Permissions.VIEW_CHANNEL);
|
|
}
|
|
export function canCreatePrivateChannel(a0, a1, a2) {
|
|
const GUILD_TEXT = ChannelTypes.GUILD_TEXT;
|
|
let r1 = a1;
|
|
if (a0 !== GUILD_TEXT) {
|
|
const GUILD_ANNOUNCEMENT = ChannelTypes.GUILD_ANNOUNCEMENT;
|
|
r1 = a1;
|
|
if (a0 !== GUILD_ANNOUNCEMENT) {
|
|
const r9 = (0, isGuildVocalChannelType)(a0);
|
|
r1 = (r9 ? !r9 : a0 !== ChannelTypes.GUILD_CATEGORY) || (a1 ? a2 : a1);
|
|
}
|
|
}
|
|
return r1;
|
|
}
|
|
export function getPrivateChannelHintText(a0) {
|
|
if (ChannelTypes.GUILD_TEXT !== a0 && ChannelTypes.GUILD_ANNOUNCEMENT !== a0) {
|
|
if (ChannelTypes.GUILD_VOICE === a0) {
|
|
return intl.format(t.iZAMty, {});
|
|
}
|
|
if (ChannelTypes.GUILD_CATEGORY === a0) {
|
|
return intl.format(t.PhnARV, {});
|
|
}
|
|
return null;
|
|
}
|
|
return intl.format(t.ZDtA0T, {});
|
|
}
|
|
export function extractPermissionOverwrites(a0, c16452_0) {
|
|
const r5 = [];
|
|
let c16452_1 = r5;
|
|
Object.values(a0).forEach(({ row }) => {
|
|
if (row.id != null && row.id !== "") {
|
|
if (row.rowType === RowType.ROLE) {
|
|
c16452_1.push(permissionOverwriteForRole(row.id, c16452_0));
|
|
} else if (row.rowType === RowType.MEMBER) {
|
|
c16452_1.push(permissionOverwriteForUser(row.id, c16452_0));
|
|
}
|
|
}
|
|
});
|
|
return r5;
|
|
}
|