mirror of
https://github.com/cinnyapp/cinny.git
synced 2025-11-04 14:30:29 +03:00
revert changes from powerlevels
This commit is contained in:
parent
deb53a9359
commit
ba4c835983
3 changed files with 19 additions and 45 deletions
|
|
@ -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);
|
||||||
|
|
|
||||||
|
|
@ -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)
|
||||||
const power = parseInt(p, 10);
|
.map((p) => {
|
||||||
if (Number.isNaN(power)) {
|
const power = parseInt(p, 10);
|
||||||
return Infinity;
|
if (Number.isNaN(power)) {
|
||||||
}
|
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: {
|
||||||
|
|
|
||||||
|
|
@ -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];
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue