Browse Source

Fix #72 - add follow/unfollow button to public profiles

pull/4/head
Eugen Rochko 6 years ago
parent
commit
3554d638b3
7 changed files with 33 additions and 1 deletions
  1. +2
    -0
      app/assets/javascripts/application_public.js
  2. +7
    -0
      app/assets/stylesheets/accounts.scss
  3. +10
    -0
      app/controllers/accounts_controller.rb
  4. +7
    -0
      app/views/accounts/_header.html.haml
  5. +3
    -0
      app/views/layouts/public.html.haml
  6. +1
    -1
      config/initializers/assets.rb
  7. +3
    -0
      config/routes.rb

+ 2
- 0
app/assets/javascripts/application_public.js View File

@ -0,0 +1,2 @@
//= require jquery
//= require jquery_ujs

+ 7
- 0
app/assets/stylesheets/accounts.scss View File

@ -58,6 +58,13 @@
}
}
.controls {
position: absolute;
top: 10px;
right: 10px;
z-index: 2;
}
.details {
display: flex;
margin-top: 30px;

+ 10
- 0
app/controllers/accounts_controller.rb View File

@ -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

+ 7
- 0
app/views/accounts/_header.html.haml View File

@ -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)

+ 3
- 0
app/views/layouts/public.html.haml View File

@ -1,3 +1,6 @@
- content_for :header_tags do
= javascript_include_tag 'application_public'
- content_for :content do
.container= yield
.footer

+ 1
- 1
config/initializers/assets.rb View File

@ -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 )

+ 3
- 0
config/routes.rb View File

@ -25,6 +25,9 @@ Rails.application.routes.draw do
member do
get :followers
get :following
post :follow
post :unfollow
end
end

Loading…
Cancel
Save