Просмотр исходного кода

Get child bookmark folder count

https://youtrack.weseek.co.jp/issue/GW-7895
- Update findParentFolderByUserId return type
- Get child bookmark folder count
- Update bookmark folder list SWR
Mudana-Grune 3 лет назад
Родитель
Сommit
a814202a99

+ 7 - 0
packages/app/src/components/Sidebar/Bookmarks.tsx

@@ -105,6 +105,13 @@ const Bookmarks = () : JSX.Element => {
             folderName={folderName}
           />
           {/* TODO: List Bookmark Folder */}
+          <ul>
+            {currentUserBookmarkFolder?.map((bookmarkFolder, idx) => {
+              return (
+                <li key={idx}>{bookmarkFolder.name}</li>
+              );
+            })}
+          </ul>
         </>
       )
       }

+ 1 - 1
packages/app/src/server/models/bookmark-folder.ts

@@ -27,7 +27,7 @@ export interface BookmarkFolderDocument extends Document {
 
 export interface BookmarkFolderModel extends Model<BookmarkFolderDocument>{
   createByParameters(params: IBookmarkFolderDocument): IBookmarkFolderDocument
-  findParentFolderByUserId(user: Types.ObjectId | string): IBookmarkFolderDocument[]
+  findParentFolderByUserId(user: Types.ObjectId | string): BookmarkFolderDocument[]
   findChildFolderById(parentBookmarkFolder: Types.ObjectId | string): Promise<IBookmarkFolderDocument[]>
   deleteFolderAndChildren(bookmarkFolderId: string): void
   updateBookmarkFolder(bookmarkFolderId: string, name: string, parent: string): BookmarkFolderDocument | null

+ 5 - 1
packages/app/src/server/routes/apiv3/bookmark-folder.ts

@@ -48,7 +48,11 @@ module.exports = (crowi) => {
   router.get('/list', accessTokenParser, loginRequiredStrictly, async(req, res) => {
     try {
       const bookmarkFolders = await BookmarkFolder.findParentFolderByUserId(req.user?._id);
-      return res.apiv3({ bookmarkFolders });
+      const bookmarkFolderItems = await Promise.all(bookmarkFolders.map(async bookmarkFolder => ({
+        bookmarkFolder,
+        childCount: await BookmarkFolder.countDocuments({ parent: bookmarkFolder._id }),
+      })));
+      return res.apiv3({ bookmarkFolderItems });
     }
     catch (err) {
       return res.apiv3Err(err, 500);

+ 1 - 1
packages/app/src/stores/bookmark.ts

@@ -44,7 +44,7 @@ export const useSWRxCurrentUserBookmarkFolders = () : SWRResponse<IBookmarkFolde
   return useSWRImmutable(
     '/bookmark-folder/list',
     endpoint => apiv3Get(endpoint).then((response) => {
-      return response.data.bookmarkFolders;
+      return response.data.bookmarkFolderItems;
     }),
   );
 };