1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
|
# frozen_string_literal: true
class Settings::PreferencesController < Settings::BaseController
include Redisable
layout 'admin'
before_action :authenticate_user!
def show; end
def update
user_settings.update(user_settings_params.to_h)
MarkExpiredStatusesWorker.perform_async(current_account.id)
if current_user.update(user_params)
I18n.locale = current_user.locale
toggle_filters
remove_cache
update_feeds
redirect_to settings_preferences_path, notice: I18n.t('generic.changes_saved_msg')
else
render :show
end
end
private
def toggle_filters
current_user.update!(filters_enabled: !current_account.custom_filters.enabled.blank?)
end
def update_feeds
FilterFeedsWorker.perform_async(current_user.account_id)
end
def remove_cache
redis.del("filtered_statuses:#{current_user.account_id}")
end
def user_settings
UserSettingsDecorator.new(current_user)
end
def user_params
params.require(:user).permit(
:locale,
:filters_enabled,
:hide_boosts,
:only_known,
:media_only,
:filter_undescribed,
:invert_filters,
:filter_timelines_only,
:monsterpit_api,
:allow_unknown_follows,
:defanged,
chosen_languages: []
)
end
def user_settings_params
params.require(:user).permit(
:setting_default_local,
:setting_always_local,
:setting_hide_stats,
:setting_force_lowercase,
:setting_hide_captions,
:setting_larger_menus,
:setting_larger_buttons,
:setting_larger_drawer,
:setting_larger_emoji,
:setting_filter_mentions,
:setting_hide_replies_muted,
:setting_hide_replies_blocked,
:setting_hide_replies_blocker,
:setting_hide_mntions_muted,
:setting_hide_mntions_blocked,
:setting_hide_mntions_blocker,
:setting_hide_mntions_packm8,
:setting_gently_kobolds,
:setting_user_is_kobold,
:setting_hide_mascot,
:setting_hide_interactions,
:setting_hide_public_profile,
:setting_hide_public_outbox,
:setting_max_public_history,
:setting_max_public_access,
:setting_roar_lifespan,
:setting_roar_lifespan_old,
:setting_roar_defederate,
:setting_roar_defederate_old,
:setting_delayed_roars,
:setting_delayed_for,
:setting_boost_interval,
:setting_boost_random,
:setting_boost_interval_from,
:setting_boost_interval_to,
:setting_show_cursor,
:setting_allow_rss,
:setting_hide_sensitive_cards,
:setting_default_privacy,
:setting_default_sensitive,
:setting_default_language,
:setting_unfollow_modal,
:setting_boost_modal,
:setting_favourite_modal,
:setting_delete_modal,
:setting_auto_play_gif,
:setting_display_media,
:setting_expand_spoilers,
:setting_reduce_motion,
:setting_system_font_ui,
:setting_noindex,
:setting_hide_network,
:setting_hide_followers_count,
:setting_aggregate_reblogs,
:setting_show_application,
:setting_default_content_type,
:setting_theme,
:setting_advanced_layout,
notification_emails: %i(follow follow_request reblog favourite mention digest report pending_account),
interactions: %i(must_be_follower must_be_following)
)
end
end
|