mirror of https://github.com/Siphonay/mastodon
Adding a block model and filter mentions from blocked users (fix #60)
This commit is contained in:
parent
a488b05726
commit
9d59d7b463
|
@ -10,7 +10,7 @@ class ApplicationController < ActionController::Base
|
|||
rescue_from ActionController::RoutingError, with: :not_found
|
||||
rescue_from ActiveRecord::RecordNotFound, with: :not_found
|
||||
|
||||
before_action :store_current_location, :unless => :devise_controller?
|
||||
before_action :store_current_location, unless: :devise_controller?
|
||||
|
||||
def raise_not_found
|
||||
raise ActionController::RoutingError, "No route matches #{params[:unmatched_route]}"
|
||||
|
|
|
@ -40,13 +40,13 @@ class FeedManager
|
|||
end
|
||||
|
||||
# Filter status out of the home feed if it is a reply to someone the user doesn't follow
|
||||
def filter_from_home?(status, follower)
|
||||
def filter_from_home?(status, receiver)
|
||||
replied_to_user = status.reply? ? status.thread.account : nil
|
||||
(status.reply? && !(follower.id == replied_to_user.id || replied_to_user.id == status.account_id || follower.following?(replied_to_user)))
|
||||
(status.reply? && !(receiver.id == replied_to_user.id || replied_to_user.id == status.account_id || receiver.following?(replied_to_user)))
|
||||
end
|
||||
|
||||
def filter_from_mentions?(status, follower)
|
||||
false
|
||||
def filter_from_mentions?(status, receiver)
|
||||
receiver.blocking?(status.account) || (status.reblog? && receiver.blocking?(status.reblog.account))
|
||||
end
|
||||
|
||||
def inline_render(target_account, status)
|
||||
|
|
|
@ -33,8 +33,12 @@ class Account < ApplicationRecord
|
|||
has_many :active_relationships, class_name: 'Follow', foreign_key: 'account_id', dependent: :destroy
|
||||
has_many :passive_relationships, class_name: 'Follow', foreign_key: 'target_account_id', dependent: :destroy
|
||||
|
||||
has_many :following, through: :active_relationships, source: :target_account
|
||||
has_many :followers, through: :passive_relationships, source: :account
|
||||
has_many :following, -> { order('follows.created_at desc') }, through: :active_relationships, source: :target_account
|
||||
has_many :followers, -> { order('follows.created_at desc') }, through: :passive_relationships, source: :account
|
||||
|
||||
# Block relationships
|
||||
has_many :block_relationships, class_name: 'Block', foreign_key: 'account_id', dependent: :destroy
|
||||
has_many :blocking, -> { order('blocks.created_at desc') }, through: :block_relationships, source: :target_account
|
||||
|
||||
has_many :media_attachments, dependent: :destroy
|
||||
|
||||
|
@ -57,6 +61,10 @@ class Account < ApplicationRecord
|
|||
following.include?(other_account)
|
||||
end
|
||||
|
||||
def blocking?(other_account)
|
||||
blocking.include?(other_account)
|
||||
end
|
||||
|
||||
def local?
|
||||
domain.nil?
|
||||
end
|
||||
|
|
|
@ -0,0 +1,7 @@
|
|||
class Block < ApplicationRecord
|
||||
belongs_to :account
|
||||