You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
nodebb/src/social.js

76 lines
1.5 KiB
JavaScript

8 years ago
'use strict';
9 years ago
var async = require('async');
9 years ago
var plugins = require('./plugins');
var db = require('./database');
8 years ago
var social = module.exports;
9 years ago
9 years ago
social.postSharing = null;
social.getPostSharing = function (callback) {
9 years ago
if (social.postSharing) {
return setImmediate(callback, null, social.postSharing);
9 years ago
}
9 years ago
var networks = [
{
8 years ago
id: 'facebook',
name: 'Facebook',
class: 'fa-facebook',
9 years ago
},
{
8 years ago
id: 'twitter',
name: 'Twitter',
class: 'fa-twitter',
9 years ago
},
];
async.waterfall([
function (next) {
9 years ago
plugins.fireHook('filter:social.posts', networks, next);
},
function (networks, next) {
8 years ago
db.getSetMembers('social:posts.activated', next);
},
function (activated, next) {
networks.forEach(function (network) {
network.activated = activated.includes(network.id);
9 years ago
});
8 years ago
social.postSharing = networks;
next(null, networks);
},
9 years ago
], callback);
};
social.getActivePostSharing = function (callback) {
8 years ago
async.waterfall([
function (next) {
social.getPostSharing(next);
},
function (networks, next) {
networks = networks.filter(network => network && network.activated);
8 years ago
next(null, networks);
},
], callback);
9 years ago
};
social.setActivePostSharingNetworks = function (networkIDs, callback) {
9 years ago
async.waterfall([
function (next) {
db.delete('social:posts.activated', next);
},
function (next) {
if (!networkIDs.length) {
return next();
}
db.setAdd('social:posts.activated', networkIDs, next);
},
function (next) {
social.postSharing = null;
next();
},
9 years ago
], callback);
};