revert changes from powerlevels

This commit is contained in:
Ajay Bura 2025-07-23 09:47:46 +05:30
parent deb53a9359
commit ba4c835983
3 changed files with 19 additions and 45 deletions

View file

@ -83,9 +83,6 @@ export function PermissionGroups({ powerLevels, permissionGroups }: PermissionGr
applyPermissionPower(draftPowerLevels, location, power) applyPermissionPower(draftPowerLevels, location, power)
); );
// eslint-disable-next-line no-param-reassign
delete draftPowerLevels['in.cinny.creators'];
return draftPowerLevels; return draftPowerLevels;
}); });
await mx.sendStateEvent(room.roomId, StateEvent.RoomPowerLevels as any, editedPowerLevels); await mx.sendStateEvent(room.roomId, StateEvent.RoomPowerLevels as any, editedPowerLevels);

View file

@ -23,20 +23,21 @@ const powerSortFn = (a: number, b: number) => b - a;
const sortPowers = (powers: number[]): number[] => powers.sort(powerSortFn); const sortPowers = (powers: number[]): number[] => powers.sort(powerSortFn);
export const getPowers = (tags: PowerLevelTags): number[] => { export const getPowers = (tags: PowerLevelTags): number[] => {
const powers: number[] = Object.keys(tags).map((p) => { const powers: number[] = Object.keys(tags)
.map((p) => {
const power = parseInt(p, 10); const power = parseInt(p, 10);
if (Number.isNaN(power)) { if (Number.isNaN(power)) {
return Infinity; return undefined;
} }
return power; return power;
}); })
.filter((power) => typeof power === 'number');
return sortPowers(powers); return sortPowers(powers);
}; };
export const getUsedPowers = (powerLevels: IPowerLevels): Set<number> => { export const getUsedPowers = (powerLevels: IPowerLevels): Set<number> => {
const powers: Set<number> = new Set(); const powers: Set<number> = new Set();
powers.add(Infinity);
const findAndAddPower = (data: Record<string, unknown>) => { const findAndAddPower = (data: Record<string, unknown>) => {
Object.keys(data).forEach((key) => { Object.keys(data).forEach((key) => {
@ -58,16 +59,12 @@ export const getUsedPowers = (powerLevels: IPowerLevels): Set<number> => {
}; };
const DEFAULT_TAGS: PowerLevelTags = { const DEFAULT_TAGS: PowerLevelTags = {
Infinity: {
name: 'Creator',
color: '#ff6a00',
},
9001: { 9001: {
name: 'Goku', name: 'Goku',
color: '#ff6a00', color: '#ff6a00',
}, },
150: { 150: {
name: 'Super Admin', name: 'Founder',
color: '#ff6a7f', color: '#ff6a7f',
}, },
101: { 101: {

View file

@ -5,7 +5,7 @@ import { useStateEvent } from './useStateEvent';
import { StateEvent } from '../../types/matrix/room'; import { StateEvent } from '../../types/matrix/room';
import { useStateEventCallback } from './useStateEventCallback'; import { useStateEventCallback } from './useStateEventCallback';
import { useMatrixClient } from './useMatrixClient'; import { useMatrixClient } from './useMatrixClient';
import { getRoomCreators, getStateEvent } from '../utils/room'; import { getStateEvent } from '../utils/room';
export type PowerLevelActions = 'invite' | 'redact' | 'kick' | 'ban' | 'historical'; export type PowerLevelActions = 'invite' | 'redact' | 'kick' | 'ban' | 'historical';
export type PowerLevelNotificationsAction = 'room'; export type PowerLevelNotificationsAction = 'room';
@ -23,7 +23,6 @@ export type IPowerLevels = {
events?: Record<string, number>; events?: Record<string, number>;
users?: Record<string, number>; users?: Record<string, number>;
notifications?: Record<string, number>; notifications?: Record<string, number>;
'in.cinny.creators'?: string[];
}; };
const DEFAULT_POWER_LEVELS: Required<IPowerLevels> = { const DEFAULT_POWER_LEVELS: Required<IPowerLevels> = {
@ -40,7 +39,6 @@ const DEFAULT_POWER_LEVELS: Required<IPowerLevels> = {
notifications: { notifications: {
room: 50, room: 50,
}, },
'in.cinny.creators': [],
}; };
const fillMissingPowers = (powerLevels: IPowerLevels): IPowerLevels => const fillMissingPowers = (powerLevels: IPowerLevels): IPowerLevels =>
@ -59,27 +57,20 @@ const fillMissingPowers = (powerLevels: IPowerLevels): IPowerLevels =>
return draftPl; return draftPl;
}); });
const getPowersLevelFromMatrixEvent = (mEvent?: MatrixEvent, creators?: string[]): IPowerLevels => { const getPowersLevelFromMatrixEvent = (mEvent?: MatrixEvent): IPowerLevels => {
const plContent = mEvent?.getContent<IPowerLevels>(); const plContent = mEvent?.getContent<IPowerLevels>();
const powerLevels = !plContent ? DEFAULT_POWER_LEVELS : fillMissingPowers(plContent); const powerLevels = !plContent ? DEFAULT_POWER_LEVELS : fillMissingPowers(plContent);
return produce(powerLevels, (draftPl) => { return powerLevels;
// eslint-disable-next-line no-param-reassign
draftPl['in.cinny.creators'] = creators;
return draftPl;
});
}; };
export function usePowerLevels(room: Room): IPowerLevels { export function usePowerLevels(room: Room): IPowerLevels {
const powerLevelsEvent = useStateEvent(room, StateEvent.RoomPowerLevels); const powerLevelsEvent = useStateEvent(room, StateEvent.RoomPowerLevels);
const powerLevels: IPowerLevels = useMemo(() => { const powerLevels: IPowerLevels = useMemo(
const createEvent = getStateEvent(room, StateEvent.RoomCreate); () => getPowersLevelFromMatrixEvent(powerLevelsEvent),
return getPowersLevelFromMatrixEvent( [powerLevelsEvent]
powerLevelsEvent,
createEvent ? getRoomCreators(createEvent) : undefined
); );
}, [room, powerLevelsEvent]);
return powerLevels; return powerLevels;
} }
@ -101,14 +92,7 @@ export const useRoomsPowerLevels = (rooms: Room[]): Map<string, IPowerLevels> =>
rooms.forEach((room) => { rooms.forEach((room) => {
const mEvent = getStateEvent(room, StateEvent.RoomPowerLevels, ''); const mEvent = getStateEvent(room, StateEvent.RoomPowerLevels, '');
const createEvent = getStateEvent(room, StateEvent.RoomCreate); rToPl.set(room.roomId, getPowersLevelFromMatrixEvent(mEvent));
rToPl.set(
room.roomId,
getPowersLevelFromMatrixEvent(
mEvent,
createEvent ? getRoomCreators(createEvent) : undefined
)
);
}); });
return rToPl; return rToPl;
@ -172,11 +156,7 @@ export type ReadPowerLevelAPI = {
export const readPowerLevel: ReadPowerLevelAPI = { export const readPowerLevel: ReadPowerLevelAPI = {
user: (powerLevels, userId) => { user: (powerLevels, userId) => {
const { users_default: usersDefault, users, 'in.cinny.creators': creators } = powerLevels; const { users_default: usersDefault, users } = powerLevels;
if (userId && Array.isArray(creators) && creators.includes(userId)) {
return Infinity;
}
if (userId && users && typeof users[userId] === 'number') { if (userId && users && typeof users[userId] === 'number') {
return users[userId]; return users[userId];