mirror of
https://github.com/cinnyapp/cinny.git
synced 2025-11-13 18:50: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 {
|
||||
const powerLevelsEvent = useStateEvent(room, StateEvent.RoomPowerLevels);
|
||||
const powerLevels: IPowerLevels = useMemo(
|
||||
() => getPowersLevelFromMatrixEvent(powerLevelsEvent, getRoomCreators(room)),
|
||||
[room, powerLevelsEvent]
|
||||
);
|
||||
const powerLevels: IPowerLevels = useMemo(() => {
|
||||
const createEvent = getStateEvent(room, StateEvent.RoomCreate);
|
||||
return getPowersLevelFromMatrixEvent(
|
||||
powerLevelsEvent,
|
||||
createEvent ? getRoomCreators(createEvent) : undefined
|
||||
);
|
||||
}, [room, powerLevelsEvent]);
|
||||
|
||||
return powerLevels;
|
||||
}
|
||||
|
|
@ -98,7 +101,14 @@ export const useRoomsPowerLevels = (rooms: Room[]): Map<string, IPowerLevels> =>
|
|||
|
||||
rooms.forEach((room) => {
|
||||
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;
|
||||
|
|
|
|||
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;
|
||||
};
|
||||
|
||||
export const getRoomCreators = (room: Room): string[] | undefined => {
|
||||
const createEvent = getStateEvent(room, StateEvent.RoomCreate);
|
||||
if (!createEvent) return undefined;
|
||||
|
||||
export const getRoomCreators = (createEvent: MatrixEvent): string[] | undefined => {
|
||||
const createContent = createEvent.getContent<IRoomCreateContent>();
|
||||
const roomVersion = createContent.room_version;
|
||||
|
||||
|
|
@ -530,15 +527,11 @@ export const getRoomCreators = (room: Room): string[] | undefined => {
|
|||
|
||||
const creators: Set<string> = new Set();
|
||||
|
||||
if (createEvent?.event.sender) {
|
||||
creators.add(createEvent?.event.sender);
|
||||
if (createEvent.event.sender) {
|
||||
creators.add(createEvent.event.sender);
|
||||
}
|
||||
|
||||
if (
|
||||
createContent &&
|
||||
'additional_creators' in createContent &&
|
||||
Array.isArray(createContent.additional_creators)
|
||||
) {
|
||||
if ('additional_creators' in createContent && Array.isArray(createContent.additional_creators)) {
|
||||
createContent.additional_creators.forEach((creator) => {
|
||||
if (typeof creator === 'string') {
|
||||
creators.add(creator);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue