From 67516a07db44196cc4bb94bf94abe5c6f611cf07 Mon Sep 17 00:00:00 2001 From: multiple creatures Date: Mon, 13 Jan 2020 21:57:24 -0600 Subject: add new privacy option to auto-defederate after a given timespan + add options to defederate and/or delete past posts + add `defed_in`/`parent:defed_in`/`thread:defed_in` bangtags + ui indicator for posts marked for auto-defederation --- app/controllers/api/v1/statuses_controller.rb | 2 + app/controllers/settings/preferences_controller.rb | 7 +++ .../flavours/glitch/components/status_icons.js | 3 ++ .../features/status/components/detailed_status.js | 11 +++- app/lib/bangtags.rb | 59 ++++++++++++++++++++++ app/lib/user_settings_decorator.rb | 15 ++++++ app/models/account.rb | 3 ++ app/models/defederating_status.rb | 21 ++++++++ app/models/destructing_status.rb | 1 + app/models/status.rb | 19 +++++++ app/models/user.rb | 15 ++++++ app/serializers/rest/status_serializer.rb | 5 ++ app/services/post_status_service.rb | 15 ++++++ app/services/remove_status_service.rb | 37 ++++++++------ app/views/settings/preferences/show.html.haml | 18 +++++-- app/workers/defederate_status_worker.rb | 17 +++++++ app/workers/mark_expired_statuses_worker.rb | 44 ++++++++++++++++ .../scheduler/defederating_statuses_scheduler.rb | 19 +++++++ 18 files changed, 291 insertions(+), 20 deletions(-) create mode 100644 app/models/defederating_status.rb create mode 100644 app/workers/defederate_status_worker.rb create mode 100644 app/workers/mark_expired_statuses_worker.rb create mode 100644 app/workers/scheduler/defederating_statuses_scheduler.rb (limited to 'app') diff --git a/app/controllers/api/v1/statuses_controller.rb b/app/controllers/api/v1/statuses_controller.rb index c3f2422ce..255c48e62 100644 --- a/app/controllers/api/v1/statuses_controller.rb +++ b/app/controllers/api/v1/statuses_controller.rb @@ -53,6 +53,7 @@ class Api::V1::StatusesController < Api::BaseController visibility: status_params[:visibility], scheduled_at: status_params[:scheduled_at], delete_after: status_params[:delete_after], + defederate_after: status_params[:defederate_after], sharekey: status_params[:sharekey], application: doorkeeper_token.application, poll: status_params[:poll], @@ -100,6 +101,7 @@ class Api::V1::StatusesController < Api::BaseController :sharekey, :scheduled_at, :delete_after, + :defederate_after, :content_type, media_ids: [], poll: [ diff --git a/app/controllers/settings/preferences_controller.rb b/app/controllers/settings/preferences_controller.rb index 8573624f2..295fc3129 100644 --- a/app/controllers/settings/preferences_controller.rb +++ b/app/controllers/settings/preferences_controller.rb @@ -12,6 +12,12 @@ class Settings::PreferencesController < Settings::BaseController def update user_settings.update(user_settings_params.to_h) + MarkExpiredStatusesWorker.perform_async( + current_account.id, + truthy_param?(:setting_defederate_old), + truthy_param?(:setting_lifespan_old) + ) + if current_user.update(user_params) I18n.locale = current_user.locale toggle_filters @@ -85,6 +91,7 @@ class Settings::PreferencesController < Settings::BaseController :setting_max_public_history, :setting_max_public_access, :setting_roar_lifespan, + :setting_roar_defederate, :setting_delayed_roars, :setting_delayed_for, :setting_boost_interval, diff --git a/app/javascript/flavours/glitch/components/status_icons.js b/app/javascript/flavours/glitch/components/status_icons.js index f439afbe6..bba2fac87 100644 --- a/app/javascript/flavours/glitch/components/status_icons.js +++ b/app/javascript/flavours/glitch/components/status_icons.js @@ -64,6 +64,9 @@ export default class StatusIcons extends React.PureComponent { {status.get('delete_after') ? (