Files
discord-decomp/modules/permissions/useManageResourcePermissions.tsx
T
2026-11-01 12:12:55 +02:00

127 lines
5.2 KiB
TypeScript

// Metro module 8266 (f8267).
import { useCallback } from "react";
import PermissionStore from "../../stores/PermissionStore";
import UserStore from "../../stores/UserStore";
import { CREATE_GUILD_EVENT_CORE_PERMISSIONS, CREATE_GUILD_EVENT_STAGE_CHANNEL_PERMISSIONS, CREATE_GUILD_EVENT_VOICE_CHANNEL_PERMISSIONS } from "../guild_scheduled_events/PermissionsConstants";
import { Permissions } from "../../_bundle/Module505";
import { combine } from "../../_bundle/HighLow";
import { isGuildRecord } from "../../utils/GuildRecordUtils";
import { useStateFromStoresArray, useStateFromStores } from "../../_bundle/Module589";
let c5262_11;
const canManageResource = function canManageResource(a0, a1, a2, a3) {
let r16;
let r2 = a0 != null;
if (r2) {
let r11 = !!a2;
if (!r11) {
let r5 = a3;
if ("creator_id" in a0) {
if (a3) {
r5 = a1 != null;
}
if (r5) {
r5 = a0.creator_id === a1.id;
}
r16 = r5;
} else {
r16 = "userId" in a0 ? (a3 ? a1 != null : a3) && a0.userId === a1.id : "user" in a0 && ((a3 ? a1 != null : a3) && a0.user?.id === a1.id);
}
r11 = r16;
}
r2 = r11;
}
return r2;
};
c5262_11 = {
canCreateExpressions: false,
canCreateGuildEvent: false,
canManageAllExpressions: false,
canManageAllEvents: false,
canManageGuildExpression: () => false,
canManageGuildEvent: () => false
};
export function attachChannelPermissions(a0) {
if (a0 == null) {
return [Permissions.CREATE_EVENTS, Permissions.MANAGE_EVENTS];
}
let r6 = CREATE_GUILD_EVENT_CORE_PERMISSIONS;
if (a0.isGuildStageVoice()) {
r6 = CREATE_GUILD_EVENT_STAGE_CHANNEL_PERMISSIONS;
} else if (a0.isGuildVoice()) {
r6 = CREATE_GUILD_EVENT_VOICE_CHANNEL_PERMISSIONS;
}
return [combine(r6, Permissions.CREATE_EVENTS), combine(r6, Permissions.MANAGE_EVENTS)];
}
export function useManageResourcePermissions(a0) {
let r25;
let c16427_3, c16427_4, c16427_5, c16427_6, stateFromStores;
let c16427_0 = a0;
if (isGuildRecord(a0)) {
r25 = [Permissions.CREATE_EVENTS, Permissions.MANAGE_EVENTS];
} else if (a0 == null) {
r25 = [Permissions.CREATE_EVENTS, Permissions.MANAGE_EVENTS];
} else {
let r12 = CREATE_GUILD_EVENT_CORE_PERMISSIONS;
if (a0.isGuildStageVoice()) {
r12 = CREATE_GUILD_EVENT_STAGE_CHANNEL_PERMISSIONS;
} else if (a0.isGuildVoice()) {
r12 = CREATE_GUILD_EVENT_VOICE_CHANNEL_PERMISSIONS;
}
r25 = [combine(r12, Permissions.CREATE_EVENTS), combine(r12, Permissions.MANAGE_EVENTS)];
}
let [c16427_1, c16427_2] = r25;
const [canCreateExpressions, canManageAllExpressions, canCreateGuildEvent, canManageAllEvents] = useStateFromStoresArray([PermissionStore], () => {
const CREATE_GUILD_EXPRESSIONS = Permissions.CREATE_GUILD_EXPRESSIONS;
return [PermissionStore.can(CREATE_GUILD_EXPRESSIONS, c16427_0), PermissionStore.can(Permissions.MANAGE_GUILD_EXPRESSIONS, c16427_0), PermissionStore.can(c16427_1, c16427_0), PermissionStore.can(c16427_2, c16427_0)];
});
c16427_3 = canCreateExpressions;
c16427_4 = canManageAllExpressions;
c16427_5 = canCreateGuildEvent;
c16427_6 = canManageAllEvents;
stateFromStores = useStateFromStores([UserStore], () => UserStore.getCurrentUser());
const callback = useCallback((a0) => canManageResource(a0, stateFromStores, c16427_4, c16427_3), [canCreateExpressions, canManageAllExpressions, stateFromStores]);
const callback2 = useCallback((a0) => canManageResource(a0, stateFromStores, c16427_6, c16427_5), [canManageAllEvents, canCreateGuildEvent, stateFromStores]);
return a0 == null ? c5262_11 : {
canCreateExpressions,
canCreateGuildEvent,
canManageAllExpressions,
canManageAllEvents,
canManageGuildExpression: callback,
canManageGuildEvent: callback2
};
}
export function getManageResourcePermissions(a0, r12 = PermissionStore, r11 = UserStore) {
let r26;
if (isGuildRecord(a0)) {
r26 = [Permissions.CREATE_EVENTS, Permissions.MANAGE_EVENTS];
} else if (a0 == null) {
r26 = [Permissions.CREATE_EVENTS, Permissions.MANAGE_EVENTS];
} else {
let r13 = CREATE_GUILD_EVENT_CORE_PERMISSIONS;
if (a0.isGuildStageVoice()) {
r13 = CREATE_GUILD_EVENT_STAGE_CHANNEL_PERMISSIONS;
} else if (a0.isGuildVoice()) {
r13 = CREATE_GUILD_EVENT_VOICE_CHANNEL_PERMISSIONS;
}
r26 = [combine(r13, Permissions.CREATE_EVENTS), combine(r13, Permissions.MANAGE_EVENTS)];
}
const [r44, r45] = r26;
const canCreateExpressions = r12.can(Permissions.CREATE_GUILD_EXPRESSIONS, a0);
let c16428_0 = canCreateExpressions;
const canManageAllExpressions = r12.can(Permissions.MANAGE_GUILD_EXPRESSIONS, a0);
let c16428_1 = canManageAllExpressions;
const canCreateGuildEvent = r12.can(r44, a0);
let c16428_2 = canCreateGuildEvent;
const canManageAllEvents = r12.can(r45, a0);
let c16428_3 = canManageAllEvents;
const currentUser = r11.getCurrentUser();
return a0 == null ? c5262_11 : {
canCreateExpressions,
canCreateGuildEvent,
canManageAllExpressions,
canManageAllEvents,
canManageGuildExpression: (a0) => canManageResource(a0, currentUser, c16428_1, c16428_0),
canManageGuildEvent: (a0) => canManageResource(a0, currentUser, c16428_3, c16428_2)
};
}