all files / src/categories/ unread.js

84.62% Statements 22/26
58.33% Branches 7/12
70% Functions 7/10
84.62% Lines 22/26
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54            22× 22×     22× 22×     22× 22×       22× 22×     22×       22×       22× 22×                      
 
"use strict";
 
var async = require('async'),
	db = require('../database');
 
module.exports = function(Categories) {
 
	Categories.markAsRead = function(cids, uid, callback) {
		callback = callback || function() {};
		Iif (!Array.isArray(cids) || !cids.length) {
			return callback();
		}
		var keys = cids.map(function(cid) {
			return 'cid:' + cid + ':read_by_uid';
		});
 
		db.isMemberOfSets(keys, uid, function(err, hasRead) {
			Iif (err) {
				return callback(err);
			}
 
			keys = keys.filter(function(key, index) {
				return !hasRead[index];
			});
 
			Iif (!keys.length) {
				return callback();
			}
 
			db.setsAdd(keys, uid, callback);
		});
	};
 
	Categories.markAsUnreadForAll = function(cid, callback) {
		callback = callback || function() {};
		db.delete('cid:' + cid + ':read_by_uid', callback);
	};
 
	Categories.hasReadCategories = function(cids, uid, callback) {
		var sets = [];
 
		for (var i = 0, ii = cids.length; i < ii; i++) {
			sets.push('cid:' + cids[i] + ':read_by_uid');
		}
 
		db.isMemberOfSets(sets, uid, callback);
	};
 
	Categories.hasReadCategory = function(cid, uid, callback) {
		db.isSetMember('cid:' + cid + ':read_by_uid', uid, callback);
	};
 
};