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

feat: 85058 Retrieve bookmarked users (#5029)

* new file

* create useSWRxBookmarksInfo

* useSWR

* fix

* create getBookmarkedUsers method

* fix name

* useSWR

* add TODO

* add null

* add bookmarkedUserIds

* fix

* added the ability to retrieve user documents

* fix response name & add if

* cleanup

* fb fix

* ok
Shun Miyazawa 4 лет назад
Родитель
Сommit
67dc3e22c1

+ 4 - 0
packages/app/src/components/BookmarkButton.tsx

@@ -23,6 +23,10 @@ const BookmarkButton: FC<Props> = (props: Props) => {
   const isBookmarked = bookmarksInfo?.isBookmarked != null ? bookmarksInfo.isBookmarked : false;
   const isBookmarked = bookmarksInfo?.isBookmarked != null ? bookmarksInfo.isBookmarked : false;
   const sumOfBookmarks = bookmarksInfo?.sumOfBookmarks != null ? bookmarksInfo.sumOfBookmarks : 0;
   const sumOfBookmarks = bookmarksInfo?.sumOfBookmarks != null ? bookmarksInfo.sumOfBookmarks : 0;
 
 
+  // TODO: To be used in UserPictureList
+  // eslint-disable-next-line @typescript-eslint/no-unused-vars
+  const bookmarkedUsers = bookmarksInfo?.bookmarkedUsers != null ? bookmarksInfo.bookmarkedUsers : [];
+
   const handleClick = async() => {
   const handleClick = async() => {
     if (isGuestUser) {
     if (isGuestUser) {
       return;
       return;

+ 3 - 0
packages/app/src/interfaces/bookmarks.ts

@@ -1,4 +1,7 @@
+import { IUser } from '~/interfaces/user';
+
 export interface IBookmarksInfo {
 export interface IBookmarksInfo {
   isBookmarked: boolean
   isBookmarked: boolean
   sumOfBookmarks: number
   sumOfBookmarks: number
+  bookmarkedUsers: IUser[]
 }
 }

+ 8 - 2
packages/app/src/server/routes/apiv3/bookmarks.js

@@ -113,10 +113,16 @@ module.exports = (crowi) => {
     const responsesParams = {};
     const responsesParams = {};
 
 
     try {
     try {
-      responsesParams.sumOfBookmarks = await Bookmark.countByPageId(pageId);
+      const bookmarks = await Bookmark.find({ page: pageId }).populate('user');
+      let users = [];
+      if (bookmarks.length > 0) {
+        users = bookmarks.map(bookmark => serializeUserSecurely(bookmark.user));
+      }
+      responsesParams.sumOfBookmarks = bookmarks.length;
+      responsesParams.bookmarkedUsers = users;
     }
     }
     catch (err) {
     catch (err) {
-      logger.error('get-bookmark-count-failed', err);
+      logger.error('get-bookmark-document-failed', err);
       return res.apiv3Err(err, 500);
       return res.apiv3Err(err, 500);
     }
     }
 
 

+ 1 - 0
packages/app/src/stores/bookmarks.tsx

@@ -14,6 +14,7 @@ export const useSWRxBookmarksInfo = <Data, Error>(pageId: Types.ObjectId):SWRRes
       return {
       return {
         isBookmarked: response.data.isBookmarked,
         isBookmarked: response.data.isBookmarked,
         sumOfBookmarks: response.data.sumOfBookmarks,
         sumOfBookmarks: response.data.sumOfBookmarks,
+        bookmarkedUsers: response.data.bookmarkedUsers,
       };
       };
     }),
     }),
   );
   );