mirror of
				https://github.com/NodeBB/NodeBB.git
				synced 2025-10-31 02:55:58 +01:00 
			
		
		
		
	| @@ -1,71 +1,40 @@ | |||||||
| 'use strict'; | 'use strict'; | ||||||
|  |  | ||||||
| var async = require('async'); |  | ||||||
|  |  | ||||||
| var db = require('../database'); | var db = require('../database'); | ||||||
| var topics = require('../topics'); | var topics = require('../topics'); | ||||||
| var plugins = require('../plugins'); | var plugins = require('../plugins'); | ||||||
| var meta = require('../meta'); | var meta = require('../meta'); | ||||||
|  |  | ||||||
| module.exports = function (User) { | module.exports = function (User) { | ||||||
| 	User.updateLastOnlineTime = function (uid, callback) { | 	User.updateLastOnlineTime = async function (uid) { | ||||||
| 		callback = callback || function () {}; | 		const userData = await db.getObjectFields('user:' + uid, ['status', 'lastonline']); | ||||||
| 		db.getObjectFields('user:' + uid, ['status', 'lastonline'], function (err, userData) { | 		const now = Date.now(); | ||||||
| 			var now = Date.now(); | 		if (userData.status === 'offline' || now - parseInt(userData.lastonline, 10) < 300000) { | ||||||
| 			if (err || userData.status === 'offline' || now - parseInt(userData.lastonline, 10) < 300000) { | 			return; | ||||||
| 				return callback(err); |  | ||||||
| 		} | 		} | ||||||
| 			User.setUserField(uid, 'lastonline', now, callback); | 		await User.setUserField(uid, 'lastonline', now); | ||||||
| 		}); |  | ||||||
| 	}; | 	}; | ||||||
|  |  | ||||||
| 	User.updateOnlineUsers = function (uid, callback) { | 	User.updateOnlineUsers = async function (uid) { | ||||||
| 		callback = callback || function () {}; | 		const now = Date.now(); | ||||||
|  | 		const userOnlineTime = await db.sortedSetScore('users:online', uid); | ||||||
| 		var now = Date.now(); |  | ||||||
| 		async.waterfall([ |  | ||||||
| 			function (next) { |  | ||||||
| 				db.sortedSetScore('users:online', uid, next); |  | ||||||
| 			}, |  | ||||||
| 			function (userOnlineTime, next) { |  | ||||||
| 		if (now - parseInt(userOnlineTime, 10) < 300000) { | 		if (now - parseInt(userOnlineTime, 10) < 300000) { | ||||||
| 					return callback(); | 			return; | ||||||
| 		} | 		} | ||||||
| 				db.sortedSetAdd('users:online', now, uid, next); | 		await db.sortedSetAdd('users:online', now, uid); | ||||||
| 			}, |  | ||||||
| 			function (next) { |  | ||||||
| 		topics.pushUnreadCount(uid); | 		topics.pushUnreadCount(uid); | ||||||
| 		plugins.fireHook('action:user.online', { uid: uid, timestamp: now }); | 		plugins.fireHook('action:user.online', { uid: uid, timestamp: now }); | ||||||
| 				next(); |  | ||||||
| 			}, |  | ||||||
| 		], callback); |  | ||||||
| 	}; | 	}; | ||||||
|  |  | ||||||
| 	User.isOnline = function (uid, callback) { | 	User.isOnline = async function (uid) { | ||||||
| 		var now = Date.now(); | 		const now = Date.now(); | ||||||
| 		async.waterfall([ | 		const isArray = Array.isArray(uid); | ||||||
| 			function (next) { | 		uid = isArray ? uid : [uid]; | ||||||
| 				if (Array.isArray(uid)) { | 		const lastonline = db.sortedSetScores('users:online', uid); | ||||||
| 					db.sortedSetScores('users:online', uid, next); | 		const isOnline = uid.map(function (uid, index) { | ||||||
| 				} else { | 			return (now - lastonline[index]) < (meta.config.onlineCutoff * 60000); | ||||||
| 					db.sortedSetScore('users:online', uid, next); |  | ||||||
| 				} |  | ||||||
| 			}, |  | ||||||
| 			function (lastonline, next) { |  | ||||||
| 				function checkOnline(lastonline) { |  | ||||||
| 					return (now - lastonline) < (meta.config.onlineCutoff * 60000); |  | ||||||
| 				} |  | ||||||
|  |  | ||||||
| 				var isOnline; |  | ||||||
| 				if (Array.isArray(uid)) { |  | ||||||
| 					isOnline = uid.map(function (uid, index) { |  | ||||||
| 						return checkOnline(lastonline[index]); |  | ||||||
| 		}); | 		}); | ||||||
| 				} else { |  | ||||||
| 					isOnline = checkOnline(lastonline); | 		return isArray ? isOnline : isOnline[0]; | ||||||
| 				} |  | ||||||
| 				next(null, isOnline); |  | ||||||
| 			}, |  | ||||||
| 		], callback); |  | ||||||
| 	}; | 	}; | ||||||
| }; | }; | ||||||
|   | |||||||
| @@ -442,7 +442,7 @@ describe('Notifications', function () { | |||||||
| 					user.notifications.getAll(uid, '', function (err, data) { | 					user.notifications.getAll(uid, '', function (err, data) { | ||||||
| 						meta.config.welcomeNotification = ''; | 						meta.config.welcomeNotification = ''; | ||||||
| 						assert.ifError(err); | 						assert.ifError(err); | ||||||
| 						assert.notEqual(data.indexOf('welcome_' + uid), -1); | 						assert(data.includes('welcome_' + uid)); | ||||||
| 						done(); | 						done(); | ||||||
| 					}); | 					}); | ||||||
| 				}, 1100); | 				}, 1100); | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user