mirror of
https://github.com/cinnyapp/cinny.git
synced 2025-11-04 22:40:29 +03:00
add hook to get dm users
This commit is contained in:
parent
abbd0efc7e
commit
7c8d25872b
2 changed files with 29 additions and 0 deletions
27
src/app/hooks/useDirectUsers.ts
Normal file
27
src/app/hooks/useDirectUsers.ts
Normal 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;
|
||||
};
|
||||
|
|
@ -18,6 +18,8 @@ export enum AccountDataEvent {
|
|||
MegolmBackupV1 = 'm.megolm_backup.v1',
|
||||
}
|
||||
|
||||
export type MDirectContent = Record<string, string[]>;
|
||||
|
||||
export type SecretStorageDefaultKeyContent = {
|
||||
key: string;
|
||||
};
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue