Explorar o código

Update bookmark folder schema

https://youtrack.weseek.co.jp/issue/GW-7910
- Update onClick event handler on bookmark folder menu item
- Add bookmarks type to BookmarkFolderItems
- Add static method insertOrUpdateBookmarkedPage to bookmark-folder schema
Mudana-Grune %!s(int64=3) %!d(string=hai) anos
pai
achega
724502e16a

+ 1 - 1
packages/app/src/components/Bookmarks/BookmarkFolderMenuItem.tsx

@@ -78,7 +78,7 @@ const BookmarkFolderMenuItem = (props: Props):JSX.Element => {
                   />
                   />
                 </div>
                 </div>
               ) : (
               ) : (
-                <div className='dropdown-item grw-bookmark-folder-menu-item' tabIndex={0} role="menuitem" onClick={() => setSelectedItem(child._id)}>
+                <div className='dropdown-item grw-bookmark-folder-menu-item' tabIndex={0} role="menuitem" onClick={e => onClickChildMenuItemHandler(e, child)}>
                   <input
                   <input
                     type="radio"
                     type="radio"
                     checked={selectedItem === child._id}
                     checked={selectedItem === child._id}

+ 1 - 0
packages/app/src/interfaces/bookmark-info.ts

@@ -29,4 +29,5 @@ export interface BookmarkFolderItems {
   name: string
   name: string
   parent: string
   parent: string
   children: this[]
   children: this[]
+  bookmarks: BookmarkedPage[]
 }
 }

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

@@ -4,14 +4,17 @@ import {
 } from 'mongoose';
 } from 'mongoose';
 
 
 import { IBookmarkFolder, BookmarkFolderItems } from '~/interfaces/bookmark-info';
 import { IBookmarkFolder, BookmarkFolderItems } from '~/interfaces/bookmark-info';
-
+import { IPageHasId } from '~/interfaces/page';
+import { IUserHasId } from '~/interfaces/user';
 
 
 import loggerFactory from '../../utils/logger';
 import loggerFactory from '../../utils/logger';
 import { getOrCreateModel } from '../util/mongoose-utils';
 import { getOrCreateModel } from '../util/mongoose-utils';
 
 
 import { InvalidParentBookmarkFolderError } from './errors';
 import { InvalidParentBookmarkFolderError } from './errors';
 
 
+
 const logger = loggerFactory('growi:models:bookmark-folder');
 const logger = loggerFactory('growi:models:bookmark-folder');
+const Bookmark = require('./bookmark');
 
 
 export interface BookmarkFolderDocument extends Document {
 export interface BookmarkFolderDocument extends Document {
   _id: Types.ObjectId
   _id: Types.ObjectId
@@ -112,5 +115,12 @@ bookmarkFolderSchema.statics.updateBookmarkFolder = async function(bookmarkFolde
 
 
 };
 };
 
 
+bookmarkFolderSchema.statics.insertOrUpdateBookmarkedPage = async function(page: IPageHasId, user: IUserHasId, bookmarkFolderId: string):
+Promise<BookmarkFolderDocument> {
+  const bookmarkedPage = await Bookmark.findOneAndUpdate({ page, user }, { new: true, upsert: true });
+  const bookmarkFolder = await this.findByIdAndUpdate(bookmarkFolderId, { $set: { bookmarks: bookmarkedPage } }, { new: true, upsert: true });
+  return bookmarkFolder;
+};
+
 
 
 export default getOrCreateModel<BookmarkFolderDocument, BookmarkFolderModel>('BookmarkFolder', bookmarkFolderSchema);
 export default getOrCreateModel<BookmarkFolderDocument, BookmarkFolderModel>('BookmarkFolder', bookmarkFolderSchema);