From 3862f48c34a00691a12c6002abd88b088cf7c13e Mon Sep 17 00:00:00 2001 From: multiple creatures Date: Tue, 23 Jul 2019 16:48:08 -0500 Subject: add self-destructing roars & `live`/`lifespan` bangtags --- app/controllers/api/v1/statuses_controller.rb | 2 + app/controllers/settings/preferences_controller.rb | 1 + .../flavours/glitch/components/status_icons.js | 3 ++ .../features/status/components/detailed_status.js | 20 +++++++- app/lib/bangtags.rb | 55 ++++++++++++++++++++++ app/lib/user_settings_decorator.rb | 5 ++ app/models/account.rb | 1 + app/models/destructing_status.rb | 20 ++++++++ app/models/status.rb | 13 +++++ app/models/user.rb | 5 ++ app/serializers/rest/status_serializer.rb | 5 ++ app/services/post_status_service.rb | 19 ++++++++ app/views/settings/preferences/show.html.haml | 7 ++- app/workers/destruct_status_worker.rb | 16 +++++++ .../scheduler/destructing_statuses_scheduler.rb | 19 ++++++++ config/locales/en.yml | 4 +- config/locales/simple_form.en.yml | 29 +++++++----- config/sidekiq.yml | 3 ++ .../20190723152514_create_destructing_statuses.rb | 9 ++++ db/schema.rb | 10 +++- spec/fabricators/destructing_status_fabricator.rb | 4 ++ spec/models/destructing_status_spec.rb | 5 ++ 22 files changed, 238 insertions(+), 17 deletions(-) create mode 100644 app/models/destructing_status.rb create mode 100644 app/workers/destruct_status_worker.rb create mode 100644 app/workers/scheduler/destructing_statuses_scheduler.rb create mode 100644 db/migrate/20190723152514_create_destructing_statuses.rb create mode 100644 spec/fabricators/destructing_status_fabricator.rb create mode 100644 spec/models/destructing_status_spec.rb diff --git a/app/controllers/api/v1/statuses_controller.rb b/app/controllers/api/v1/statuses_controller.rb index a9728f997..305e8d113 100644 --- a/app/controllers/api/v1/statuses_controller.rb +++ b/app/controllers/api/v1/statuses_controller.rb @@ -52,6 +52,7 @@ class Api::V1::StatusesController < Api::BaseController spoiler_text: status_params[:spoiler_text], visibility: status_params[:visibility], scheduled_at: status_params[:scheduled_at], + delete_after: status_params[:delete_after], sharekey: status_params[:sharekey], application: doorkeeper_token.application, poll: status_params[:poll], @@ -92,6 +93,7 @@ class Api::V1::StatusesController < Api::BaseController :visibility, :sharekey, :scheduled_at, + :delete_after, :content_type, media_ids: [], poll: [ diff --git a/app/controllers/settings/preferences_controller.rb b/app/controllers/settings/preferences_controller.rb index b9f3a803d..e7d2008d0 100644 --- a/app/controllers/settings/preferences_controller.rb +++ b/app/controllers/settings/preferences_controller.rb @@ -53,6 +53,7 @@ class Settings::PreferencesController < Settings::BaseController :setting_hide_public_profile, :setting_hide_public_outbox, :setting_max_public_history, + :setting_roar_lifespan, :setting_default_privacy, :setting_default_sensitive, diff --git a/app/javascript/flavours/glitch/components/status_icons.js b/app/javascript/flavours/glitch/components/status_icons.js index c9747650f..9a3b2b745 100644 --- a/app/javascript/flavours/glitch/components/status_icons.js +++ b/app/javascript/flavours/glitch/components/status_icons.js @@ -59,6 +59,9 @@ export default class StatusIcons extends React.PureComponent { aria-hidden='true' /> ) : null} + {status.get('delete_after') ? ( +