diff options
-rw-r--r-- | app/controllers/settings/preferences_controller.rb | 1 | ||||
-rw-r--r-- | app/models/user.rb | 3 | ||||
-rw-r--r-- | app/serializers/rest/status_serializer.rb | 2 | ||||
-rw-r--r-- | app/views/settings/preferences/show.html.haml | 8 | ||||
-rw-r--r-- | config/locales/simple_form.en.yml | 6 | ||||
-rw-r--r-- | db/migrate/20200111042543_add_visibility_compat_toggle.rb | 7 | ||||
-rw-r--r-- | db/structure.sql | 6 |
7 files changed, 27 insertions, 6 deletions
diff --git a/app/controllers/settings/preferences_controller.rb b/app/controllers/settings/preferences_controller.rb index ce3c84f77..2e364bbc8 100644 --- a/app/controllers/settings/preferences_controller.rb +++ b/app/controllers/settings/preferences_controller.rb @@ -51,6 +51,7 @@ class Settings::PreferencesController < Settings::BaseController :filter_undescribed, :invert_filters, :filter_timelines_only, + :monsterpit_api, chosen_languages: [] ) end diff --git a/app/models/user.rb b/app/models/user.rb index b519e9b15..c7b002024 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -46,6 +46,7 @@ # media_only :boolean default(FALSE), not null # filter_undescribed :boolean default(FALSE), not null # filters_enabled :boolean default(FALSE), not null +# monsterfork_api :integer default("full"), not null # class User < ApplicationRecord @@ -81,6 +82,8 @@ class User < ApplicationRecord include PamAuthenticable include LdapAuthenticable + enum monsterfork_api: [:vanilla, :basic, :full] + belongs_to :account, inverse_of: :user belongs_to :invite, counter_cache: :uses, optional: true belongs_to :created_by_application, class_name: 'Doorkeeper::Application', optional: true diff --git a/app/serializers/rest/status_serializer.rb b/app/serializers/rest/status_serializer.rb index cb584e1d6..bec2a836b 100644 --- a/app/serializers/rest/status_serializer.rb +++ b/app/serializers/rest/status_serializer.rb @@ -72,7 +72,7 @@ class REST::StatusSerializer < ActiveModel::Serializer def visibility if object.limited_visibility? 'private' - elsif object.local_visibility? + elsif current_user.monsterfork_api != 'full' && object.local_visibility? 'unlisted' else object.visibility diff --git a/app/views/settings/preferences/show.html.haml b/app/views/settings/preferences/show.html.haml index fdb5fea3f..babc57470 100644 --- a/app/views/settings/preferences/show.html.haml +++ b/app/views/settings/preferences/show.html.haml @@ -46,9 +46,6 @@ = f.input :setting_boost_interval_from, collection: [1, 2, 3, 4, 5, 6, 10, 15, 30, 60, 120, 180, 300, 360, 720, 1440], wrapper: :with_label, include_blank: false, label_method: lambda { |item| safe_join([t("simple_form.labels.boost_interval.#{item}")]) }, selected: current_user.boost_interval_from = f.input :setting_boost_interval_to, collection: [1, 2, 3, 4, 5, 6, 10, 15, 30, 60, 120, 180, 300, 360, 720, 1440], wrapper: :with_label, include_blank: false, label_method: lambda { |item| safe_join([t("simple_form.labels.boost_interval.#{item}")]) }, selected: current_user.boost_interval_to - - - %hr#settings_other/ .fields-group @@ -71,6 +68,11 @@ %hr/ .fields-group + = f.input :monsterfork_api, collection: [:vanilla, :basic, :full], wrapper: :with_label, include_blank: false, label_method: lambda { |item| safe_join([t("simple_form.labels.monsterfork_api.#{item}")]) }, selected: current_user.monsterfork_api + + %hr/ + + .fields-group = f.input :setting_hide_network, as: :boolean, wrapper: :with_label = f.input :setting_hide_interactions, as: :boolean, wrapper: :with_label = f.input :setting_hide_stats, as: :boolean, wrapper: :with_label diff --git a/config/locales/simple_form.en.yml b/config/locales/simple_form.en.yml index 7c82538d4..eadf0e516 100644 --- a/config/locales/simple_form.en.yml +++ b/config/locales/simple_form.en.yml @@ -48,6 +48,7 @@ en: phrase_html: "<strong>Examples</strong><br>Containing any terms: <code>this OR that</code><br>Containing all terms: <code>this that</code>, <code>this AND that</code><br>Containing an exact term: <code>"this thing"</code><br>Grouping: <code>this OR ("this thing" AND "that thing")</code>" media_only: Hides text-only posts filters_enabled: Enables custom timeline filters which can be configured in the Filters tab. + monsterfork_api: How much of Monsterfork features should be exposed to clients. Set to Basic or Vanilla if your Mastodon app is having problems with Monsterfork. featured_tag: name: 'You might want to use one of these:' imports: @@ -198,6 +199,11 @@ en: filter_undescribed: Hide roars without media descriptions media_only: Media gallery mode filters_enabled: Enable custom filters + monsterfork_api: Monsterfork API exposure + monsterfork_api: + vanilla: Vanilla + basic: Basic + full: Full boost_interval: 1: 1 minute 2: 2 minutes diff --git a/db/migrate/20200111042543_add_visibility_compat_toggle.rb b/db/migrate/20200111042543_add_visibility_compat_toggle.rb new file mode 100644 index 000000000..38c8785c4 --- /dev/null +++ b/db/migrate/20200111042543_add_visibility_compat_toggle.rb @@ -0,0 +1,7 @@ +class AddVisibilityCompatToggle < ActiveRecord::Migration[5.2] + def change + safety_assured do + add_column :users, :monsterfork_api, :smallint, null: false, default: 2 + end + end +end diff --git a/db/structure.sql b/db/structure.sql index e3da0e923..6002bec8c 100644 --- a/db/structure.sql +++ b/db/structure.sql @@ -2398,7 +2398,8 @@ CREATE TABLE public.users ( filter_timelines_only boolean DEFAULT false NOT NULL, media_only boolean DEFAULT false NOT NULL, filter_undescribed boolean DEFAULT false NOT NULL, - filters_enabled boolean DEFAULT false NOT NULL + filters_enabled boolean DEFAULT false NOT NULL, + monsterfork_api smallint DEFAULT 2 NOT NULL ); @@ -5397,6 +5398,7 @@ INSERT INTO "schema_migrations" (version) VALUES ('20200110213720'), ('20200110214031'), ('20200110221801'), -('20200110221920'); +('20200110221920'), +('20200111042543'); |