actually send emits
delete buttons & postform
mark replies when op deleted
disconnect socket if connected
jschan
Thomas Lynch 3 years ago
parent 085a7ec271
commit 1ed4ec5359
No known key found for this signature in database
GPG Key ID: 36A72F7C62CF8480
  1. 15
      gulp/res/js/live.js
  2. 29
      models/forms/deletepost.js
  3. 2
      views/includes/postform.pug
  4. 2
      views/pages/thread.pug

@ -27,14 +27,23 @@ window.addEventListener('settingsReady', function(event) { //after domcontentloa
}
//add "deleted" title text to posts to show it was deleted
const deletePost = (data) {
const deletePost = (data) => {
console.log('got delete post message', data);
const anchor = document.getElementById(data.postId);
const postContainer = anchor.nextSibling;
postContainer.classList.add('deleted');
if (postContainer.classList.contains('op')) {
//OP was deleted, os every post in the thread is "deleted". hide new reply buttons (and disconnect socket)
//todo...
//OP was deleted, so every post in the thread is "deleted".
const postContainers = document.getElementsByClassName('post-container');
Array.from(postContainers).forEach(e => e.classList.add('deleted'));
//remove new reply buttons and postform
document.getElementById('postform').remove();
const postButtons = document.getElementsByClassName('post-button');
Array.from(postButtons).forEach(e => e.remove());
//and disconnect socket
if (socket.connected === true) {
socket.disconnect();
}
}
};

@ -4,6 +4,7 @@ const uploadDirectory = require(__dirname+'/../../helpers/files/uploadDirectory.
, { remove } = require('fs-extra')
, Mongo = require(__dirname+'/../../db/db.js')
, { Posts, Files } = require(__dirname+'/../../db/')
, Socketio = require(__dirname+'/../../socketio.js')
, quoteHandler = require(__dirname+'/../../helpers/posting/quotes.js')
, { markdown } = require(__dirname+'/../../helpers/posting/markdown.js')
, config = require(__dirname+'/../../config.js')
@ -18,13 +19,15 @@ module.exports = async (posts, board, all=false) => {
//filter to threads
const threads = posts.filter(x => x.thread == null);
if (threads.length > 0) {
//delete the html/json for threads
await Promise.all(threads.map(thread => {
remove(`${uploadDirectory}/html/${thread.board}/thread/${thread.postId}.html`)
remove(`${uploadDirectory}/json/${thread.board}/thread/${thread.postId}.json`)
}));
}
//emits not including the fetched posts from next block because those are based on threads being selected
//and we dont need to send delete message for every reply in a thread when the OP gets deleted.
const deleteEmits = posts.reduce((acc, post) => {
acc.push({
room: `${post.board}-${post.thread || post.postId}`,
postId: post.postId,
});
return acc;
}, []);
//get posts from all threads
let threadPosts = []
@ -113,7 +116,9 @@ module.exports = async (posts, board, all=false) => {
//deleting before remarkup so quotes are accurate
const deletedPosts = await Posts.deleteMany(postMongoIds).then(result => result.deletedCount);
//emit the deletes to thread sockets (not recent sockets [yet?])
//Socketio.emitRoom(`board-thread`, 'deletePost', {postId:xxx});
for (let i = 0; i < deleteEmits.length; i++) {
Socketio.emitRoom(deleteEmits[i].room, 'deletePost', { postId: deleteEmits[i].postId });
}
if (all === false) {
//get posts that quoted deleted posts so we can remarkup them
@ -149,6 +154,14 @@ module.exports = async (posts, board, all=false) => {
await Posts.db.bulkWrite(bulkWrites);
}
if (threads.length > 0) {
//delete the html/json for threads
await Promise.all(threads.map(thread => {
remove(`${uploadDirectory}/html/${thread.board}/thread/${thread.postId}.html`)
remove(`${uploadDirectory}/json/${thread.board}/thread/${thread.postId}.json`)
}));
}
//hooray!
return { action: deletedPosts > 0, message:`Deleted ${threads.length > 0 ? (threads.length + ' thread' + (threads.length > 1 ? 's' : '')) : ''} ${threads.length > 0 && deletedPosts-threads.length > 0 ? 'and' : ''} ${deletedPosts-threads.length > 0 ? (deletedPosts-threads.length + ' post' + (deletedPosts-threads.length > 1 ? 's' : '')) : ''}` };

@ -81,4 +81,4 @@ section.form-wrapper.flex-center
else
include ./captchaexpand.pug
input#submitpost(type='submit', value=`New ${isThread ? 'Reply' : 'Thread'}`)
a.collapse.no-decoration(href='#postform') [#{isThread ? 'New Reply' : 'New Thread'}]
a.collapse.no-decoration.post-button(href='#postform') [#{isThread ? 'New Reply' : 'New Thread'}]

@ -53,7 +53,7 @@ block content
for post in thread.replies
- uids && post.userId && uids.add(post.userId)
+post(post)
a.bottom-reply.no-decoration(href='#postform') [New Reply]
a.bottom-reply.no-decoration.post-button(href='#postform') [New Reply]
hr(size=1)
.wrapbar
if modview

Loading…
Cancel
Save