From ae390aabc9a19e680531241e028877c7ab9a3631 Mon Sep 17 00:00:00 2001 From: HombreLaser Date: Sun, 3 Mar 2024 20:50:11 -0600 Subject: Improve replies handling --- src/controllers/replies_controller.py | 3 ++- static/js/controllers/replies_controller.js | 19 ++++++++++++++----- templates/comments/index.jinja | 6 ++++-- 3 files changed, 20 insertions(+), 8 deletions(-) diff --git a/src/controllers/replies_controller.py b/src/controllers/replies_controller.py index 6713e26..467c5f5 100644 --- a/src/controllers/replies_controller.py +++ b/src/controllers/replies_controller.py @@ -24,10 +24,11 @@ def new(): @replies_blueprint.post('/api/comments//replies') def create(comment_id): + comment = db.get_or_404(Comment, comment_id) service = CreateReplyService(request.form, comment_id) status_code = service.call() if status_code != 200: abort(status_code) - return render_template('comments/index.jinja', page=comments_query.replies_of(comment_id)) + return render_template('replies/index.jinja', page=comments_query.replies_of(comment_id), comment=comment) diff --git a/static/js/controllers/replies_controller.js b/static/js/controllers/replies_controller.js index e76179d..119062c 100644 --- a/static/js/controllers/replies_controller.js +++ b/static/js/controllers/replies_controller.js @@ -23,10 +23,8 @@ export class RepliesController extends BaseController { listenButtons(class_name, func) { const buttons = document.getElementsByClassName(class_name); - if (buttons) { - for (let button of buttons) - button.addEventListener("click", func); - } + for (let button of buttons) + button.addEventListener("click", func); } showReplyForm(event) { @@ -44,7 +42,7 @@ export class RepliesController extends BaseController { renderReplies(event) { /* The div to contain the comment's replies. From the element id we can get the comment's id. */ - const comment_replies_section = event.target.parentElement.parentElement.parentElement; + const comment_replies_section = event.target.parentElement.parentElement.querySelector(".comment-replies"); const present_replies = comment_replies_section.querySelector(".replies-section"); this.setCommentId(comment_replies_section); @@ -62,6 +60,17 @@ export class RepliesController extends BaseController { }); } + renderSubmitResponse(response_document) { + const comment = document.getElementById(`comment-${this.comment_id}`); + const present_replies = comment.querySelector(".replies-section"); + const new_comment_replies = this.htmlFromResponse(response_document).getElementById(`replies-section-${this.comment_id}`) + + if(present_replies != null) + present_replies.replaceWith(new_comment_replies); + else + comment.appendChild(new_comment_replies); + } + setCommentId(replies_section) { this.comment_id = /\d/.exec(replies_section.id)[0]; } diff --git a/templates/comments/index.jinja b/templates/comments/index.jinja index ebf1e4e..25eb22e 100644 --- a/templates/comments/index.jinja +++ b/templates/comments/index.jinja @@ -20,10 +20,12 @@
- + {% if comment.replies %} + + {% endif %}
-
+
-- cgit v1.2.3