From b01f6f428d35ffecab60888111c39699f49ad5ff Mon Sep 17 00:00:00 2001 From: Ajay Bura <32841439+ajbura@users.noreply.github.com> Date: Thu, 1 Feb 2024 10:01:45 +0530 Subject: [PATCH] re-arrange state atom --- src/app/organisms/room/RoomInput.tsx | 8 ++++---- src/app/organisms/room/RoomTimeline.tsx | 2 +- src/app/organisms/room/msgContent.ts | 2 +- src/app/state/hooks/inviteList.ts | 4 ++-- src/app/state/hooks/roomList.ts | 4 ++-- src/app/state/hooks/useBindAtoms.ts | 10 +++++----- src/app/state/{ => room-list}/inviteList.ts | 2 +- src/app/state/{ => room-list}/mutedRoomList.ts | 4 ++-- src/app/state/{ => room-list}/roomList.ts | 2 +- src/app/state/{ => room-list}/utils.ts | 2 +- src/app/state/{ => room}/roomInputDrafts.ts | 6 +++--- src/app/state/{ => room}/roomToParents.ts | 4 ++-- src/app/state/{ => room}/roomToUnread.ts | 4 ++-- src/app/state/selectedRoom.ts | 3 --- src/app/state/selectedTab.ts | 8 -------- 15 files changed, 27 insertions(+), 38 deletions(-) rename src/app/state/{ => room-list}/inviteList.ts (94%) rename src/app/state/{ => room-list}/mutedRoomList.ts (96%) rename src/app/state/{ => room-list}/roomList.ts (93%) rename src/app/state/{ => room-list}/utils.ts (97%) rename src/app/state/{ => room}/roomInputDrafts.ts (88%) rename src/app/state/{ => room}/roomToParents.ts (96%) rename src/app/state/{ => room}/roomToUnread.ts (99%) delete mode 100644 src/app/state/selectedRoom.ts delete mode 100644 src/app/state/selectedTab.ts diff --git a/src/app/organisms/room/RoomInput.tsx b/src/app/organisms/room/RoomInput.tsx index e6c4fb73..0eefee93 100644 --- a/src/app/organisms/room/RoomInput.tsx +++ b/src/app/organisms/room/RoomInput.tsx @@ -68,7 +68,7 @@ import { roomIdToReplyDraftAtomFamily, roomIdToUploadItemsAtomFamily, roomUploadAtomFamily, -} from '../../state/roomInputDrafts'; +} from '../../state/room/roomInputDrafts'; import { UploadCardRenderer } from '../../components/upload-card'; import { UploadBoard, @@ -307,7 +307,7 @@ export const RoomInput = forwardRef( mx.sendMessage(roomId, content); resetEditor(editor); resetEditorHistory(editor); - setReplyDraft(); + setReplyDraft(undefined); sendTypingStatus(false); }, [mx, roomId, editor, replyDraft, sendTypingStatus, setReplyDraft, isMarkdown, commands]); @@ -319,7 +319,7 @@ export const RoomInput = forwardRef( } if (isKeyHotkey('escape', evt)) { evt.preventDefault(); - setReplyDraft(); + setReplyDraft(undefined); } }, [submit, setReplyDraft, enterForNewline] @@ -475,7 +475,7 @@ export const RoomInput = forwardRef( style={{ padding: `${config.space.S200} ${config.space.S300} 0` }} > setReplyDraft()} + onClick={() => setReplyDraft(undefined)} variant="SurfaceVariant" size="300" radii="300" diff --git a/src/app/organisms/room/RoomTimeline.tsx b/src/app/organisms/room/RoomTimeline.tsx index 0c74de52..cc1168e7 100644 --- a/src/app/organisms/room/RoomTimeline.tsx +++ b/src/app/organisms/room/RoomTimeline.tsx @@ -132,7 +132,7 @@ import { getResizeObserverEntry, useResizeObserver } from '../../hooks/useResize import * as css from './RoomTimeline.css'; import { inSameDay, minuteDifference, timeDayMonthYear, today, yesterday } from '../../utils/time'; import { createMentionElement, isEmptyEditor, moveCursor } from '../../components/editor'; -import { roomIdToReplyDraftAtomFamily } from '../../state/roomInputDrafts'; +import { roomIdToReplyDraftAtomFamily } from '../../state/room/roomInputDrafts'; import { usePowerLevelsAPI } from '../../hooks/usePowerLevels'; import { MessageEvent } from '../../../types/matrix/room'; import initMatrix from '../../../client/initMatrix'; diff --git a/src/app/organisms/room/msgContent.ts b/src/app/organisms/room/msgContent.ts index 0760ec9e..103e8dcd 100644 --- a/src/app/organisms/room/msgContent.ts +++ b/src/app/organisms/room/msgContent.ts @@ -10,7 +10,7 @@ import { loadVideoElement, } from '../../utils/dom'; import { encryptFile, getImageInfo, getThumbnailContent, getVideoInfo } from '../../utils/matrix'; -import { TUploadItem } from '../../state/roomInputDrafts'; +import { TUploadItem } from '../../state/room/roomInputDrafts'; import { encodeBlurHash } from '../../utils/blurHash'; import { scaleYDimension } from '../../utils/common'; diff --git a/src/app/state/hooks/inviteList.ts b/src/app/state/hooks/inviteList.ts index ffe44445..3f19451b 100644 --- a/src/app/state/hooks/inviteList.ts +++ b/src/app/state/hooks/inviteList.ts @@ -3,9 +3,9 @@ import { selectAtom } from 'jotai/utils'; import { MatrixClient } from 'matrix-js-sdk'; import { useCallback } from 'react'; import { isDirectInvite, isRoom, isSpace, isUnsupportedRoom } from '../../utils/room'; -import { compareRoomsEqual } from '../utils'; +import { compareRoomsEqual } from '../room-list/utils'; import { mDirectAtom } from '../mDirectList'; -import { allInvitesAtom } from '../inviteList'; +import { allInvitesAtom } from '../room-list/inviteList'; export const useSpaceInvites = (mx: MatrixClient, invitesAtom: typeof allInvitesAtom) => { const selector = useCallback( diff --git a/src/app/state/hooks/roomList.ts b/src/app/state/hooks/roomList.ts index c0a7bfb8..95b02fa8 100644 --- a/src/app/state/hooks/roomList.ts +++ b/src/app/state/hooks/roomList.ts @@ -3,9 +3,9 @@ import { selectAtom } from 'jotai/utils'; import { MatrixClient } from 'matrix-js-sdk'; import { useCallback } from 'react'; import { isRoom, isSpace, isUnsupportedRoom } from '../../utils/room'; -import { compareRoomsEqual } from '../utils'; +import { compareRoomsEqual } from '../room-list/utils'; import { mDirectAtom } from '../mDirectList'; -import { allRoomsAtom } from '../roomList'; +import { allRoomsAtom } from '../room-list/roomList'; export const useSpaces = (mx: MatrixClient, roomsAtom: typeof allRoomsAtom) => { const selector = useCallback( diff --git a/src/app/state/hooks/useBindAtoms.ts b/src/app/state/hooks/useBindAtoms.ts index 6dc2a3de..5bb6dd12 100644 --- a/src/app/state/hooks/useBindAtoms.ts +++ b/src/app/state/hooks/useBindAtoms.ts @@ -1,10 +1,10 @@ import { MatrixClient } from 'matrix-js-sdk'; -import { allInvitesAtom, useBindAllInvitesAtom } from '../inviteList'; -import { allRoomsAtom, useBindAllRoomsAtom } from '../roomList'; +import { allInvitesAtom, useBindAllInvitesAtom } from '../room-list/inviteList'; +import { allRoomsAtom, useBindAllRoomsAtom } from '../room-list/roomList'; import { mDirectAtom, useBindMDirectAtom } from '../mDirectList'; -import { muteChangesAtom, mutedRoomsAtom, useBindMutedRoomsAtom } from '../mutedRoomList'; -import { roomToUnreadAtom, useBindRoomToUnreadAtom } from '../roomToUnread'; -import { roomToParentsAtom, useBindRoomToParentsAtom } from '../roomToParents'; +import { muteChangesAtom, mutedRoomsAtom, useBindMutedRoomsAtom } from '../room-list/mutedRoomList'; +import { roomToUnreadAtom, useBindRoomToUnreadAtom } from '../room/roomToUnread'; +import { roomToParentsAtom, useBindRoomToParentsAtom } from '../room/roomToParents'; export const useBindAtoms = (mx: MatrixClient) => { useBindMDirectAtom(mx, mDirectAtom); diff --git a/src/app/state/inviteList.ts b/src/app/state/room-list/inviteList.ts similarity index 94% rename from src/app/state/inviteList.ts rename to src/app/state/room-list/inviteList.ts index a6dc7966..4fa97be4 100644 --- a/src/app/state/inviteList.ts +++ b/src/app/state/room-list/inviteList.ts @@ -1,7 +1,7 @@ import { atom, WritableAtom } from 'jotai'; import { MatrixClient } from 'matrix-js-sdk'; import { useMemo } from 'react'; -import { Membership } from '../../types/matrix/room'; +import { Membership } from '../../../types/matrix/room'; import { RoomsAction, useBindRoomsWithMembershipsAtom } from './utils'; const baseRoomsAtom = atom([]); diff --git a/src/app/state/mutedRoomList.ts b/src/app/state/room-list/mutedRoomList.ts similarity index 96% rename from src/app/state/mutedRoomList.ts rename to src/app/state/room-list/mutedRoomList.ts index f818450b..cb56ec0f 100644 --- a/src/app/state/mutedRoomList.ts +++ b/src/app/state/room-list/mutedRoomList.ts @@ -1,8 +1,8 @@ import { atom, useSetAtom } from 'jotai'; import { ClientEvent, IPushRule, IPushRules, MatrixClient, MatrixEvent } from 'matrix-js-sdk'; import { useEffect } from 'react'; -import { MuteChanges } from '../../types/matrix/room'; -import { findMutedRule, isMutedRule } from '../utils/room'; +import { MuteChanges } from '../../../types/matrix/room'; +import { findMutedRule, isMutedRule } from '../../utils/room'; export type MutedRoomsUpdate = | { diff --git a/src/app/state/roomList.ts b/src/app/state/room-list/roomList.ts similarity index 93% rename from src/app/state/roomList.ts rename to src/app/state/room-list/roomList.ts index e0fa170f..736a0bc2 100644 --- a/src/app/state/roomList.ts +++ b/src/app/state/room-list/roomList.ts @@ -1,7 +1,7 @@ import { atom } from 'jotai'; import { MatrixClient } from 'matrix-js-sdk'; import { useMemo } from 'react'; -import { Membership } from '../../types/matrix/room'; +import { Membership } from '../../../types/matrix/room'; import { RoomsAction, useBindRoomsWithMembershipsAtom } from './utils'; const baseRoomsAtom = atom([]); diff --git a/src/app/state/utils.ts b/src/app/state/room-list/utils.ts similarity index 97% rename from src/app/state/utils.ts rename to src/app/state/room-list/utils.ts index 4c4caa5c..0e2c4a9f 100644 --- a/src/app/state/utils.ts +++ b/src/app/state/room-list/utils.ts @@ -1,7 +1,7 @@ import { useSetAtom, WritableAtom } from 'jotai'; import { ClientEvent, MatrixClient, Room, RoomEvent } from 'matrix-js-sdk'; import { useEffect } from 'react'; -import { Membership } from '../../types/matrix/room'; +import { Membership } from '../../../types/matrix/room'; export type RoomsAction = | { diff --git a/src/app/state/roomInputDrafts.ts b/src/app/state/room/roomInputDrafts.ts similarity index 88% rename from src/app/state/roomInputDrafts.ts rename to src/app/state/room/roomInputDrafts.ts index 2708b8bd..60b42fdb 100644 --- a/src/app/state/roomInputDrafts.ts +++ b/src/app/state/room/roomInputDrafts.ts @@ -2,9 +2,9 @@ import { atom } from 'jotai'; import { atomFamily } from 'jotai/utils'; import { Descendant } from 'slate'; import { EncryptedAttachmentInfo } from 'browser-encrypt-attachment'; -import { TListAtom, createListAtom } from './list'; -import { createUploadAtomFamily } from './upload'; -import { TUploadContent } from '../utils/matrix'; +import { TListAtom, createListAtom } from '../list'; +import { createUploadAtomFamily } from '../upload'; +import { TUploadContent } from '../../utils/matrix'; export const roomUploadAtomFamily = createUploadAtomFamily(); diff --git a/src/app/state/roomToParents.ts b/src/app/state/room/roomToParents.ts similarity index 96% rename from src/app/state/roomToParents.ts rename to src/app/state/room/roomToParents.ts index 1e2ef18c..cf762bce 100644 --- a/src/app/state/roomToParents.ts +++ b/src/app/state/room/roomToParents.ts @@ -9,14 +9,14 @@ import { RoomStateEvent, } from 'matrix-js-sdk'; import { useEffect } from 'react'; -import { Membership, RoomToParents, StateEvent } from '../../types/matrix/room'; +import { Membership, RoomToParents, StateEvent } from '../../../types/matrix/room'; import { getRoomToParents, getSpaceChildren, isSpace, isValidChild, mapParentWithChildren, -} from '../utils/room'; +} from '../../utils/room'; export type RoomToParentsAction = | { diff --git a/src/app/state/roomToUnread.ts b/src/app/state/room/roomToUnread.ts similarity index 99% rename from src/app/state/roomToUnread.ts rename to src/app/state/room/roomToUnread.ts index ad388763..88dbb523 100644 --- a/src/app/state/roomToUnread.ts +++ b/src/app/state/room/roomToUnread.ts @@ -9,7 +9,7 @@ import { NotificationType, RoomToUnread, UnreadInfo, -} from '../../types/matrix/room'; +} from '../../../types/matrix/room'; import { getAllParents, getNotificationType, @@ -17,7 +17,7 @@ import { getUnreadInfos, isNotificationEvent, roomHaveUnread, -} from '../utils/room'; +} from '../../utils/room'; import { roomToParentsAtom } from './roomToParents'; export type RoomToUnreadAction = diff --git a/src/app/state/selectedRoom.ts b/src/app/state/selectedRoom.ts deleted file mode 100644 index 1ef04de3..00000000 --- a/src/app/state/selectedRoom.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { atom } from 'jotai'; - -export const selectedRoomAtom = atom(undefined); diff --git a/src/app/state/selectedTab.ts b/src/app/state/selectedTab.ts deleted file mode 100644 index e680ae60..00000000 --- a/src/app/state/selectedTab.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { atom } from 'jotai'; - -export enum SidebarTab { - Home = 'Home', - People = 'People', -} - -export const selectedTabAtom = atom(SidebarTab.Home);