import { handlersPath, VERSION } from "../settings/globals"; let db = require(handlersPath + "/db.js"); let Functions = require(handlersPath + "/functions.js"); function frontpage_lists(msg, socket) { if ( msg == undefined || !msg.hasOwnProperty("version") || msg.version != VERSION || msg.version == undefined ) { const result = { version: { expected: VERSION, got: msg.hasOwnProperty("version") ? msg.version : undefined } }; socket.emit("update_required", result); return; } db.collection("frontpage_lists").find({ frontpage: true }, function ( err, docs ) { db.collection("connected_users").find({ _id: "total_users" }, function ( err, tot ) { socket .compress(true) .emit("playlists", { channels: docs, viewers: tot[0].total_users.length }); }); }); } function get_frontpage_lists(callback) { const project_object = { _id: 1, count: 1, frontpage: 1, id: 1, title: 1, viewers: 1, accessed: 1, pinned: { $ifNull: ["$pinned", 0] }, description: { $ifNull: [{ $cond: { if: { $or: [{ $eq: ["$description", ""] }, { $eq: ["$description", null] }, { $eq: ["$description", undefined] } ] }, then: "This list has no description", else: "$description" } }, "This list has no description" ] }, thumbnail: { $ifNull: [{ $cond: { if: { $or: [{ $eq: ["$thumbnail", ""] }, { $eq: ["$thumbnail", null] }, { $eq: ["$thumbnail", undefined] } ] }, then: { $concat: ["https://img.youtube.com/vi/", "$id", "/mqdefault.jpg"] }, else: "$thumbnail" } }, { $concat: ["https://img.youtube.com/vi/", "$id", "/mqdefault.jpg"] } ] } }; db.collection("frontpage_lists").aggregate( [{ $match: { frontpage: true, count: { $gt: 3 } } }, { $project: project_object }, { $sort: { pinned: -1, viewers: -1, accessed: -1, count: -1, title: 1 } } ], callback ); } function update_frontpage(coll, id, title, thumbnail, source, callback) { db.collection("frontpage_lists").find({ _id: coll }, function (e, doc) { const updateObject = { id, title, accessed: Functions.get_time() }; if ( doc.length > 0 && ((doc[0].thumbnail != "" && doc[0].thumbnail != undefined && (doc[0].thumbnail.indexOf("https://i1.sndcdn.com") > -1 || doc[0].thumbnail.indexOf("https://w1.sndcdn.com") > -1 || doc[0].thumbnail.indexOf("https://img.youtube.com") > -1)) || (doc[0].thumbnail == "" || doc[0].thumbnail == undefined)) ) { updateObject.thumbnail = thumbnail; if (thumbnail == undefined) updateObject.thumbnail = ""; } db.collection("frontpage_lists").update({ _id: coll }, { $set: updateObject }, { upsert: true }, function (err, returnDocs) { if (typeof callback == "function") callback(); } ); }); } module.exports.get_frontpage_lists = get_frontpage_lists; module.exports.frontpage_lists = frontpage_lists; module.exports.update_frontpage = update_frontpage;