split `hide public profile` & `hide public ap outbox` into separate user options, make original `Account.hidden` prop federation-affecting `invisible mode`
parent
bca5a3073f
commit
084b950401
|
@ -17,7 +17,7 @@ class AccountsController < ApplicationController
|
||||||
@pinned_statuses = []
|
@pinned_statuses = []
|
||||||
@endorsed_accounts = @account.endorsed_accounts.to_a.sample(4)
|
@endorsed_accounts = @account.endorsed_accounts.to_a.sample(4)
|
||||||
|
|
||||||
if current_account && @account.blocking?(current_account)
|
if @account.hidden || (@account&.user && @account.user.hides_public_profile?) || (current_account && @account.blocking?(current_account))
|
||||||
@statuses = []
|
@statuses = []
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
|
@ -55,7 +55,7 @@ class ActivityPub::OutboxesController < Api::BaseController
|
||||||
|
|
||||||
def set_statuses
|
def set_statuses
|
||||||
return unless page_requested?
|
return unless page_requested?
|
||||||
if @account&.user && @account.user.hides_public_outbox?
|
if @account.hidden || @account&.user && @account.user.hides_public_outbox?
|
||||||
@statuses = Status.none
|
@statuses = Status.none
|
||||||
else
|
else
|
||||||
@statuses = @account.statuses.permitted_for(@account, signed_request_account)
|
@statuses = @account.statuses.permitted_for(@account, signed_request_account)
|
||||||
|
|
|
@ -50,6 +50,7 @@ class Settings::PreferencesController < Settings::BaseController
|
||||||
:setting_user_is_kobold,
|
:setting_user_is_kobold,
|
||||||
:setting_hide_mascot,
|
:setting_hide_mascot,
|
||||||
:setting_hide_interactions,
|
:setting_hide_interactions,
|
||||||
|
:setting_hide_public_profile,
|
||||||
:setting_hide_public_outbox,
|
:setting_hide_public_outbox,
|
||||||
:setting_max_public_history,
|
:setting_max_public_history,
|
||||||
|
|
||||||
|
|
|
@ -33,6 +33,7 @@ class UserSettingsDecorator
|
||||||
user.settings['hide_captions'] = hide_captions_preference if change?('setting_hide_captions')
|
user.settings['hide_captions'] = hide_captions_preference if change?('setting_hide_captions')
|
||||||
user.settings['hide_mascot'] = hide_mascot_preference if change?('setting_hide_mascot')
|
user.settings['hide_mascot'] = hide_mascot_preference if change?('setting_hide_mascot')
|
||||||
user.settings['hide_interactions'] = hide_interactions_preference if change?('setting_hide_interactions')
|
user.settings['hide_interactions'] = hide_interactions_preference if change?('setting_hide_interactions')
|
||||||
|
user.settings['hide_public_profile'] = hide_public_profile_preference if change?('setting_hide_public_profile')
|
||||||
user.settings['hide_public_outbox'] = hide_public_outbox_preference if change?('setting_hide_public_outbox')
|
user.settings['hide_public_outbox'] = hide_public_outbox_preference if change?('setting_hide_public_outbox')
|
||||||
user.settings['larger_emoji'] = larger_emoji_preference if change?('setting_larger_emoji')
|
user.settings['larger_emoji'] = larger_emoji_preference if change?('setting_larger_emoji')
|
||||||
user.settings['max_public_history'] = max_public_history_preference if change?('setting_max_public_history')
|
user.settings['max_public_history'] = max_public_history_preference if change?('setting_max_public_history')
|
||||||
|
@ -117,6 +118,10 @@ class UserSettingsDecorator
|
||||||
boolean_cast_setting 'setting_hide_interactions'
|
boolean_cast_setting 'setting_hide_interactions'
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def hide_public_profile_preference
|
||||||
|
boolean_cast_setting 'setting_hide_public_profile'
|
||||||
|
end
|
||||||
|
|
||||||
def hide_public_outbox_preference
|
def hide_public_outbox_preference
|
||||||
boolean_cast_setting 'setting_hide_public_outbox'
|
boolean_cast_setting 'setting_hide_public_outbox'
|
||||||
end
|
end
|
||||||
|
|
|
@ -134,6 +134,7 @@ class Account < ApplicationRecord
|
||||||
:always_local_only?,
|
:always_local_only?,
|
||||||
:max_public_history,
|
:max_public_history,
|
||||||
|
|
||||||
|
:hides_public_profile?,
|
||||||
:hides_public_outbox?,
|
:hides_public_outbox?,
|
||||||
:hides_interactions?,
|
:hides_interactions?,
|
||||||
:hides_network?,
|
:hides_network?,
|
||||||
|
|
|
@ -122,6 +122,7 @@ class User < ApplicationRecord
|
||||||
:hide_mntions_packm8,
|
:hide_mntions_packm8,
|
||||||
:hide_mascot,
|
:hide_mascot,
|
||||||
:hide_interactions,
|
:hide_interactions,
|
||||||
|
:hide_public_profile,
|
||||||
:hide_public_outbox,
|
:hide_public_outbox,
|
||||||
:max_public_history,
|
:max_public_history,
|
||||||
|
|
||||||
|
@ -286,6 +287,10 @@ class User < ApplicationRecord
|
||||||
@hides_interactions ||= (settings.hide_interactions || false)
|
@hides_interactions ||= (settings.hide_interactions || false)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def hides_public_profile?
|
||||||
|
@hides_public_profile ||= (settings.hide_public_profile || false)
|
||||||
|
end
|
||||||
|
|
||||||
def hides_public_outbox?
|
def hides_public_outbox?
|
||||||
@hides_public_outbox ||= (settings.hide_public_outbox || false)
|
@hides_public_outbox ||= (settings.hide_public_outbox || false)
|
||||||
end
|
end
|
||||||
|
|
|
@ -45,6 +45,7 @@
|
||||||
|
|
||||||
.fields-group
|
.fields-group
|
||||||
= f.input :setting_max_public_history, collection: [1, 3, 6, 7, 14, 30, 60, 90, 180, 365, 730, 1095, 2190], wrapper: :with_label, include_blank: false, label_method: lambda { |item| safe_join([t("simple_form.labels.defaults.setting_max_public_history_#{item}")]) }, selected: current_user.max_public_history.to_i
|
= f.input :setting_max_public_history, collection: [1, 3, 6, 7, 14, 30, 60, 90, 180, 365, 730, 1095, 2190], wrapper: :with_label, include_blank: false, label_method: lambda { |item| safe_join([t("simple_form.labels.defaults.setting_max_public_history_#{item}")]) }, selected: current_user.max_public_history.to_i
|
||||||
|
= f.input :setting_hide_public_profile, as: :boolean, wrapper: :with_label
|
||||||
= f.input :setting_hide_public_outbox, as: :boolean, wrapper: :with_label
|
= f.input :setting_hide_public_outbox, as: :boolean, wrapper: :with_label
|
||||||
|
|
||||||
- unless Setting.hide_followers_count
|
- unless Setting.hide_followers_count
|
||||||
|
|
|
@ -73,7 +73,7 @@ en:
|
||||||
suspend: Suspend and irreversibly delete account data
|
suspend: Suspend and irreversibly delete account data
|
||||||
warning_preset_id: Use a warning preset
|
warning_preset_id: Use a warning preset
|
||||||
defaults:
|
defaults:
|
||||||
hidden: Disable your public profile
|
hidden: Invisible mode (affects outgoing federation and discovery!)
|
||||||
adult_content: Contains adult content
|
adult_content: Contains adult content
|
||||||
supports_chat: Allow chat messages
|
supports_chat: Allow chat messages
|
||||||
gently: Gently the kobolds
|
gently: Gently the kobolds
|
||||||
|
@ -153,6 +153,7 @@ en:
|
||||||
setting_favourite_modal: Show confirmation dialog before admiring (in Glitch flavour)
|
setting_favourite_modal: Show confirmation dialog before admiring (in Glitch flavour)
|
||||||
setting_hide_followers_count: Hide your packmates count
|
setting_hide_followers_count: Hide your packmates count
|
||||||
setting_hide_network: Make your packmate lists private
|
setting_hide_network: Make your packmate lists private
|
||||||
|
setting_hide_public_profile: Hide your public profile from anonymous viewers
|
||||||
setting_hide_public_outbox: Hide your public ActivityPub outbox (affects discoverability)
|
setting_hide_public_outbox: Hide your public ActivityPub outbox (affects discoverability)
|
||||||
setting_max_public_history: Limit history of roars on public profile to
|
setting_max_public_history: Limit history of roars on public profile to
|
||||||
setting_max_public_history_1: 1 day
|
setting_max_public_history_1: 1 day
|
||||||
|
|
|
@ -0,0 +1,10 @@
|
||||||
|
class MigrateHiddenToHideProfile < ActiveRecord::Migration[5.2]
|
||||||
|
disable_ddl_transaction!
|
||||||
|
def up
|
||||||
|
Account.local.find_each do |account|
|
||||||
|
next unless account&.user
|
||||||
|
account.user.settings.hide_public_profile = account.hidden || false
|
||||||
|
account.hidden = false
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
|
@ -10,7 +10,7 @@
|
||||||
#
|
#
|
||||||
# It's strongly recommended that you check this file into your version control system.
|
# It's strongly recommended that you check this file into your version control system.
|
||||||
|
|
||||||
ActiveRecord::Schema.define(version: 2019_07_19_212820) do
|
ActiveRecord::Schema.define(version: 2019_07_22_014444) do
|
||||||
|
|
||||||
# These are extensions that must be enabled in order to support this database
|
# These are extensions that must be enabled in order to support this database
|
||||||
enable_extension "plpgsql"
|
enable_extension "plpgsql"
|
||||||
|
@ -667,6 +667,7 @@ ActiveRecord::Schema.define(version: 2019_07_19_212820) do
|
||||||
t.boolean "edited"
|
t.boolean "edited"
|
||||||
t.boolean "imported"
|
t.boolean "imported"
|
||||||
t.string "origin"
|
t.string "origin"
|
||||||
|
t.tsvector "tsv"
|
||||||
t.index ["account_id", "id", "visibility", "updated_at"], name: "index_statuses_20180106", order: { id: :desc }
|
t.index ["account_id", "id", "visibility", "updated_at"], name: "index_statuses_20180106", order: { id: :desc }
|
||||||
t.index ["account_id", "id", "visibility"], name: "index_statuses_on_account_id_and_id_and_visibility", where: "(visibility = ANY (ARRAY[0, 1, 2, 4, 5]))"
|
t.index ["account_id", "id", "visibility"], name: "index_statuses_on_account_id_and_id_and_visibility", where: "(visibility = ANY (ARRAY[0, 1, 2, 4, 5]))"
|
||||||
t.index ["in_reply_to_account_id"], name: "index_statuses_on_in_reply_to_account_id"
|
t.index ["in_reply_to_account_id"], name: "index_statuses_on_in_reply_to_account_id"
|
||||||
|
@ -674,6 +675,7 @@ ActiveRecord::Schema.define(version: 2019_07_19_212820) do
|
||||||
t.index ["network"], name: "index_statuses_on_network", where: "network"
|
t.index ["network"], name: "index_statuses_on_network", where: "network"
|
||||||
t.index ["origin"], name: "index_statuses_on_origin", unique: true
|
t.index ["origin"], name: "index_statuses_on_origin", unique: true
|
||||||
t.index ["reblog_of_id", "account_id"], name: "index_statuses_on_reblog_of_id_and_account_id"
|
t.index ["reblog_of_id", "account_id"], name: "index_statuses_on_reblog_of_id_and_account_id"
|
||||||
|
t.index ["tsv"], name: "tsv_idx", using: :gin
|
||||||
t.index ["uri"], name: "index_statuses_on_uri", unique: true
|
t.index ["uri"], name: "index_statuses_on_uri", unique: true
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue