mirror of
https://github.com/cinnyapp/cinny.git
synced 2025-11-14 11:10:29 +03:00
add room creators hook
This commit is contained in:
parent
7487e5322b
commit
deb53a9359
3 changed files with 35 additions and 16 deletions
|
|
@ -73,10 +73,13 @@ const getPowersLevelFromMatrixEvent = (mEvent?: MatrixEvent, creators?: string[]
|
||||||
|
|
||||||
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(() => {
|
||||||
() => getPowersLevelFromMatrixEvent(powerLevelsEvent, getRoomCreators(room)),
|
const createEvent = getStateEvent(room, StateEvent.RoomCreate);
|
||||||
[room, powerLevelsEvent]
|
return getPowersLevelFromMatrixEvent(
|
||||||
|
powerLevelsEvent,
|
||||||
|
createEvent ? getRoomCreators(createEvent) : undefined
|
||||||
);
|
);
|
||||||
|
}, [room, powerLevelsEvent]);
|
||||||
|
|
||||||
return powerLevels;
|
return powerLevels;
|
||||||
}
|
}
|
||||||
|
|
@ -98,7 +101,14 @@ 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, '');
|
||||||
rToPl.set(room.roomId, getPowersLevelFromMatrixEvent(mEvent, getRoomCreators(room)));
|
const createEvent = getStateEvent(room, StateEvent.RoomCreate);
|
||||||
|
rToPl.set(
|
||||||
|
room.roomId,
|
||||||
|
getPowersLevelFromMatrixEvent(
|
||||||
|
mEvent,
|
||||||
|
createEvent ? getRoomCreators(createEvent) : undefined
|
||||||
|
)
|
||||||
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
return rToPl;
|
return rToPl;
|
||||||
|
|
|
||||||
16
src/app/hooks/useRoomCreators.ts
Normal file
16
src/app/hooks/useRoomCreators.ts
Normal file
|
|
@ -0,0 +1,16 @@
|
||||||
|
import { Room } from 'matrix-js-sdk';
|
||||||
|
import { useMemo } from 'react';
|
||||||
|
import { useStateEvent } from './useStateEvent';
|
||||||
|
import { StateEvent } from '../../types/matrix/room';
|
||||||
|
import { getRoomCreators } from '../utils/room';
|
||||||
|
|
||||||
|
export const useRoomCreators = (room: Room): string[] | undefined => {
|
||||||
|
const createEvent = useStateEvent(room, StateEvent.RoomCreate);
|
||||||
|
|
||||||
|
const creators = useMemo(
|
||||||
|
() => (createEvent ? getRoomCreators(createEvent) : undefined),
|
||||||
|
[createEvent]
|
||||||
|
);
|
||||||
|
|
||||||
|
return creators;
|
||||||
|
};
|
||||||
|
|
@ -516,10 +516,7 @@ export const guessPerfectParent = (
|
||||||
return perfectParent;
|
return perfectParent;
|
||||||
};
|
};
|
||||||
|
|
||||||
export const getRoomCreators = (room: Room): string[] | undefined => {
|
export const getRoomCreators = (createEvent: MatrixEvent): string[] | undefined => {
|
||||||
const createEvent = getStateEvent(room, StateEvent.RoomCreate);
|
|
||||||
if (!createEvent) return undefined;
|
|
||||||
|
|
||||||
const createContent = createEvent.getContent<IRoomCreateContent>();
|
const createContent = createEvent.getContent<IRoomCreateContent>();
|
||||||
const roomVersion = createContent.room_version;
|
const roomVersion = createContent.room_version;
|
||||||
|
|
||||||
|
|
@ -530,15 +527,11 @@ export const getRoomCreators = (room: Room): string[] | undefined => {
|
||||||
|
|
||||||
const creators: Set<string> = new Set();
|
const creators: Set<string> = new Set();
|
||||||
|
|
||||||
if (createEvent?.event.sender) {
|
if (createEvent.event.sender) {
|
||||||
creators.add(createEvent?.event.sender);
|
creators.add(createEvent.event.sender);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (
|
if ('additional_creators' in createContent && Array.isArray(createContent.additional_creators)) {
|
||||||
createContent &&
|
|
||||||
'additional_creators' in createContent &&
|
|
||||||
Array.isArray(createContent.additional_creators)
|
|
||||||
) {
|
|
||||||
createContent.additional_creators.forEach((creator) => {
|
createContent.additional_creators.forEach((creator) => {
|
||||||
if (typeof creator === 'string') {
|
if (typeof creator === 'string') {
|
||||||
creators.add(creator);
|
creators.add(creator);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue