Files
cinny/src/app/features/space-settings/permissions/usePermissionItems.ts
2025-03-27 19:54:13 +11:00

149 lines
3.1 KiB
TypeScript

import { useMemo } from 'react';
import { StateEvent } from '../../../../types/matrix/room';
import { PermissionGroup } from '../../common-settings/permissions';
export const usePermissionGroups = (): PermissionGroup[] => {
const groups: PermissionGroup[] = useMemo(() => {
const messagesGroup: PermissionGroup = {
name: 'Manage',
items: [
{
location: {
state: true,
key: StateEvent.SpaceChild,
},
name: 'Manage space rooms',
},
{
location: {},
name: 'Message Events',
},
],
};
const moderationGroup: PermissionGroup = {
name: 'Moderation',
items: [
{
location: {
action: true,
key: 'invite',
},
name: 'Invite',
},
{
location: {
action: true,
key: 'kick',
},
name: 'Kick',
},
{
location: {
action: true,
key: 'ban',
},
name: 'Ban',
},
],
};
const roomOverviewGroup: PermissionGroup = {
name: 'Space Overview',
items: [
{
location: {
state: true,
key: StateEvent.RoomAvatar,
},
name: 'Space Avatar',
},
{
location: {
state: true,
key: StateEvent.RoomName,
},
name: 'Space Name',
},
{
location: {
state: true,
key: StateEvent.RoomTopic,
},
name: 'Space Topic',
},
],
};
const roomSettingsGroup: PermissionGroup = {
name: 'Settings',
items: [
{
location: {
state: true,
key: StateEvent.RoomJoinRules,
},
name: 'Change Space Access',
},
{
location: {
state: true,
key: StateEvent.RoomCanonicalAlias,
},
name: 'Publish Address',
},
{
location: {
state: true,
key: StateEvent.RoomPowerLevels,
},
name: 'Change All Permission',
},
{
location: {
state: true,
key: StateEvent.PowerLevelTags,
},
name: 'Edit Power Levels',
},
{
location: {
state: true,
key: StateEvent.RoomTombstone,
},
name: 'Upgrade Space',
},
{
location: {
state: true,
},
name: 'Other Settings',
},
],
};
const otherSettingsGroup: PermissionGroup = {
name: 'Other',
items: [
{
location: {
state: true,
key: StateEvent.RoomServerAcl,
},
name: 'Change Server ACLs',
},
],
};
return [
messagesGroup,
moderationGroup,
roomOverviewGroup,
roomSettingsGroup,
otherSettingsGroup,
];
}, []);
return groups;
};