itizawa 5 лет назад
Родитель
Сommit
538f6c9870
2 измененных файлов с 23 добавлено и 12 удалено
  1. 4 7
      src/client/js/services/PageContainer.js
  2. 19 5
      src/server/routes/apiv3/bookmarks.js

+ 4 - 7
src/client/js/services/PageContainer.js

@@ -181,13 +181,10 @@ export default class PageContainer extends Container {
 
   async retrieveBookmarkInfo() {
     const response = await this.appContainer.apiv3Get('/bookmarks', { pageId: this.state.pageId });
-    if (response.data.bookmarks != null) {
-      this.setState({ isBookmarked: true });
-    }
-    else {
-      this.setState({ isBookmarked: false });
-    }
-    this.setState({ sumOfBookmarks: response.data.sumOfBookmarks });
+    this.setState({
+      sumOfBookmarks: response.data.sumOfBookmarks,
+      isBookmarked: response.data.isBookmarked,
+    });
   }
 
   async toggleBookmark() {

+ 19 - 5
src/server/routes/apiv3/bookmarks.js

@@ -98,17 +98,31 @@ module.exports = (crowi) => {
     const { user } = req;
     const { pageId } = req.query;
 
-    console.log(user);
+    const responsesParams = {};
 
     try {
-      const bookmarks = await Bookmark.findByPageIdAndUserId(pageId, req.user);
-      const sumOfBookmarks = await Bookmark.countByPageId(pageId);
-      return res.apiv3({ bookmarks, sumOfBookmarks });
+      responsesParams.sumOfBookmarks = await Bookmark.countByPageId(pageId);
     }
     catch (err) {
-      logger.error('get-bookmark-failed', err);
+      logger.error('get-bookmark-count-failed', err);
+      return res.apiv3Err(err, 500);
+    }
+
+    // guest user only get bookmark count
+    if (user == null) {
+      return res.apiv3(responsesParams);
+    }
+
+    try {
+      const bookmark = await Bookmark.findByPageIdAndUserId(pageId, user._id);
+      responsesParams.isBookmarked = (bookmark != null);
+      return res.apiv3(responsesParams);
+    }
+    catch (err) {
+      logger.error('get-bookmark-state-failed', err);
       return res.apiv3Err(err, 500);
     }
+
   });
 
   // select page from bookmark where userid = userid