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',
|
MegolmBackupV1 = 'm.megolm_backup.v1',
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export type MDirectContent = Record<string, string[]>;
|
||||||
|
|
||||||
export type SecretStorageDefaultKeyContent = {
|
export type SecretStorageDefaultKeyContent = {
|
||||||
key: string;
|
key: string;
|
||||||
};
|
};
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue