Fix #72 - add follow/unfollow button to public profiles
This commit is contained in:
		
							parent
							
								
									87ba52ad3f
								
							
						
					
					
						commit
						3554d638b3
					
				| 
						 | 
				
			
			@ -0,0 +1,2 @@
 | 
			
		|||
//= require jquery
 | 
			
		||||
//= require jquery_ujs
 | 
			
		||||
| 
						 | 
				
			
			@ -58,6 +58,13 @@
 | 
			
		|||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  .controls {
 | 
			
		||||
    position: absolute;
 | 
			
		||||
    top: 10px;
 | 
			
		||||
    right: 10px;
 | 
			
		||||
    z-index: 2;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  .details {
 | 
			
		||||
    display: flex;
 | 
			
		||||
    margin-top: 30px;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,3 +1,6 @@
 | 
			
		|||
- content_for :header_tags do
 | 
			
		||||
  = javascript_include_tag 'application_public'
 | 
			
		||||
 | 
			
		||||
- content_for :content do
 | 
			
		||||
  .container= yield
 | 
			
		||||
  .footer
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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 )
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -25,6 +25,9 @@ Rails.application.routes.draw do
 | 
			
		|||
    member do
 | 
			
		||||
      get :followers
 | 
			
		||||
      get :following
 | 
			
		||||
 | 
			
		||||
      post :follow
 | 
			
		||||
      post :unfollow
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue