From abbd0efc7eede1968ed3e483d18e14c723e7b903 Mon Sep 17 00:00:00 2001 From: Ajay Bura <32841439+ajbura@users.noreply.github.com> Date: Sat, 9 Aug 2025 20:46:56 +0530 Subject: [PATCH] improve use room creators hook --- src/app/hooks/useRoomCreators.ts | 32 ++++++++++++++++++++++++-------- src/app/utils/matrix.ts | 4 ++++ src/app/utils/room.ts | 27 --------------------------- 3 files changed, 28 insertions(+), 35 deletions(-) diff --git a/src/app/hooks/useRoomCreators.ts b/src/app/hooks/useRoomCreators.ts index 4a460fa5..f4dc7569 100644 --- a/src/app/hooks/useRoomCreators.ts +++ b/src/app/hooks/useRoomCreators.ts @@ -1,16 +1,32 @@ -import { Room } from 'matrix-js-sdk'; +import { MatrixEvent, Room } from 'matrix-js-sdk'; import { useMemo } from 'react'; import { useStateEvent } from './useStateEvent'; -import { StateEvent } from '../../types/matrix/room'; -import { getRoomCreators } from '../utils/room'; +import { IRoomCreateContent, StateEvent } from '../../types/matrix/room'; -export const useRoomCreators = (room: Room): string[] | undefined => { +export const getRoomCreators = (createEvent: MatrixEvent): string[] => { + const createContent = createEvent.getContent(); + + const creators: Set = new Set(); + + if (createEvent.event.sender) { + creators.add(createEvent.event.sender); + } + + if ('additional_creators' in createContent && Array.isArray(createContent.additional_creators)) { + createContent.additional_creators.forEach((creator) => { + if (typeof creator === 'string') { + creators.add(creator); + } + }); + } + + return Array.from(creators); +}; + +export const useRoomCreators = (room: Room): string[] => { const createEvent = useStateEvent(room, StateEvent.RoomCreate); - const creators = useMemo( - () => (createEvent ? getRoomCreators(createEvent) : undefined), - [createEvent] - ); + const creators = useMemo(() => (createEvent ? getRoomCreators(createEvent) : []), [createEvent]); return creators; }; diff --git a/src/app/utils/matrix.ts b/src/app/utils/matrix.ts index b31677a0..c8b104d9 100644 --- a/src/app/utils/matrix.ts +++ b/src/app/utils/matrix.ts @@ -357,3 +357,7 @@ export const knockRestrictedSupported = (version: string): boolean => { const unsupportedVersion = ['1', '2', '3', '4', '5', '6', '7', '8', '9']; return !unsupportedVersion.includes(version); }; +export const creatorsSupported = (version: string): boolean => { + const unsupportedVersion = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11']; + return !unsupportedVersion.includes(version); +}; diff --git a/src/app/utils/room.ts b/src/app/utils/room.ts index d0b222b8..a962c45d 100644 --- a/src/app/utils/room.ts +++ b/src/app/utils/room.ts @@ -20,7 +20,6 @@ import { import { CryptoBackend } from 'matrix-js-sdk/lib/common-crypto/CryptoBackend'; import { AccountDataEvent } from '../../types/matrix/accountData'; import { - IRoomCreateContent, Membership, MessageEvent, NotificationType, @@ -520,29 +519,3 @@ export const guessPerfectParent = ( return perfectParent; }; - -export const getRoomCreators = (createEvent: MatrixEvent): string[] | undefined => { - const createContent = createEvent.getContent(); - const roomVersion = createContent.room_version; - - if (['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11'].includes(roomVersion)) { - // room version doesn't support creators. - return undefined; - } - - const creators: Set = new Set(); - - if (createEvent.event.sender) { - creators.add(createEvent.event.sender); - } - - if ('additional_creators' in createContent && Array.isArray(createContent.additional_creators)) { - createContent.additional_creators.forEach((creator) => { - if (typeof creator === 'string') { - creators.add(creator); - } - }); - } - - return Array.from(creators); -};