From 22ad776635efd75b76886a007d97ee7e20118886 Mon Sep 17 00:00:00 2001 From: KMY Date: Thu, 6 Jul 2023 12:55:11 +0900 Subject: [PATCH] Add status references support --- .rubocop.yml | 1 + .../mastodon/actions/notifications.js | 1 + .../components/column_settings.jsx | 11 +++ .../notifications/components/filter_bar.jsx | 8 ++ .../notifications/components/notification.jsx | 36 ++++++++ app/javascript/mastodon/locales/ja.json | 1 + app/lib/activitypub/activity/create.rb | 7 ++ app/models/notification.rb | 10 ++- app/models/status.rb | 12 +++ app/models/status_reference.rb | 25 ++++++ app/models/status_stat.rb | 5 ++ app/models/user.rb | 1 + app/serializers/rest/instance_serializer.rb | 1 + .../rest/notification_serializer.rb | 2 +- app/serializers/rest/status_serializer.rb | 9 ++ .../rest/v1/instance_serializer.rb | 1 + .../activitypub/fetch_references_service.rb | 49 +++++++++++ app/services/post_status_service.rb | 4 + app/services/process_references_service.rb | 86 +++++++++++++++++++ app/services/update_status_service.rb | 1 + app/workers/process_references_worker.rb | 11 +++ ...20230705232953_create_status_references.rb | 12 +++ ...tatus_referred_by_count_to_status_stats.rb | 13 +++ db/schema.rb | 21 +++-- 24 files changed, 321 insertions(+), 7 deletions(-) create mode 100644 app/models/status_reference.rb create mode 100644 app/services/activitypub/fetch_references_service.rb create mode 100644 app/services/process_references_service.rb create mode 100644 app/workers/process_references_worker.rb create mode 100644 db/migrate/20230705232953_create_status_references.rb create mode 100644 db/migrate/20230706031715_add_status_referred_by_count_to_status_stats.rb diff --git a/.rubocop.yml b/.rubocop.yml index 0ca5405170..74f79611fb 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -109,6 +109,7 @@ Metrics/ParameterLists: Metrics/PerceivedComplexity: Exclude: - 'app/policies/status_policy.rb' + - 'app/services/post_status_service.rb' # Reason: Prevailing style is argument file paths # https://docs.rubocop.org/rubocop-rails/cops_rails.html#railsfilepath diff --git a/app/javascript/mastodon/actions/notifications.js b/app/javascript/mastodon/actions/notifications.js index c9def4962d..25e4410c65 100644 --- a/app/javascript/mastodon/actions/notifications.js +++ b/app/javascript/mastodon/actions/notifications.js @@ -143,6 +143,7 @@ const excludeTypesFromFilter = filter => { 'favourite', 'emoji_reaction', 'reblog', + 'status_reference', 'mention', 'poll', 'status', diff --git a/app/javascript/mastodon/features/notifications/components/column_settings.jsx b/app/javascript/mastodon/features/notifications/components/column_settings.jsx index 0051f92ca7..e141039c96 100644 --- a/app/javascript/mastodon/features/notifications/components/column_settings.jsx +++ b/app/javascript/mastodon/features/notifications/components/column_settings.jsx @@ -152,6 +152,17 @@ export default class ColumnSettings extends PureComponent { +
+ + +
+ + {showPushSettings && } + + +
+
+
diff --git a/app/javascript/mastodon/features/notifications/components/filter_bar.jsx b/app/javascript/mastodon/features/notifications/components/filter_bar.jsx index f8d5fbaa47..7fcd63e110 100644 --- a/app/javascript/mastodon/features/notifications/components/filter_bar.jsx +++ b/app/javascript/mastodon/features/notifications/components/filter_bar.jsx @@ -10,6 +10,7 @@ const tooltips = defineMessages({ favourites: { id: 'notifications.filter.favourites', defaultMessage: 'Favourites' }, emojiReactions: { id: 'notifications.filter.emoji_reactions', defaultMessage: 'Stamps' }, boosts: { id: 'notifications.filter.boosts', defaultMessage: 'Boosts' }, + status_references: { id: 'notifications.filter.status_references', defaultMessage: 'Status references' }, polls: { id: 'notifications.filter.polls', defaultMessage: 'Poll results' }, follows: { id: 'notifications.filter.follows', defaultMessage: 'Follows' }, statuses: { id: 'notifications.filter.statuses', defaultMessage: 'Updates from people you follow' }, @@ -90,6 +91,13 @@ class FilterBar extends PureComponent { > +