Expose user settings to `Account` model and update code referencing those settings.

staging
multiple creatures 2019-05-10 05:55:03 -05:00
parent 8d12242216
commit 47a251048c
8 changed files with 113 additions and 86 deletions

View File

@ -39,8 +39,8 @@ module StreamEntriesHelper
roles = []
roles << content_tag(:div, t('accounts.roles.bot'), class: 'account-role bot') if account.bot?
roles << content_tag(:div, t('accounts.roles.adults_only'), class: 'account-role adults-only') if account.adults_only?
roles << content_tag(:div, t('accounts.roles.gentlies_kobolds'), class: 'account-role gentlies') if account&.user&.setting_gently_kobolds
roles << content_tag(:div, t('accounts.roles.kobold'), class: 'account-role kobold') if account&.user&.setting_user_is_kobold
roles << content_tag(:div, t('accounts.roles.gentlies_kobolds'), class: 'account-role gentlies') if account.user_gentlies_kobolds?
roles << content_tag(:div, t('accounts.roles.kobold'), class: 'account-role kobold') if account.user_is_kobold?
if (Setting.show_staff_badge && account.user_staff?) || all
if all && !account.user_staff?
@ -71,7 +71,7 @@ module StreamEntriesHelper
end
def hide_stats?(account)
Setting.hide_stats || account.user&.setting_hide_stats
Setting.hide_stats || account.user_hides_stats?
end
def account_description(account)

View File

@ -28,9 +28,9 @@ class StatusFilter
def filtered_reference?
# filter muted/blocked
return true if account.user_hide_replies_of_blocked? && reply_to_blocked?
return true if account.user_hide_replies_of_muted? && reply_to_muted?
return true if account.user_hide_replies_of_blocker? && reply_to_blocker?
return true if account.user_hides_replies_of_blocked? && reply_to_blocked?
return true if account.user_hides_replies_of_muted? && reply_to_muted?
return true if account.user_hides_replies_of_blocker? && reply_to_blocker?
# kajiht has no filters if status has no mentions
return false if status&.mentions.blank?
@ -42,22 +42,22 @@ class StatusFilter
return false if mentioned_account_ids.include?(account.id)
return true if mentioned_account_ids.any? do |mentioned_account_id|
return true if @preloaded_relations[:muting] && account.user_hide_mentions_of_muted? && @preloaded_relations[:muting][mentioned_account_id]
return true if @preloaded_relations[:blocking] && account.user_hide_mentions_of_blocked? && @preloaded_relations[:blocking][mentioned_account_id]
return true if @preloaded_relations[:muting] && account.user_hides_mentions_of_muted? && @preloaded_relations[:muting][mentioned_account_id]
return true if @preloaded_relations[:blocking] && account.user_hides_mentions_of_blocked? && @preloaded_relations[:blocking][mentioned_account_id]
if @preloaded_relations[:blocked_by]
return true if account.user_hide_mentions_of_blocker? && @preloaded_relations[:blocked_by][mentioned_account_id]
return true if account.user_hides_mentions_of_blocker? && @preloaded_relations[:blocked_by][mentioned_account_id]
else
return true if account.user_hide_mentions_of_blocker? && Account.find(mentioned_account_id)&.blocking?(account.id)
return true if account.user_hides_mentions_of_blocker? && Account.find(mentioned_account_id)&.blocking?(account.id)
end
return false unless status.private_visibility? && status.reply?
@preloaded_relations[:following] && account.user_hide_mentions_outside_scope? && !@preloaded_relations[:following][mentioned_account_id]
@preloaded_relations[:following] && account.user_hides_mentions_outside_scope? && !@preloaded_relations[:following][mentioned_account_id]
end
return true if !@preloaded_relations[:following] && account.user_hide_mentions_outside_scope? && status.private_visibility? && status.reply? && (mentioned_account_ids - account.following_ids).any?
return true if !@preloaded_relations[:muting] && account.user_hide_mentions_of_muted? && account.muting?(mentioned_account_ids)
return true if !@preloaded_relations[:blocking] && account.user_hide_mentions_of_blocked? && account.blocking?(mentioned_account_ids)
return true if !@preloaded_relations[:following] && account.user_hides_mentions_outside_scope? && status.private_visibility? && status.reply? && (mentioned_account_ids - account.following_ids).any?
return true if !@preloaded_relations[:muting] && account.user_hides_mentions_of_muted? && account.muting?(mentioned_account_ids)
return true if !@preloaded_relations[:blocking] && account.user_hides_mentions_of_blocked? && account.blocking?(mentioned_account_ids)
end
def reply_to_blocked?

View File

@ -123,19 +123,38 @@ class Account < ApplicationRecord
:moderator?,
:staff?,
:locale,
:default_sensitive?,
:default_language,
:default_visibility,
:defaults_to_sensitive?,
:defaults_to_local_only?,
:always_local_only?,
:hides_interactions?,
:hides_network?,
:hides_stats?,
:shows_application?,
:always_local?,
:default_local?,
:no_blabber_blocks?,
:hide_replies_of_muted?,
:hide_replies_of_blocked?,
:hide_replies_of_blocker?,
:hide_mntions_of_muted?,
:hide_mntions_of_blocked?,
:hide_mntions_of_blocker?,
:hide_mntions_of_outside_scope?,
:gentlies_kobolds?,
:is_a_kobold?,
:hides_replies_of_muted?,
:hides_replies_of_blocked?,
:hides_replies_of_blocker?,
:hides_mentions_of_muted?,
:hides_mentions_of_blocked?,
:hides_mentions_of_blocker?,
:hides_mentions_outside_scope?,
:wants_larger_menus?,
:wants_larger_buttons?,
:wants_larger_drawer?,
:hides_filtered_gap?,
:hides_mascot?,
:hides_color_formatting?,
:hides_captions,
to: :user,
prefix: true,
allow_nil: true

View File

@ -225,92 +225,100 @@ class User < ApplicationRecord
save!
end
def larger_menus?
@larger_menus ||= (settings.larger_menus || false)
def wants_larger_menus?
@wants_larger_menus ||= (settings.larger_menus || false)
end
def larger_buttons?
@larger_buttons ||= (settings.larger_buttons || false)
def wants_larger_buttons?
@wants_larger_buttons ||= (settings.larger_buttons || false)
end
def larger_drawer?
@larger_drawer ||= (settings.larger_drawer || false)
def wants_larger_drawer?
@wants_larger_drawer ||= (settings.larger_drawer || false)
end
def remove_filtered?
@remove_filtered ||= (settings.remove_filtered || false)
def hides_filtered_gap?
@hides_filtered_gap ||= (settings.remove_filtered || false)
end
def hide_replies_muted?
@hide_replies ||= (settings.hide_replies_muted || true)
def hides_replies_of_muted?
@hides_replies_of_muted ||= (settings.hide_replies_muted || true)
end
def hide_replies_of_blocked?
@hide_replies_of_blocked ||= (settings.hide_replies_blocked || true)
def hides_replies_of_blocked?
@hides_replies_of_blocked ||= (settings.hide_replies_blocked || true)
end
def hide_replies_of_blocker?
@hide_replies_of_blocker ||= (settings.hide_replies_blocker || true)
def hides_replies_of_blocker?
@hides_replies_of_blocker ||= (settings.hide_replies_blocker || true)
end
def hide_mentions_of_muted?
@hide_mentions_of_muted ||= (settings.hide_mntions_muted || true)
def hides_mentions_of_muted?
@hides_mentions_of_muted ||= (settings.hide_mntions_muted || true)
end
def hide_mentions_of_blocked?
@hide_mentions_of_blocked ||= (settings.hide_mntions_blocked || true)
def hides_mentions_of_blocked?
@hides_mentions_of_blocked ||= (settings.hide_mntions_blocked || true)
end
def hide_mentions_of_blocker?
@hide_mentions_of_blocker ||= (settings.hide_mntions_blocker || true)
def hides_mentions_of_blocker?
@hides_mentions_of_blocker ||= (settings.hide_mntions_blocker || true)
end
def hide_mentions_outside_scope?
@hide_mentions_outside_scope ||= (settings.hide_mntions_packm8 || true)
def hides_mentions_outside_scope?
@hides_mentions_outside_scope ||= (settings.hide_mntions_packm8 || true)
end
def gently_kobolds?
@gently_kobolds ||= (settings.gently_kobolds || false)
def gentlies_kobolds?
@gentlies_kobolds ||= (settings.gently_kobolds || false)
end
def user_is_kobold?
@user_is_kobold ||= (settings.user_is_kobold || false)
def is_a_kobold?
@is_a_kobold ||= (settings.user_is_kobold || false)
end
def hide_mascot?
@hide_mascop ||= (settings.hide_mascot || false)
def hides_mascot?
@hides_mascot ||= (settings.hide_mascot || false)
end
def hide_interactions?
@hide_interactions ||= (settings.hide_interactions || false)
def hides_interactions?
@hides_interactions ||= (settings.hide_interactions || false)
end
def default_local?
@default_local ||= (settings.default_local || false)
def defaults_to_local_only?
@defaults_to_local_only ||= (settings.default_local || false)
end
def always_local?
@always_local ||= (settings.always_local || false)
def always_local_only?
@always_local_only ||= (settings.always_local || false)
end
def rawr_federated?
@rawr_federated ||= (settings.rawr_federated || false)
def wants_raw_federated?
@wants_raw_federated ||= (settings.rawr_federated || false)
end
def disable_color?
@disable_color ||= (settings.disable_color || false)
def hides_color_formatting?
@hides_color_formatting ||= (settings.disable_color || false)
end
def hide_stats?
@hide_stats ||= (settings.hide_stats || false)
def hides_stats?
@hides_stats ||= (settings.hide_stats || false)
end
def hide_captions?
@hide_captions ||= (settings.hide_captions || false)
def hides_captions?
@hides_captions ||= (settings.hide_captions || false)
end
def default_sensitive?
@default_sensitive ||= settings.default_sensitive
def defaults_to_sensitive?
@defaults_to_sensitive ||= settings.default_sensitive
end
def default_visibility
@default_visibility ||= setting_default_privacy
end
def default_language
@_default_language ||= (setting.default_language || 'en')
end
def setting_default_privacy

View File

@ -38,8 +38,8 @@ class InitialStateSerializer < ActiveModel::Serializer
if object.current_account
store[:me] = object.current_account.id.to_s
store[:default_local] = object.current_account.user.setting_default_local
store[:always_local] = object.current_account.user.setting_always_local
store[:default_local] = object.current_account.user_defaults_to_local_only?
store[:always_local] = object.current_account.user_always_local_only?
store[:unfollow_modal] = object.current_account.user.setting_unfollow_modal
store[:boost_modal] = object.current_account.user.setting_boost_modal
store[:favourite_modal] = object.current_account.user.setting_favourite_modal
@ -60,8 +60,8 @@ class InitialStateSerializer < ActiveModel::Serializer
if object.current_account
store[:me] = object.current_account.id.to_s
store[:default_privacy] = object.current_account.user.setting_default_privacy
store[:default_sensitive] = object.current_account.user.setting_default_sensitive
store[:default_privacy] = object.current_account.user_default_visibility
store[:default_sensitive] = object.current_account.user_defaults_to_sensitive?
end
store[:text] = object.text if object.text

View File

@ -58,7 +58,7 @@ class PostStatusService < BaseService
@text = @media.find(&:video?) ? '📹' : '🖼' if @media.size > 0
end
@visibility = @options[:visibility] || @account.user&.setting_default_privacy
@visibility = @options[:visibility] || @account.user_default_visibility
@visibility = :unlisted if @visibility.in?([nil, 'public']) && @account.silenced? || @account.force_unlisted
if @in_reply_to.present? && @in_reply_to.visibility.present?
@ -66,9 +66,9 @@ class PostStatusService < BaseService
@visibility = @in_reply_to.visibility if @visibility.nil? || v.index(@visibility) < v.index(@in_reply_to.visibility)
end
@local_only = true if @account.user_always_local? || @in_reply_to&.local_only
@local_only = true if @account.user_always_local_only? || @in_reply_to&.local_only
@sensitive = (@account.default_sensitive? || @options[:spoiler_text].present?) if @sensitive.nil?
@sensitive = (@account.user_defaults_to_sensitive? || @options[:spoiler_text].present?) if @sensitive.nil?
@scheduled_at = @options[:scheduled_at]&.to_datetime
@scheduled_at = nil if scheduled_in_the_past?
@ -184,7 +184,7 @@ class PostStatusService < BaseService
visibility: @visibility,
local_only: @local_only,
sharekey: @sharekey,
language: language_from_option(@options[:language]) || @account.user&.setting_default_language&.presence || 'en',
language: language_from_option(@options[:language]) || @account.default_language&.presence || 'en',
application: @options[:application],
content_type: @options[:content_type] || @account.user&.setting_default_content_type,
}.compact

View File

@ -37,7 +37,7 @@
- if Setting.custom_css.present?
= stylesheet_link_tag custom_css_path, media: 'all'
- if current_account&.user&.setting_disable_color
- if current_account.user_hides_color_formatting?
:css
.status__content p > span,
.reply-indicator__content p > span,
@ -46,20 +46,20 @@
.account__header__fields p > span
{ color: inherit !important }
- if current_account&.user&.setting_hide_captions
- if current_account.user_hides_captions?
:css
div .media-caption,
span .caption
{ display: none }
- if current_account&.user&.setting_larger_menus
- if current_account.user_wants_larger_menus?
:css
.dropdown-menu__item a
{ padding: 14px 14px !important; font-size: 14px !important }
.dropdown--active .dropdown__content > ul > li > a
{ padding: 14px 0 !important; font-size: 14px !important }
- if current_account&.user&.setting_larger_buttons
- if current_account.user_wants_larger_buttons?
:css
.drawer { min-width: 350px !important }
.status__action-bar .icon-button,
@ -73,15 +73,15 @@
margin-right: 24px;
}
- if current_account&.user&.setting_larger_drawer
- if current_account.user_wants_larger_drawer?
:css
.drawer { min-width: 400px !important }
- if current_account&.user&.setting_remove_filtered
- if current_account.user_hides_filtered_gap?
:css
.status__wrapper--filtered { display: none !important; }
- if current_account&.user&.setting_hide_mascot
- if current_account.user_hides_mascot?
:css
.drawer__inner__mastodon>img { display: none !important }

View File

@ -65,13 +65,13 @@
·
%span.detailed-status__link<
= fa_icon('lock')
- elsif user_signed_in? && !@account.user&.setting_hide_stats
- elsif user_signed_in? && !@account.user_hides_stats?
·
= link_to remote_interaction_path(status, type: :reblog), class: 'modal-button detailed-status__link', title: number_to_human(status.reblogs_count, strip_insignificant_zeros: true) do
= fa_icon('repeat')
= " "
- if user_signed_in? && !@account.user&.setting_hide_stats
- if user_signed_in? && !@account.user_hides_stats?
·
= link_to remote_interaction_path(status, type: :favourite), class: 'modal-button detailed-status__link', title: number_to_human(status.favourites_count, strip_insignificant_zeros: true) do
= fa_icon('star')