commit: 3554d638b31aa5ace2aa524db0165932c15d9a71
parent: 87ba52ad3f1e32b0608bb6c6ffb226c1988267a3
Author: Eugen Rochko <eugen@zeonfederated.com>
Date: Thu, 6 Oct 2016 21:27:58 +0200
Fix #72 - add follow/unfollow button to public profiles
Diffstat:
7 files changed, 33 insertions(+), 1 deletion(-)
diff --git a/app/assets/javascripts/application_public.js b/app/assets/javascripts/application_public.js
@@ -0,0 +1,2 @@
+//= require jquery
+//= require jquery_ujs
diff --git a/app/assets/stylesheets/accounts.scss b/app/assets/stylesheets/accounts.scss
@@ -58,6 +58,13 @@
}
}
+ .controls {
+ position: absolute;
+ top: 10px;
+ right: 10px;
+ z-index: 2;
+ }
+
.details {
display: flex;
margin-top: 30px;
diff --git a/app/controllers/accounts_controller.rb b/app/controllers/accounts_controller.rb
@@ -16,6 +16,16 @@ class AccountsController < ApplicationController
end
end
+ def follow
+ FollowService.new.call(current_user.account, @account.acct)
+ redirect_to account_path(@account)
+ end
+
+ def unfollow
+ UnfollowService.new.call(current_user.account, @account)
+ redirect_to account_path(@account)
+ end
+
def followers
@followers = @account.followers.order('follows.created_at desc').paginate(page: params[:page], per_page: 6)
end
diff --git a/app/views/accounts/_header.html.haml b/app/views/accounts/_header.html.haml
@@ -1,4 +1,11 @@
.card{ style: "background-image: url(#{@account.header.url(:medium)})" }
+ - if user_signed_in? && current_account.id != @account.id
+ .controls
+ - if current_account.following?(@account)
+ = link_to 'Unfollow', unfollow_account_path(@account), data: { method: :post }, class: 'button'
+ - else
+ = link_to 'Follow', follow_account_path(@account), data: { method: :post }, class: 'button'
+
.avatar= image_tag @account.avatar.url(:large)
%h1.name
= display_name(@account)
diff --git a/app/views/layouts/public.html.haml b/app/views/layouts/public.html.haml
@@ -1,3 +1,6 @@
+- content_for :header_tags do
+ = javascript_include_tag 'application_public'
+
- content_for :content do
.container= yield
.footer
diff --git a/config/initializers/assets.rb b/config/initializers/assets.rb
@@ -8,4 +8,4 @@ Rails.application.config.assets.version = '1.0'
# Precompile additional assets.
# application.js, application.css, and all non-JS/CSS in app/assets folder are already added.
-Rails.application.config.assets.precompile += %w( cable.js )
+Rails.application.config.assets.precompile += %w( application_public.js )
diff --git a/config/routes.rb b/config/routes.rb
@@ -25,6 +25,9 @@ Rails.application.routes.draw do
member do
get :followers
get :following
+
+ post :follow
+ post :unfollow
end
end