From 08070d41c5adcd8022a5cae413f60fae058b9cfa Mon Sep 17 00:00:00 2001 From: Ajay Bura <32841439+ajbura@users.noreply.github.com> Date: Tue, 27 Dec 2022 20:16:20 +0530 Subject: [PATCH] add room list atom --- src/app/state/roomList.ts | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 src/app/state/roomList.ts diff --git a/src/app/state/roomList.ts b/src/app/state/roomList.ts new file mode 100644 index 00000000..64db835b --- /dev/null +++ b/src/app/state/roomList.ts @@ -0,0 +1,27 @@ +import { atom } from 'jotai'; +import { mx } from '../../client/mx'; +import { Membership } from '../../types/matrix/room'; +import { isRoom, isSpace, isUnsupportedRoom } from '../utils/room'; +import { mDirectAtom } from './mDirectList'; +import { atomRoomsWithMemberships } from './utils'; + +export const allRoomsAtom = atom([]); +allRoomsAtom.onMount = (setAtom) => atomRoomsWithMemberships(setAtom, mx(), [Membership.Join]); + +export const spacesAtom = atom((get) => + get(allRoomsAtom).filter((roomId) => isSpace(mx().getRoom(roomId))) +); + +export const roomsAtom = atom((get) => + get(allRoomsAtom).filter( + (roomId) => isRoom(mx().getRoom(roomId)) && !get(mDirectAtom).has(roomId) + ) +); + +export const directsAtom = atom((get) => + get(allRoomsAtom).filter((roomId) => isRoom(mx().getRoom(roomId)) && get(mDirectAtom).has(roomId)) +); + +export const unsupportedRoomsAtom = atom((get) => + get(allRoomsAtom).filter((roomId) => isUnsupportedRoom(mx().getRoom(roomId))) +);