|
|
@@ -1,4 +1,4 @@
|
|
|
-# Jotai 移行進捗(更新済み)
|
|
|
+# Jotai 移行進捗(2025-09-05 更新)
|
|
|
|
|
|
## 実装状況
|
|
|
|
|
|
@@ -34,6 +34,17 @@
|
|
|
- ✅ `useHydratePageAtoms`: ページ用
|
|
|
- ✅ `useHydrateGlobalAtoms`: グローバル用
|
|
|
|
|
|
+#### 新規移行完了(2025-09-05)
|
|
|
+- ✅ **`usePageControlsX`**: ページコントロールのX座標状態(states/ui/page.ts)
|
|
|
+ - 実装場所: `states/ui/page.ts`
|
|
|
+ - 読み取り専用hook: `usePageControlsX()`
|
|
|
+ - 書き込み専用hook: `useSetPageControlsX()`
|
|
|
+ - 使用箇所を完全移行(PageControls、PageHeader、PagePathNavSticky)
|
|
|
+- ✅ **`useSelectedGrant`**: エディターでの選択中grant状態(states/ui/editor/)
|
|
|
+ - 実装場所: `states/ui/editor/atoms.ts`, `hooks.ts`
|
|
|
+ - 使用箇所を完全移行(GrantSelector、SavePageControls、PageEditor)
|
|
|
+ - デフォルト値: `{ grant: PageGrant.GRANT_PUBLIC }`
|
|
|
+
|
|
|
### ✅ 型チェック修正(完了済み)
|
|
|
- ✅ 全てのTS2488エラー(配列分割代入の誤用)を修正済み
|
|
|
- ✅ `pnpm run lint:typecheck` が成功することを確認済み
|
|
|
@@ -42,10 +53,16 @@
|
|
|
- `ShareLink.tsx`: `const currentPageId = useCurrentPageId()`
|
|
|
- `LinkEditModal.tsx`: `const currentPath = useCurrentPagePath()`
|
|
|
|
|
|
+### ✅ 品質確認(2025-09-05)
|
|
|
+- ✅ TypeScript型チェック通過
|
|
|
+- ✅ アプリケーションビルド成功
|
|
|
+- ✅ Socket.IO型注釈の修正対応済み
|
|
|
+
|
|
|
**実装済みファイル:**
|
|
|
- `states/ui/sidebar/`: サイドバー状態の完全実装
|
|
|
- `states/ui/device.ts`: デバイス状態
|
|
|
-- `states/ui/editor/`: エディター状態
|
|
|
+- `states/ui/editor/`: エディター状態(useSelectedGrant追加)
|
|
|
+- `states/ui/page.ts`: ページUI状態(usePageControlsX新規追加) ← **NEW**
|
|
|
- `states/page/`: ページ関連状態の完全実装
|
|
|
- `states/server-configurations/`: サーバー設定状態
|
|
|
- `states/global/`: グローバル状態
|
|
|
@@ -53,29 +70,7 @@
|
|
|
|
|
|
## 🚧 次の実装ステップ(優先度順)
|
|
|
|
|
|
-### **優先度 1: 残りのUI状態(stores/ui.tsx内)**
|
|
|
-
|
|
|
-#### 1. `usePageControlsX` の移行 ← **次の優先タスク**
|
|
|
-- **ファイル**: `/workspace/growi/apps/app/src/stores/ui.tsx:149`
|
|
|
-- **実装先**: `states/ui/page.ts`(新規作成)
|
|
|
-- **使用箇所**:
|
|
|
- - `PagePathNavSticky.tsx`
|
|
|
- - `PageControls.tsx`
|
|
|
- - `PageHeader.tsx`
|
|
|
-- **特徴**: 一時的な状態(永続化不要)
|
|
|
-- **実装方針**: シンプルな number atom として実装
|
|
|
-
|
|
|
-#### 2. `useSelectedGrant` の移行
|
|
|
-- **ファイル**: `/workspace/growi/apps/app/src/stores/ui.tsx:153`
|
|
|
-- **実装先**: `states/ui/editor.ts`(既存ファイルに追加)
|
|
|
-- **使用箇所**:
|
|
|
- - `SavePageControls.tsx`
|
|
|
- - `GrantSelector.tsx`
|
|
|
- - `PageEditor.tsx`
|
|
|
-- **特徴**: エディター内の一時的な状態
|
|
|
-- **型**: `IPageSelectedGrant`
|
|
|
-
|
|
|
-### **優先度 2: 他のUI関連フック(判定・検討が必要)**
|
|
|
+### **優先度 1: 他のUI関連フック(判定・検討が必要)**
|
|
|
|
|
|
以下のフックはSWR継続使用を検討(データフェッチングやcomputed値のため):
|
|
|
- `useCurrentPageTocNode`: ページ固有の目次データ
|
|
|
@@ -85,9 +80,9 @@
|
|
|
- `useCommentEditorDirtyMap`: 複雑なMap操作
|
|
|
- `useIsAbleToShow*`: computed boolean値群
|
|
|
|
|
|
-### **優先度 3: モーダル状態の一括移行**
|
|
|
+### **優先度 2: モーダル状態の一括移行**
|
|
|
|
|
|
-#### 3. 全モーダル状態の移行
|
|
|
+#### 全モーダル状態の移行 ← **次の主要タスク**
|
|
|
- **新規ファイル**: `states/ui/modal.ts`
|
|
|
- **対象モーダル(全18種類)**:
|
|
|
- `usePageCreateModal`, `useGrantedGroupsInheritanceSelectModal`
|
|
|
@@ -103,7 +98,7 @@
|
|
|
|
|
|
### **最終フェーズ: クリーンアップ**
|
|
|
|
|
|
-#### 4. 不要ファイルの削除とリファクタリング
|
|
|
+#### 不要ファイルの削除とリファクタリング
|
|
|
- `stores/ui.tsx` の段階的縮小・最終削除
|
|
|
- `stores/modal.tsx` の完全削除
|
|
|
- 残存する SWR ベースの状態の最終判定
|
|
|
@@ -111,13 +106,14 @@
|
|
|
|
|
|
## 📊 進捗サマリー
|
|
|
|
|
|
-- **完了**: 主要なUI状態 + ページ関連状態 + SSRハイドレーション + 型チェック修正
|
|
|
-- **次のタスク**: `usePageControlsX`と`useSelectedGrant`の移行
|
|
|
+- **完了**: 主要なUI状態 + ページ関連状態 + SSRハイドレーション + 型チェック修正 + **新規2状態(usePageControlsX, useSelectedGrant)**
|
|
|
+- **次のタスク**: モーダル状態の一括移行
|
|
|
- **残り**: UI関連フック数個(判定必要) + モーダル18個 + クリーンアップ
|
|
|
- **推定残工数**: 1-2週間
|
|
|
|
|
|
## 🔄 更新履歴
|
|
|
|
|
|
+- **2025-09-05**: `usePageControlsX`と`useSelectedGrant`の移行完了、ビルド確認済み
|
|
|
- **2025-09-05**: 型チェック修正完了、ページ関連状態移行済みを確認、進捗状況を実態に合わせて更新
|
|
|
- **2025-07-30**: ドキュメント統合、進捗の実装状況反映
|
|
|
- **2025-07-XX**: サイドバー関連の移行完了
|