From 0d023163ba5ccddc794076422bb07d0d111fa121 Mon Sep 17 00:00:00 2001 From: Arit Amana <32520970+msarit@users.noreply.github.com> Date: Thu, 28 Apr 2022 12:33:01 -0400 Subject: [PATCH] Hide 'Save' button on posts that belong to the current user (#17293) * implement change * struggling with tests * extend implementation to relevant views * update Article.test.jsx snapshot * fix failing specs * query userData more robustly * default saveable value in SaveButton component * fix spec * fetch currentUser async --- .../javascripts/initializers/initScrolling.js | 9 ++++++-- .../javascripts/utilities/buildArticleHTML.js | 6 ++++-- app/javascript/articles/Article.jsx | 4 ++++ .../articles/__tests__/Article.test.jsx | 21 +++++++++++++++++++ .../articles/components/SaveButton.jsx | 5 +++-- .../components/__tests__/SaveButton.test.jsx | 10 +++++++++ app/javascript/packs/hideBookmarkButtons.js | 12 +++++++++++ app/javascript/packs/homePageFeed.jsx | 11 +++++++++- app/javascript/packs/searchParams.js | 4 +++- app/views/articles/_single_story.html.erb | 9 +++++++- app/views/collections/show.html.erb | 2 +- app/views/organizations/show.html.erb | 2 +- .../stories/tagged_articles/index.html.erb | 2 +- app/views/users/show.html.erb | 2 +- 14 files changed, 86 insertions(+), 13 deletions(-) create mode 100644 app/javascript/packs/hideBookmarkButtons.js diff --git a/app/assets/javascripts/initializers/initScrolling.js b/app/assets/javascripts/initializers/initScrolling.js index 184052974..9371950e1 100644 --- a/app/assets/javascripts/initializers/initScrolling.js +++ b/app/assets/javascripts/initializers/initScrolling.js @@ -207,6 +207,8 @@ function insertArticles(articles) { var list = document.getElementById('substories'); var newArticlesHTML = ''; var el = document.getElementById('home-articles-object'); + var currentUser = userData(); + var currentUserId = currentUser && currentUser.id; if (el) { el.outerHTML = ''; } @@ -226,9 +228,12 @@ function insertArticles(articles) { existingEl.parentElement.classList.contains('crayons-story') && !document.getElementById('video-player-' + article.id) ) { - existingEl.parentElement.outerHTML = buildArticleHTML(article); + existingEl.parentElement.outerHTML = buildArticleHTML( + article, + currentUserId, + ); } else if (!existingEl) { - var newHTML = buildArticleHTML(article); + var newHTML = buildArticleHTML(article, currentUserId); newArticlesHTML += newHTML; initializeReadingListIcons(); } diff --git a/app/assets/javascripts/utilities/buildArticleHTML.js b/app/assets/javascripts/utilities/buildArticleHTML.js index e00410ec5..eedeaa509 100644 --- a/app/assets/javascripts/utilities/buildArticleHTML.js +++ b/app/assets/javascripts/utilities/buildArticleHTML.js @@ -2,7 +2,7 @@ /* eslint-disable no-multi-str */ -function buildArticleHTML(article) { +function buildArticleHTML(article, currentUserId = null) { var tagIcon = ``; if (article && article.class_name === 'Tag') { return `
@@ -278,7 +278,9 @@ function buildArticleHTML(article) { } var saveButton = ''; - if (article.class_name === 'Article') { + // "!=" instead of "!==" used to compare user_id and currentUserId because + // currentUserId is a String while user_id is an Integer + if (article.class_name === 'Article' && article.user_id != currentUserId) { saveButton = ' diff --git a/app/views/collections/show.html.erb b/app/views/collections/show.html.erb index 7f152ba56..d2ea5c900 100644 --- a/app/views/collections/show.html.erb +++ b/app/views/collections/show.html.erb @@ -17,7 +17,7 @@ <% @articles.each do |article| %> <%= render "articles/single_story", story: article.decorate, featured: article.main_image.present? %> <% end %> - <%= javascript_packs_with_chunks_tag "followButtons", "feedPreviewCards", defer: true %> + <%= javascript_packs_with_chunks_tag "followButtons", "feedPreviewCards", "hideBookmarkButtons", defer: true %> <% else %>

<%= t("views.series.list.empty") %>

<% end %> diff --git a/app/views/organizations/show.html.erb b/app/views/organizations/show.html.erb index 8fbaaabe6..4c44c637f 100644 --- a/app/views/organizations/show.html.erb +++ b/app/views/organizations/show.html.erb @@ -24,4 +24,4 @@ <%= render "organizations/sidebar_additional" %> -<%= javascript_packs_with_chunks_tag "storiesList", "followButtons", defer: true %> +<%= javascript_packs_with_chunks_tag "storiesList", "followButtons", "hideBookmarkButtons", defer: true %> diff --git a/app/views/stories/tagged_articles/index.html.erb b/app/views/stories/tagged_articles/index.html.erb index 6f5bc9928..f460bb336 100644 --- a/app/views/stories/tagged_articles/index.html.erb +++ b/app/views/stories/tagged_articles/index.html.erb @@ -130,5 +130,5 @@ <%= render "stories/tagged_articles/sidebar_additional" %> - <%= javascript_packs_with_chunks_tag "storiesList", "followButtons", "feedPreviewCards", defer: true %> + <%= javascript_packs_with_chunks_tag "storiesList", "followButtons", "feedPreviewCards", "hideBookmarkButtons", defer: true %> <% end %> diff --git a/app/views/users/show.html.erb b/app/views/users/show.html.erb index 71f69a9d2..5014a6af4 100644 --- a/app/views/users/show.html.erb +++ b/app/views/users/show.html.erb @@ -151,4 +151,4 @@ -<%= javascript_packs_with_chunks_tag "storiesList", "followButtons", "feedPreviewCards", defer: true %> +<%= javascript_packs_with_chunks_tag "storiesList", "followButtons", "feedPreviewCards", "hideBookmarkButtons", defer: true %>