about summary refs log tree commit diff
diff options
context:
space:
mode:
authormultiple creatures <dev@multiple-creature.party>2019-08-10 03:21:04 -0500
committermultiple creatures <dev@multiple-creature.party>2019-08-10 03:21:04 -0500
commit8a7605e5027d55925c4e0497e8a25e52e2ed87d3 (patch)
tree7b4741d4f9292bf65c71fcf6528108d8f0643c08
parent2a41140dc73b8c527c5fde138d23a45da8b8e264 (diff)
fix interaction buttons on public pages
-rw-r--r--app/controllers/remote_follow_controller.rb14
-rw-r--r--app/controllers/remote_interaction_controller.rb38
-rw-r--r--app/javascript/flavours/glitch/styles/components/status.scss9
-rw-r--r--app/views/stream_entries/_detailed_status.html.haml4
-rw-r--r--app/views/stream_entries/_simple_status.html.haml4
5 files changed, 38 insertions, 31 deletions
diff --git a/app/controllers/remote_follow_controller.rb b/app/controllers/remote_follow_controller.rb
index 17bc1940a..dc15e63bf 100644
--- a/app/controllers/remote_follow_controller.rb
+++ b/app/controllers/remote_follow_controller.rb
@@ -9,18 +9,10 @@ class RemoteFollowController < ApplicationController
   before_action :set_body_classes
 
   def new
-    @remote_follow = RemoteFollow.new(session_params)
-  end
-
-  def create
-    @remote_follow = RemoteFollow.new(resource_params)
+    raise Mastodon::NotPermittedError unless user_signed_in?
 
-    if @remote_follow.valid?
-      session[:remote_follow] = @remote_follow.acct
-      redirect_to @remote_follow.subscribe_address_for(@account)
-    else
-      render :new
-    end
+    FollowService.new.call(current_account, @account)
+    redirect_to TagManager.instance.url_for(@account)
   end
 
   private
diff --git a/app/controllers/remote_interaction_controller.rb b/app/controllers/remote_interaction_controller.rb
index d7197d434..b1b304055 100644
--- a/app/controllers/remote_interaction_controller.rb
+++ b/app/controllers/remote_interaction_controller.rb
@@ -5,24 +5,34 @@ class RemoteInteractionController < ApplicationController
 
   layout 'modal'
 
-  before_action :set_interaction_type
-  before_action :set_status
   before_action :set_body_classes
   before_action :set_pack
+  before_action :set_status
 
   def new
-    @remote_follow = RemoteFollow.new(session_params)
-  end
-
-  def create
-    @remote_follow = RemoteFollow.new(resource_params)
+    raise Mastodon::NotPermittedError unless user_signed_in?
 
-    if @remote_follow.valid?
-      session[:remote_follow] = @remote_follow.acct
-      redirect_to @remote_follow.interact_address_for(@status)
-    else
-      render :new
+    case params[:type]
+    when 'reblog'
+      if current_account.statuses.where(reblog: @status).exists?
+        status = current_account.statuses.find_by(reblog: @status)
+        RemoveStatusService.new.call(status)
+      else
+        ReblogService.new.call(current_account, @status)
+      end
+    when 'favourite'
+      if Favourite.where(account: current_account, status: @status).exists?
+        UnfavouriteService.new.call(current_account, @status)
+      else
+        FavouriteService.new.call(current_account, @status)
+      end
+    when 'follow'
+      FollowService.new.call(current_account, @status.account)
+    when 'unfollow'
+      UnfollowService.new.call(current_account, @status.account)
     end
+
+    redirect_to TagManager.instance.url_for(@status)
   end
 
   private
@@ -51,8 +61,4 @@ class RemoteInteractionController < ApplicationController
   def set_pack
     use_pack 'modal'
   end
-
-  def set_interaction_type
-    @interaction_type = %w(reply reblog favourite).include?(params[:type]) ? params[:type] : 'reply'
-  end
 end
diff --git a/app/javascript/flavours/glitch/styles/components/status.scss b/app/javascript/flavours/glitch/styles/components/status.scss
index 3428dabf6..fe75919bf 100644
--- a/app/javascript/flavours/glitch/styles/components/status.scss
+++ b/app/javascript/flavours/glitch/styles/components/status.scss
@@ -605,6 +605,15 @@
 .detailed-status__link {
   color: inherit;
   text-decoration: none;
+
+}
+
+.detailed-status__star-icon {
+  color: $gold-star;
+}
+
+.detailed-status__boost-icon {
+  color: $red-bookmark;
 }
 
 .detailed-status__favorites,
diff --git a/app/views/stream_entries/_detailed_status.html.haml b/app/views/stream_entries/_detailed_status.html.haml
index b7015e356..2cafdf4b4 100644
--- a/app/views/stream_entries/_detailed_status.html.haml
+++ b/app/views/stream_entries/_detailed_status.html.haml
@@ -67,13 +67,13 @@
         = fa_icon('lock')
     - elsif user_signed_in? && !@account.user_hides_stats?
       ·
-      = link_to remote_interaction_path(status, type: :reblog), class: 'modal-button detailed-status__link', title: number_to_human(status.reblogs_count, strip_insignificant_zeros: true) do
+      = link_to remote_interaction_path(status, type: :reblog), class: "detailed-status__link #{user_signed_in? && @account.statuses.where(reblog: status).exists? ? 'detailed-status__boost-icon' : nil}", title: number_to_human(status.reblogs_count, strip_insignificant_zeros: true) do
         = fa_icon('repeat')
         = " "
 
     - if user_signed_in? && !@account.user_hides_stats?
       ·
-      = link_to remote_interaction_path(status, type: :favourite), class: 'modal-button detailed-status__link', title: number_to_human(status.favourites_count, strip_insignificant_zeros: true) do
+      = link_to remote_interaction_path(status, type: :favourite), class: "detailed-status__link  #{user_signed_in? && Favourite.where(account: @account, status: status).exists? ? 'detailed-status__star-icon' : nil}", title: number_to_human(status.favourites_count, strip_insignificant_zeros: true) do
         = fa_icon('star')
         = " "
 
diff --git a/app/views/stream_entries/_simple_status.html.haml b/app/views/stream_entries/_simple_status.html.haml
index f18844d02..b8d1cf69b 100644
--- a/app/views/stream_entries/_simple_status.html.haml
+++ b/app/views/stream_entries/_simple_status.html.haml
@@ -53,12 +53,12 @@
         - else
           = fa_icon 'reply-all fw'
       .status__action-bar__counter__label= obscured_counter status.replies_count
-    = link_to remote_interaction_path(status, type: :reblog), class: 'status__action-bar-button icon-button modal-button', style: 'font-size: 18px; width: 23.1429px; height: 23.1429px; line-height: 23.15px;' do
+    = link_to remote_interaction_path(status, type: :reblog), class: 'status__action-bar-button icon-button', style: 'font-size: 18px; width: 23.1429px; height: 23.1429px; line-height: 23.15px;' do
       - if status.public_visibility? || status.unlisted_visibility?
         = fa_icon 'repeat fw'
       - elsif status.private_visibility?
         = fa_icon 'lock fw'
       - else
         = fa_icon 'envelope fw'
-    = link_to remote_interaction_path(status, type: :favourite), class: 'status__action-bar-button icon-button modal-button', style: 'font-size: 18px; width: 23.1429px; height: 23.1429px; line-height: 23.15px;' do
+    = link_to remote_interaction_path(status, type: :favourite), class: 'status__action-bar-button icon-button', style: 'font-size: 18px; width: 23.1429px; height: 23.1429px; line-height: 23.15px;' do
       = fa_icon 'star fw'