103 lines
3.2 KiB
JavaScript
103 lines
3.2 KiB
JavaScript
// Declare a route
|
|
module.exports = function (fastify, opts, done) {
|
|
|
|
const pb = opts.pb;
|
|
|
|
fastify.post('/get-post', async (request, reply) => {
|
|
const data = request.body;
|
|
|
|
let filter;
|
|
const sort = data?.sortingPosts === 'hot' ? '-upvote' : '-created';
|
|
let pinnedPost;
|
|
let posts;
|
|
|
|
try {
|
|
|
|
|
|
if (data?.seenPostId.length !==0)
|
|
{
|
|
filter = data?.seenPostId?.map((id) => `id!="${id}"`).join("&&");
|
|
|
|
//applies only for profile and user directory
|
|
if (data?.userId) {
|
|
filter += `&& user="${data?.userId}" && pinned=false`;
|
|
}
|
|
|
|
if (data?.filterTicker) {
|
|
filter += `&& tagline="${data?.filterTicker}" && pinned=false`;
|
|
}
|
|
|
|
posts = (await pb.collection('posts').getList(data?.startPage, 10, {
|
|
sort: sort,
|
|
filter: filter,
|
|
expand: 'user,comments(post),alreadyVoted(post)',
|
|
fields: "*,expand.user,expand.comments(post), expand.alreadyVoted(post).user,expand.alreadyVoted(post).type"
|
|
|
|
}))?.items;
|
|
}
|
|
else {
|
|
|
|
if (data?.userId) {
|
|
|
|
posts = (await pb.collection('posts').getList(data?.startPage, 10, {
|
|
sort: sort,
|
|
filter: `user="${data?.userId}" && pinned=false`,
|
|
expand: `user,comments(post),alreadyVoted(post)`,
|
|
fields: "*,expand.user,expand.comments(post), expand.alreadyVoted(post).user,expand.alreadyVoted(post).type"
|
|
}))?.items;
|
|
|
|
|
|
}
|
|
|
|
else if (data?.filterTicker) {
|
|
|
|
posts = await pb.collection('posts').getList(data?.startPage, 10, {
|
|
sort: sort,
|
|
filter: `tagline="${data?.filterTicker}" && pinned=false`,
|
|
expand: `user,comments(post),alreadyVoted(post)`,
|
|
fields: "*,expand.user,expand.comments(post), expand.alreadyVoted(post).user,expand.alreadyVoted(post).type"
|
|
}) ;
|
|
|
|
}
|
|
|
|
else {
|
|
posts = await pb.collection('posts').getList(data?.startPage, 10, {
|
|
sort: sort,
|
|
filter: `pinned=false`,
|
|
expand: 'user, comments(post), alreadyVoted(post)',
|
|
fields: "*,expand.user,expand.comments(post), expand.alreadyVoted(post).user,expand.alreadyVoted(post).type"
|
|
|
|
});
|
|
|
|
posts = posts.items
|
|
|
|
pinnedPost = await pb.collection('posts').getFullList({
|
|
filter: `pinned=true`,
|
|
sort: '-created',
|
|
expand: `user,comments(post),alreadyVoted(post)`,
|
|
fields: "*,expand.user,expand.comments(post), expand.alreadyVoted(post).user,expand.alreadyVoted(post).type"
|
|
});
|
|
|
|
for (let i = pinnedPost?.length - 1; i >= 0; i--) {
|
|
posts?.unshift(pinnedPost[i]);
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
catch(e)
|
|
{
|
|
//console.log(e)
|
|
posts = [];
|
|
}
|
|
|
|
|
|
reply.send({ items: posts })
|
|
})
|
|
|
|
done();
|
|
};
|
|
|