60 lines
1.5 KiB
JavaScript
Executable File
60 lines
1.5 KiB
JavaScript
Executable File
const {getUser} = require("../utils/getuser")
|
|
const {request} = require("../utils/request")
|
|
const cacheManager = require("../eirtubeMods/cache-manager")
|
|
|
|
async function getVideoComments(id, req, continuation) {
|
|
// Check if video comment data already in cache
|
|
let videoData = cacheManager.read("video")[id]
|
|
|
|
if (videoData && videoData.comments && !continuation)
|
|
return videoData.comments
|
|
else {
|
|
const user = getUser(req)
|
|
const settings = user.getSettingsOrDefaults()
|
|
var instanceOrigin = settings.instance
|
|
var outURL = `${instanceOrigin}/api/v1/comments/${id}`
|
|
|
|
let commentsFuture = request(outURL)
|
|
let commentData = await commentsFuture
|
|
if (!commentData.ok)
|
|
return commentData.result
|
|
commentData = await commentData.result
|
|
|
|
if (commentData.error)
|
|
return commentData
|
|
|
|
// Success
|
|
if (videoData) {
|
|
if (!continuation)
|
|
videoData.comments = commentData
|
|
else {
|
|
videoData.comments.comments = videoData.comments.concat(commentData.comments)
|
|
videoData.comments.continuation = commentData.continuation
|
|
}
|
|
cacheManager.write("video", id, videoData)
|
|
}
|
|
|
|
return commentData
|
|
}
|
|
}
|
|
|
|
// TODO: ability to use this on community posts?
|
|
function getReplies(videoId, commentId, req) {
|
|
let videoData = cacheManager.read("video")[videoId]
|
|
|
|
if (videoData && videoData.comments)
|
|
for (const comment of videoData.comments.comments)
|
|
if (comment.commentId == commentId) {
|
|
if (!comment.continuation)
|
|
return []
|
|
break
|
|
}
|
|
|
|
// TODO
|
|
}
|
|
|
|
module.exports = {
|
|
getVideoComments,
|
|
getReplies
|
|
}
|