feat: Like(Note) and Undo(Like); federating likes

This commit is contained in:
Julian Lam
2024-02-01 15:59:29 -05:00
parent 94361721b1
commit 607c4623c7
9 changed files with 108 additions and 20 deletions

View File

@@ -8,6 +8,7 @@ const topics = require('../topics');
const plugins = require('../plugins');
const privileges = require('../privileges');
const translator = require('../translator');
const utils = require('../utils');
module.exports = function (Posts) {
const votesInProgress = {};
@@ -99,17 +100,17 @@ module.exports = function (Posts) {
};
function voteInProgress(pid, uid) {
return Array.isArray(votesInProgress[uid]) && votesInProgress[uid].includes(parseInt(pid, 10));
return Array.isArray(votesInProgress[uid]) && votesInProgress[uid].includes(String(pid));
}
function putVoteInProgress(pid, uid) {
votesInProgress[uid] = votesInProgress[uid] || [];
votesInProgress[uid].push(parseInt(pid, 10));
votesInProgress[uid].push(String(pid));
}
function clearVoteProgress(pid, uid) {
if (Array.isArray(votesInProgress[uid])) {
const index = votesInProgress[uid].indexOf(parseInt(pid, 10));
const index = votesInProgress[uid].indexOf(String(pid));
if (index !== -1) {
votesInProgress[uid].splice(index, 1);
}
@@ -171,8 +172,7 @@ module.exports = function (Posts) {
}
async function vote(type, unvote, pid, uid, voteStatus) {
uid = parseInt(uid, 10);
if (uid <= 0) {
if (utils.isNumber(uid) && parseInt(uid, 10) <= 0) {
throw new Error('[[error:not-logged-in]]');
}
const now = Date.now();