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

Merge pull request #37 from crowi/fix-like-seenuser-bugs

Fix like seenuser bugs
Sotaro KARASAWA 10 лет назад
Родитель
Сommit
80e673ed72
7 измененных файлов с 66 добавлено и 87 удалено
  1. 1 0
      CHANGES.md
  2. 1 1
      README.md
  3. 0 3
      app.json
  4. 40 60
      lib/models/page.js
  5. 1 1
      lib/models/user.js
  6. 1 1
      lib/routes/page.js
  7. 22 21
      package.json

+ 1 - 0
CHANGES.md

@@ -7,6 +7,7 @@ CHANGES
 * Improve: Design on full-screen editor.
 * Fix: Library version (mongoose-paginator is now fixed its version).
 * Add unit test for user model.
+* Library Update: node.js 4.2.x, npm 3.3.x and so far.
 
 ## 1.2.0
 

+ 1 - 1
README.md

@@ -28,7 +28,7 @@ More info are [here](https://github.com/crowi/crowi/wiki/Install-and-Configurati
 Dependencies
 -------------
 
-* Node.js (0.10.x)
+* Node.js (4.2.x)
 * MongoDB
 * Redis (optional)
 * Amazon S3

+ 0 - 3
app.json

@@ -8,9 +8,6 @@
   "website": "https://crowi.wiki/",
   "repository": "https://github.com/crowi/crowi",
   "success_url": "/",
-  "scripts": {
-    "postdeploy": "grunt"
-  },
   "env": {
     "NODE_ENV": "production",
     "SECRET_TOKEN": {

+ 40 - 60
lib/models/page.js

@@ -91,13 +91,13 @@ module.exports = function(crowi) {
 
   pageSchema.methods.isLiked = function(userData) {
     if (undefined === this.populated('liker')) {
-      if (this.liker.indexOf(userData._id) != -1) {
+      if (this.liker.indexOf(userData._id.toString()) != -1) {
         return true;
       }
       return true;
     } else {
       return this.liker.some(function(likedUser) {
-        return likedUser._id.toString() == userData._id.toString();
+        return likedUser._id.equals(userData._id);
       });
     }
   };
@@ -106,26 +106,15 @@ module.exports = function(crowi) {
     var self = this,
       Page = self;
 
-    if (undefined === this.populated('liker')) {
-      var added = this.liker.addToSet(userData._id);
-      if (added.length > 0) {
-        this.save(function(err, data) {
-          debug('liker updated!', added);
-          return callback(err, data);
-        });
-      } else {
-        debug('liker not updated');
-        return callback(null, this);
-      }
+    var added = this.liker.addToSet(userData._id);
+    if (added.length > 0) {
+      this.save(function(err, data) {
+        debug('liker updated!', added);
+        return callback(err, data);
+      });
     } else {
-      Page.update(
-        {_id: self._id},
-        { $addToSet: { liker:  userData._id }},
-        function(err, numAffected, raw) {
-          debug('Updated liker,', err, numAffected, raw);
-          callback(null, self);
-        }
-      );
+      debug('liker not updated');
+      return callback(null, this);
     }
   };
 
@@ -133,54 +122,45 @@ module.exports = function(crowi) {
     var self = this,
       Page = self;
 
-    if (undefined === this.populated('liker')) {
-      var removed = this.liker.pull(userData._id);
-      if (removed.length > 0) {
-        this.save(function(err, data) {
-          debug('unlike updated!', removed);
-          return callback(err, data);
-        });
-      } else {
-        debug('unlike not updated');
-        callback(null, this);
-      }
+    var removed = this.liker.pull(userData._id);
+    if (removed.length > 0) {
+      this.save(function(err, data) {
+        debug('unlike updated!', removed);
+        return callback(err, data);
+      });
     } else {
-      Page.update(
-        {_id: self._id},
-        { $pull: { liker:  userData._id }},
-        function(err, numAffected, raw) {
-          debug('Updated liker (unlike)', err, numAffected, raw);
-          callback(null, self);
-        }
-      );
+      debug('unlike not updated');
+      callback(null, this);
     }
   };
 
+  pageSchema.methods.isSeenUser = function(userData) {
+    var self = this,
+      Page = self;
+
+    return this.seenUsers.some(function(seenUser) {
+      return seenUser._id.equals(userData._id);
+    });
+  };
+
   pageSchema.methods.seen = function(userData, callback) {
     var self = this,
       Page = self;
 
-    if (undefined === this.populated('seenUsers')) {
-      var added = this.seenUsers.addToSet(userData._id);
-      if (added.length > 0) {
-        this.save(function(err, data) {
-          debug('seenUsers updated!', added);
-          return callback(err, data);
-        });
-      } else {
-        debug('seenUsers not updated');
-        return callback(null, this);
-      }
-    } else {
-      Page.update(
-        {_id: self._id},
-        { $addToSet: { seenUsers:  userData._id }},
-        function(err, numAffected, raw) {
-          debug('Updated seenUsers,', err, numAffected, raw);
-          callback(null, self);
-        }
-      );
+    if (!userData || !userData._id) {
+      callback(new Error('User data is not valid'), null);
+    }
+
+    if (this.isSeenUser(userData)) {
+      debug('seenUsers not updated');
+      return callback(null, self);
     }
+
+    var added = self.seenUsers.addToSet(userData);
+    this.save(function(err, data) {
+      debug('seenUsers updated!', added);
+      return callback(err, self);
+    });
   };
 
   pageSchema.statics.getGrantLabels = function() {

+ 1 - 1
lib/models/user.js

@@ -254,7 +254,7 @@ module.exports = function(crowi) {
   userSchema.statics.findUsersWithPagination = function(options, callback) {
     var sort = options.sort || {status: 1, username: 1, createdAt: 1};
 
-    this.paginate({}, options.page || 1, PAGE_ITEMS, function(err, pageCount, paginatedResults, itemCount) {
+    this.paginate({}, { page: options.page || 1, limit: PAGE_ITEMS }, function(err, paginatedResults, pageCount, itemCount) {
       if (err) {
         debug('Error on pagination:', err);
         return callback(err, null);

+ 1 - 1
lib/routes/page.js

@@ -107,7 +107,7 @@ module.exports = function(crowi, app) {
         res.redirect(encodeURI(path));
         return ;
       }
-      debug('Page found', pageData);
+      debug('Page found', pageData._id, pageData.path);
 
       if (err == Page.PAGE_GRANT_ERROR) {
         debug('PAGE_GRANT_ERROR');

+ 22 - 21
package.json

@@ -23,41 +23,32 @@
     "url": "https://github.com/crowi/crowi.git"
   },
   "engines": {
-    "node": "0.10.x",
-    "npm": "2.4.x"
+    "node": "4.2.x",
+    "npm": "3.3.x"
   },
   "dependencies": {
     "async": "~0.9.0",
     "aws-sdk": "~2.0.0-rc.19",
     "basic-auth-connect": "~1.0.0",
-    "bluebird": "^2.9.12",
-    "body-parser": "~1.12.0",
-    "bower": "~1.4.0",
+    "bluebird": "~3.0.5",
+    "body-parser": "~1.14.1",
+    "bower": "~1.6.5",
     "cli": "~0.6.0",
     "connect-flash": "~0.1.1",
     "connect-redis": "~2.1.0",
     "consolidate": "~0.11.0",
     "cookie-parser": "~1.3.4",
-    "debug": "~2.1.0",
+    "debug": "~2.2.0",
     "errorhandler": "~1.3.4",
-    "express": "~4.12.0",
+    "express": "~4.13.3",
     "express-form": "~0.12.0",
-    "express-session": "~1.10.0",
+    "express-session": "~1.12.0",
     "facebook-node-sdk": "=0.1.10",
     "googleapis": "=0.4.7",
-    "gulp": "~3.8.11",
-    "gulp-concat": "^2.5.2",
-    "gulp-cssmin": "^0.1.7",
-    "gulp-jshint": "~1.10.0",
-    "gulp-rename": "^1.2.2",
-    "gulp-sass": "~2.0.4",
-    "gulp-spawn-mocha": "^2.2.1",
-    "gulp-uglify": "~1.2.0",
-    "gulp-watch": "~4.2.4",
-    "jshint-stylish": "^2.0.0",
+    "kerberos": "0.0.17",
     "method-override": "~2.3.1",
-    "mongoose": "~3.8.0",
-    "mongoose-paginate": "=3.1.3",
+    "mongoose": "4.2.5",
+    "mongoose-paginate": "4.2.0",
     "morgan": "~1.5.1",
     "multer": "~0.1.8",
     "nodemailer": "~1.2.2",
@@ -73,7 +64,17 @@
     "mocha": "~2.2.0",
     "proxyquire": "~1.4.0",
     "sinon": "~1.14.0",
-    "sinon-chai": "~2.7.0"
+    "sinon-chai": "~2.7.0",
+    "gulp": "~3.9.0",
+    "gulp-concat": "~2.6.0",
+    "gulp-cssmin": "~0.1.7",
+    "gulp-jshint": "~1.12.0",
+    "gulp-rename": "~1.2.2",
+    "gulp-sass": "~2.1.0",
+    "gulp-spawn-mocha": "~2.2.1",
+    "gulp-uglify": "~1.4.2",
+    "gulp-watch": "~4.3.5",
+    "jshint-stylish": "~2.0.1"
   },
   "license": "MIT",
   "scripts": {