add hook to get dm users

This commit is contained in:
Ajay Bura 2025-08-10 20:36:47 +05:30
parent abbd0efc7e
commit 7c8d25872b
2 changed files with 29 additions and 0 deletions

View file

@ -0,0 +1,27 @@
import { useMemo } from 'react';
import { AccountDataEvent, MDirectContent } from '../../types/matrix/accountData';
import { useAccountData } from './useAccountData';
import { useAllJoinedRoomsSet, useGetRoom } from './useGetRoom';
export const useDirectUsers = (): string[] => {
const directEvent = useAccountData(AccountDataEvent.Direct);
const content = directEvent?.getContent<MDirectContent>();
const allJoinedRooms = useAllJoinedRoomsSet();
const getRoom = useGetRoom(allJoinedRooms);
const users = useMemo(() => {
if (typeof content !== 'object') return [];
const u = Object.keys(content).filter((userId) => {
const rooms = content[userId];
if (!Array.isArray(rooms)) return false;
const hasDM = rooms.some((roomId) => typeof roomId === 'string' && !!getRoom(roomId));
return hasDM;
});
return u;
}, [content, getRoom]);
return users;
};

View file

@ -18,6 +18,8 @@ export enum AccountDataEvent {
MegolmBackupV1 = 'm.megolm_backup.v1',
}
export type MDirectContent = Record<string, string[]>;
export type SecretStorageDefaultKeyContent = {
key: string;
};