Skip to content

Commit ac32744

Browse files
committed
refactor: pageStore을 entity로 이동 및 editorStore로 분리
1 parent 626798c commit ac32744

File tree

13 files changed

+44
-33
lines changed

13 files changed

+44
-33
lines changed

apps/frontend/src/entities/page/index.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,5 +6,5 @@ export {
66
updatePage,
77
} from "./api/pageApi";
88

9-
export { usePageStore } from "../../features/pageSidebar/model/pageStore";
9+
export { usePageStore } from "./model/pageStore";
1010
export { type Page, type CreatePageRequest } from "./model/pageTypes";
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import { create } from "zustand";
2+
3+
interface PageStore {
4+
currentPage: number | null;
5+
setCurrentPage: (currentPage: number | null) => void;
6+
}
7+
8+
export const usePageStore = create<PageStore>((set) => ({
9+
currentPage: null,
10+
setCurrentPage: (currentPage: number | null) => set({ currentPage }),
11+
}));

apps/frontend/src/entities/user/model/useSyncedUsers.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { useEffect } from "react";
22

33
import { useUserStore, type User } from "./userStore";
4-
import { usePageStore } from "@/features/pageSidebar";
4+
import { usePageStore } from "@/entities/page";
55

66
export const useSyncedUsers = () => {
77
const { currentPage } = usePageStore();

apps/frontend/src/features/canvas/model/useCanvas.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ import { SocketIOProvider } from "y-socket.io";
1515

1616
import { calculateBestHandles } from "./calculateHandles";
1717
import { useCollaborativeCursors } from "./useCollaborativeCursors";
18-
import { usePageStore } from "@/features/pageSidebar";
18+
import { usePageStore } from "@/entities/page";
1919
import { createSocketIOProvider } from "@/shared/api";
2020
import { useWorkspace } from "@/shared/lib";
2121
import { useYDocStore } from "@/shared/model";
@@ -38,7 +38,8 @@ export const useCanvas = () => {
3838
const provider = useRef<SocketIOProvider>();
3939
const holdingNodeRef = useRef<string | null>(null);
4040

41-
const currentPage = usePageStore((state) => state.currentPage);
41+
const { currentPage, setCurrentPage } = usePageStore();
42+
4243
const { fitView } = useReactFlow();
4344

4445
useEffect(() => {
@@ -145,7 +146,7 @@ export const useCanvas = () => {
145146
const currentPageValue = usePageStore.getState().currentPage;
146147

147148
if (currentPageValue === deletedNodeId) {
148-
usePageStore.setState({ currentPage: null, isPanelOpen: false });
149+
setCurrentPage(null);
149150
}
150151

151152
setNodes((nds) => nds.filter((n) => n.id !== nodeId));

apps/frontend/src/features/canvas/ui/Node/NoteNode/index.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@ import { useEffect, useState } from "react";
22
import { FileText } from "lucide-react";
33
import { Handle, NodeProps, Position, type Node } from "@xyflow/react";
44

5-
import { ActiveUser, Emoji } from "@/shared/ui";
6-
import { usePageStore } from "@/features/pageSidebar";
75
import { useUserStore } from "@/entities/user";
6+
import { usePageStore } from "@/entities/page";
7+
import { ActiveUser, Emoji } from "@/shared/ui";
88

99
export type NoteNodeData = { title: string; id: number; emoji: string };
1010
export type NoteNodeType = Node<NoteNodeData, "note">;

apps/frontend/src/features/canvasTools/ui/NewNodePanel/index.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
import { useCreatePage, usePageStore } from "@/features/pageSidebar";
1+
import { usePageStore } from "@/entities/page";
2+
import { useCreatePage } from "@/features/pageSidebar";
23
import { initializeYText, usePopover, useYDocStore } from "@/shared/model";
34

45
export function NewNodePanel() {
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
export { onUpload } from "./api/imageUpload";
22

3+
export { useEditorStore } from "./model/editorStore";
4+
5+
// TODO: 정리
36
export { Editor } from "@/features/editor/ui/Editor";
47
export { EditorTitle } from "@/features/editor/ui/EditorTitle";
58
export { EditorActionPanel } from "@/features/editor/ui/EditorActionPanel";

apps/frontend/src/features/pageSidebar/model/pageStore.ts renamed to apps/frontend/src/features/editor/model/editorStore.ts

Lines changed: 2 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,16 @@
11
import { create } from "zustand";
22

3-
interface PageStore {
4-
currentPage: number | null;
3+
interface EditorStore {
54
isPanelOpen: boolean;
65
isMaximized: boolean;
7-
setCurrentPage: (currentPage: number | null) => void;
86
togglePanel: () => void;
97
toggleMaximized: () => void;
108
setIsPanelOpen: (isOpen: boolean) => void;
119
}
1210

13-
export const usePageStore = create<PageStore>((set) => ({
14-
currentPage: null,
11+
export const useEditorStore = create<EditorStore>((set) => ({
1512
isPanelOpen: true,
1613
isMaximized: false,
17-
setCurrentPage: (currentPage: number | null) =>
18-
set((state) => ({
19-
currentPage,
20-
isPanelOpen:
21-
currentPage === state.currentPage
22-
? !state.isPanelOpen
23-
: currentPage !== null,
24-
})),
2514
togglePanel: () => set((state) => ({ isPanelOpen: !state.isPanelOpen })),
2615
toggleMaximized: () => set((state) => ({ isMaximized: !state.isMaximized })),
2716
setIsPanelOpen: (isPanelOpen: boolean) => set({ isPanelOpen }),

apps/frontend/src/features/editor/ui/EditorActionPanel/index.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,17 +5,17 @@ import {
55
PanelRightClose,
66
} from "lucide-react";
77

8+
import { useEditorStore } from "../../model/editorStore";
89
import SaveStatus from "../SaveStatus";
910
import { cn } from "@/shared/lib";
10-
import { usePageStore } from "@/features/pageSidebar";
1111

1212
interface EditorActionPanelProps {
1313
saveStatus: "saved" | "unsaved";
1414
}
1515

1616
export function EditorActionPanel({ saveStatus }: EditorActionPanelProps) {
1717
const { isPanelOpen, togglePanel, isMaximized, toggleMaximized } =
18-
usePageStore();
18+
useEditorStore();
1919

2020
return (
2121
<div className="w-full px-4 py-2">

apps/frontend/src/features/pageSidebar/index.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
export { usePage, useCreatePage } from "./api/usePages";
22

3-
export { usePageStore } from "./model/pageStore";
4-
53
export { LogoBtn } from "./ui/LogoBtn";
64
export { NoteList } from "./ui/NoteList";
75
export { Tools } from "./ui/Tools";

0 commit comments

Comments
 (0)