Fix #72 - add follow/unfollow button to public profiles
This commit is contained in:
		
							
								
								
									
										2
									
								
								app/assets/javascripts/application_public.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								app/assets/javascripts/application_public.js
									
									
									
									
									
										Normal file
									
								
							| @@ -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 | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user