import { atom } from 'jotai'; import { atomFamily } from 'jotai/utils'; import { Descendant } from 'slate'; import { EncryptedAttachmentInfo } from 'browser-encrypt-attachment'; import { IEventRelation } from 'matrix-js-sdk'; import { TListAtom, createListAtom } from '../list'; import { createUploadAtomFamily } from '../upload'; import { TUploadContent } from '../../utils/matrix'; export const roomUploadAtomFamily = createUploadAtomFamily(); export type TUploadItem = { file: TUploadContent; originalFile: TUploadContent; encInfo: EncryptedAttachmentInfo | undefined; }; export const roomIdToUploadItemsAtomFamily = atomFamily>( createListAtom ); export type RoomIdToMsgAction = | { type: 'PUT'; roomId: string; msg: Descendant[]; } | { type: 'DELETE'; roomId: string; }; const createMsgDraftAtom = () => atom([]); export type TMsgDraftAtom = ReturnType; export const roomIdToMsgDraftAtomFamily = atomFamily(() => createMsgDraftAtom() ); export type IReplyDraft = { userId: string; eventId: string; body: string; formattedBody?: string | undefined; relation?: IEventRelation | undefined; }; const createReplyDraftAtom = () => atom(undefined); export type TReplyDraftAtom = ReturnType; export const roomIdToReplyDraftAtomFamily = atomFamily(() => createReplyDraftAtom() );