Merge pull request #2715 from ClearlyClaire/glitch-soc/merge-upstream

Merge upstream changes up to 89f89d738f
pull/2716/head
Claire 2024-05-21 17:44:40 +02:00 committed by GitHub
commit 40a3a3f3d8
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
10 changed files with 129 additions and 64 deletions

View File

@ -425,7 +425,7 @@ GEM
mime-types-data (3.2024.0507)
mini_mime (1.1.5)
mini_portile2 (2.8.6)
minitest (5.22.3)
minitest (5.23.0)
msgpack (1.7.2)
multi_json (1.15.0)
multipart-post (2.4.0)
@ -610,7 +610,7 @@ GEM
pundit (2.3.2)
activesupport (>= 3.0.0)
raabro (1.4.0)
racc (1.7.3)
racc (1.8.0)
rack (2.2.9)
rack-attack (6.7.0)
rack (>= 1.0, < 4)
@ -685,7 +685,7 @@ GEM
redis (>= 4)
redlock (1.3.2)
redis (>= 3.0.0, < 6.0)
regexp_parser (2.9.0)
regexp_parser (2.9.2)
reline (0.5.7)
io-console (~> 0.5)
request_store (1.6.0)
@ -746,7 +746,7 @@ GEM
rubocop-performance (1.21.0)
rubocop (>= 1.48.1, < 2.0)
rubocop-ast (>= 1.31.1, < 2.0)
rubocop-rails (2.24.1)
rubocop-rails (2.25.0)
activesupport (>= 4.2.0)
rack (>= 1.1)
rubocop (>= 1.33.0, < 2.0)

View File

@ -128,7 +128,7 @@ module Admin
def unblock_email
authorize @account, :unblock_email?
CanonicalEmailBlock.matching_account(@account).delete_all
CanonicalEmailBlock.where(reference_account: @account).delete_all
log_action :unblock_email, @account

View File

@ -50,6 +50,8 @@
"admin.dashboard.retention.cohort_size": "Mga bagong tagagamit",
"alert.rate_limited.message": "Mangyaring subukan muli pagkatapos ng {retry_time, time, medium}.",
"audio.hide": "Itago ang tunog",
"block_modal.show_less": "Magpakita ng mas kaunti",
"block_modal.show_more": "Magpakita ng higit pa",
"block_modal.title": "Harangan ang tagagamit?",
"bundle_column_error.error.title": "Naku!",
"bundle_column_error.network.body": "Nagkaroon ng kamalian habang sinusubukang i-karga ang pahinang ito. Maaaring dahil ito sa pansamantalang problema ng iyong koneksyon sa internet o ang server na ito.",
@ -102,6 +104,7 @@
"compose_form.encryption_warning": "Ang mga post sa Mastodon ay hindi naka-encrypt nang dulo-dulo. Huwag magbahagi ng anumang sensitibong impormasyon sa Mastodon.",
"compose_form.hashtag_warning": "Hindi maililista ang post na ito sa anumang hashtag dahil hindi ito nakapubliko. Mga nakapublikong post lamang ang mahahanap ayon sa hashtag.",
"compose_form.placeholder": "Anong nangyari?",
"compose_form.poll.duration": "Tagal ng botohan",
"compose_form.poll.multiple": "Maraming pagpipilian",
"compose_form.poll.single": "Piliin ang isa",
"compose_form.reply": "Tumugon",
@ -173,6 +176,7 @@
"empty_column.list": "Wala pang laman ang listahang ito. Kapag naglathala ng mga bagong post ang mga miyembro ng listahang ito, makikita iyon dito.",
"empty_column.lists": "Wala ka pang mga listahan. Kapag gumawa ka ng isa, makikita yun dito.",
"explore.search_results": "Mga resulta ng paghahanap",
"explore.suggested_follows": "Mga tao",
"explore.title": "Tuklasin",
"explore.trending_links": "Mga balita",
"filter_modal.select_filter.search": "Hanapin o gumawa",
@ -186,9 +190,13 @@
"follow_suggestions.who_to_follow": "Sinong maaaring sundan",
"footer.about": "Tungkol dito",
"footer.get_app": "Kunin ang app",
"footer.status": "Katayuan",
"generic.saved": "Nakaimbak",
"hashtag.column_header.tag_mode.all": "at {additional}",
"hashtag.column_header.tag_mode.any": "o {additional}",
"hashtag.column_settings.tag_mode.all": "Lahat ng nandito",
"hashtag.column_settings.tag_mode.any": "Ilan sa nandito",
"hashtag.column_settings.tag_mode.none": "Wala dito",
"home.column_settings.show_replies": "Ipakita ang mga tugon",
"home.pending_critical_update.body": "Mangyaring i-update ang iyong serbiro ng Mastodon sa lalong madaling panahon!",
"interaction_modal.login.action": "Iuwi mo ako",
@ -199,6 +207,7 @@
"intervals.full.days": "{number, plural, one {# araw} other {# na araw}}",
"intervals.full.hours": "{number, plural, one {# oras} other {# na oras}}",
"intervals.full.minutes": "{number, plural, one {# minuto} other {# na minuto}}",
"keyboard_shortcuts.blocked": "Buksan ang talaan ng mga nakaharang na mga tagagamit",
"keyboard_shortcuts.description": "Paglalarawan",
"keyboard_shortcuts.down": "Ilipat pababa sa talaan",
"keyboard_shortcuts.mention": "Banggitin ang may-akda",
@ -218,7 +227,10 @@
"navigation_bar.about": "Tungkol dito",
"navigation_bar.blocks": "Nakaharang na mga tagagamit",
"navigation_bar.direct": "Mga palihim na banggit",
"navigation_bar.discover": "Tuklasin",
"navigation_bar.explore": "Tuklasin",
"navigation_bar.favourites": "Mga paborito",
"navigation_bar.follow_requests": "Mga hiling sa pagsunod",
"navigation_bar.follows_and_followers": "Mga sinusundan at tagasunod",
"navigation_bar.lists": "Mga listahan",
"navigation_bar.search": "Maghanap",
@ -226,6 +238,7 @@
"notification.follow": "Sinundan ka ni {name}",
"notification.follow_request": "Hinihiling ni {name} na sundan ka",
"notification.mention": "Binanggit ka ni {name}",
"notification.moderation_warning": "Mayroong kang natanggap na babala sa pagtitimpi",
"notification.relationships_severance_event.learn_more": "Matuto nang higit pa",
"notification_requests.accept": "Tanggapin",
"notification_requests.notifications_from": "Mga abiso mula kay/sa {name}",
@ -246,6 +259,7 @@
"onboarding.profile.note_hint": "Maaari mong @bangitin ang ibang mga tao o mga #hashtag…",
"onboarding.profile.save_and_continue": "Iimbak at magpatuloy",
"onboarding.share.next_steps": "Mga posibleng susunod na hakbang:",
"picture_in_picture.restore": "Ilagay ito pabalik",
"poll.closed": "Sarado",
"poll.reveal": "Ipakita ang mga resulta",
"poll.voted": "Binoto mo para sa sagot na ito",

View File

@ -20,7 +20,6 @@ class CanonicalEmailBlock < ApplicationRecord
validates :canonical_email_hash, presence: true, uniqueness: true
scope :matching_email, ->(email) { where(canonical_email_hash: email_to_canonical_email_hash(email)) }
scope :matching_account, ->(account) { matching_email(account&.user_email).or(where(reference_account: account)) }
def to_log_human_identifier
canonical_email_hash

View File

@ -344,23 +344,23 @@ class Status < ApplicationRecord
# _from_me part does not require any timeline filters
query_from_me = where(account_id: account.id)
.where(Status.arel_table[:visibility].eq(3))
.direct_visibility
.limit(limit)
.order('statuses.id DESC')
.order(id: :desc)
# _to_me part requires mute and block filter.
# FIXME: may we check mutes.hide_notifications?
query_to_me = Status
.direct_visibility
.joins(:mentions)
.merge(Mention.where(account_id: account.id))
.where(Status.arel_table[:visibility].eq(3))
.where(mentions: { account_id: account.id })
.limit(limit)
.order('mentions.status_id DESC')
.not_excluded_by_account(account)
if max_id.present?
query_from_me = query_from_me.where('statuses.id < ?', max_id)
query_to_me = query_to_me.where('mentions.status_id < ?', max_id)
query_from_me = query_from_me.where(id: ...max_id)
query_to_me = query_to_me.where(mentions: { status_id: ...max_id })
end
if since_id.present?
@ -368,9 +368,9 @@ class Status < ApplicationRecord
query_to_me = query_to_me.where('mentions.status_id > ?', since_id)
end
# returns ActiveRecord.Relation
items = (query_from_me.select(:id).to_a + query_to_me.select(:id).to_a).uniq(&:id).sort_by(&:id).reverse.take(limit)
Status.where(id: items.map(&:id))
# TODO: use a single query?
ids = (query_from_me.pluck(:id) + query_to_me.pluck(:id)).sort.uniq.reverse.take(limit)
Status.where(id: ids)
end
def favourites_map(status_ids, account_id)

View File

@ -30,7 +30,7 @@
= render 'admin/accounts/counters', account: @account
- if @account.local? && @account.user.nil?
= link_to t('admin.accounts.unblock_email'), unblock_email_admin_account_path(@account.id), method: :post, class: 'button' if can?(:unblock_email, @account) && CanonicalEmailBlock.matching_account(@account).exists?
= link_to t('admin.accounts.unblock_email'), unblock_email_admin_account_path(@account.id), method: :post, class: 'button' if can?(:unblock_email, @account) && CanonicalEmailBlock.exists?(reference_account_id: @account.id)
- else
.table-wrapper
%table.table.inline-table

View File

@ -285,6 +285,7 @@ is:
update_custom_emoji_html: "%{name} uppfærði tjáningartáknið %{target}"
update_domain_block_html: "%{name} uppfærði útilokun lénsins %{target}"
update_ip_block_html: "%{name} breytti reglu fyrir IP-vistfangið %{target}"
update_report_html: "%{name} uppfærði kæru %{target}"
update_status_html: "%{name} uppfærði færslu frá %{target}"
update_user_role_html: "%{name} breytti hlutverki %{target}"
deleted_account: eyddur notandaaðgangur

View File

@ -618,7 +618,7 @@ lt:
settings: 'Keisti el. pašto nuostatas: %{link}'
view: 'Peržiūra:'
view_profile: Peržiurėti profilį
view_status: Peržiūrėti statusą
view_status: Peržiūrėti įrašą
applications:
created: Aplikacija sėkmingai sukurta
destroyed: Aplikacija sėkmingai ištrinta
@ -777,8 +777,8 @@ lt:
title: Moderacija
notification_mailer:
favourite:
body: 'Jūsų statusą pamėgo %{name}:'
subject: "%{name} pamėgo Jūsų statusą"
body: 'Tavo įrašą pamėgo %{name}:'
subject: "%{name} pamėgo tavo įrašą"
title: Naujas mėgstamas
follow:
body: "%{name} pradėjo jus sekti!"

View File

@ -1,6 +1,6 @@
# frozen_string_literal: true
Fabricator(:canonical_email_block) do
email { |attrs| attrs[:reference_account] ? attrs[:reference_account].user_email : sequence(:email) { |i| "#{i}#{Faker::Internet.email}" } }
email { sequence(:email) { |i| "#{i}#{Faker::Internet.email}" } }
reference_account { Fabricate.build(:account) }
end

139
yarn.lock
View File

@ -2259,6 +2259,16 @@ __metadata:
languageName: node
linkType: hard
"@formatjs/ecma402-abstract@npm:2.0.0":
version: 2.0.0
resolution: "@formatjs/ecma402-abstract@npm:2.0.0"
dependencies:
"@formatjs/intl-localematcher": "npm:0.5.4"
tslib: "npm:^2.4.0"
checksum: 10c0/94cba291aeadffa3ca416087c2c2352c8a741bb4dcb7f47f15c247b1f043ffcef1af5b20a1b7578fbba9e704fc5f1c079923f3537a273d50162be62f8037625c
languageName: node
linkType: hard
"@formatjs/fast-memoize@npm:2.2.0":
version: 2.2.0
resolution: "@formatjs/fast-memoize@npm:2.2.0"
@ -2279,6 +2289,17 @@ __metadata:
languageName: node
linkType: hard
"@formatjs/icu-messageformat-parser@npm:2.7.8":
version: 2.7.8
resolution: "@formatjs/icu-messageformat-parser@npm:2.7.8"
dependencies:
"@formatjs/ecma402-abstract": "npm:2.0.0"
"@formatjs/icu-skeleton-parser": "npm:1.8.2"
tslib: "npm:^2.4.0"
checksum: 10c0/a3b759a825fb22ffd7b906f6a07b1a079bbc34f72c745de2c2514e439c4bb75bc1a9442eba1bac7ff3ea3010e12076374cd755ad12116b1d066cc90da5fbcbc9
languageName: node
linkType: hard
"@formatjs/icu-skeleton-parser@npm:1.8.0":
version: 1.8.0
resolution: "@formatjs/icu-skeleton-parser@npm:1.8.0"
@ -2289,25 +2310,35 @@ __metadata:
languageName: node
linkType: hard
"@formatjs/intl-displaynames@npm:6.6.6":
version: 6.6.6
resolution: "@formatjs/intl-displaynames@npm:6.6.6"
"@formatjs/icu-skeleton-parser@npm:1.8.2":
version: 1.8.2
resolution: "@formatjs/icu-skeleton-parser@npm:1.8.2"
dependencies:
"@formatjs/ecma402-abstract": "npm:1.18.2"
"@formatjs/intl-localematcher": "npm:0.5.4"
"@formatjs/ecma402-abstract": "npm:2.0.0"
tslib: "npm:^2.4.0"
checksum: 10c0/4ba40057cfafaabf04485137bc96705d5ed7ac48f17ed7dfe8dbd7f71119667b6c0b7fa75469e32b70c9bada2c5d03af37a5261d655a37b81c63ba907edbb2e8
checksum: 10c0/9b15013acc47b8d560b52942e3dab2abaaa9c5a4410bbd1d490a4b22bf5ca36fdd88b71f241d05479bddf856d0d1d57b7ecc9e79738497ac518616aa6d4d0015
languageName: node
linkType: hard
"@formatjs/intl-listformat@npm:7.5.5":
version: 7.5.5
resolution: "@formatjs/intl-listformat@npm:7.5.5"
"@formatjs/intl-displaynames@npm:6.6.8":
version: 6.6.8
resolution: "@formatjs/intl-displaynames@npm:6.6.8"
dependencies:
"@formatjs/ecma402-abstract": "npm:1.18.2"
"@formatjs/ecma402-abstract": "npm:2.0.0"
"@formatjs/intl-localematcher": "npm:0.5.4"
tslib: "npm:^2.4.0"
checksum: 10c0/bc9d8cbe42bd9513db0b2b221c0b1a752892005a90fa629b4cf7df1cbd3b96997cddbf420e562ebdfdc691a28d9b759ccae9633d5987aa0bceed5aef77a07ca4
checksum: 10c0/1a03e7644022741c1bcf10fcd07da88c434416a13603ace693a038114010463307b4130d3a3f53ad5665bd27fca9a6b19ac8e5bf58e17598b1ea84db173fdfbb
languageName: node
linkType: hard
"@formatjs/intl-listformat@npm:7.5.7":
version: 7.5.7
resolution: "@formatjs/intl-listformat@npm:7.5.7"
dependencies:
"@formatjs/ecma402-abstract": "npm:2.0.0"
"@formatjs/intl-localematcher": "npm:0.5.4"
tslib: "npm:^2.4.0"
checksum: 10c0/5d0478752d669d87c82aa80880df464d64a1c8974fcb6136bc854567f570a1696e5468005ffa266cfcb623adb7c7299b839c06ea33897f55d35dab6a7575cc84
languageName: node
linkType: hard
@ -2321,33 +2352,33 @@ __metadata:
linkType: hard
"@formatjs/intl-pluralrules@npm:^5.2.2":
version: 5.2.12
resolution: "@formatjs/intl-pluralrules@npm:5.2.12"
version: 5.2.14
resolution: "@formatjs/intl-pluralrules@npm:5.2.14"
dependencies:
"@formatjs/ecma402-abstract": "npm:1.18.2"
"@formatjs/ecma402-abstract": "npm:2.0.0"
"@formatjs/intl-localematcher": "npm:0.5.4"
tslib: "npm:^2.4.0"
checksum: 10c0/0f4d9f4f272dd962b2f742519045ad43a1b6358755787d3394efcc5884b02184cc8d76fb13d98b1f30c41a813b81f82dd2342e1fb0fbd7b7efa69f5d0d59c4d0
checksum: 10c0/3c00109c8d4c8b221c2b9af38a38d31cd6293a0a412a1f2cdae2b8ef81bd71626c9ff4a647389682cb27ae5c223bd6f64ef54d03e3f6f19c372e0c6194b76b38
languageName: node
linkType: hard
"@formatjs/intl@npm:2.10.2":
version: 2.10.2
resolution: "@formatjs/intl@npm:2.10.2"
"@formatjs/intl@npm:2.10.4":
version: 2.10.4
resolution: "@formatjs/intl@npm:2.10.4"
dependencies:
"@formatjs/ecma402-abstract": "npm:1.18.2"
"@formatjs/ecma402-abstract": "npm:2.0.0"
"@formatjs/fast-memoize": "npm:2.2.0"
"@formatjs/icu-messageformat-parser": "npm:2.7.6"
"@formatjs/intl-displaynames": "npm:6.6.6"
"@formatjs/intl-listformat": "npm:7.5.5"
intl-messageformat: "npm:10.5.12"
"@formatjs/icu-messageformat-parser": "npm:2.7.8"
"@formatjs/intl-displaynames": "npm:6.6.8"
"@formatjs/intl-listformat": "npm:7.5.7"
intl-messageformat: "npm:10.5.14"
tslib: "npm:^2.4.0"
peerDependencies:
typescript: ^4.7 || 5
peerDependenciesMeta:
typescript:
optional: true
checksum: 10c0/20df407e141055e8c7b2605c06e952b643be7ea01d992862e13fc623ca2db034069744eae2be16655bf7888b3add1bfc2653fd0a08bcfdb67fb9b72a306f7718
checksum: 10c0/ca7877e962f73f1fe0e358f12d73bdc3ec4006c14ee801e06d9f7aef06bcdcc12355a8f53f32b0e890f829949ded35e825c914ca5f4709eb1e08c2a18c1368c2
languageName: node
linkType: hard
@ -2371,6 +2402,26 @@ __metadata:
languageName: node
linkType: hard
"@formatjs/ts-transformer@npm:3.13.14":
version: 3.13.14
resolution: "@formatjs/ts-transformer@npm:3.13.14"
dependencies:
"@formatjs/icu-messageformat-parser": "npm:2.7.8"
"@types/json-stable-stringify": "npm:^1.0.32"
"@types/node": "npm:14 || 16 || 17"
chalk: "npm:^4.0.0"
json-stable-stringify: "npm:^1.0.1"
tslib: "npm:^2.4.0"
typescript: "npm:5"
peerDependencies:
ts-jest: ">=27"
peerDependenciesMeta:
ts-jest:
optional: true
checksum: 10c0/38450cfce3ec5132f3548c1e9ab098909ca8d2db2b8b6b4b5bb87aa59a4ca1a19bbf6d339ace39bcc931fa80d9946b4c7cf039c9574069b317ae015cd6963bd3
languageName: node
linkType: hard
"@gamestdio/websocket@npm:^0.3.2":
version: 0.3.2
resolution: "@gamestdio/websocket@npm:0.3.2"
@ -5207,21 +5258,21 @@ __metadata:
linkType: hard
"babel-plugin-formatjs@npm:^10.5.1":
version: 10.5.14
resolution: "babel-plugin-formatjs@npm:10.5.14"
version: 10.5.16
resolution: "babel-plugin-formatjs@npm:10.5.16"
dependencies:
"@babel/core": "npm:^7.10.4"
"@babel/helper-plugin-utils": "npm:^7.10.4"
"@babel/plugin-syntax-jsx": "npm:7"
"@babel/traverse": "npm:7"
"@babel/types": "npm:^7.12.11"
"@formatjs/icu-messageformat-parser": "npm:2.7.6"
"@formatjs/ts-transformer": "npm:3.13.12"
"@formatjs/icu-messageformat-parser": "npm:2.7.8"
"@formatjs/ts-transformer": "npm:3.13.14"
"@types/babel__core": "npm:^7.1.7"
"@types/babel__helper-plugin-utils": "npm:^7.10.0"
"@types/babel__traverse": "npm:^7.1.7"
tslib: "npm:^2.4.0"
checksum: 10c0/78d33f0304c7b6e36334b2f32bacd144cbbe08cb22318ff994e7adc7705b7f8208354c9af9f87b4390d11aee1ea81cfee9f224a57fe5265173b92ee7de921359
checksum: 10c0/03d9d2b0b9cdc05c011bfb417a43e5c0f557868ed84d83acbc3cb9072b7fa98f5219473d0bd61f02741c151d6f2162da363bd337522c80af14721ae37f6da86b
languageName: node
linkType: hard
@ -9667,15 +9718,15 @@ __metadata:
languageName: node
linkType: hard
"intl-messageformat@npm:10.5.12, intl-messageformat@npm:^10.3.5":
version: 10.5.12
resolution: "intl-messageformat@npm:10.5.12"
"intl-messageformat@npm:10.5.14, intl-messageformat@npm:^10.3.5":
version: 10.5.14
resolution: "intl-messageformat@npm:10.5.14"
dependencies:
"@formatjs/ecma402-abstract": "npm:1.18.2"
"@formatjs/ecma402-abstract": "npm:2.0.0"
"@formatjs/fast-memoize": "npm:2.2.0"
"@formatjs/icu-messageformat-parser": "npm:2.7.6"
"@formatjs/icu-messageformat-parser": "npm:2.7.8"
tslib: "npm:^2.4.0"
checksum: 10c0/f95734e98a05ef7f51de0c27904d3a994528e3a174963bd1b3a6db9416b5fd84bbd8f7d26d84fc547d51af69ccf46dd3f73a3f4f20a2ccef5c9cd90e946ad82c
checksum: 10c0/8ec0a60539f67039356e211bcc8d81cf1bd9d62190a72ab0e94504da92f0242fe2f94ffb512b97cc6f63782b7891874d4038536ce04631e59d762c3441c60b4b
languageName: node
linkType: hard
@ -14377,18 +14428,18 @@ __metadata:
linkType: hard
"react-intl@npm:^6.4.2":
version: 6.6.6
resolution: "react-intl@npm:6.6.6"
version: 6.6.8
resolution: "react-intl@npm:6.6.8"
dependencies:
"@formatjs/ecma402-abstract": "npm:1.18.2"
"@formatjs/icu-messageformat-parser": "npm:2.7.6"
"@formatjs/intl": "npm:2.10.2"
"@formatjs/intl-displaynames": "npm:6.6.6"
"@formatjs/intl-listformat": "npm:7.5.5"
"@formatjs/ecma402-abstract": "npm:2.0.0"
"@formatjs/icu-messageformat-parser": "npm:2.7.8"
"@formatjs/intl": "npm:2.10.4"
"@formatjs/intl-displaynames": "npm:6.6.8"
"@formatjs/intl-listformat": "npm:7.5.7"
"@types/hoist-non-react-statics": "npm:^3.3.1"
"@types/react": "npm:16 || 17 || 18"
hoist-non-react-statics: "npm:^3.3.2"
intl-messageformat: "npm:10.5.12"
intl-messageformat: "npm:10.5.14"
tslib: "npm:^2.4.0"
peerDependencies:
react: ^16.6.0 || 17 || 18
@ -14396,7 +14447,7 @@ __metadata:
peerDependenciesMeta:
typescript:
optional: true
checksum: 10c0/04c1d1ca783f2a5e605544290c93e57629500be6811d7c2c3342903bf9f9a720d2e4c9cf3924133bf84e510ee879bf3d870a3ff269f5b197f894a49047bd089d
checksum: 10c0/7673507eb73ad4edd1593da7173cec68f316cf77037e0959900babd32d5984a39ba7fa10aaa0a23bcddb7b98daf7dd007cb73ddfc39127ede87c18ec780a519c
languageName: node
linkType: hard