From 590b7b2bb5527bb566a4163526f1b27b3f2a6ec5 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Fri, 3 Jan 2025 02:52:58 -0500 Subject: [PATCH 1/8] Use bundler version 2.6.2 (#33436) --- Gemfile | 4 ++-- Gemfile.lock | 32 ++++++++++++++++---------------- 2 files changed, 18 insertions(+), 18 deletions(-) diff --git a/Gemfile b/Gemfile index b626b5511c49bd..8bee3716478fa6 100644 --- a/Gemfile +++ b/Gemfile @@ -79,7 +79,7 @@ gem 'redis', '~> 4.5', require: ['redis', 'redis/connection/hiredis'] gem 'redis-namespace', '~> 1.10' gem 'rqrcode', '~> 2.2' gem 'ruby-progressbar', '~> 1.13' -gem 'sanitize', '~> 6.0' +gem 'sanitize', '~> 7.0' gem 'scenic', '~> 1.7' gem 'sidekiq', '~> 6.5' gem 'sidekiq-bulk', '~> 0.2.0' @@ -183,7 +183,7 @@ group :development do gem 'letter_opener_web', '~> 3.0' # Security analysis CLI tools - gem 'brakeman', '~> 6.0', require: false + gem 'brakeman', '~> 7.0', require: false gem 'bundler-audit', '~> 0.9', require: false # Linter CLI for HAML files diff --git a/Gemfile.lock b/Gemfile.lock index a18c5a7882a406..956680b6cd8774 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -94,8 +94,8 @@ GEM ast (2.4.2) attr_required (1.0.2) aws-eventstream (1.3.0) - aws-partitions (1.1025.0) - aws-sdk-core (3.214.0) + aws-partitions (1.1029.0) + aws-sdk-core (3.214.1) aws-eventstream (~> 1, >= 1.3.0) aws-partitions (~> 1, >= 1.992.0) aws-sigv4 (~> 1.9) @@ -126,7 +126,7 @@ GEM blurhash (0.1.8) bootsnap (1.18.4) msgpack (~> 1.2) - brakeman (6.2.2) + brakeman (7.0.0) racc browser (6.2.0) brpoplpush-redis_script (0.1.3) @@ -217,7 +217,7 @@ GEM htmlentities (~> 4.3.3) launchy (>= 2.1, < 4.0) mail (~> 2.7) - erubi (1.13.0) + erubi (1.13.1) et-orbi (1.2.11) tzinfo excon (0.112.0) @@ -234,7 +234,7 @@ GEM net-http (>= 0.5.0) fast_blank (1.0.1) fastimage (2.3.1) - ffi (1.17.0) + ffi (1.17.1) ffi-compiler (1.3.2) ffi (>= 1.15.5) rake @@ -390,7 +390,7 @@ GEM activesupport (>= 4) railties (>= 4) request_store (~> 1.0) - loofah (2.23.1) + loofah (2.24.0) crass (~> 1.0.2) nokogiri (>= 1.12.0) mail (2.8.1) @@ -415,7 +415,7 @@ GEM mutex_m (0.3.0) net-http (0.5.0) uri - net-imap (0.5.2) + net-imap (0.5.4) date net-protocol net-ldap (0.19.0) @@ -426,10 +426,10 @@ GEM net-smtp (0.5.0) net-protocol nio4r (2.7.4) - nokogiri (1.17.2) + nokogiri (1.18.1) mini_portile2 (~> 2.8.2) racc (~> 1.4) - oj (3.16.8) + oj (3.16.9) bigdecimal (>= 3.0) ostruct (>= 0.2) omniauth (2.1.2) @@ -608,7 +608,7 @@ GEM rack rack-session (1.0.2) rack (< 3) - rack-test (2.1.0) + rack-test (2.2.0) rack (>= 1.3) rackup (1.0.1) rack (< 3) @@ -749,9 +749,9 @@ GEM fugit (~> 1.1, >= 1.11.1) safety_net_attestation (0.4.0) jwt (~> 2.0) - sanitize (6.1.3) + sanitize (7.0.0) crass (~> 1.0.2) - nokogiri (>= 1.12.0) + nokogiri (>= 1.16.8) scenic (1.8.0) activerecord (>= 4.0.0) railties (>= 4.0.0) @@ -811,7 +811,7 @@ GEM climate_control test-prof (1.4.3) thor (1.3.2) - tilt (2.4.0) + tilt (2.5.0) timeout (0.4.3) tpm-key_attestation (0.12.1) bindata (~> 2.4) @@ -891,7 +891,7 @@ DEPENDENCIES binding_of_caller (~> 1.0) blurhash (~> 0.1) bootsnap (~> 1.18.0) - brakeman (~> 6.0) + brakeman (~> 7.0) browser bundler-audit (~> 0.9) capybara (~> 3.39) @@ -1007,7 +1007,7 @@ DEPENDENCIES ruby-progressbar (~> 1.13) ruby-vips (~> 2.2) rubyzip (~> 2.3) - sanitize (~> 6.0) + sanitize (~> 7.0) scenic (~> 1.7) selenium-webdriver shoulda-matchers @@ -1037,4 +1037,4 @@ RUBY VERSION ruby 3.3.6p108 BUNDLED WITH - 2.6.1 + 2.6.2 From a8a16695f18dbca5de7a5bf619a803782fc75506 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 3 Jan 2025 08:53:00 +0100 Subject: [PATCH 2/8] New Crowdin Translations (automated) (#33439) Co-authored-by: GitHub Actions --- app/javascript/mastodon/locales/da.json | 1 + app/javascript/mastodon/locales/de.json | 3 ++- app/javascript/mastodon/locales/eo.json | 1 + app/javascript/mastodon/locales/es-AR.json | 1 + app/javascript/mastodon/locales/es-MX.json | 1 + app/javascript/mastodon/locales/es.json | 1 + app/javascript/mastodon/locales/et.json | 31 +++++++++++++++++----- app/javascript/mastodon/locales/fi.json | 1 + app/javascript/mastodon/locales/fo.json | 1 + app/javascript/mastodon/locales/fr-CA.json | 1 + app/javascript/mastodon/locales/fr.json | 1 + app/javascript/mastodon/locales/hu.json | 1 + app/javascript/mastodon/locales/it.json | 1 + app/javascript/mastodon/locales/lt.json | 1 + app/javascript/mastodon/locales/nl.json | 1 + app/javascript/mastodon/locales/ro.json | 25 ++++++++++++++++- app/javascript/mastodon/locales/sq.json | 1 + app/javascript/mastodon/locales/tr.json | 1 + app/javascript/mastodon/locales/uk.json | 1 + app/javascript/mastodon/locales/zh-CN.json | 1 + app/javascript/mastodon/locales/zh-TW.json | 3 ++- config/locales/activerecord.et.yml | 5 ++++ config/locales/activerecord.eu.yml | 5 ++++ config/locales/doorkeeper.et.yml | 6 ++--- config/locales/et.yml | 28 +++++++++++++++---- config/locales/simple_form.et.yml | 3 +++ 26 files changed, 108 insertions(+), 18 deletions(-) diff --git a/app/javascript/mastodon/locales/da.json b/app/javascript/mastodon/locales/da.json index dce0679982ff44..335f80557617ab 100644 --- a/app/javascript/mastodon/locales/da.json +++ b/app/javascript/mastodon/locales/da.json @@ -835,6 +835,7 @@ "status.reblogs.empty": "Ingen har endnu fremhævet dette indlæg. Når nogen gør, vil det fremgå hér.", "status.redraft": "Slet og omformulér", "status.remove_bookmark": "Fjern bogmærke", + "status.remove_favourite": "Fjern fra favoritter", "status.replied_in_thread": "Svaret i tråd", "status.replied_to": "Besvarede {name}", "status.reply": "Besvar", diff --git a/app/javascript/mastodon/locales/de.json b/app/javascript/mastodon/locales/de.json index b0650a27cb295a..967e7a1fe8e65b 100644 --- a/app/javascript/mastodon/locales/de.json +++ b/app/javascript/mastodon/locales/de.json @@ -177,7 +177,7 @@ "compose_form.hashtag_warning": "Dieser Beitrag wird unter keinem Hashtag sichtbar sein, weil er nicht öffentlich ist. Nur öffentliche Beiträge können nach Hashtags durchsucht werden.", "compose_form.lock_disclaimer": "Dein Profil ist nicht {locked}. Andere können dir folgen und deine Beiträge sehen, die nur für Follower bestimmt sind.", "compose_form.lock_disclaimer.lock": "geschützt", - "compose_form.placeholder": "Was gibt’s Neues?", + "compose_form.placeholder": "Was gibts Neues?", "compose_form.poll.duration": "Umfragedauer", "compose_form.poll.multiple": "Mehrfachauswahl", "compose_form.poll.option_placeholder": "{number}. Auswahl", @@ -836,6 +836,7 @@ "status.reblogs.empty": "Diesen Beitrag hat bisher noch niemand geteilt. Sobald es jemand tut, wird das Profil hier erscheinen.", "status.redraft": "Löschen und neu erstellen", "status.remove_bookmark": "Lesezeichen entfernen", + "status.remove_favourite": "Aus Favoriten entfernen", "status.replied_in_thread": "Antwortete im Thread", "status.replied_to": "Antwortete {name}", "status.reply": "Antworten", diff --git a/app/javascript/mastodon/locales/eo.json b/app/javascript/mastodon/locales/eo.json index 19ac7c34c7a267..6f5da03daf789f 100644 --- a/app/javascript/mastodon/locales/eo.json +++ b/app/javascript/mastodon/locales/eo.json @@ -836,6 +836,7 @@ "status.reblogs.empty": "Ankoraŭ neniu diskonigis tiun afiŝon. Kiam iu faras tion, ri aperos ĉi tie.", "status.redraft": "Forigi kaj reskribi", "status.remove_bookmark": "Forigi legosignon", + "status.remove_favourite": "Forigi el plej ŝatataj", "status.replied_in_thread": "Respondis en fadeno", "status.replied_to": "Respondis al {name}", "status.reply": "Respondi", diff --git a/app/javascript/mastodon/locales/es-AR.json b/app/javascript/mastodon/locales/es-AR.json index a4ee54ac464c33..3e2e7966913657 100644 --- a/app/javascript/mastodon/locales/es-AR.json +++ b/app/javascript/mastodon/locales/es-AR.json @@ -836,6 +836,7 @@ "status.reblogs.empty": "Todavía nadie adhirió a este mensaje. Cuando alguien lo haga, se mostrará acá.", "status.redraft": "Eliminar mensaje original y editarlo", "status.remove_bookmark": "Quitar marcador", + "status.remove_favourite": "Quitar de favoritos", "status.replied_in_thread": "Respuesta en hilo", "status.replied_to": "Respondió a {name}", "status.reply": "Responder", diff --git a/app/javascript/mastodon/locales/es-MX.json b/app/javascript/mastodon/locales/es-MX.json index 8f3034b5b8c37d..ab65bbb6d45778 100644 --- a/app/javascript/mastodon/locales/es-MX.json +++ b/app/javascript/mastodon/locales/es-MX.json @@ -836,6 +836,7 @@ "status.reblogs.empty": "Nadie impulsó esta publicación todavía. Cuando alguien lo haga, aparecerá aquí.", "status.redraft": "Borrar y volver a borrador", "status.remove_bookmark": "Eliminar marcador", + "status.remove_favourite": "Eliminar de favoritos", "status.replied_in_thread": "Respondido en el hilo", "status.replied_to": "Respondió a {name}", "status.reply": "Responder", diff --git a/app/javascript/mastodon/locales/es.json b/app/javascript/mastodon/locales/es.json index 9957af7d0bb0d2..82f858f6673c74 100644 --- a/app/javascript/mastodon/locales/es.json +++ b/app/javascript/mastodon/locales/es.json @@ -836,6 +836,7 @@ "status.reblogs.empty": "Nadie ha impulsado esta publicación todavía. Cuando alguien lo haga, aparecerá aquí.", "status.redraft": "Borrar y volver a borrador", "status.remove_bookmark": "Eliminar marcador", + "status.remove_favourite": "Eliminar de favoritos", "status.replied_in_thread": "Respondió en el hilo", "status.replied_to": "Respondió a {name}", "status.reply": "Responder", diff --git a/app/javascript/mastodon/locales/et.json b/app/javascript/mastodon/locales/et.json index 2235ca6463b806..fb97f553743a70 100644 --- a/app/javascript/mastodon/locales/et.json +++ b/app/javascript/mastodon/locales/et.json @@ -12,7 +12,7 @@ "about.powered_by": "Hajutatud sotsiaalmeedia, mille taga on {mastodon}", "about.rules": "Serveri reeglid", "account.account_note_header": "Isiklik märge", - "account.add_or_remove_from_list": "Lisa või Eemalda nimekirjadest", + "account.add_or_remove_from_list": "Lisa või Eemalda loeteludest", "account.badges.bot": "Robot", "account.badges.group": "Grupp", "account.block": "Blokeeri @{name}", @@ -150,7 +150,7 @@ "column.follow_requests": "Jälgimistaotlused", "column.home": "Kodu", "column.list_members": "Halda loendi liikmeid", - "column.lists": "Nimekirjad", + "column.lists": "Loetelud", "column.mutes": "Vaigistatud kasutajad", "column.notifications": "Teated", "column.pins": "Kinnitatud postitused", @@ -426,7 +426,7 @@ "intervals.full.hours": "{number, plural, one {# tund} other {# tundi}}", "intervals.full.minutes": "{number, plural, one {# minut} other {# minutit}}", "keyboard_shortcuts.back": "Liigu tagasi", - "keyboard_shortcuts.blocked": "avamaks blokeeritud kasutajate nimistut", + "keyboard_shortcuts.blocked": "Ava blokeeritud kasutajate nimistu", "keyboard_shortcuts.boost": "Jaga", "keyboard_shortcuts.column": "Fookus veerule", "keyboard_shortcuts.compose": "Fookus teksti koostamise alale", @@ -474,14 +474,27 @@ "lists.add_to_lists": "Lisa {name} loetellu", "lists.create": "Loo", "lists.create_a_list_to_organize": "Loo uus loetelu, et organiseerida oma avalehe lõime", - "lists.delete": "Kustuta nimekiri", - "lists.edit": "Muuda nimekirja", + "lists.create_list": "Loo loetelu", + "lists.delete": "Kustuta loetelu", + "lists.done": "Valmis", + "lists.edit": "Muuda loetelu", + "lists.exclusive": "Peida avalehelt liikmed", + "lists.exclusive_hint": "Kui keegi on selles loetelus, peida ta avalehe lõimest, vältimaks tema postituste kaks korda nägemist.", + "lists.find_users_to_add": "Leia kasutajaid, keda lisada", + "lists.list_members": "Loetelu liikmed", + "lists.list_members_count": "{count, plural, one {# liige} other {# liiget}}", + "lists.list_name": "Loetelu nimi", + "lists.new_list_name": "Loetelu uus nimi", + "lists.no_lists_yet": "Pole veel loetelusid.", "lists.no_members_yet": "Pole veel liikmeid.", + "lists.no_results_found": "Ei leidnud tulemusi.", + "lists.remove_member": "Eemalda", "lists.replies_policy.followed": "Igalt jälgitud kasutajalt", - "lists.replies_policy.list": "Listi liikmetelt", + "lists.replies_policy.list": "Loetelu liikmetelt", "lists.replies_policy.none": "Mitte kelleltki", "lists.save": "Salvesta", "lists.search": "Otsi", + "lists.show_replies_to": "Kaasa ka loetelu liikmete vastused", "load_pending": "{count, plural, one {# uus kirje} other {# uut kirjet}}", "loading_indicator.label": "Laadimine…", "media_gallery.hide": "Peida", @@ -511,7 +524,7 @@ "navigation_bar.follow_requests": "Jälgimistaotlused", "navigation_bar.followed_tags": "Jälgitavad märksõnad", "navigation_bar.follows_and_followers": "Jälgitavad ja jälgijad", - "navigation_bar.lists": "Nimekirjad", + "navigation_bar.lists": "Loetelud", "navigation_bar.logout": "Logi välja", "navigation_bar.moderation": "Modereerimine", "navigation_bar.mutes": "Vaigistatud kasutajad", @@ -636,7 +649,11 @@ "notifications_permission_banner.enable": "Luba töölaua märguanded", "notifications_permission_banner.how_to_control": "Et saada teateid, ajal mil Mastodon pole avatud, luba töölauamärguanded. Saad täpselt määrata, mis tüüpi tegevused tekitavad märguandeid, kasutates peale teadaannete sisse lülitamist üleval olevat nuppu {icon}.", "notifications_permission_banner.title": "Ära jää millestki ilma", + "onboarding.follows.back": "Tagasi", + "onboarding.follows.done": "Valmis", "onboarding.follows.empty": "Kahjuks ei saa hetkel tulemusi näidata. Proovi kasutada otsingut või lehitse uurimise lehte, et leida inimesi, keda jälgida, või proovi hiljem uuesti.", + "onboarding.follows.search": "Otsi", + "onboarding.follows.title": "Jälgi inimesi, et alustada", "onboarding.profile.discoverable": "Muuda mu profiil avastatavaks", "onboarding.profile.discoverable_hint": "Kui nõustud enda avastamisega Mastodonis, võivad sinu postitused ilmuda otsingutulemustes ja trendides ning sinu profiili võidakse soovitada sinuga sarnaste huvidega inimestele.", "onboarding.profile.display_name": "Näidatav nimi", diff --git a/app/javascript/mastodon/locales/fi.json b/app/javascript/mastodon/locales/fi.json index a52a64c9c72708..e445473d05daab 100644 --- a/app/javascript/mastodon/locales/fi.json +++ b/app/javascript/mastodon/locales/fi.json @@ -835,6 +835,7 @@ "status.reblogs.empty": "Kukaan ei ole vielä tehostanut tätä julkaisua. Kun joku tekee niin, tulee hän tähän näkyviin.", "status.redraft": "Poista ja palauta muokattavaksi", "status.remove_bookmark": "Poista kirjanmerkki", + "status.remove_favourite": "Poista suosikeista", "status.replied_in_thread": "Vastasi ketjuun", "status.replied_to": "Vastaus käyttäjälle {name}", "status.reply": "Vastaa", diff --git a/app/javascript/mastodon/locales/fo.json b/app/javascript/mastodon/locales/fo.json index d71e5076eb1b6a..ff354adf7fb4d3 100644 --- a/app/javascript/mastodon/locales/fo.json +++ b/app/javascript/mastodon/locales/fo.json @@ -835,6 +835,7 @@ "status.reblogs.empty": "Eingin hevur stimbrað hendan postin enn. Tá onkur stimbrar postin, verður hann sjónligur her.", "status.redraft": "Strika & ger nýggja kladdu", "status.remove_bookmark": "Gloym", + "status.remove_favourite": "Strika í yndismerkjum", "status.replied_in_thread": "Svaraði í tráðnum", "status.replied_to": "Svaraði {name}", "status.reply": "Svara", diff --git a/app/javascript/mastodon/locales/fr-CA.json b/app/javascript/mastodon/locales/fr-CA.json index 6e94eb813abf84..488a5f3eef3901 100644 --- a/app/javascript/mastodon/locales/fr-CA.json +++ b/app/javascript/mastodon/locales/fr-CA.json @@ -836,6 +836,7 @@ "status.reblogs.empty": "Personne n’a encore boosté cette publication. Lorsque quelqu’un le fera, elle apparaîtra ici.", "status.redraft": "Supprimer et réécrire", "status.remove_bookmark": "Retirer des signets", + "status.remove_favourite": "Retirer des favoris", "status.replied_in_thread": "A répondu dans un fil de discussion", "status.replied_to": "A répondu à {name}", "status.reply": "Répondre", diff --git a/app/javascript/mastodon/locales/fr.json b/app/javascript/mastodon/locales/fr.json index 1bc0e2722d4c3a..731c15e36c778c 100644 --- a/app/javascript/mastodon/locales/fr.json +++ b/app/javascript/mastodon/locales/fr.json @@ -836,6 +836,7 @@ "status.reblogs.empty": "Personne n’a encore partagé ce message. Lorsque quelqu’un le fera, il apparaîtra ici.", "status.redraft": "Supprimer et réécrire", "status.remove_bookmark": "Retirer des marque-pages", + "status.remove_favourite": "Retirer des favoris", "status.replied_in_thread": "A répondu dans un fil de discussion", "status.replied_to": "En réponse à {name}", "status.reply": "Répondre", diff --git a/app/javascript/mastodon/locales/hu.json b/app/javascript/mastodon/locales/hu.json index e215597f0526a8..c07b7c48cbadad 100644 --- a/app/javascript/mastodon/locales/hu.json +++ b/app/javascript/mastodon/locales/hu.json @@ -836,6 +836,7 @@ "status.reblogs.empty": "Senki sem tolta még meg ezt a bejegyzést. Ha valaki megteszi, itt fog megjelenni.", "status.redraft": "Törlés és újraírás", "status.remove_bookmark": "Könyvjelző eltávolítása", + "status.remove_favourite": "Eltávolítás a kedvencek közül", "status.replied_in_thread": "Válaszolva a szálban", "status.replied_to": "Megválaszolva {name} számára", "status.reply": "Válasz", diff --git a/app/javascript/mastodon/locales/it.json b/app/javascript/mastodon/locales/it.json index a924169c839dd6..09e6ea072a0152 100644 --- a/app/javascript/mastodon/locales/it.json +++ b/app/javascript/mastodon/locales/it.json @@ -836,6 +836,7 @@ "status.reblogs.empty": "Ancora nessuno ha rebloggato questo post. Quando qualcuno lo farà, apparirà qui.", "status.redraft": "Elimina e riscrivi", "status.remove_bookmark": "Rimuovi segnalibro", + "status.remove_favourite": "Rimuovi dai preferiti", "status.replied_in_thread": "Ha risposto nella discussione", "status.replied_to": "Risposta a {name}", "status.reply": "Rispondi", diff --git a/app/javascript/mastodon/locales/lt.json b/app/javascript/mastodon/locales/lt.json index 1d67b47b427884..d83c7fae1435f6 100644 --- a/app/javascript/mastodon/locales/lt.json +++ b/app/javascript/mastodon/locales/lt.json @@ -821,6 +821,7 @@ "status.reblogs.empty": "Šio įrašo dar niekas nepakėlė. Kai kas nors tai padarys, jie bus rodomi čia.", "status.redraft": "Ištrinti ir parengti iš naujo", "status.remove_bookmark": "Pašalinti žymę", + "status.remove_favourite": "Šalinti iš mėgstamų", "status.replied_in_thread": "Atsakyta gijoje", "status.replied_to": "Atsakyta į {name}", "status.reply": "Atsakyti", diff --git a/app/javascript/mastodon/locales/nl.json b/app/javascript/mastodon/locales/nl.json index 051ecb00a0b53d..c99c92eceb4f69 100644 --- a/app/javascript/mastodon/locales/nl.json +++ b/app/javascript/mastodon/locales/nl.json @@ -836,6 +836,7 @@ "status.reblogs.empty": "Niemand heeft dit bericht nog geboost. Wanneer iemand dit doet, valt dat hier te zien.", "status.redraft": "Verwijderen en herschrijven", "status.remove_bookmark": "Bladwijzer verwijderen", + "status.remove_favourite": "Verwijderen uit favorieten", "status.replied_in_thread": "Reageerde in gesprek", "status.replied_to": "Reageerde op {name}", "status.reply": "Reageren", diff --git a/app/javascript/mastodon/locales/ro.json b/app/javascript/mastodon/locales/ro.json index 76c63d1a63a89b..3d8bff2ed13ee3 100644 --- a/app/javascript/mastodon/locales/ro.json +++ b/app/javascript/mastodon/locales/ro.json @@ -11,6 +11,7 @@ "about.not_available": "Această informație nu a fost pusă la dispoziție pe acest server.", "about.powered_by": "Media socială descentralizată furnizată de {mastodon}", "about.rules": "Reguli server", + "account.account_note_header": "Notă personală", "account.add_or_remove_from_list": "Adaugă sau elimină din liste", "account.badges.bot": "Robot", "account.badges.group": "Grup", @@ -29,11 +30,13 @@ "account.featured_tags.last_status_at": "Ultima postare pe {date}", "account.featured_tags.last_status_never": "Fără postări", "account.featured_tags.title": "Haștagurile recomandate de {name}", - "account.follow": "Abonează-te", + "account.follow": "Urmărește", "account.follow_back": "Urmăreşte înapoi", "account.followers": "Urmăritori", "account.followers.empty": "Acest utilizator nu are încă urmăritori.", + "account.followers_counter": "{count, plural, one {{counter} urmăritor} few {{counter} urmăritori} other {{counter} urmăritori}}", "account.following": "Urmăriți", + "account.following_counter": "{count, plural, one {{counter} urmărit} few {{counter} urmărit} other {{counter} urmărit}}", "account.follows.empty": "Momentan acest utilizator nu are niciun abonament.", "account.go_to_profile": "Mergi la profil", "account.hide_reblogs": "Ascunde distribuirile de la @{name}", @@ -49,6 +52,7 @@ "account.mute_notifications_short": "Amuțește notificările", "account.mute_short": "Ignoră", "account.muted": "Pus pe silențios", + "account.mutual": "Mutual", "account.no_bio": "Nicio descriere furnizată.", "account.open_original_page": "Deschide pagina originală", "account.posts": "Postări", @@ -58,12 +62,14 @@ "account.requested_follow": "{name} A cerut să vă urmărească", "account.share": "Distribuie profilul lui @{name}", "account.show_reblogs": "Afișează distribuirile de la @{name}", + "account.statuses_counter": "{count, plural, one {{counter} postare} few {{counter} postări} other {{counter} postări}}", "account.unblock": "Deblochează pe @{name}", "account.unblock_domain": "Deblochează domeniul {domain}", "account.unblock_short": "Deblochează", "account.unendorse": "Nu promova pe profil", "account.unfollow": "Nu mai urmări", "account.unmute": "Nu mai ignora pe @{name}", + "account.unmute_notifications_short": "Dezamuțire notificări", "account.unmute_short": "Reafișare", "account_note.placeholder": "Click to add a note", "admin.dashboard.daily_retention": "Rata de retenţie a utilizatorului pe zi după înregistrare", @@ -71,12 +77,29 @@ "admin.dashboard.retention.average": "În medie", "admin.dashboard.retention.cohort": "Înregistrări lunar", "admin.dashboard.retention.cohort_size": "Utilizatori noi", + "admin.impact_report.instance_followers": "Urmăritori pe care utilizatorii noștri i-ar pierde", + "admin.impact_report.instance_follows": "Urmăritori pe care utilizatorii lor i-ar pierde", "admin.impact_report.title": "Rezumatul impactului", "alert.rate_limited.message": "Vă rugăm să reîncercați după {retry_time, time, medium}.", "alert.rate_limited.title": "Debit limitat", "alert.unexpected.message": "A apărut o eroare neașteptată.", "alert.unexpected.title": "Ups!", + "alt_text_badge.title": "Text alternativ", "announcement.announcement": "Anunț", + "annual_report.summary.archetype.lurker": "Pânditorul", + "annual_report.summary.archetype.oracle": "Oracolul", + "annual_report.summary.archetype.pollster": "Sondatorul", + "annual_report.summary.archetype.replier": "Fluturele social", + "annual_report.summary.followers.followers": "urmăritori", + "annual_report.summary.followers.total": "{count} total", + "annual_report.summary.here_it_is": "Iată rezumatul dvs. al anului {year}:", + "annual_report.summary.highlighted_post.by_favourites": "cea mai favorizată postare", + "annual_report.summary.highlighted_post.by_reblogs": "cea mai boostată postare", + "annual_report.summary.highlighted_post.by_replies": "postarea cu cele mai multe răspunsuri", + "annual_report.summary.most_used_app.most_used_app": "cea mai utilizată aplicație", + "annual_report.summary.most_used_hashtag.most_used_hashtag": "cel mai utilizat hashtag", + "annual_report.summary.most_used_hashtag.none": "Niciunul", + "annual_report.summary.new_posts.new_posts": "postări noi", "attachments_list.unprocessed": "(neprocesate)", "audio.hide": "Ascunde audio", "boost_modal.combo": "Poți apăsa {combo} pentru a sări peste asta data viitoare", diff --git a/app/javascript/mastodon/locales/sq.json b/app/javascript/mastodon/locales/sq.json index b13402afa40ea3..8bf529e0d4c42d 100644 --- a/app/javascript/mastodon/locales/sq.json +++ b/app/javascript/mastodon/locales/sq.json @@ -831,6 +831,7 @@ "status.reblogs.empty": "Këtë mesazh s’e ka përforcuar njeri deri tani. Kur ta bëjë dikush, kjo do të duket këtu.", "status.redraft": "Fshijeni & rihartojeni", "status.remove_bookmark": "Hiqe faqerojtësin", + "status.remove_favourite": "Hiqe nga të parapëlqyerat", "status.replied_in_thread": "U përgjigj te rrjedha", "status.replied_to": "Iu përgjigj {name}", "status.reply": "Përgjigjuni", diff --git a/app/javascript/mastodon/locales/tr.json b/app/javascript/mastodon/locales/tr.json index 787f9bfb4e03b3..d57bf5e22f5543 100644 --- a/app/javascript/mastodon/locales/tr.json +++ b/app/javascript/mastodon/locales/tr.json @@ -836,6 +836,7 @@ "status.reblogs.empty": "Henüz hiç kimse bu gönderiyi yeniden paylaşmadı. Herhangi bir kullanıcı yeniden paylaştığında burada görüntülenecek.", "status.redraft": "Sil,Düzenle ve yeniden-paylaş", "status.remove_bookmark": "Yer işaretini kaldır", + "status.remove_favourite": "Favorilerden kaldır", "status.replied_in_thread": "Akışta yanıtlandı", "status.replied_to": "{name} kullanıcısına yanıt verdi", "status.reply": "Yanıtla", diff --git a/app/javascript/mastodon/locales/uk.json b/app/javascript/mastodon/locales/uk.json index 830b6fa1073de4..9d20c27fd08558 100644 --- a/app/javascript/mastodon/locales/uk.json +++ b/app/javascript/mastodon/locales/uk.json @@ -802,6 +802,7 @@ "status.reblogs.empty": "Ніхто ще не поширив цей допис. Коли хтось це зроблять, вони будуть зображені тут.", "status.redraft": "Видалити та виправити", "status.remove_bookmark": "Видалити закладку", + "status.remove_favourite": "Видалити з улюблених", "status.replied_in_thread": "Відповідь у потоці", "status.replied_to": "Відповідь для {name}", "status.reply": "Відповісти", diff --git a/app/javascript/mastodon/locales/zh-CN.json b/app/javascript/mastodon/locales/zh-CN.json index 954ec1472d3cde..3e4530f44bc4ab 100644 --- a/app/javascript/mastodon/locales/zh-CN.json +++ b/app/javascript/mastodon/locales/zh-CN.json @@ -836,6 +836,7 @@ "status.reblogs.empty": "还没有人转嘟过此条嘟文。转嘟此嘟文的人会显示在这里。", "status.redraft": "删除并重新编辑", "status.remove_bookmark": "取消收藏", + "status.remove_favourite": "从喜欢列表中移除", "status.replied_in_thread": "回复嘟文串", "status.replied_to": "回复 {name}", "status.reply": "回复", diff --git a/app/javascript/mastodon/locales/zh-TW.json b/app/javascript/mastodon/locales/zh-TW.json index ee7fca08cebbd4..05f23a43ea32ce 100644 --- a/app/javascript/mastodon/locales/zh-TW.json +++ b/app/javascript/mastodon/locales/zh-TW.json @@ -835,7 +835,8 @@ "status.reblogs": "{count, plural, other {則轉嘟}}", "status.reblogs.empty": "還沒有人轉嘟過這則嘟文。當有人轉嘟時,它將於此顯示。", "status.redraft": "刪除並重新編輯", - "status.remove_bookmark": "移除書籤", + "status.remove_bookmark": "自書籤中移除", + "status.remove_favourite": "自最愛中移除", "status.replied_in_thread": "於討論串中回覆", "status.replied_to": "回覆 {name}", "status.reply": "回覆", diff --git a/config/locales/activerecord.et.yml b/config/locales/activerecord.et.yml index 7af2c362db7b79..520e97ffb4a149 100644 --- a/config/locales/activerecord.et.yml +++ b/config/locales/activerecord.et.yml @@ -39,6 +39,11 @@ et: attributes: data: malformed: on vigasel kujul + list_account: + attributes: + account_id: + taken: on juba loetelus + must_be_following: peab olema jälgitav konto status: attributes: reblog: diff --git a/config/locales/activerecord.eu.yml b/config/locales/activerecord.eu.yml index 6e388b4a5559ba..a2458ceb417780 100644 --- a/config/locales/activerecord.eu.yml +++ b/config/locales/activerecord.eu.yml @@ -15,6 +15,11 @@ eu: user/invite_request: text: Arrazoia errors: + attributes: + domain: + invalid: ez da domeinu izen baliogarria + messages: + invalid_domain_on_line: "%{value} ez da domeinu izen baliogarria" models: account: attributes: diff --git a/config/locales/doorkeeper.et.yml b/config/locales/doorkeeper.et.yml index fb135b1f96cf3b..b21afa9a791c1a 100644 --- a/config/locales/doorkeeper.et.yml +++ b/config/locales/doorkeeper.et.yml @@ -132,7 +132,7 @@ et: filters: Filtrid follow: Jälgitavad, Vaigistatud ja Blokeeritud follows: Jälgimised - lists: Nimekirjad + lists: Loetelud media: Lisatud meedia mutes: Vaigistused notifications: Teavitused @@ -176,7 +176,7 @@ et: read:favourites: näha sinu lemmikuid read:filters: näha su filtreid read:follows: näha su jälgimisi - read:lists: näha su nimekirju + read:lists: näha su loetelusid read:mutes: näha su vaigistusi read:notifications: näha teateid read:reports: näha teavitusi @@ -190,7 +190,7 @@ et: write:favourites: lisada postitusi lemmikuks write:filters: luua filtreid write:follows: jälgida inimesi - write:lists: luua nimekirju + write:lists: luua loetelusid write:media: üles laadida meediafaile write:mutes: vaigista inimesi ja vestluseid write:notifications: tühjendada teateid diff --git a/config/locales/et.yml b/config/locales/et.yml index 2f182d08b2fb1f..5d83333da8e530 100644 --- a/config/locales/et.yml +++ b/config/locales/et.yml @@ -335,7 +335,7 @@ et: enabled_msg: Selle emotikoni lubamine õnnestus image_hint: PNG või GIF suurusega kuni %{size} list: Loend - listed: Nimekirjastatud + listed: Loetletud new: title: Lisa uus emotikon no_emoji_selected: Emotikone ei muudetud, kuna ühtegi polnud valitud @@ -345,8 +345,8 @@ et: shortcode_hint: Vähemalt 2 tähemärki, ainult tähted, numbrid ja alakriipsud title: Emotikonid uncategorized: Kategoriseerimata - unlist: Kirjendamata - unlisted: Kirjendamata + unlist: Loetlemata + unlisted: Loetlemata update_failed_msg: Ei saanud seda emotikoni uuendada updated_msg: Emotikoni uuendamine õnnestus! upload: Lae üles @@ -828,12 +828,17 @@ et: media: title: Meedia metadata: Metaandmed + no_history: Seda postitust pole muudetud no_status_selected: Ühtegi postitust ei muudetud, sest ühtegi polnud valitud open: Ava postitus original_status: Algne postitus reblogs: Jagamised + replied_to_html: Vastatud %{acct_link} status_changed: Muudetud postitus + status_title: Postitajaks @%{name} + title: Postitus kontolt - @%{name} trending: Populaarne + view_publicly: Nähtav avalikult visibility: Nähtavus with_media: Meediaga strikes: @@ -910,6 +915,19 @@ et: search: Otsi title: Märksõnad updated_msg: Sildi sätted edukalt uuendatud + terms_of_service: + back: Tagasi teenuse tingimustesse + changelog: Mis on muutunud + create: Kasuta enda oma + current: Praegune + draft: Mustand + generate: Kasuta malli + generates: + action: Genereeri + chance_to_review_html: "Loodud teenusetingimusi ei avaldata automaatselt. Sul on võimalus tulemused üle vaadata. Palun täida vajalikud andmed, et jätkata." + explanation_html: Esitatud teenusetingimuste näidis on mõeldud ainult teavitamise eesmärgil ja seda ei tohiks tõlgendada kui juriidilist nõuannet mis tahes küsimuses. Palun konsulteeri olukorra ja konkreetsete juriidiliste küsimuste osas oma õigusnõustajaga. + title: Teenuse tingimuste seadistamine + history: Ajalugu title: Administreerimine trends: allow: Luba @@ -1275,7 +1293,7 @@ et: bookmarks: Järjehoidjad csv: CSV domain_blocks: Domeeni blokeeringud - lists: Nimekirjad + lists: Loetelud mutes: Oled vaigistanud storage: Meedia hoidla featured_tags: @@ -1776,7 +1794,7 @@ et: private_long: Näevad ainult jälgijad public: Avalik public_long: Postitused on kõigile näha - unlisted: Kirjendamata + unlisted: Loetlemata unlisted_long: Kõigile näha, kuid ei näidata avalikel ajajoontel statuses_cleanup: enabled: Vanade postituste automaatne kustutamine diff --git a/config/locales/simple_form.et.yml b/config/locales/simple_form.et.yml index 690661cd49f7e1..2f421b97b57426 100644 --- a/config/locales/simple_form.et.yml +++ b/config/locales/simple_form.et.yml @@ -128,6 +128,9 @@ et: show_application: Sa saad sõltumata sellest vaadata, milline äpp su postituse postitas. tag: name: Saad muuta ainult tähtede suurtähelisust, näiteks selleks, et muuta seda loetavamaks + terms_of_service_generator: + dmca_address: USA operaatorite puhul kasuta DMCA määratud esindajate kataloogis registreeritud aadressi. Postkastide loetelu on saadaval otsese taotluse korral. Kasuta DMCA määratud esindaja postkastist loobumise taotlust, et saata e-kiri autoriõiguse ametile ja kirjeldada, et oled kodus asuv sisu moderaator, kes kardab kättemaksu või kättemaksu oma tegevuse eest ja vajab postkasti, et eemaldada oma kodune aadress avalikust nähtavusest. + jurisdiction: Nimeta riik, kus elab see, kes arveid maksab. Kui tegemist on äriühingu või muu üksusega, märgi riik, kus see on asutatud, ning vajaduse korral linn, piirkond, territoorium või osariik. user: chosen_languages: Keelte valimisel näidatakse avalikel ajajoontel ainult neis keeltes postitusi role: Rollid määravad, millised õigused kasutajal on. From 7cbdcd7b3fa10d67a22b1cbe3977166d0bef0fe7 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Fri, 3 Jan 2025 03:28:14 -0500 Subject: [PATCH 3/8] Add role-specific user fabricators (#33437) --- .../admin/account_actions_controller_spec.rb | 2 +- spec/controllers/admin/accounts_controller_spec.rb | 4 ++-- .../controllers/admin/action_logs_controller_spec.rb | 2 +- spec/controllers/admin/base_controller_spec.rb | 6 +++--- .../admin/change_emails_controller_spec.rb | 2 +- .../admin/confirmations_controller_spec.rb | 2 +- spec/controllers/admin/dashboard_controller_spec.rb | 2 +- .../admin/disputes/appeals_controller_spec.rb | 6 +++--- .../admin/domain_blocks_controller_spec.rb | 2 +- .../admin/email_domain_blocks_controller_spec.rb | 2 +- .../admin/export_domain_allows_controller_spec.rb | 2 +- .../admin/export_domain_blocks_controller_spec.rb | 2 +- .../admin/follow_recommendations_controller_spec.rb | 2 +- spec/controllers/admin/instances_controller_spec.rb | 2 +- .../admin/relationships_controller_spec.rb | 2 +- .../admin/reports/actions_controller_spec.rb | 2 +- spec/controllers/admin/reports_controller_spec.rb | 2 +- .../admin/settings/branding_controller_spec.rb | 2 +- .../admin/site_uploads_controller_spec.rb | 2 +- spec/controllers/admin/statuses_controller_spec.rb | 2 +- .../distributions_controller_spec.rb | 2 +- .../admin/terms_of_service/drafts_controller_spec.rb | 2 +- .../terms_of_service/generates_controller_spec.rb | 2 +- .../terms_of_service/histories_controller_spec.rb | 2 +- .../terms_of_service/previews_controller_spec.rb | 2 +- .../admin/terms_of_service/tests_controller_spec.rb | 2 +- .../admin/terms_of_service_controller_spec.rb | 2 +- .../links/preview_card_providers_controller_spec.rb | 2 +- .../admin/trends/links_controller_spec.rb | 2 +- .../admin/trends/statuses_controller_spec.rb | 2 +- .../controllers/admin/trends/tags_controller_spec.rb | 2 +- .../two_factor_authentications_controller_spec.rb | 2 +- .../admin/warning_presets_controller_spec.rb | 2 +- .../admin/webhooks/secrets_controller_spec.rb | 2 +- spec/fabricators/user_fabricator.rb | 12 ++++++++++++ spec/models/admin/account_action_spec.rb | 2 +- spec/models/form/account_batch_spec.rb | 2 +- spec/models/form/custom_emoji_batch_spec.rb | 2 +- spec/models/user_spec.rb | 4 ++-- spec/models/webhook_spec.rb | 2 +- spec/policies/account_moderation_note_policy_spec.rb | 2 +- spec/policies/account_policy_spec.rb | 6 +++--- spec/policies/account_warning_policy_spec.rb | 2 +- spec/policies/account_warning_preset_policy_spec.rb | 2 +- spec/policies/admin/status_policy_spec.rb | 2 +- spec/policies/announcement_policy_spec.rb | 2 +- spec/policies/appeal_policy_spec.rb | 2 +- spec/policies/audit_log_policy_spec.rb | 2 +- spec/policies/canonical_email_block_policy_spec.rb | 2 +- spec/policies/custom_emoji_policy_spec.rb | 2 +- spec/policies/dashboard_policy_spec.rb | 2 +- spec/policies/delivery_policy_spec.rb | 2 +- spec/policies/domain_allow_policy_spec.rb | 2 +- spec/policies/domain_block_policy_spec.rb | 2 +- spec/policies/email_domain_block_policy_spec.rb | 2 +- spec/policies/follow_recommendation_policy_spec.rb | 2 +- spec/policies/instance_policy_spec.rb | 2 +- spec/policies/invite_policy_spec.rb | 2 +- spec/policies/ip_block_policy_spec.rb | 2 +- spec/policies/preview_card_policy_spec.rb | 2 +- spec/policies/preview_card_provider_policy_spec.rb | 2 +- spec/policies/relay_policy_spec.rb | 2 +- spec/policies/report_note_policy_spec.rb | 2 +- spec/policies/report_policy_spec.rb | 2 +- spec/policies/rule_policy_spec.rb | 2 +- spec/policies/settings_policy_spec.rb | 2 +- spec/policies/software_update_policy_spec.rb | 2 +- spec/policies/status_policy_spec.rb | 2 +- spec/policies/tag_policy_spec.rb | 2 +- spec/policies/terms_of_service_policy_spec.rb | 2 +- spec/policies/user_policy_spec.rb | 2 +- spec/policies/user_role_policy_spec.rb | 2 +- spec/policies/webhook_policy_spec.rb | 2 +- spec/requests/api/v1/admin/dimensions_spec.rb | 2 +- spec/requests/api/v1/admin/measures_spec.rb | 2 +- spec/requests/api/v1/admin/retention_spec.rb | 2 +- spec/requests/api/v1/reports_spec.rb | 2 +- spec/requests/cache_spec.rb | 2 +- spec/services/appeal_service_spec.rb | 2 +- spec/services/software_update_check_service_spec.rb | 2 +- spec/support/system_helpers.rb | 2 +- spec/system/admin/account_moderation_notes_spec.rb | 2 +- spec/system/admin/accounts_spec.rb | 2 +- spec/system/admin/announcements_spec.rb | 2 +- spec/system/admin/custom_emojis_spec.rb | 2 +- spec/system/admin/domain_allows_spec.rb | 2 +- spec/system/admin/domain_blocks_spec.rb | 2 +- spec/system/admin/email_domain_blocks_spec.rb | 2 +- spec/system/admin/invites_spec.rb | 2 +- spec/system/admin/ip_blocks_spec.rb | 2 +- spec/system/admin/relays_spec.rb | 2 +- spec/system/admin/report_notes_spec.rb | 2 +- spec/system/admin/reset_spec.rb | 2 +- spec/system/admin/rules_spec.rb | 2 +- spec/system/admin/software_updates_spec.rb | 2 +- spec/system/admin/statuses_spec.rb | 2 +- spec/system/admin/tags_spec.rb | 2 +- spec/system/admin/terms_of_service_spec.rb | 2 +- .../trends/links/preview_card_providers_spec.rb | 2 +- spec/system/admin/trends/links_spec.rb | 2 +- spec/system/admin/trends/statuses_spec.rb | 2 +- spec/system/admin/trends/tags_spec.rb | 2 +- spec/system/admin/webhooks_spec.rb | 2 +- spec/system/disputes/appeals_spec.rb | 2 +- .../auto_close_registrations_scheduler_spec.rb | 4 ++-- 105 files changed, 125 insertions(+), 113 deletions(-) diff --git a/spec/controllers/admin/account_actions_controller_spec.rb b/spec/controllers/admin/account_actions_controller_spec.rb index d513b3d4a09261..fabe5cef4d19cb 100644 --- a/spec/controllers/admin/account_actions_controller_spec.rb +++ b/spec/controllers/admin/account_actions_controller_spec.rb @@ -5,7 +5,7 @@ RSpec.describe Admin::AccountActionsController do render_views - let(:user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) } + let(:user) { Fabricate(:admin_user) } before do sign_in user, scope: :user diff --git a/spec/controllers/admin/accounts_controller_spec.rb b/spec/controllers/admin/accounts_controller_spec.rb index a1823001067388..72ca2275cf41a0 100644 --- a/spec/controllers/admin/accounts_controller_spec.rb +++ b/spec/controllers/admin/accounts_controller_spec.rb @@ -8,7 +8,7 @@ before { sign_in current_user, scope: :user } describe 'GET #index' do - let(:current_user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) } + let(:current_user) { Fabricate(:admin_user) } let(:params) do { origin: 'local', @@ -53,7 +53,7 @@ def accounts_table_rows end describe 'GET #show' do - let(:current_user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) } + let(:current_user) { Fabricate(:admin_user) } describe 'account moderation notes' do let(:account) { Fabricate(:account) } diff --git a/spec/controllers/admin/action_logs_controller_spec.rb b/spec/controllers/admin/action_logs_controller_spec.rb index 3daf2606729fcb..d3108e80554545 100644 --- a/spec/controllers/admin/action_logs_controller_spec.rb +++ b/spec/controllers/admin/action_logs_controller_spec.rb @@ -16,7 +16,7 @@ describe 'GET #index' do it 'returns 200' do - sign_in Fabricate(:user, role: UserRole.find_by(name: 'Admin')) + sign_in Fabricate(:admin_user) get :index, params: { page: 1 } expect(response).to have_http_status(200) diff --git a/spec/controllers/admin/base_controller_spec.rb b/spec/controllers/admin/base_controller_spec.rb index 8b8b7fe63d931d..6e78ccb3b156eb 100644 --- a/spec/controllers/admin/base_controller_spec.rb +++ b/spec/controllers/admin/base_controller_spec.rb @@ -20,7 +20,7 @@ def success it 'returns private cache control headers' do routes.draw { get 'success' => 'admin/base#success' } - sign_in(Fabricate(:user, role: UserRole.find_by(name: 'Moderator'))) + sign_in(Fabricate(:moderator_user)) get :success expect(response.headers['Cache-Control']).to include('private, no-store') @@ -28,14 +28,14 @@ def success it 'renders admin layout as a moderator' do routes.draw { get 'success' => 'admin/base#success' } - sign_in(Fabricate(:user, role: UserRole.find_by(name: 'Moderator'))) + sign_in(Fabricate(:moderator_user)) get :success expect(response).to render_template layout: 'admin' end it 'renders admin layout as an admin' do routes.draw { get 'success' => 'admin/base#success' } - sign_in(Fabricate(:user, role: UserRole.find_by(name: 'Admin'))) + sign_in(Fabricate(:admin_user)) get :success expect(response).to render_template layout: 'admin' end diff --git a/spec/controllers/admin/change_emails_controller_spec.rb b/spec/controllers/admin/change_emails_controller_spec.rb index dd8a764b64326f..899106e54e51ee 100644 --- a/spec/controllers/admin/change_emails_controller_spec.rb +++ b/spec/controllers/admin/change_emails_controller_spec.rb @@ -5,7 +5,7 @@ RSpec.describe Admin::ChangeEmailsController do render_views - let(:admin) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) } + let(:admin) { Fabricate(:admin_user) } before do sign_in admin diff --git a/spec/controllers/admin/confirmations_controller_spec.rb b/spec/controllers/admin/confirmations_controller_spec.rb index 59ea0121cacc9b..22035d15e692e7 100644 --- a/spec/controllers/admin/confirmations_controller_spec.rb +++ b/spec/controllers/admin/confirmations_controller_spec.rb @@ -6,7 +6,7 @@ render_views before do - sign_in Fabricate(:user, role: UserRole.find_by(name: 'Admin')), scope: :user + sign_in Fabricate(:admin_user), scope: :user end describe 'POST #create' do diff --git a/spec/controllers/admin/dashboard_controller_spec.rb b/spec/controllers/admin/dashboard_controller_spec.rb index 9177be4b6dc2cb..5a1ea848cc9da4 100644 --- a/spec/controllers/admin/dashboard_controller_spec.rb +++ b/spec/controllers/admin/dashboard_controller_spec.rb @@ -6,7 +6,7 @@ render_views describe 'GET #index' do - let(:user) { Fabricate(:user, role: UserRole.find_by(name: 'Owner')) } + let(:user) { Fabricate(:owner_user) } before do stub_system_checks diff --git a/spec/controllers/admin/disputes/appeals_controller_spec.rb b/spec/controllers/admin/disputes/appeals_controller_spec.rb index 678ceee1158eb1..b67ee30f74b188 100644 --- a/spec/controllers/admin/disputes/appeals_controller_spec.rb +++ b/spec/controllers/admin/disputes/appeals_controller_spec.rb @@ -16,7 +16,7 @@ let(:appeal) { Fabricate(:appeal, strike: strike, account: target_account) } describe 'GET #index' do - let(:current_user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) } + let(:current_user) { Fabricate(:admin_user) } before { appeal } @@ -32,7 +32,7 @@ describe 'POST #approve' do subject { post :approve, params: { id: appeal.id } } - let(:current_user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) } + let(:current_user) { Fabricate(:admin_user) } it 'redirects back to the strike page and notifies target account about approved appeal', :inline_jobs do emails = capture_emails { subject } @@ -56,7 +56,7 @@ describe 'POST #reject' do subject { post :reject, params: { id: appeal.id } } - let(:current_user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) } + let(:current_user) { Fabricate(:admin_user) } it 'redirects back to the strike page and notifies target account about rejected appeal', :inline_jobs do emails = capture_emails { subject } diff --git a/spec/controllers/admin/domain_blocks_controller_spec.rb b/spec/controllers/admin/domain_blocks_controller_spec.rb index a99ca6c641c672..4d48a0d9d3e2b1 100644 --- a/spec/controllers/admin/domain_blocks_controller_spec.rb +++ b/spec/controllers/admin/domain_blocks_controller_spec.rb @@ -6,7 +6,7 @@ render_views before do - sign_in Fabricate(:user, role: UserRole.find_by(name: 'Admin')), scope: :user + sign_in Fabricate(:admin_user), scope: :user end describe 'GET #new' do diff --git a/spec/controllers/admin/email_domain_blocks_controller_spec.rb b/spec/controllers/admin/email_domain_blocks_controller_spec.rb index 4de3ef0f62b7ef..c7460c21101f25 100644 --- a/spec/controllers/admin/email_domain_blocks_controller_spec.rb +++ b/spec/controllers/admin/email_domain_blocks_controller_spec.rb @@ -6,7 +6,7 @@ render_views before do - sign_in Fabricate(:user, role: UserRole.find_by(name: 'Admin')), scope: :user + sign_in Fabricate(:admin_user), scope: :user end describe 'GET #index' do diff --git a/spec/controllers/admin/export_domain_allows_controller_spec.rb b/spec/controllers/admin/export_domain_allows_controller_spec.rb index 0a5639419333a2..dcb1f55a99ec3f 100644 --- a/spec/controllers/admin/export_domain_allows_controller_spec.rb +++ b/spec/controllers/admin/export_domain_allows_controller_spec.rb @@ -6,7 +6,7 @@ render_views before do - sign_in Fabricate(:user, role: UserRole.find_by(name: 'Admin')), scope: :user + sign_in Fabricate(:admin_user), scope: :user end describe 'GET #new' do diff --git a/spec/controllers/admin/export_domain_blocks_controller_spec.rb b/spec/controllers/admin/export_domain_blocks_controller_spec.rb index 564f5a88c51027..442f3e5a1570bd 100644 --- a/spec/controllers/admin/export_domain_blocks_controller_spec.rb +++ b/spec/controllers/admin/export_domain_blocks_controller_spec.rb @@ -6,7 +6,7 @@ render_views before do - sign_in Fabricate(:user, role: UserRole.find_by(name: 'Admin')), scope: :user + sign_in Fabricate(:admin_user), scope: :user end describe 'GET #new' do diff --git a/spec/controllers/admin/follow_recommendations_controller_spec.rb b/spec/controllers/admin/follow_recommendations_controller_spec.rb index d614f2ef43d4f0..82446cd4670b93 100644 --- a/spec/controllers/admin/follow_recommendations_controller_spec.rb +++ b/spec/controllers/admin/follow_recommendations_controller_spec.rb @@ -5,7 +5,7 @@ RSpec.describe Admin::FollowRecommendationsController do render_views - let(:user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) } + let(:user) { Fabricate(:admin_user) } before do sign_in user, scope: :user diff --git a/spec/controllers/admin/instances_controller_spec.rb b/spec/controllers/admin/instances_controller_spec.rb index 1e65373e1f5365..83655bafa0a9c7 100644 --- a/spec/controllers/admin/instances_controller_spec.rb +++ b/spec/controllers/admin/instances_controller_spec.rb @@ -5,7 +5,7 @@ RSpec.describe Admin::InstancesController do render_views - let(:current_user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) } + let(:current_user) { Fabricate(:admin_user) } let!(:account_popular_main) { Fabricate(:account, domain: 'popular') } diff --git a/spec/controllers/admin/relationships_controller_spec.rb b/spec/controllers/admin/relationships_controller_spec.rb index 214be7c7cd212e..1d300459f69068 100644 --- a/spec/controllers/admin/relationships_controller_spec.rb +++ b/spec/controllers/admin/relationships_controller_spec.rb @@ -5,7 +5,7 @@ RSpec.describe Admin::RelationshipsController do render_views - let(:user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) } + let(:user) { Fabricate(:admin_user) } before do sign_in user, scope: :user diff --git a/spec/controllers/admin/reports/actions_controller_spec.rb b/spec/controllers/admin/reports/actions_controller_spec.rb index 6185702c303811..87a48a7a3a0a0b 100644 --- a/spec/controllers/admin/reports/actions_controller_spec.rb +++ b/spec/controllers/admin/reports/actions_controller_spec.rb @@ -5,7 +5,7 @@ RSpec.describe Admin::Reports::ActionsController do render_views - let(:user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) } + let(:user) { Fabricate(:admin_user) } before do sign_in user, scope: :user diff --git a/spec/controllers/admin/reports_controller_spec.rb b/spec/controllers/admin/reports_controller_spec.rb index 1252ceb1f48ad1..4012204de12b01 100644 --- a/spec/controllers/admin/reports_controller_spec.rb +++ b/spec/controllers/admin/reports_controller_spec.rb @@ -5,7 +5,7 @@ RSpec.describe Admin::ReportsController do render_views - let(:user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) } + let(:user) { Fabricate(:admin_user) } before do sign_in user, scope: :user diff --git a/spec/controllers/admin/settings/branding_controller_spec.rb b/spec/controllers/admin/settings/branding_controller_spec.rb index 5e46910cc6f453..843021469e5ba7 100644 --- a/spec/controllers/admin/settings/branding_controller_spec.rb +++ b/spec/controllers/admin/settings/branding_controller_spec.rb @@ -7,7 +7,7 @@ describe 'When signed in as an admin' do before do - sign_in Fabricate(:user, role: UserRole.find_by(name: 'Admin')), scope: :user + sign_in Fabricate(:admin_user), scope: :user end describe 'PUT #update' do diff --git a/spec/controllers/admin/site_uploads_controller_spec.rb b/spec/controllers/admin/site_uploads_controller_spec.rb index 9c65c63b78e11b..1fe59034980fd4 100644 --- a/spec/controllers/admin/site_uploads_controller_spec.rb +++ b/spec/controllers/admin/site_uploads_controller_spec.rb @@ -5,7 +5,7 @@ RSpec.describe Admin::SiteUploadsController do render_views - let(:user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) } + let(:user) { Fabricate(:admin_user) } before do sign_in user, scope: :user diff --git a/spec/controllers/admin/statuses_controller_spec.rb b/spec/controllers/admin/statuses_controller_spec.rb index e6053a6e8a9cca..2809c8ec3fce1c 100644 --- a/spec/controllers/admin/statuses_controller_spec.rb +++ b/spec/controllers/admin/statuses_controller_spec.rb @@ -5,7 +5,7 @@ RSpec.describe Admin::StatusesController do render_views - let(:user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) } + let(:user) { Fabricate(:admin_user) } let(:account) { Fabricate(:account) } let!(:status) { Fabricate(:status, account: account) } let(:media_attached_status) { Fabricate(:status, account: account, sensitive: !sensitive) } diff --git a/spec/controllers/admin/terms_of_service/distributions_controller_spec.rb b/spec/controllers/admin/terms_of_service/distributions_controller_spec.rb index b6d436a26f1e50..63431c133692f9 100644 --- a/spec/controllers/admin/terms_of_service/distributions_controller_spec.rb +++ b/spec/controllers/admin/terms_of_service/distributions_controller_spec.rb @@ -5,7 +5,7 @@ RSpec.describe Admin::TermsOfService::DistributionsController do render_views - let(:user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) } + let(:user) { Fabricate(:admin_user) } let(:terms_of_service) { Fabricate(:terms_of_service, notification_sent_at: nil) } before do diff --git a/spec/controllers/admin/terms_of_service/drafts_controller_spec.rb b/spec/controllers/admin/terms_of_service/drafts_controller_spec.rb index 6c19b973d064cf..0a9c6e6b674cc3 100644 --- a/spec/controllers/admin/terms_of_service/drafts_controller_spec.rb +++ b/spec/controllers/admin/terms_of_service/drafts_controller_spec.rb @@ -5,7 +5,7 @@ RSpec.describe Admin::TermsOfService::DraftsController do render_views - let(:user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) } + let(:user) { Fabricate(:admin_user) } before do sign_in user, scope: :user diff --git a/spec/controllers/admin/terms_of_service/generates_controller_spec.rb b/spec/controllers/admin/terms_of_service/generates_controller_spec.rb index 2f85fbc25fbb90..c1fc7faef93e3a 100644 --- a/spec/controllers/admin/terms_of_service/generates_controller_spec.rb +++ b/spec/controllers/admin/terms_of_service/generates_controller_spec.rb @@ -5,7 +5,7 @@ RSpec.describe Admin::TermsOfService::GeneratesController do render_views - let(:user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) } + let(:user) { Fabricate(:admin_user) } before do sign_in user, scope: :user diff --git a/spec/controllers/admin/terms_of_service/histories_controller_spec.rb b/spec/controllers/admin/terms_of_service/histories_controller_spec.rb index d11ea2cd331585..8c2c3a3de3c4c8 100644 --- a/spec/controllers/admin/terms_of_service/histories_controller_spec.rb +++ b/spec/controllers/admin/terms_of_service/histories_controller_spec.rb @@ -5,7 +5,7 @@ RSpec.describe Admin::TermsOfService::HistoriesController do render_views - let(:user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) } + let(:user) { Fabricate(:admin_user) } before do sign_in user, scope: :user diff --git a/spec/controllers/admin/terms_of_service/previews_controller_spec.rb b/spec/controllers/admin/terms_of_service/previews_controller_spec.rb index 5d923c9f302e71..3878bb4b6f3caf 100644 --- a/spec/controllers/admin/terms_of_service/previews_controller_spec.rb +++ b/spec/controllers/admin/terms_of_service/previews_controller_spec.rb @@ -5,7 +5,7 @@ RSpec.describe Admin::TermsOfService::PreviewsController do render_views - let(:user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) } + let(:user) { Fabricate(:admin_user) } let(:terms_of_service) { Fabricate(:terms_of_service, notification_sent_at: nil) } before do diff --git a/spec/controllers/admin/terms_of_service/tests_controller_spec.rb b/spec/controllers/admin/terms_of_service/tests_controller_spec.rb index 281c4d28c5a41f..777f6994487bb8 100644 --- a/spec/controllers/admin/terms_of_service/tests_controller_spec.rb +++ b/spec/controllers/admin/terms_of_service/tests_controller_spec.rb @@ -5,7 +5,7 @@ RSpec.describe Admin::TermsOfService::TestsController do render_views - let(:user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) } + let(:user) { Fabricate(:admin_user) } let(:terms_of_service) { Fabricate(:terms_of_service, notification_sent_at: nil) } before do diff --git a/spec/controllers/admin/terms_of_service_controller_spec.rb b/spec/controllers/admin/terms_of_service_controller_spec.rb index b7fdb90446b3de..feefd312e31e4a 100644 --- a/spec/controllers/admin/terms_of_service_controller_spec.rb +++ b/spec/controllers/admin/terms_of_service_controller_spec.rb @@ -5,7 +5,7 @@ RSpec.describe Admin::TermsOfServiceController do render_views - let(:user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) } + let(:user) { Fabricate(:admin_user) } before do sign_in user, scope: :user diff --git a/spec/controllers/admin/trends/links/preview_card_providers_controller_spec.rb b/spec/controllers/admin/trends/links/preview_card_providers_controller_spec.rb index ce62a13db6c7f2..aadf002dd658d6 100644 --- a/spec/controllers/admin/trends/links/preview_card_providers_controller_spec.rb +++ b/spec/controllers/admin/trends/links/preview_card_providers_controller_spec.rb @@ -5,7 +5,7 @@ RSpec.describe Admin::Trends::Links::PreviewCardProvidersController do render_views - let(:user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) } + let(:user) { Fabricate(:admin_user) } before do sign_in user, scope: :user diff --git a/spec/controllers/admin/trends/links_controller_spec.rb b/spec/controllers/admin/trends/links_controller_spec.rb index 984f3007c2db8b..cd2cf6b8527337 100644 --- a/spec/controllers/admin/trends/links_controller_spec.rb +++ b/spec/controllers/admin/trends/links_controller_spec.rb @@ -5,7 +5,7 @@ RSpec.describe Admin::Trends::LinksController do render_views - let(:user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) } + let(:user) { Fabricate(:admin_user) } before do sign_in user, scope: :user diff --git a/spec/controllers/admin/trends/statuses_controller_spec.rb b/spec/controllers/admin/trends/statuses_controller_spec.rb index eecf4ab4f2695f..6570340b2d5ac0 100644 --- a/spec/controllers/admin/trends/statuses_controller_spec.rb +++ b/spec/controllers/admin/trends/statuses_controller_spec.rb @@ -5,7 +5,7 @@ RSpec.describe Admin::Trends::StatusesController do render_views - let(:user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) } + let(:user) { Fabricate(:admin_user) } before do sign_in user, scope: :user diff --git a/spec/controllers/admin/trends/tags_controller_spec.rb b/spec/controllers/admin/trends/tags_controller_spec.rb index 51ad1860c8aebb..83ea23ed210738 100644 --- a/spec/controllers/admin/trends/tags_controller_spec.rb +++ b/spec/controllers/admin/trends/tags_controller_spec.rb @@ -5,7 +5,7 @@ RSpec.describe Admin::Trends::TagsController do render_views - let(:user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) } + let(:user) { Fabricate(:admin_user) } before do sign_in user, scope: :user diff --git a/spec/controllers/admin/users/two_factor_authentications_controller_spec.rb b/spec/controllers/admin/users/two_factor_authentications_controller_spec.rb index 1f0a6ac34d3ecd..39af2ca91466a3 100644 --- a/spec/controllers/admin/users/two_factor_authentications_controller_spec.rb +++ b/spec/controllers/admin/users/two_factor_authentications_controller_spec.rb @@ -9,7 +9,7 @@ let(:user) { Fabricate(:user) } before do - sign_in Fabricate(:user, role: UserRole.find_by(name: 'Admin')), scope: :user + sign_in Fabricate(:admin_user), scope: :user end describe 'DELETE #destroy' do diff --git a/spec/controllers/admin/warning_presets_controller_spec.rb b/spec/controllers/admin/warning_presets_controller_spec.rb index 4171bbad824c8e..d416b9c3cf1c7c 100644 --- a/spec/controllers/admin/warning_presets_controller_spec.rb +++ b/spec/controllers/admin/warning_presets_controller_spec.rb @@ -5,7 +5,7 @@ RSpec.describe Admin::WarningPresetsController do render_views - let(:user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) } + let(:user) { Fabricate(:admin_user) } before do sign_in user, scope: :user diff --git a/spec/controllers/admin/webhooks/secrets_controller_spec.rb b/spec/controllers/admin/webhooks/secrets_controller_spec.rb index 61ae8cdaa50bf1..da3d4f1438e553 100644 --- a/spec/controllers/admin/webhooks/secrets_controller_spec.rb +++ b/spec/controllers/admin/webhooks/secrets_controller_spec.rb @@ -5,7 +5,7 @@ RSpec.describe Admin::Webhooks::SecretsController do render_views - let(:user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) } + let(:user) { Fabricate(:admin_user) } before do sign_in user, scope: :user diff --git a/spec/fabricators/user_fabricator.rb b/spec/fabricators/user_fabricator.rb index 0df7caea60c866..104d7f99314d2e 100644 --- a/spec/fabricators/user_fabricator.rb +++ b/spec/fabricators/user_fabricator.rb @@ -13,3 +13,15 @@ current_sign_in_at { Time.zone.now } agreement true end + +Fabricator(:admin_user, from: :user) do + role UserRole.find_by(name: 'Admin') +end + +Fabricator(:moderator_user, from: :user) do + role UserRole.find_by(name: 'Moderator') +end + +Fabricator(:owner_user, from: :user) do + role UserRole.find_by(name: 'Owner') +end diff --git a/spec/models/admin/account_action_spec.rb b/spec/models/admin/account_action_spec.rb index 49bc2b4a91c46c..6032594850d346 100644 --- a/spec/models/admin/account_action_spec.rb +++ b/spec/models/admin/account_action_spec.rb @@ -8,7 +8,7 @@ describe '#save!' do subject { account_action.save! } - let(:account) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')).account } + let(:account) { Fabricate(:admin_user).account } let(:target_account) { Fabricate(:account) } let(:type) { 'disable' } diff --git a/spec/models/form/account_batch_spec.rb b/spec/models/form/account_batch_spec.rb index 26fb1b953a63f7..8db9a2a2545fd7 100644 --- a/spec/models/form/account_batch_spec.rb +++ b/spec/models/form/account_batch_spec.rb @@ -8,7 +8,7 @@ describe '#save' do subject { account_batch.save } - let(:account) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')).account } + let(:account) { Fabricate(:admin_user).account } let(:account_ids) { [] } let(:query) { Account.none } diff --git a/spec/models/form/custom_emoji_batch_spec.rb b/spec/models/form/custom_emoji_batch_spec.rb index 180c6abd23c353..ca9740de3efcf6 100644 --- a/spec/models/form/custom_emoji_batch_spec.rb +++ b/spec/models/form/custom_emoji_batch_spec.rb @@ -7,7 +7,7 @@ subject { described_class.new({ current_account: account }.merge(options)) } let(:options) { {} } - let(:account) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')).account } + let(:account) { Fabricate(:admin_user).account } context 'with empty custom_emoji_ids' do let(:options) { { custom_emoji_ids: [] } } diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb index f39b80c942f3ca..08d410bb160ad4 100644 --- a/spec/models/user_spec.rb +++ b/spec/models/user_spec.rb @@ -601,7 +601,7 @@ def stub_redis end describe '.those_who_can' do - before { Fabricate(:user, role: UserRole.find_by(name: 'Moderator')) } + before { Fabricate(:moderator_user) } context 'when there are not any user roles' do before { UserRole.destroy_all } @@ -618,7 +618,7 @@ def stub_redis end context 'when there are users with roles' do - let!(:admin_user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) } + let!(:admin_user) { Fabricate(:admin_user) } it 'returns the users with the role' do expect(described_class.those_who_can(:manage_blocks)).to eq([admin_user]) diff --git a/spec/models/webhook_spec.rb b/spec/models/webhook_spec.rb index 18a6047dd0b53e..59b4212d626565 100644 --- a/spec/models/webhook_spec.rb +++ b/spec/models/webhook_spec.rb @@ -18,7 +18,7 @@ subject { Fabricate.build :webhook, current_account: account } context 'with account that has permissions' do - let(:account) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')).account } + let(:account) { Fabricate(:admin_user).account } it { is_expected.to allow_values(%w(account.created)).for(:events) } end diff --git a/spec/policies/account_moderation_note_policy_spec.rb b/spec/policies/account_moderation_note_policy_spec.rb index 8b33a71012702a..2a9cdabaa2d902 100644 --- a/spec/policies/account_moderation_note_policy_spec.rb +++ b/spec/policies/account_moderation_note_policy_spec.rb @@ -5,7 +5,7 @@ RSpec.describe AccountModerationNotePolicy do subject { described_class } - let(:admin) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')).account } + let(:admin) { Fabricate(:admin_user).account } let(:john) { Fabricate(:account) } permissions :create? do diff --git a/spec/policies/account_policy_spec.rb b/spec/policies/account_policy_spec.rb index 75724e831bed58..8b2edb15b0196d 100644 --- a/spec/policies/account_policy_spec.rb +++ b/spec/policies/account_policy_spec.rb @@ -5,7 +5,7 @@ RSpec.describe AccountPolicy do subject { described_class } - let(:admin) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')).account } + let(:admin) { Fabricate(:admin_user).account } let(:john) { Fabricate(:account) } let(:alice) { Fabricate(:account) } @@ -70,7 +70,7 @@ end permissions :suspend?, :silence? do - let(:staff) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')).account } + let(:staff) { Fabricate(:admin_user).account } context 'when staff' do context 'when record is staff' do @@ -94,7 +94,7 @@ end permissions :memorialize? do - let(:other_admin) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')).account } + let(:other_admin) { Fabricate(:admin_user).account } context 'when admin' do context 'when record is admin' do diff --git a/spec/policies/account_warning_policy_spec.rb b/spec/policies/account_warning_policy_spec.rb index 9abc9d35d638c7..75142e20715fce 100644 --- a/spec/policies/account_warning_policy_spec.rb +++ b/spec/policies/account_warning_policy_spec.rb @@ -5,7 +5,7 @@ RSpec.describe AccountWarningPolicy do subject { described_class } - let(:admin) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')).account } + let(:admin) { Fabricate(:admin_user).account } let(:account) { Fabricate(:account) } permissions :show? do diff --git a/spec/policies/account_warning_preset_policy_spec.rb b/spec/policies/account_warning_preset_policy_spec.rb index 33f2fb11870b2c..e8223ab1c7c14d 100644 --- a/spec/policies/account_warning_preset_policy_spec.rb +++ b/spec/policies/account_warning_preset_policy_spec.rb @@ -4,7 +4,7 @@ RSpec.describe AccountWarningPresetPolicy do let(:policy) { described_class } - let(:admin) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')).account } + let(:admin) { Fabricate(:admin_user).account } let(:john) { Fabricate(:account) } permissions :index?, :create?, :update?, :destroy? do diff --git a/spec/policies/admin/status_policy_spec.rb b/spec/policies/admin/status_policy_spec.rb index 4df29393e3ae2d..5f8285c56296ef 100644 --- a/spec/policies/admin/status_policy_spec.rb +++ b/spec/policies/admin/status_policy_spec.rb @@ -4,7 +4,7 @@ RSpec.describe Admin::StatusPolicy do let(:policy) { described_class } - let(:admin) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')).account } + let(:admin) { Fabricate(:admin_user).account } let(:john) { Fabricate(:account) } let(:status) { Fabricate(:status, visibility: status_visibility) } let(:status_visibility) { :public } diff --git a/spec/policies/announcement_policy_spec.rb b/spec/policies/announcement_policy_spec.rb index ab0c1dbaf5a2bb..2fec34f8e4b02a 100644 --- a/spec/policies/announcement_policy_spec.rb +++ b/spec/policies/announcement_policy_spec.rb @@ -4,7 +4,7 @@ RSpec.describe AnnouncementPolicy do let(:policy) { described_class } - let(:admin) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')).account } + let(:admin) { Fabricate(:admin_user).account } let(:john) { Fabricate(:account) } permissions :index?, :create?, :update?, :destroy? do diff --git a/spec/policies/appeal_policy_spec.rb b/spec/policies/appeal_policy_spec.rb index cdb93bf56cdf46..e3e1d62ba70487 100644 --- a/spec/policies/appeal_policy_spec.rb +++ b/spec/policies/appeal_policy_spec.rb @@ -4,7 +4,7 @@ RSpec.describe AppealPolicy do let(:policy) { described_class } - let(:admin) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')).account } + let(:admin) { Fabricate(:admin_user).account } let(:john) { Fabricate(:account) } let(:appeal) { Fabricate(:appeal) } diff --git a/spec/policies/audit_log_policy_spec.rb b/spec/policies/audit_log_policy_spec.rb index d9d9359433356e..b1769eb487a6ff 100644 --- a/spec/policies/audit_log_policy_spec.rb +++ b/spec/policies/audit_log_policy_spec.rb @@ -5,7 +5,7 @@ RSpec.describe AuditLogPolicy do subject { described_class } - let(:admin) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')).account } + let(:admin) { Fabricate(:admin_user).account } let(:account) { Fabricate(:account) } permissions :index? do diff --git a/spec/policies/canonical_email_block_policy_spec.rb b/spec/policies/canonical_email_block_policy_spec.rb index b253b439a67dd4..bf9503dc5c9c71 100644 --- a/spec/policies/canonical_email_block_policy_spec.rb +++ b/spec/policies/canonical_email_block_policy_spec.rb @@ -4,7 +4,7 @@ RSpec.describe CanonicalEmailBlockPolicy do let(:policy) { described_class } - let(:admin) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')).account } + let(:admin) { Fabricate(:admin_user).account } let(:john) { Fabricate(:account) } permissions :index?, :show?, :test?, :create?, :destroy? do diff --git a/spec/policies/custom_emoji_policy_spec.rb b/spec/policies/custom_emoji_policy_spec.rb index 189885938cf469..9635da44969a24 100644 --- a/spec/policies/custom_emoji_policy_spec.rb +++ b/spec/policies/custom_emoji_policy_spec.rb @@ -5,7 +5,7 @@ RSpec.describe CustomEmojiPolicy do subject { described_class } - let(:admin) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')).account } + let(:admin) { Fabricate(:admin_user).account } let(:john) { Fabricate(:account) } permissions :index?, :enable?, :disable? do diff --git a/spec/policies/dashboard_policy_spec.rb b/spec/policies/dashboard_policy_spec.rb index 90c71db381b5cf..711bea53ec9c00 100644 --- a/spec/policies/dashboard_policy_spec.rb +++ b/spec/policies/dashboard_policy_spec.rb @@ -5,7 +5,7 @@ RSpec.describe DashboardPolicy do subject { described_class } - let(:admin) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')).account } + let(:admin) { Fabricate(:admin_user).account } let(:account) { Fabricate(:account) } permissions :index? do diff --git a/spec/policies/delivery_policy_spec.rb b/spec/policies/delivery_policy_spec.rb index 8bc200159ac6e1..017a7f3c5ec558 100644 --- a/spec/policies/delivery_policy_spec.rb +++ b/spec/policies/delivery_policy_spec.rb @@ -4,7 +4,7 @@ RSpec.describe DeliveryPolicy do let(:policy) { described_class } - let(:admin) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')).account } + let(:admin) { Fabricate(:admin_user).account } let(:john) { Fabricate(:account) } permissions :clear_delivery_errors?, :restart_delivery?, :stop_delivery? do diff --git a/spec/policies/domain_allow_policy_spec.rb b/spec/policies/domain_allow_policy_spec.rb index 1d285065b854f5..1e29c4144f448d 100644 --- a/spec/policies/domain_allow_policy_spec.rb +++ b/spec/policies/domain_allow_policy_spec.rb @@ -5,7 +5,7 @@ RSpec.describe DomainAllowPolicy do subject { described_class } - let(:admin) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')).account } + let(:admin) { Fabricate(:admin_user).account } let(:john) { Fabricate(:account) } permissions :index?, :show?, :create?, :destroy? do diff --git a/spec/policies/domain_block_policy_spec.rb b/spec/policies/domain_block_policy_spec.rb index 7c77d1870d0a9b..04081c5c9bfe49 100644 --- a/spec/policies/domain_block_policy_spec.rb +++ b/spec/policies/domain_block_policy_spec.rb @@ -5,7 +5,7 @@ RSpec.describe DomainBlockPolicy do subject { described_class } - let(:admin) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')).account } + let(:admin) { Fabricate(:admin_user).account } let(:john) { Fabricate(:account) } permissions :index?, :show?, :create?, :destroy?, :update? do diff --git a/spec/policies/email_domain_block_policy_spec.rb b/spec/policies/email_domain_block_policy_spec.rb index e98d65a3c73408..6428a2b4428897 100644 --- a/spec/policies/email_domain_block_policy_spec.rb +++ b/spec/policies/email_domain_block_policy_spec.rb @@ -5,7 +5,7 @@ RSpec.describe EmailDomainBlockPolicy do subject { described_class } - let(:admin) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')).account } + let(:admin) { Fabricate(:admin_user).account } let(:john) { Fabricate(:account) } permissions :index?, :show?, :create?, :destroy? do diff --git a/spec/policies/follow_recommendation_policy_spec.rb b/spec/policies/follow_recommendation_policy_spec.rb index 665ed9b0595085..181f0ed11c4f38 100644 --- a/spec/policies/follow_recommendation_policy_spec.rb +++ b/spec/policies/follow_recommendation_policy_spec.rb @@ -4,7 +4,7 @@ RSpec.describe FollowRecommendationPolicy do let(:policy) { described_class } - let(:admin) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')).account } + let(:admin) { Fabricate(:admin_user).account } let(:john) { Fabricate(:account) } permissions :show?, :suppress?, :unsuppress? do diff --git a/spec/policies/instance_policy_spec.rb b/spec/policies/instance_policy_spec.rb index 6cdc7380228296..7ab843b83b2046 100644 --- a/spec/policies/instance_policy_spec.rb +++ b/spec/policies/instance_policy_spec.rb @@ -5,7 +5,7 @@ RSpec.describe InstancePolicy do subject { described_class } - let(:admin) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')).account } + let(:admin) { Fabricate(:admin_user).account } let(:john) { Fabricate(:account) } permissions :index?, :show?, :destroy? do diff --git a/spec/policies/invite_policy_spec.rb b/spec/policies/invite_policy_spec.rb index 3717a449993b95..bb3bddd4b8a3f4 100644 --- a/spec/policies/invite_policy_spec.rb +++ b/spec/policies/invite_policy_spec.rb @@ -5,7 +5,7 @@ RSpec.describe InvitePolicy do subject { described_class } - let(:admin) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')).account } + let(:admin) { Fabricate(:admin_user).account } let(:john) { Fabricate(:user).account } permissions :index? do diff --git a/spec/policies/ip_block_policy_spec.rb b/spec/policies/ip_block_policy_spec.rb index 33ea342c10bffc..dcd9c19785b2ae 100644 --- a/spec/policies/ip_block_policy_spec.rb +++ b/spec/policies/ip_block_policy_spec.rb @@ -4,7 +4,7 @@ RSpec.describe IpBlockPolicy do let(:policy) { described_class } - let(:admin) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')).account } + let(:admin) { Fabricate(:admin_user).account } let(:john) { Fabricate(:account) } permissions :index?, :show?, :create?, :update?, :destroy? do diff --git a/spec/policies/preview_card_policy_spec.rb b/spec/policies/preview_card_policy_spec.rb index d02a6016cd6944..75fcf7b3739822 100644 --- a/spec/policies/preview_card_policy_spec.rb +++ b/spec/policies/preview_card_policy_spec.rb @@ -4,7 +4,7 @@ RSpec.describe PreviewCardPolicy do let(:policy) { described_class } - let(:admin) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')).account } + let(:admin) { Fabricate(:admin_user).account } let(:john) { Fabricate(:account) } permissions :index?, :review? do diff --git a/spec/policies/preview_card_provider_policy_spec.rb b/spec/policies/preview_card_provider_policy_spec.rb index 5e25b364a4afe0..d3fbf44539a75e 100644 --- a/spec/policies/preview_card_provider_policy_spec.rb +++ b/spec/policies/preview_card_provider_policy_spec.rb @@ -4,7 +4,7 @@ RSpec.describe PreviewCardProviderPolicy do let(:policy) { described_class } - let(:admin) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')).account } + let(:admin) { Fabricate(:admin_user).account } let(:john) { Fabricate(:account) } permissions :index?, :review? do diff --git a/spec/policies/relay_policy_spec.rb b/spec/policies/relay_policy_spec.rb index 5983b2d2ffb20a..8d5ed4997e6516 100644 --- a/spec/policies/relay_policy_spec.rb +++ b/spec/policies/relay_policy_spec.rb @@ -5,7 +5,7 @@ RSpec.describe RelayPolicy do subject { described_class } - let(:admin) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')).account } + let(:admin) { Fabricate(:admin_user).account } let(:john) { Fabricate(:account) } permissions :update? do diff --git a/spec/policies/report_note_policy_spec.rb b/spec/policies/report_note_policy_spec.rb index 02317f763adad8..9f0c525a3cdc53 100644 --- a/spec/policies/report_note_policy_spec.rb +++ b/spec/policies/report_note_policy_spec.rb @@ -5,7 +5,7 @@ RSpec.describe ReportNotePolicy do subject { described_class } - let(:admin) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')).account } + let(:admin) { Fabricate(:admin_user).account } let(:john) { Fabricate(:account) } permissions :create? do diff --git a/spec/policies/report_policy_spec.rb b/spec/policies/report_policy_spec.rb index 67f40b518841e5..20b91c5fd02c1d 100644 --- a/spec/policies/report_policy_spec.rb +++ b/spec/policies/report_policy_spec.rb @@ -5,7 +5,7 @@ RSpec.describe ReportPolicy do subject { described_class } - let(:admin) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')).account } + let(:admin) { Fabricate(:admin_user).account } let(:john) { Fabricate(:account) } permissions :update?, :index?, :show? do diff --git a/spec/policies/rule_policy_spec.rb b/spec/policies/rule_policy_spec.rb index 3086f304463ddf..70ae3f9417b6c4 100644 --- a/spec/policies/rule_policy_spec.rb +++ b/spec/policies/rule_policy_spec.rb @@ -4,7 +4,7 @@ RSpec.describe RulePolicy do let(:policy) { described_class } - let(:admin) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')).account } + let(:admin) { Fabricate(:admin_user).account } let(:john) { Fabricate(:account) } permissions :index?, :create?, :update?, :destroy? do diff --git a/spec/policies/settings_policy_spec.rb b/spec/policies/settings_policy_spec.rb index 48821c706a7fff..d11c3c1fa7eab2 100644 --- a/spec/policies/settings_policy_spec.rb +++ b/spec/policies/settings_policy_spec.rb @@ -5,7 +5,7 @@ RSpec.describe SettingsPolicy do subject { described_class } - let(:admin) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')).account } + let(:admin) { Fabricate(:admin_user).account } let(:john) { Fabricate(:account) } permissions :update?, :show?, :destroy? do diff --git a/spec/policies/software_update_policy_spec.rb b/spec/policies/software_update_policy_spec.rb index 2bda84cce9e574..ab067dd17edb9c 100644 --- a/spec/policies/software_update_policy_spec.rb +++ b/spec/policies/software_update_policy_spec.rb @@ -5,7 +5,7 @@ RSpec.describe SoftwareUpdatePolicy do subject { described_class } - let(:admin) { Fabricate(:user, role: UserRole.find_by(name: 'Owner')).account } + let(:admin) { Fabricate(:owner_user).account } let(:john) { Fabricate(:account) } permissions :index? do diff --git a/spec/policies/status_policy_spec.rb b/spec/policies/status_policy_spec.rb index 538742610c7ea7..69c0bad026b689 100644 --- a/spec/policies/status_policy_spec.rb +++ b/spec/policies/status_policy_spec.rb @@ -5,7 +5,7 @@ RSpec.describe StatusPolicy, type: :model do subject { described_class } - let(:admin) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) } + let(:admin) { Fabricate(:admin_user) } let(:alice) { Fabricate(:account, username: 'alice') } let(:bob) { Fabricate(:account, username: 'bob') } let(:status) { Fabricate(:status, account: alice) } diff --git a/spec/policies/tag_policy_spec.rb b/spec/policies/tag_policy_spec.rb index 23166e466921b6..241f13dd3bb902 100644 --- a/spec/policies/tag_policy_spec.rb +++ b/spec/policies/tag_policy_spec.rb @@ -5,7 +5,7 @@ RSpec.describe TagPolicy do subject { described_class } - let(:admin) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')).account } + let(:admin) { Fabricate(:admin_user).account } let(:john) { Fabricate(:account) } permissions :index?, :show?, :update?, :review? do diff --git a/spec/policies/terms_of_service_policy_spec.rb b/spec/policies/terms_of_service_policy_spec.rb index 18345d9fd0e06d..0deab2fe9b917e 100644 --- a/spec/policies/terms_of_service_policy_spec.rb +++ b/spec/policies/terms_of_service_policy_spec.rb @@ -5,7 +5,7 @@ RSpec.describe TermsOfServicePolicy do subject { described_class } - let(:admin) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')).account } + let(:admin) { Fabricate(:admin_user).account } let(:john) { Fabricate(:account) } permissions :index?, :create? do diff --git a/spec/policies/user_policy_spec.rb b/spec/policies/user_policy_spec.rb index 11a166a24e0ffc..ba4e31189a8bfc 100644 --- a/spec/policies/user_policy_spec.rb +++ b/spec/policies/user_policy_spec.rb @@ -5,7 +5,7 @@ RSpec.describe UserPolicy do subject { described_class } - let(:admin) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')).account } + let(:admin) { Fabricate(:admin_user).account } let(:john) { Fabricate(:account) } permissions :reset_password?, :change_email? do diff --git a/spec/policies/user_role_policy_spec.rb b/spec/policies/user_role_policy_spec.rb index c48b345d68f6de..7708dfea55ac63 100644 --- a/spec/policies/user_role_policy_spec.rb +++ b/spec/policies/user_role_policy_spec.rb @@ -5,7 +5,7 @@ RSpec.describe UserRolePolicy do subject { described_class } - let(:admin) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')).account } + let(:admin) { Fabricate(:admin_user).account } let(:account) { Fabricate(:account) } permissions :index?, :create? do diff --git a/spec/policies/webhook_policy_spec.rb b/spec/policies/webhook_policy_spec.rb index 9899235d833673..10b59681657c66 100644 --- a/spec/policies/webhook_policy_spec.rb +++ b/spec/policies/webhook_policy_spec.rb @@ -4,7 +4,7 @@ RSpec.describe WebhookPolicy do let(:policy) { described_class } - let(:admin) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')).account } + let(:admin) { Fabricate(:admin_user).account } let(:john) { Fabricate(:account) } permissions :index?, :create? do diff --git a/spec/requests/api/v1/admin/dimensions_spec.rb b/spec/requests/api/v1/admin/dimensions_spec.rb index 81fb580ba72f37..3a4cd91716ad5d 100644 --- a/spec/requests/api/v1/admin/dimensions_spec.rb +++ b/spec/requests/api/v1/admin/dimensions_spec.rb @@ -3,7 +3,7 @@ require 'rails_helper' RSpec.describe 'Admin Dimensions' do - let(:user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) } + let(:user) { Fabricate(:admin_user) } let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: scopes) } let(:headers) { { 'Authorization' => "Bearer #{token.token}" } } let(:account) { Fabricate(:account) } diff --git a/spec/requests/api/v1/admin/measures_spec.rb b/spec/requests/api/v1/admin/measures_spec.rb index 519b5cc7b3ca6c..b55cd0f1b200cc 100644 --- a/spec/requests/api/v1/admin/measures_spec.rb +++ b/spec/requests/api/v1/admin/measures_spec.rb @@ -3,7 +3,7 @@ require 'rails_helper' RSpec.describe 'Admin Measures' do - let(:user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) } + let(:user) { Fabricate(:admin_user) } let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: scopes) } let(:headers) { { 'Authorization' => "Bearer #{token.token}" } } let(:account) { Fabricate(:account) } diff --git a/spec/requests/api/v1/admin/retention_spec.rb b/spec/requests/api/v1/admin/retention_spec.rb index e28bc2a94f815c..25e626e259329f 100644 --- a/spec/requests/api/v1/admin/retention_spec.rb +++ b/spec/requests/api/v1/admin/retention_spec.rb @@ -3,7 +3,7 @@ require 'rails_helper' RSpec.describe 'Admin Retention' do - let(:user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) } + let(:user) { Fabricate(:admin_user) } let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: scopes) } let(:headers) { { 'Authorization' => "Bearer #{token.token}" } } let(:account) { Fabricate(:account) } diff --git a/spec/requests/api/v1/reports_spec.rb b/spec/requests/api/v1/reports_spec.rb index 18b894bf632714..1f113c649ee4b9 100644 --- a/spec/requests/api/v1/reports_spec.rb +++ b/spec/requests/api/v1/reports_spec.rb @@ -13,7 +13,7 @@ post '/api/v1/reports', headers: headers, params: params end - let!(:admin) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) } + let!(:admin) { Fabricate(:admin_user) } let(:status) { Fabricate(:status) } let(:target_account) { status.account } let(:category) { 'other' } diff --git a/spec/requests/cache_spec.rb b/spec/requests/cache_spec.rb index 9cce241b38b66c..2a52e4dea9d3a0 100644 --- a/spec/requests/cache_spec.rb +++ b/spec/requests/cache_spec.rb @@ -172,7 +172,7 @@ module DisabledAnonymousAPI before_all do alice = Fabricate(:account, username: 'alice') - user = Fabricate(:user, email: 'user@host.example', role: UserRole.find_by(name: 'Moderator')) + user = Fabricate(:moderator_user, email: 'user@host.example') status = Fabricate(:status, account: alice, id: 110_224_538_612_341_312) Fabricate(:status, account: alice, id: 110_224_538_643_211_312, visibility: :private) Fabricate(:invite, code: 'abcdef') diff --git a/spec/services/appeal_service_spec.rb b/spec/services/appeal_service_spec.rb index 6a47bb2cea61d2..a4b1acf9cf9250 100644 --- a/spec/services/appeal_service_spec.rb +++ b/spec/services/appeal_service_spec.rb @@ -4,7 +4,7 @@ RSpec.describe AppealService, :inline_jobs do describe '#call' do - let!(:admin) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) } + let!(:admin) { Fabricate(:admin_user) } context 'with an existing strike' do let(:strike) { Fabricate(:account_warning) } diff --git a/spec/services/software_update_check_service_spec.rb b/spec/services/software_update_check_service_spec.rb index 637e1e26c593ad..73ffe6b89947e2 100644 --- a/spec/services/software_update_check_service_spec.rb +++ b/spec/services/software_update_check_service_spec.rb @@ -9,7 +9,7 @@ let(:full_update_check_url) { "#{update_check_url}?version=#{Mastodon::Version.to_s.split('+')[0]}" } let(:devops_role) { Fabricate(:user_role, name: 'DevOps', permissions: UserRole::FLAGS[:view_devops]) } - let(:owner_user) { Fabricate(:user, role: UserRole.find_by(name: 'Owner')) } + let(:owner_user) { Fabricate(:owner_user) } let(:old_devops_user) { Fabricate(:user) } let(:none_user) { Fabricate(:user, role: devops_role) } let(:patch_user) { Fabricate(:user, role: devops_role) } diff --git a/spec/support/system_helpers.rb b/spec/support/system_helpers.rb index 4cc1928701af71..18889844f8f4fa 100644 --- a/spec/support/system_helpers.rb +++ b/spec/support/system_helpers.rb @@ -2,7 +2,7 @@ module SystemHelpers def admin_user - Fabricate(:user, role: UserRole.find_by(name: 'Admin')) + Fabricate(:admin_user) end def submit_button diff --git a/spec/system/admin/account_moderation_notes_spec.rb b/spec/system/admin/account_moderation_notes_spec.rb index 5d195143c25c8a..fa930cea2c7efa 100644 --- a/spec/system/admin/account_moderation_notes_spec.rb +++ b/spec/system/admin/account_moderation_notes_spec.rb @@ -3,7 +3,7 @@ require 'rails_helper' RSpec.describe 'Admin::AccountModerationNotes' do - let(:current_user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) } + let(:current_user) { Fabricate(:admin_user) } let(:target_account) { Fabricate(:account) } before { sign_in current_user } diff --git a/spec/system/admin/accounts_spec.rb b/spec/system/admin/accounts_spec.rb index c21e01e4f3da05..30504ce5d78f04 100644 --- a/spec/system/admin/accounts_spec.rb +++ b/spec/system/admin/accounts_spec.rb @@ -3,7 +3,7 @@ require 'rails_helper' RSpec.describe 'Admin::Accounts' do - let(:current_user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) } + let(:current_user) { Fabricate(:admin_user) } before do sign_in current_user diff --git a/spec/system/admin/announcements_spec.rb b/spec/system/admin/announcements_spec.rb index 87b7332639c77a..65768eb18beb83 100644 --- a/spec/system/admin/announcements_spec.rb +++ b/spec/system/admin/announcements_spec.rb @@ -121,6 +121,6 @@ def text_label end def admin_user - Fabricate(:user, role: UserRole.find_by(name: 'Admin')) + Fabricate(:admin_user) end end diff --git a/spec/system/admin/custom_emojis_spec.rb b/spec/system/admin/custom_emojis_spec.rb index d597e3031388ec..1d54aa4d5e5c29 100644 --- a/spec/system/admin/custom_emojis_spec.rb +++ b/spec/system/admin/custom_emojis_spec.rb @@ -3,7 +3,7 @@ require 'rails_helper' RSpec.describe 'Admin::CustomEmojis' do - let(:current_user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) } + let(:current_user) { Fabricate(:admin_user) } before { sign_in current_user } diff --git a/spec/system/admin/domain_allows_spec.rb b/spec/system/admin/domain_allows_spec.rb index 1c462ff7cc669b..bacbb53eac0ef7 100644 --- a/spec/system/admin/domain_allows_spec.rb +++ b/spec/system/admin/domain_allows_spec.rb @@ -3,7 +3,7 @@ require 'rails_helper' RSpec.describe 'Admin::DomainAllows' do - let(:user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) } + let(:user) { Fabricate(:admin_user) } let(:domain) { 'host.example' } before do diff --git a/spec/system/admin/domain_blocks_spec.rb b/spec/system/admin/domain_blocks_spec.rb index f00d65dfe05a6d..56a5d119844c5d 100644 --- a/spec/system/admin/domain_blocks_spec.rb +++ b/spec/system/admin/domain_blocks_spec.rb @@ -5,7 +5,7 @@ RSpec.describe 'blocking domains through the moderation interface' do before do allow(DomainBlockWorker).to receive(:perform_async).and_return(true) - sign_in Fabricate(:user, role: UserRole.find_by(name: 'Admin')), scope: :user + sign_in Fabricate(:admin_user), scope: :user end context 'when silencing a new domain' do diff --git a/spec/system/admin/email_domain_blocks_spec.rb b/spec/system/admin/email_domain_blocks_spec.rb index a90bede827e33e..acf5027eda0ceb 100644 --- a/spec/system/admin/email_domain_blocks_spec.rb +++ b/spec/system/admin/email_domain_blocks_spec.rb @@ -3,7 +3,7 @@ require 'rails_helper' RSpec.describe 'Admin::EmailDomainBlocks' do - let(:current_user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) } + let(:current_user) { Fabricate(:admin_user) } before do sign_in current_user diff --git a/spec/system/admin/invites_spec.rb b/spec/system/admin/invites_spec.rb index f2cee626c68e27..cc1e4bae18fb33 100644 --- a/spec/system/admin/invites_spec.rb +++ b/spec/system/admin/invites_spec.rb @@ -6,7 +6,7 @@ describe 'Invite interaction' do let!(:invite) { Fabricate(:invite, expires_at: nil) } - let(:user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) } + let(:user) { Fabricate(:admin_user) } before { sign_in user } diff --git a/spec/system/admin/ip_blocks_spec.rb b/spec/system/admin/ip_blocks_spec.rb index c101b8e1c6f3a8..8e8c8031c8a627 100644 --- a/spec/system/admin/ip_blocks_spec.rb +++ b/spec/system/admin/ip_blocks_spec.rb @@ -3,7 +3,7 @@ require 'rails_helper' RSpec.describe 'Admin::IpBlocks' do - let(:current_user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) } + let(:current_user) { Fabricate(:admin_user) } before { sign_in current_user } diff --git a/spec/system/admin/relays_spec.rb b/spec/system/admin/relays_spec.rb index 14d453576bb4ef..a5b92a4d0da34f 100644 --- a/spec/system/admin/relays_spec.rb +++ b/spec/system/admin/relays_spec.rb @@ -4,7 +4,7 @@ RSpec.describe 'Admin Relays' do describe 'Managing relays' do - before { sign_in Fabricate(:user, role: UserRole.find_by(name: 'Admin')) } + before { sign_in Fabricate(:admin_user) } describe 'Viewing relays' do let!(:relay) { Fabricate :relay } diff --git a/spec/system/admin/report_notes_spec.rb b/spec/system/admin/report_notes_spec.rb index c80e600b318c37..143bc8ac7ce6a5 100644 --- a/spec/system/admin/report_notes_spec.rb +++ b/spec/system/admin/report_notes_spec.rb @@ -3,7 +3,7 @@ require 'rails_helper' RSpec.describe 'Admin Report Notes' do - let(:user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) } + let(:user) { Fabricate(:admin_user) } before { sign_in user } diff --git a/spec/system/admin/reset_spec.rb b/spec/system/admin/reset_spec.rb index d0f70a93f029d8..5cd0c048bbe84a 100644 --- a/spec/system/admin/reset_spec.rb +++ b/spec/system/admin/reset_spec.rb @@ -28,7 +28,7 @@ end def admin_user - Fabricate(:user, role: UserRole.find_by(name: 'Admin')) + Fabricate(:admin_user) end def submit_reset diff --git a/spec/system/admin/rules_spec.rb b/spec/system/admin/rules_spec.rb index 4718909ab00321..a7eb3a0fce9fdc 100644 --- a/spec/system/admin/rules_spec.rb +++ b/spec/system/admin/rules_spec.rb @@ -4,7 +4,7 @@ RSpec.describe 'Admin Rules' do describe 'Managing rules' do - before { sign_in Fabricate(:user, role: UserRole.find_by(name: 'Admin')) } + before { sign_in Fabricate(:admin_user) } describe 'Viewing rules' do let!(:rule) { Fabricate :rule, text: 'This is a rule' } diff --git a/spec/system/admin/software_updates_spec.rb b/spec/system/admin/software_updates_spec.rb index 77e9f166842d02..f49c5a3c87c7c9 100644 --- a/spec/system/admin/software_updates_spec.rb +++ b/spec/system/admin/software_updates_spec.rb @@ -6,7 +6,7 @@ before do Fabricate(:software_update, version: '99.99.99', type: 'major', urgent: true, release_notes: 'https://github.com/mastodon/mastodon/releases/v99') - sign_in Fabricate(:user, role: UserRole.find_by(name: 'Owner')), scope: :user + sign_in Fabricate(:owner_user), scope: :user end it 'shows a link to the software updates page, which links to release notes' do diff --git a/spec/system/admin/statuses_spec.rb b/spec/system/admin/statuses_spec.rb index bb76a2963d0d07..998ffc89df8503 100644 --- a/spec/system/admin/statuses_spec.rb +++ b/spec/system/admin/statuses_spec.rb @@ -3,7 +3,7 @@ require 'rails_helper' RSpec.describe 'Admin::Statuses' do - let(:current_user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) } + let(:current_user) { Fabricate(:admin_user) } before do sign_in current_user diff --git a/spec/system/admin/tags_spec.rb b/spec/system/admin/tags_spec.rb index a3eca80d13614a..91227f0ca76fe7 100644 --- a/spec/system/admin/tags_spec.rb +++ b/spec/system/admin/tags_spec.rb @@ -6,7 +6,7 @@ describe 'Tag interaction' do let!(:tag) { Fabricate(:tag, name: 'test') } - before { sign_in Fabricate(:user, role: UserRole.find_by(name: 'Admin')) } + before { sign_in Fabricate(:admin_user) } it 'allows tags listing and editing' do visit admin_tags_path diff --git a/spec/system/admin/terms_of_service_spec.rb b/spec/system/admin/terms_of_service_spec.rb index d6ee1469d28b2d..08421380343d67 100644 --- a/spec/system/admin/terms_of_service_spec.rb +++ b/spec/system/admin/terms_of_service_spec.rb @@ -6,7 +6,7 @@ describe 'Viewing terms of services index page' do let!(:terms) { Fabricate :terms_of_service, text: 'Test terms' } - before { sign_in Fabricate(:user, role: UserRole.find_by(name: 'Admin')) } + before { sign_in Fabricate(:admin_user) } it 'allows tags listing and editing' do visit admin_terms_of_service_index_path diff --git a/spec/system/admin/trends/links/preview_card_providers_spec.rb b/spec/system/admin/trends/links/preview_card_providers_spec.rb index 16343a68917c44..0a5b5a7581b1e8 100644 --- a/spec/system/admin/trends/links/preview_card_providers_spec.rb +++ b/spec/system/admin/trends/links/preview_card_providers_spec.rb @@ -3,7 +3,7 @@ require 'rails_helper' RSpec.describe 'Admin::Trends::Links::PreviewCardProviders' do - let(:current_user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) } + let(:current_user) { Fabricate(:admin_user) } before do sign_in current_user diff --git a/spec/system/admin/trends/links_spec.rb b/spec/system/admin/trends/links_spec.rb index 7a51c337c9f04b..15138f42d119a0 100644 --- a/spec/system/admin/trends/links_spec.rb +++ b/spec/system/admin/trends/links_spec.rb @@ -3,7 +3,7 @@ require 'rails_helper' RSpec.describe 'Admin::Trends::Links' do - let(:current_user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) } + let(:current_user) { Fabricate(:admin_user) } before do sign_in current_user diff --git a/spec/system/admin/trends/statuses_spec.rb b/spec/system/admin/trends/statuses_spec.rb index 13fc966dfd17af..45c048afb07787 100644 --- a/spec/system/admin/trends/statuses_spec.rb +++ b/spec/system/admin/trends/statuses_spec.rb @@ -3,7 +3,7 @@ require 'rails_helper' RSpec.describe 'Admin::Trends::Statuses' do - let(:current_user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) } + let(:current_user) { Fabricate(:admin_user) } before do sign_in current_user diff --git a/spec/system/admin/trends/tags_spec.rb b/spec/system/admin/trends/tags_spec.rb index d914badbd4c443..30b0850b938187 100644 --- a/spec/system/admin/trends/tags_spec.rb +++ b/spec/system/admin/trends/tags_spec.rb @@ -3,7 +3,7 @@ require 'rails_helper' RSpec.describe 'Admin::Trends::Tags' do - let(:current_user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) } + let(:current_user) { Fabricate(:admin_user) } before do sign_in current_user diff --git a/spec/system/admin/webhooks_spec.rb b/spec/system/admin/webhooks_spec.rb index eb3138c3800522..cd9eb96da2364b 100644 --- a/spec/system/admin/webhooks_spec.rb +++ b/spec/system/admin/webhooks_spec.rb @@ -4,7 +4,7 @@ RSpec.describe 'Admin Webhooks' do describe 'Managing webhooks' do - before { sign_in Fabricate(:user, role: UserRole.find_by(name: 'Admin')) } + before { sign_in Fabricate(:admin_user) } describe 'Viewing webhooks' do let!(:webhook) { Fabricate :webhook } diff --git a/spec/system/disputes/appeals_spec.rb b/spec/system/disputes/appeals_spec.rb index a225635fb2ec4a..860b8fcfd18ac2 100644 --- a/spec/system/disputes/appeals_spec.rb +++ b/spec/system/disputes/appeals_spec.rb @@ -4,7 +4,7 @@ RSpec.describe 'Dispute Appeals' do let(:user) { Fabricate(:user) } - let!(:admin) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) } + let!(:admin) { Fabricate(:admin_user) } before { sign_in user } diff --git a/spec/workers/scheduler/auto_close_registrations_scheduler_spec.rb b/spec/workers/scheduler/auto_close_registrations_scheduler_spec.rb index d9355248ba8389..af3c3fba34f533 100644 --- a/spec/workers/scheduler/auto_close_registrations_scheduler_spec.rb +++ b/spec/workers/scheduler/auto_close_registrations_scheduler_spec.rb @@ -9,8 +9,8 @@ let(:moderator_activity_date) { Time.now.utc } before do - Fabricate(:user, role: UserRole.find_by(name: 'Owner'), current_sign_in_at: 10.years.ago) - Fabricate(:user, role: UserRole.find_by(name: 'Moderator'), current_sign_in_at: moderator_activity_date) + Fabricate(:owner_user, current_sign_in_at: 10.years.ago) + Fabricate(:moderator_user, current_sign_in_at: moderator_activity_date) end context 'when registrations are open' do From 79a9069debe67d099f9fc7c9725f3df01f50131f Mon Sep 17 00:00:00 2001 From: Claire Date: Fri, 3 Jan 2025 10:24:50 +0100 Subject: [PATCH 4/8] Add `t` hotkey for post translations (#33441) --- app/javascript/mastodon/components/status.jsx | 1 + .../mastodon/features/keyboard_shortcuts/index.jsx | 4 ++++ app/javascript/mastodon/features/status/index.jsx | 5 +++++ app/javascript/mastodon/features/ui/index.jsx | 1 + app/javascript/mastodon/locales/en.json | 1 + 5 files changed, 12 insertions(+) diff --git a/app/javascript/mastodon/components/status.jsx b/app/javascript/mastodon/components/status.jsx index a2759b8345ffa1..2be3b94285f491 100644 --- a/app/javascript/mastodon/components/status.jsx +++ b/app/javascript/mastodon/components/status.jsx @@ -384,6 +384,7 @@ class Status extends ImmutablePureComponent { toggleHidden: this.handleHotkeyToggleHidden, toggleSensitive: this.handleHotkeyToggleSensitive, openMedia: this.handleHotkeyOpenMedia, + onTranslate: this.handleTranslate, }; let media, statusAvatar, prepend, rebloggedByText; diff --git a/app/javascript/mastodon/features/keyboard_shortcuts/index.jsx b/app/javascript/mastodon/features/keyboard_shortcuts/index.jsx index e34295848024bb..285f0ea7cfe4ec 100644 --- a/app/javascript/mastodon/features/keyboard_shortcuts/index.jsx +++ b/app/javascript/mastodon/features/keyboard_shortcuts/index.jsx @@ -66,6 +66,10 @@ class KeyboardShortcuts extends ImmutablePureComponent { enter, o + + t + + e diff --git a/app/javascript/mastodon/features/status/index.jsx b/app/javascript/mastodon/features/status/index.jsx index 8da3d7e11ae47d..4b9e035a5f4b9d 100644 --- a/app/javascript/mastodon/features/status/index.jsx +++ b/app/javascript/mastodon/features/status/index.jsx @@ -474,6 +474,10 @@ class Status extends ImmutablePureComponent { this.handleToggleMediaVisibility(); }; + handleHotkeyTranslate = () => { + this.handleTranslate(this.props.status); + }; + handleMoveUp = id => { const { status, ancestorsIds, descendantsIds } = this.props; @@ -650,6 +654,7 @@ class Status extends ImmutablePureComponent { toggleHidden: this.handleHotkeyToggleHidden, toggleSensitive: this.handleHotkeyToggleSensitive, openMedia: this.handleHotkeyOpenMedia, + onTranslate: this.handleHotkeyTranslate, }; return ( diff --git a/app/javascript/mastodon/features/ui/index.jsx b/app/javascript/mastodon/features/ui/index.jsx index 052ac0ac5ba0b1..bfc540a3313882 100644 --- a/app/javascript/mastodon/features/ui/index.jsx +++ b/app/javascript/mastodon/features/ui/index.jsx @@ -126,6 +126,7 @@ const keyMap = { toggleHidden: 'x', toggleSensitive: 'h', openMedia: 'e', + onTranslate: 't', }; class SwitchingColumnsArea extends PureComponent { diff --git a/app/javascript/mastodon/locales/en.json b/app/javascript/mastodon/locales/en.json index 2a4258a7d4bbec..cf5834835d1ac2 100644 --- a/app/javascript/mastodon/locales/en.json +++ b/app/javascript/mastodon/locales/en.json @@ -457,6 +457,7 @@ "keyboard_shortcuts.toggle_hidden": "Show/hide text behind CW", "keyboard_shortcuts.toggle_sensitivity": "Show/hide media", "keyboard_shortcuts.toot": "Start a new post", + "keyboard_shortcuts.translate": "to translate a post", "keyboard_shortcuts.unfocus": "Unfocus compose textarea/search", "keyboard_shortcuts.up": "Move up in the list", "lightbox.close": "Close", From ed04547de2baf07ebb4383370e7e8f031e79fda1 Mon Sep 17 00:00:00 2001 From: Claire Date: Fri, 3 Jan 2025 10:24:55 +0100 Subject: [PATCH 5/8] Fix Renovate by temporarily constraining it to Ruby 3.3 (#33440) --- .github/renovate.json5 | 5 +++++ Gemfile | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/.github/renovate.json5 b/.github/renovate.json5 index 8a106762838bcb..3d3499922e4b54 100644 --- a/.github/renovate.json5 +++ b/.github/renovate.json5 @@ -14,6 +14,11 @@ // If we do not want a package to be grouped with others, we need to set its groupName // to `null` after any other rule set it to something. dependencyDashboardHeader: 'This issue lists Renovate updates and detected dependencies. Read the [Dependency Dashboard](https://docs.renovatebot.com/key-concepts/dashboard/) docs to learn more. Before approving any upgrade: read the description and comments in the [`renovate.json5` file](https://github.com/mastodon/mastodon/blob/main/.github/renovate.json5).', + constraints: { + // Mastodon should work on Ruby 3.4, but its test dependencies are currently uninstallable on Ruby 3.4. + // TODO: remove this once https://github.com/briandunn/flatware/issues/103 is fixed + ruby: '3.3', + }, postUpdateOptions: ['yarnDedupeHighest'], packageRules: [ { diff --git a/Gemfile b/Gemfile index 8bee3716478fa6..e8e1e154e1886c 100644 --- a/Gemfile +++ b/Gemfile @@ -1,7 +1,7 @@ # frozen_string_literal: true source 'https://rubygems.org' -ruby '>= 3.2.0' +ruby '>= 3.2.0', '< 3.5' gem 'propshaft' gem 'puma', '~> 6.3' From 098dd915238d3aa7af06436ff46596980e62323b Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 3 Jan 2025 12:16:44 +0100 Subject: [PATCH 6/8] Update dependency typescript to v5.7.2 (#33059) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/yarn.lock b/yarn.lock index b382ba3b8fae98..8f948e76090f43 100644 --- a/yarn.lock +++ b/yarn.lock @@ -17482,22 +17482,22 @@ __metadata: linkType: hard "typescript@npm:5, typescript@npm:^5.0.4": - version: 5.6.3 - resolution: "typescript@npm:5.6.3" + version: 5.7.2 + resolution: "typescript@npm:5.7.2" bin: tsc: bin/tsc tsserver: bin/tsserver - checksum: 10c0/44f61d3fb15c35359bc60399cb8127c30bae554cd555b8e2b46d68fa79d680354b83320ad419ff1b81a0bdf324197b29affe6cc28988cd6a74d4ac60c94f9799 + checksum: 10c0/a873118b5201b2ef332127ef5c63fb9d9c155e6fdbe211cbd9d8e65877283797cca76546bad742eea36ed7efbe3424a30376818f79c7318512064e8625d61622 languageName: node linkType: hard "typescript@patch:typescript@npm%3A5#optional!builtin, typescript@patch:typescript@npm%3A^5.0.4#optional!builtin": - version: 5.6.3 - resolution: "typescript@patch:typescript@npm%3A5.6.3#optional!builtin::version=5.6.3&hash=8c6c40" + version: 5.7.2 + resolution: "typescript@patch:typescript@npm%3A5.7.2#optional!builtin::version=5.7.2&hash=5786d5" bin: tsc: bin/tsc tsserver: bin/tsserver - checksum: 10c0/7c9d2e07c81226d60435939618c91ec2ff0b75fbfa106eec3430f0fcf93a584bc6c73176676f532d78c3594fe28a54b36eb40b3d75593071a7ec91301533ace7 + checksum: 10c0/f3b8082c9d1d1629a215245c9087df56cb784f9fb6f27b5d55577a20e68afe2a889c040aacff6d27e35be165ecf9dca66e694c42eb9a50b3b2c451b36b5675cb languageName: node linkType: hard From 6ffa251d6ad239d1ad2b95e784c3a7a21cbf50e8 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 3 Jan 2025 11:20:13 +0000 Subject: [PATCH 7/8] Update dependency net-http to '~> 0.6.0' (#33130) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Gemfile | 2 +- Gemfile.lock | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Gemfile b/Gemfile index e8e1e154e1886c..51f6d01c22b7f9 100644 --- a/Gemfile +++ b/Gemfile @@ -222,7 +222,7 @@ gem 'concurrent-ruby', require: false gem 'connection_pool', require: false gem 'xorcist', '~> 1.1' -gem 'net-http', '~> 0.5.0' +gem 'net-http', '~> 0.6.0' gem 'rubyzip', '~> 2.3' gem 'hcaptcha', '~> 7.1' diff --git a/Gemfile.lock b/Gemfile.lock index 956680b6cd8774..24c4d04766a086 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -413,7 +413,7 @@ GEM msgpack (1.7.5) multi_json (1.15.0) mutex_m (0.3.0) - net-http (0.5.0) + net-http (0.6.0) uri net-imap (0.5.4) date @@ -948,7 +948,7 @@ DEPENDENCIES memory_profiler mime-types (~> 3.6.0) mutex_m - net-http (~> 0.5.0) + net-http (~> 0.6.0) net-ldap (~> 0.18) nokogiri (~> 1.15) oj (~> 3.14) From 04be5e7f123a7cf7efbb163addfce889708f3010 Mon Sep 17 00:00:00 2001 From: Claire Date: Fri, 3 Jan 2025 10:24:50 +0100 Subject: [PATCH 8/8] [Glitch] Add `t` hotkey for post translations Port 79a9069debe67d099f9fc7c9725f3df01f50131f to glitch-soc Signed-off-by: Claire --- app/javascript/flavours/glitch/components/status.jsx | 1 + .../flavours/glitch/features/keyboard_shortcuts/index.jsx | 4 ++++ app/javascript/flavours/glitch/features/status/index.jsx | 5 +++++ app/javascript/flavours/glitch/features/ui/index.jsx | 1 + 4 files changed, 11 insertions(+) diff --git a/app/javascript/flavours/glitch/components/status.jsx b/app/javascript/flavours/glitch/components/status.jsx index 8eb97ac2a3c801..4e24a3e2889d71 100644 --- a/app/javascript/flavours/glitch/components/status.jsx +++ b/app/javascript/flavours/glitch/components/status.jsx @@ -473,6 +473,7 @@ class Status extends ImmutablePureComponent { bookmark: this.handleHotkeyBookmark, toggleSensitive: this.handleHotkeyToggleSensitive, openMedia: this.handleHotkeyOpenMedia, + onTranslate: this.handleTranslate, }; let prepend, rebloggedByText; diff --git a/app/javascript/flavours/glitch/features/keyboard_shortcuts/index.jsx b/app/javascript/flavours/glitch/features/keyboard_shortcuts/index.jsx index 8e5b4a9ea8d724..81fd947abd1452 100644 --- a/app/javascript/flavours/glitch/features/keyboard_shortcuts/index.jsx +++ b/app/javascript/flavours/glitch/features/keyboard_shortcuts/index.jsx @@ -70,6 +70,10 @@ class KeyboardShortcuts extends ImmutablePureComponent { enter, o + + t + + e diff --git a/app/javascript/flavours/glitch/features/status/index.jsx b/app/javascript/flavours/glitch/features/status/index.jsx index e977f02b7fc5d2..0247b67f818aca 100644 --- a/app/javascript/flavours/glitch/features/status/index.jsx +++ b/app/javascript/flavours/glitch/features/status/index.jsx @@ -485,6 +485,10 @@ class Status extends ImmutablePureComponent { this.props.history.push(`/@${this.props.status.getIn(['account', 'acct'])}`); }; + handleHotkeyTranslate = () => { + this.handleTranslate(this.props.status); + }; + handleMoveUp = id => { const { status, ancestorsIds, descendantsIds } = this.props; @@ -677,6 +681,7 @@ class Status extends ImmutablePureComponent { toggleHidden: this.handleToggleHidden, toggleSensitive: this.handleHotkeyToggleSensitive, openMedia: this.handleHotkeyOpenMedia, + onTranslate: this.handleHotkeyTranslate, }; return ( diff --git a/app/javascript/flavours/glitch/features/ui/index.jsx b/app/javascript/flavours/glitch/features/ui/index.jsx index ac29cee8362066..96a8fe89a3b660 100644 --- a/app/javascript/flavours/glitch/features/ui/index.jsx +++ b/app/javascript/flavours/glitch/features/ui/index.jsx @@ -136,6 +136,7 @@ const keyMap = { bookmark: 'd', toggleSensitive: 'h', openMedia: 'e', + onTranslate: 't', }; class SwitchingColumnsArea extends PureComponent {