From e07bdc326305063ddd385a3502b82e3da4210cb3 Mon Sep 17 00:00:00 2001
From: Jeremy Richard <githubarj@cardiff.ac.uk>
Date: Wed, 11 Dec 2024 22:57:31 +0000
Subject: [PATCH] now showing the edit button only to a post owner

---
 .../feed/controllers/FeedApisController.java          |  3 ++-
 .../polish_community/feed/models/Feed.java            |  3 +++
 .../polish_community/feed/models/FeedImpl.java        | 11 +++++++++++
 src/main/resources/static/js/feed/feed.js             |  6 ++++--
 src/main/resources/templates/feed/feed.html           |  4 ++--
 5 files changed, 22 insertions(+), 5 deletions(-)

diff --git a/src/main/java/polish_community_group_11/polish_community/feed/controllers/FeedApisController.java b/src/main/java/polish_community_group_11/polish_community/feed/controllers/FeedApisController.java
index 5ef1cdc..daecfe8 100644
--- a/src/main/java/polish_community_group_11/polish_community/feed/controllers/FeedApisController.java
+++ b/src/main/java/polish_community_group_11/polish_community/feed/controllers/FeedApisController.java
@@ -52,7 +52,7 @@ public class FeedApisController {
 
 
         if (currentUser != null){
-            // set isEditable flag for each post depedant on whether they are an admin or own the post
+            // set isDeletable flag and isEditable flag for each post depedant on whether they are an admin or own the post
             for (FeedImpl post : posts) {
                 log.info("Role ID: " + currentUser.getRoleId());
                 boolean isSuperAdmin = currentUser != null && currentUser.getRoleId() == 1;
@@ -60,6 +60,7 @@ public class FeedApisController {
                 boolean isOwner = currentUser != null && post.getUserId() == currentUser.getId();
                 log.info("IsPostOwner: " + isOwner);
                 post.setIsDeletable(isSuperAdmin || isOwner);
+                post.setIsEditable( isOwner);
                 log.info("PostIsEditable: " + post.getIsDeletable());
             }
         }
diff --git a/src/main/java/polish_community_group_11/polish_community/feed/models/Feed.java b/src/main/java/polish_community_group_11/polish_community/feed/models/Feed.java
index f117f79..42ffd5d 100644
--- a/src/main/java/polish_community_group_11/polish_community/feed/models/Feed.java
+++ b/src/main/java/polish_community_group_11/polish_community/feed/models/Feed.java
@@ -34,6 +34,9 @@ public interface Feed {
     boolean getIsDeletable();
     void setIsDeletable(boolean isDeletable);
 
+    boolean getIsEditable();
+    void setIsEditable(boolean isEditable);
+
     int getPostId();
 
 
diff --git a/src/main/java/polish_community_group_11/polish_community/feed/models/FeedImpl.java b/src/main/java/polish_community_group_11/polish_community/feed/models/FeedImpl.java
index 329d4ae..3a7f576 100644
--- a/src/main/java/polish_community_group_11/polish_community/feed/models/FeedImpl.java
+++ b/src/main/java/polish_community_group_11/polish_community/feed/models/FeedImpl.java
@@ -22,6 +22,7 @@ public class FeedImpl implements Feed {
     private List<String> tags;
     private int likesCount;
     private boolean isDeletable;
+    private boolean isEditable;
 
     @Override
     public boolean getIsDeletable() {
@@ -32,5 +33,15 @@ public class FeedImpl implements Feed {
     public void setIsDeletable(boolean isDeletable) {
         this.isDeletable = isDeletable;
     }
+
+    @Override
+    public boolean getIsEditable(){
+        return isEditable;
+    }
+
+    @Override
+    public void setIsEditable(boolean isEditable){
+        this.isEditable = isEditable;
+    }
 }
 
diff --git a/src/main/resources/static/js/feed/feed.js b/src/main/resources/static/js/feed/feed.js
index 468f6f8..2de2bed 100644
--- a/src/main/resources/static/js/feed/feed.js
+++ b/src/main/resources/static/js/feed/feed.js
@@ -45,7 +45,9 @@ async function renderPost(post) {
     const postElement = postTemplate.content.cloneNode(true);
 
     const deleteButton = postElement.querySelector('.delete-post');
+    const editButton = postElement.querySelector('.edit-post');
     deleteButton.style.display = post.isDeletable ? 'block' : 'none';
+    editButton.style.display = post.isEditable ? 'block' : 'none';
     postElement.querySelector('.author').textContent = post.authorName;
     postElement.querySelector('.author-title').textContent = post.authorOrganization;
     postElement.querySelector('.post-title').textContent = post.postTitle;
@@ -146,7 +148,7 @@ const postForm = document.getElementById('post-form');
 postForm.addEventListener('submit', (event) => {
     event.preventDefault();
 
-    // getting form data
+    // getting form data,
     const postTitle = document.getElementById('postTitle').value;
     const postDescription = document.getElementById('postDescription').value;
     const postTagsInput = document.getElementById('postTags').value;
@@ -195,4 +197,4 @@ document.addEventListener('DOMContentLoaded', () => {
 });
 
 // refresh posts each minute , though cannot show at moment since not online
-setInterval(fetchPosts, 60000);
\ No newline at end of file
+// setInterval(fetchPosts, 60000);
\ No newline at end of file
diff --git a/src/main/resources/templates/feed/feed.html b/src/main/resources/templates/feed/feed.html
index 28861a9..189c8e7 100644
--- a/src/main/resources/templates/feed/feed.html
+++ b/src/main/resources/templates/feed/feed.html
@@ -32,10 +32,10 @@
                         </div>
                     </div>
                     <div class="post-manipulation">
-                        <button title="Delete post" class="edit-post" id="edit-post">
+                        <button title="Edit post" class="edit-post" id="edit-post">
                             <i class="bi bi-pencil"></i>
                         </button>
-                        <button title="Edit post" class="delete-post" id="delete-post">
+                        <button  title="Delete post" class="delete-post" id="delete-post">
                             <i class="bi bi-trash3"></i>
                         </button>
                     </div>
-- 
GitLab