From: Thibaut Girka Date: Thu, 19 Dec 2019 12:52:54 +0000 (+0100) Subject: Merge branch 'master' into glitch-soc/master X-Git-Url: https://git.xn--scling-oua.cat.family/?a=commitdiff_plain;h=ab5ff638f2968e3f434e504c7caab370bf71c9c0;p=mastodon.git Merge branch 'master' into glitch-soc/master Conflicts: - `config/locales/en.yml` No real conflict, upstream added a translatable string “too close” to one specific to glitch-soc - `lib/mastodon/statuses_cli.rb` Fixes made upstream, while changed in glitch-soc to keep bookmarked statuses - `package.json` No real conflict, additional dependency in glitch-soc --- ab5ff638f2968e3f434e504c7caab370bf71c9c0 diff --cc app/models/form/admin_settings.rb index 3398af169,390836f28..84a656864 --- a/app/models/form/admin_settings.rb +++ b/app/models/form/admin_settings.rb @@@ -16,9 -16,9 +16,10 @@@ class Form::AdminSetting open_deletion timeline_preview show_staff_badge + enable_bootstrap_timeline_accounts bootstrap_timeline_accounts - theme + flavour + skin min_invite_role activity_api_enabled peers_api_enabled diff --cc config/locales/en.yml index c505896e7,c7179d304..43c24fc4e --- a/config/locales/en.yml +++ b/config/locales/en.yml @@@ -453,9 -451,8 +452,11 @@@ en users: To logged-in local users domain_blocks_rationale: title: Show rationale + enable_bootstrap_timeline_accounts: + title: Enable default follows for new users + enable_keybase: + desc_html: Allow your users to prove their identity via keybase + title: Enable keybase integration hero: desc_html: Displayed on the frontpage. At least 600x100px recommended. When not set, falls back to server thumbnail title: Hero image diff --cc lib/mastodon/statuses_cli.rb index eeedc026c,74f15de5f..875183372 --- a/lib/mastodon/statuses_cli.rb +++ b/lib/mastodon/statuses_cli.rb @@@ -34,18 -35,26 +35,28 @@@ module Mastodo say('Beginning removal... This might take a while...') - Status.remote - .where('id < ?', max_id) - .where(reblog_of_id: nil) # Skip reblogs - .where(in_reply_to_id: nil) # Skip replies - .where('id NOT IN (SELECT status_pins.status_id FROM status_pins WHERE statuses.id = status_id)') # Skip statuses that are pinned on profiles - .where('id NOT IN (SELECT mentions.status_id FROM mentions WHERE statuses.id = mentions.status_id AND mentions.account_id IN (SELECT accounts.id FROM accounts WHERE domain IS NULL))') # Skip statuses that mention local accounts - .where('id NOT IN (SELECT statuses1.in_reply_to_id FROM statuses AS statuses1 WHERE statuses.id = statuses1.in_reply_to_id)') # Skip statuses favourited by local accounts - .where('id NOT IN (SELECT bookmarks.status_id FROM bookmarks WHERE statuses.id = bookmarks.status_id)') # Skip statuses bookmarked by local users - .where('id NOT IN (SELECT statuses1.reblog_of_id FROM statuses AS statuses1 WHERE statuses.id = statuses1.reblog_of_id AND statuses1.account_id IN (SELECT accounts.id FROM accounts WHERE accounts.domain IS NULL))') # Skip statuses reblogged by local accounts - .where('account_id NOT IN (SELECT follows.target_account_id FROM follows WHERE statuses.account_id = follows.target_account_id)') # Skip accounts followed by local accounts - .in_batches - .delete_all + scope = Status.remote.where('id < ?', max_id) + # Skip reblogs of local statuses + scope = scope.where('reblog_of_id NOT IN (SELECT statuses1.id FROM statuses AS statuses1 WHERE statuses1.id = statuses.reblog_of_id AND (statuses1.uri IS NULL OR statuses1.local))') + # Skip statuses that are pinned on profiles + scope = scope.where('id NOT IN (SELECT status_pins.status_id FROM status_pins WHERE statuses.id = status_id)') + # Skip statuses that mention local accounts + scope = scope.where('id NOT IN (SELECT mentions.status_id FROM mentions WHERE statuses.id = mentions.status_id AND mentions.account_id IN (SELECT accounts.id FROM accounts WHERE domain IS NULL))') + # Skip statuses which have replies + scope = scope.where('id NOT IN (SELECT statuses1.in_reply_to_id FROM statuses AS statuses1 WHERE statuses.id = statuses1.in_reply_to_id)') + # Skip statuses reblogged by local accounts or with recent boosts + scope = scope.where('id NOT IN (SELECT statuses1.reblog_of_id FROM statuses AS statuses1 WHERE statuses.id = statuses1.reblog_of_id AND (statuses1.uri IS NULL OR statuses1.local OR statuses1.id >= ?))', max_id) + # Skip statuses favourited by local users + scope = scope.where('id NOT IN (SELECT favourites.status_id FROM favourites WHERE statuses.id = favourites.status_id AND favourites.account_id IN (SELECT accounts.id FROM accounts WHERE domain IS NULL))') ++ # Skip statuses bookmarked by local users ++ scope = scope.where('id NOT IN (SELECT bookmarks.status_id FROM bookmarks WHERE statuses.id = bookmarks.status_id)') + + unless options[:clean_followed] + # Skip accounts followed by local accounts + scope = scope.where('account_id NOT IN (SELECT follows.target_account_id FROM follows WHERE statuses.account_id = follows.target_account_id)') + end + + scope.in_batches.delete_all say('Beginning removal of now-orphaned media attachments to free up disk space...') diff --cc package.json index 7c364d647,4f1cec636..6c059b7a5 --- a/package.json +++ b/package.json @@@ -70,8 -69,7 +70,8 @@@ "@babel/runtime": "^7.7.6", "@gamestdio/websocket": "^0.3.2", "@clusterws/cws": "^0.16.0", - "array-includes": "^3.0.3", + "array-includes": "^3.1.0", + "atrament": "^0.2.3", "arrow-key-navigation": "^1.1.0", "autoprefixer": "^9.7.3", "axios": "^0.19.0",