Make displaying application used to toot opt-in (#9897)
* Make storing and displaying application used to toot opt-in * Revert to storing application info, and display it to the author via API
This commit is contained in:
		
					parent
					
						
							
								bcfff65195
							
						
					
				
			
			
				commit
				
					
						ed30110618
					
				
			
		
					 9 changed files with 24 additions and 3 deletions
				
			
		|  | @ -48,6 +48,7 @@ class Settings::PreferencesController < Settings::BaseController | ||||||
|       :setting_theme, |       :setting_theme, | ||||||
|       :setting_hide_network, |       :setting_hide_network, | ||||||
|       :setting_aggregate_reblogs, |       :setting_aggregate_reblogs, | ||||||
|  |       :setting_show_application, | ||||||
|       notification_emails: %i(follow follow_request reblog favourite mention digest report), |       notification_emails: %i(follow follow_request reblog favourite mention digest report), | ||||||
|       interactions: %i(must_be_follower must_be_following) |       interactions: %i(must_be_follower must_be_following) | ||||||
|     ) |     ) | ||||||
|  |  | ||||||
|  | @ -32,6 +32,7 @@ class UserSettingsDecorator | ||||||
|     user.settings['theme']               = theme_preference if change?('setting_theme') |     user.settings['theme']               = theme_preference if change?('setting_theme') | ||||||
|     user.settings['hide_network']        = hide_network_preference if change?('setting_hide_network') |     user.settings['hide_network']        = hide_network_preference if change?('setting_hide_network') | ||||||
|     user.settings['aggregate_reblogs']   = aggregate_reblogs_preference if change?('setting_aggregate_reblogs') |     user.settings['aggregate_reblogs']   = aggregate_reblogs_preference if change?('setting_aggregate_reblogs') | ||||||
|  |     user.settings['show_application']    = show_application_preference if change?('setting_show_application') | ||||||
|   end |   end | ||||||
| 
 | 
 | ||||||
|   def merged_notification_emails |   def merged_notification_emails | ||||||
|  | @ -90,6 +91,10 @@ class UserSettingsDecorator | ||||||
|     boolean_cast_setting 'setting_hide_network' |     boolean_cast_setting 'setting_hide_network' | ||||||
|   end |   end | ||||||
| 
 | 
 | ||||||
|  |   def show_application_preference | ||||||
|  |     boolean_cast_setting 'setting_show_application' | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|   def theme_preference |   def theme_preference | ||||||
|     settings['setting_theme'] |     settings['setting_theme'] | ||||||
|   end |   end | ||||||
|  |  | ||||||
|  | @ -109,6 +109,7 @@ class Account < ApplicationRecord | ||||||
|            :staff?, |            :staff?, | ||||||
|            :locale, |            :locale, | ||||||
|            :hides_network?, |            :hides_network?, | ||||||
|  |            :shows_application?, | ||||||
|            to: :user, |            to: :user, | ||||||
|            prefix: true, |            prefix: true, | ||||||
|            allow_nil: true |            allow_nil: true | ||||||
|  |  | ||||||
|  | @ -100,7 +100,7 @@ class User < ApplicationRecord | ||||||
| 
 | 
 | ||||||
|   delegate :auto_play_gif, :default_sensitive, :unfollow_modal, :boost_modal, :delete_modal, |   delegate :auto_play_gif, :default_sensitive, :unfollow_modal, :boost_modal, :delete_modal, | ||||||
|            :reduce_motion, :system_font_ui, :noindex, :theme, :display_media, :hide_network, |            :reduce_motion, :system_font_ui, :noindex, :theme, :display_media, :hide_network, | ||||||
|            :expand_spoilers, :default_language, :aggregate_reblogs, to: :settings, prefix: :setting, allow_nil: false |            :expand_spoilers, :default_language, :aggregate_reblogs, :show_application, to: :settings, prefix: :setting, allow_nil: false | ||||||
| 
 | 
 | ||||||
|   attr_reader :invite_code |   attr_reader :invite_code | ||||||
| 
 | 
 | ||||||
|  | @ -244,6 +244,10 @@ class User < ApplicationRecord | ||||||
|     @aggregates_reblogs ||= settings.aggregate_reblogs |     @aggregates_reblogs ||= settings.aggregate_reblogs | ||||||
|   end |   end | ||||||
| 
 | 
 | ||||||
|  |   def shows_application? | ||||||
|  |     @shows_application ||= settings.shows_application | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|   def token_for_app(a) |   def token_for_app(a) | ||||||
|     return nil if a.nil? || a.owner != self |     return nil if a.nil? || a.owner != self | ||||||
|     Doorkeeper::AccessToken |     Doorkeeper::AccessToken | ||||||
|  |  | ||||||
|  | @ -12,7 +12,7 @@ class REST::StatusSerializer < ActiveModel::Serializer | ||||||
|   attribute :pinned, if: :pinnable? |   attribute :pinned, if: :pinnable? | ||||||
| 
 | 
 | ||||||
|   belongs_to :reblog, serializer: REST::StatusSerializer |   belongs_to :reblog, serializer: REST::StatusSerializer | ||||||
|   belongs_to :application |   belongs_to :application, if: :show_application? | ||||||
|   belongs_to :account, serializer: REST::AccountSerializer |   belongs_to :account, serializer: REST::AccountSerializer | ||||||
| 
 | 
 | ||||||
|   has_many :media_attachments, serializer: REST::MediaAttachmentSerializer |   has_many :media_attachments, serializer: REST::MediaAttachmentSerializer | ||||||
|  | @ -38,6 +38,10 @@ class REST::StatusSerializer < ActiveModel::Serializer | ||||||
|     !current_user.nil? |     !current_user.nil? | ||||||
|   end |   end | ||||||
| 
 | 
 | ||||||
|  |   def show_application? | ||||||
|  |     object.account.user_shows_application? || (current_user? && current_user.account_id == object.account_id) | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|   def visibility |   def visibility | ||||||
|     # This visibility is masked behind "private" |     # This visibility is masked behind "private" | ||||||
|     # to avoid API changes because there are no |     # to avoid API changes because there are no | ||||||
|  |  | ||||||
|  | @ -34,6 +34,9 @@ | ||||||
|   .fields-group |   .fields-group | ||||||
|     = f.input :setting_hide_network, as: :boolean, wrapper: :with_label |     = f.input :setting_hide_network, as: :boolean, wrapper: :with_label | ||||||
| 
 | 
 | ||||||
|  |   .fields-group | ||||||
|  |     = f.input :setting_show_application, as: :boolean, wrapper: :with_label | ||||||
|  | 
 | ||||||
|   %hr#settings_web/ |   %hr#settings_web/ | ||||||
| 
 | 
 | ||||||
|   .fields-row |   .fields-row | ||||||
|  |  | ||||||
|  | @ -39,7 +39,7 @@ | ||||||
|     = link_to TagManager.instance.url_for(status), class: 'detailed-status__datetime u-url u-uid', target: stream_link_target, rel: 'noopener' do |     = link_to TagManager.instance.url_for(status), class: 'detailed-status__datetime u-url u-uid', target: stream_link_target, rel: 'noopener' do | ||||||
|       %time.formatted{ datetime: status.created_at.iso8601, title: l(status.created_at) }= l(status.created_at) |       %time.formatted{ datetime: status.created_at.iso8601, title: l(status.created_at) }= l(status.created_at) | ||||||
|     · |     · | ||||||
|     - if status.application |     - if status.application && @account.user&.setting_show_application | ||||||
|       - if status.application.website.blank? |       - if status.application.website.blank? | ||||||
|         %strong.detailed-status__application= status.application.name |         %strong.detailed-status__application= status.application.name | ||||||
|       - else |       - else | ||||||
|  |  | ||||||
|  | @ -33,6 +33,7 @@ en: | ||||||
|         setting_display_media_show_all: Always show media marked as sensitive |         setting_display_media_show_all: Always show media marked as sensitive | ||||||
|         setting_hide_network: Who you follow and who follows you will not be shown on your profile |         setting_hide_network: Who you follow and who follows you will not be shown on your profile | ||||||
|         setting_noindex: Affects your public profile and status pages |         setting_noindex: Affects your public profile and status pages | ||||||
|  |         setting_show_application: The application you use to toot will be displayed in the detailed view of your toots | ||||||
|         setting_theme: Affects how Mastodon looks when you're logged in from any device. |         setting_theme: Affects how Mastodon looks when you're logged in from any device. | ||||||
|         username: Your username will be unique on %{domain} |         username: Your username will be unique on %{domain} | ||||||
|         whole_word: When the keyword or phrase is alphanumeric only, it will only be applied if it matches the whole word |         whole_word: When the keyword or phrase is alphanumeric only, it will only be applied if it matches the whole word | ||||||
|  | @ -100,6 +101,7 @@ en: | ||||||
|         setting_hide_network: Hide your network |         setting_hide_network: Hide your network | ||||||
|         setting_noindex: Opt-out of search engine indexing |         setting_noindex: Opt-out of search engine indexing | ||||||
|         setting_reduce_motion: Reduce motion in animations |         setting_reduce_motion: Reduce motion in animations | ||||||
|  |         setting_show_application: Disclose application used to send toots | ||||||
|         setting_system_font_ui: Use system's default font |         setting_system_font_ui: Use system's default font | ||||||
|         setting_theme: Site theme |         setting_theme: Site theme | ||||||
|         setting_unfollow_modal: Show confirmation dialog before unfollowing someone |         setting_unfollow_modal: Show confirmation dialog before unfollowing someone | ||||||
|  |  | ||||||
|  | @ -26,6 +26,7 @@ defaults: &defaults | ||||||
|   expand_spoilers: false |   expand_spoilers: false | ||||||
|   preview_sensitive_media: false |   preview_sensitive_media: false | ||||||
|   reduce_motion: false |   reduce_motion: false | ||||||
|  |   show_application: false | ||||||
|   system_font_ui: false |   system_font_ui: false | ||||||
|   noindex: false |   noindex: false | ||||||
|   theme: 'default' |   theme: 'default' | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue