about summary refs log tree commit diff
diff options
context:
space:
mode:
authormultiple creatures <dev@multiple-creature.party>2020-01-10 23:04:14 -0600
committermultiple creatures <dev@multiple-creature.party>2020-01-10 23:04:14 -0600
commit0f1532aee098049b17ad6b7ecb1d083c856f1d64 (patch)
tree75629111cd2530dc2cfa66ea2c474e9ed14d1581
parentce72d574879b95bd3da5959062d04037945f292f (diff)
add option for changing the monsterfork api exposure level, defaulting to `full` - if this gives your app indigestion change it to back to `basic` in preferences
-rw-r--r--app/controllers/settings/preferences_controller.rb1
-rw-r--r--app/models/user.rb3
-rw-r--r--app/serializers/rest/status_serializer.rb2
-rw-r--r--app/views/settings/preferences/show.html.haml8
-rw-r--r--config/locales/simple_form.en.yml6
-rw-r--r--db/migrate/20200111042543_add_visibility_compat_toggle.rb7
-rw-r--r--db/structure.sql6
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>&quot;this thing&quot;</code><br>Grouping: <code>this OR (&quot;this thing&quot; AND &quot;that thing&quot;)</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');