Merge pull request #2927 from ClearlyClaire/glitch-soc/merge-upstream
Merge upstream changes up to 6ffa251d6a
			
			
This commit is contained in:
		
						commit
						84303b8b8e
					
				|  | @ -14,6 +14,11 @@ | ||||||
|   // If we do not want a package to be grouped with others, we need to set its groupName |   // 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. |   // 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).', |   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'], |   postUpdateOptions: ['yarnDedupeHighest'], | ||||||
|   packageRules: [ |   packageRules: [ | ||||||
|     { |     { | ||||||
|  |  | ||||||
							
								
								
									
										8
									
								
								Gemfile
								
								
								
								
							
							
						
						
									
										8
									
								
								Gemfile
								
								
								
								
							|  | @ -1,7 +1,7 @@ | ||||||
| # frozen_string_literal: true | # frozen_string_literal: true | ||||||
| 
 | 
 | ||||||
| source 'https://rubygems.org' | source 'https://rubygems.org' | ||||||
| ruby '>= 3.2.0' | ruby '>= 3.2.0', '< 3.5' | ||||||
| 
 | 
 | ||||||
| gem 'propshaft' | gem 'propshaft' | ||||||
| gem 'puma', '~> 6.3' | gem 'puma', '~> 6.3' | ||||||
|  | @ -79,7 +79,7 @@ gem 'redis', '~> 4.5', require: ['redis', 'redis/connection/hiredis'] | ||||||
| gem 'redis-namespace', '~> 1.10' | gem 'redis-namespace', '~> 1.10' | ||||||
| gem 'rqrcode', '~> 2.2' | gem 'rqrcode', '~> 2.2' | ||||||
| gem 'ruby-progressbar', '~> 1.13' | gem 'ruby-progressbar', '~> 1.13' | ||||||
| gem 'sanitize', '~> 6.0' | gem 'sanitize', '~> 7.0' | ||||||
| gem 'scenic', '~> 1.7' | gem 'scenic', '~> 1.7' | ||||||
| gem 'sidekiq', '~> 6.5' | gem 'sidekiq', '~> 6.5' | ||||||
| gem 'sidekiq-bulk', '~> 0.2.0' | gem 'sidekiq-bulk', '~> 0.2.0' | ||||||
|  | @ -183,7 +183,7 @@ group :development do | ||||||
|   gem 'letter_opener_web', '~> 3.0' |   gem 'letter_opener_web', '~> 3.0' | ||||||
| 
 | 
 | ||||||
|   # Security analysis CLI tools |   # Security analysis CLI tools | ||||||
|   gem 'brakeman', '~> 6.0', require: false |   gem 'brakeman', '~> 7.0', require: false | ||||||
|   gem 'bundler-audit', '~> 0.9', require: false |   gem 'bundler-audit', '~> 0.9', require: false | ||||||
| 
 | 
 | ||||||
|   # Linter CLI for HAML files |   # Linter CLI for HAML files | ||||||
|  | @ -222,7 +222,7 @@ gem 'concurrent-ruby', require: false | ||||||
| gem 'connection_pool', require: false | gem 'connection_pool', require: false | ||||||
| gem 'xorcist', '~> 1.1' | gem 'xorcist', '~> 1.1' | ||||||
| 
 | 
 | ||||||
| gem 'net-http', '~> 0.5.0' | gem 'net-http', '~> 0.6.0' | ||||||
| gem 'rubyzip', '~> 2.3' | gem 'rubyzip', '~> 2.3' | ||||||
| 
 | 
 | ||||||
| gem 'hcaptcha', '~> 7.1' | gem 'hcaptcha', '~> 7.1' | ||||||
|  |  | ||||||
							
								
								
									
										36
									
								
								Gemfile.lock
								
								
								
								
							
							
						
						
									
										36
									
								
								Gemfile.lock
								
								
								
								
							|  | @ -94,8 +94,8 @@ GEM | ||||||
|     ast (2.4.2) |     ast (2.4.2) | ||||||
|     attr_required (1.0.2) |     attr_required (1.0.2) | ||||||
|     aws-eventstream (1.3.0) |     aws-eventstream (1.3.0) | ||||||
|     aws-partitions (1.1025.0) |     aws-partitions (1.1029.0) | ||||||
|     aws-sdk-core (3.214.0) |     aws-sdk-core (3.214.1) | ||||||
|       aws-eventstream (~> 1, >= 1.3.0) |       aws-eventstream (~> 1, >= 1.3.0) | ||||||
|       aws-partitions (~> 1, >= 1.992.0) |       aws-partitions (~> 1, >= 1.992.0) | ||||||
|       aws-sigv4 (~> 1.9) |       aws-sigv4 (~> 1.9) | ||||||
|  | @ -126,7 +126,7 @@ GEM | ||||||
|     blurhash (0.1.8) |     blurhash (0.1.8) | ||||||
|     bootsnap (1.18.4) |     bootsnap (1.18.4) | ||||||
|       msgpack (~> 1.2) |       msgpack (~> 1.2) | ||||||
|     brakeman (6.2.2) |     brakeman (7.0.0) | ||||||
|       racc |       racc | ||||||
|     browser (6.2.0) |     browser (6.2.0) | ||||||
|     brpoplpush-redis_script (0.1.3) |     brpoplpush-redis_script (0.1.3) | ||||||
|  | @ -217,7 +217,7 @@ GEM | ||||||
|       htmlentities (~> 4.3.3) |       htmlentities (~> 4.3.3) | ||||||
|       launchy (>= 2.1, < 4.0) |       launchy (>= 2.1, < 4.0) | ||||||
|       mail (~> 2.7) |       mail (~> 2.7) | ||||||
|     erubi (1.13.0) |     erubi (1.13.1) | ||||||
|     et-orbi (1.2.11) |     et-orbi (1.2.11) | ||||||
|       tzinfo |       tzinfo | ||||||
|     excon (0.112.0) |     excon (0.112.0) | ||||||
|  | @ -234,7 +234,7 @@ GEM | ||||||
|       net-http (>= 0.5.0) |       net-http (>= 0.5.0) | ||||||
|     fast_blank (1.0.1) |     fast_blank (1.0.1) | ||||||
|     fastimage (2.3.1) |     fastimage (2.3.1) | ||||||
|     ffi (1.17.0) |     ffi (1.17.1) | ||||||
|     ffi-compiler (1.3.2) |     ffi-compiler (1.3.2) | ||||||
|       ffi (>= 1.15.5) |       ffi (>= 1.15.5) | ||||||
|       rake |       rake | ||||||
|  | @ -390,7 +390,7 @@ GEM | ||||||
|       activesupport (>= 4) |       activesupport (>= 4) | ||||||
|       railties (>= 4) |       railties (>= 4) | ||||||
|       request_store (~> 1.0) |       request_store (~> 1.0) | ||||||
|     loofah (2.23.1) |     loofah (2.24.0) | ||||||
|       crass (~> 1.0.2) |       crass (~> 1.0.2) | ||||||
|       nokogiri (>= 1.12.0) |       nokogiri (>= 1.12.0) | ||||||
|     mail (2.8.1) |     mail (2.8.1) | ||||||
|  | @ -413,9 +413,9 @@ GEM | ||||||
|     msgpack (1.7.5) |     msgpack (1.7.5) | ||||||
|     multi_json (1.15.0) |     multi_json (1.15.0) | ||||||
|     mutex_m (0.3.0) |     mutex_m (0.3.0) | ||||||
|     net-http (0.5.0) |     net-http (0.6.0) | ||||||
|       uri |       uri | ||||||
|     net-imap (0.5.2) |     net-imap (0.5.4) | ||||||
|       date |       date | ||||||
|       net-protocol |       net-protocol | ||||||
|     net-ldap (0.19.0) |     net-ldap (0.19.0) | ||||||
|  | @ -426,10 +426,10 @@ GEM | ||||||
|     net-smtp (0.5.0) |     net-smtp (0.5.0) | ||||||
|       net-protocol |       net-protocol | ||||||
|     nio4r (2.7.4) |     nio4r (2.7.4) | ||||||
|     nokogiri (1.17.2) |     nokogiri (1.18.1) | ||||||
|       mini_portile2 (~> 2.8.2) |       mini_portile2 (~> 2.8.2) | ||||||
|       racc (~> 1.4) |       racc (~> 1.4) | ||||||
|     oj (3.16.8) |     oj (3.16.9) | ||||||
|       bigdecimal (>= 3.0) |       bigdecimal (>= 3.0) | ||||||
|       ostruct (>= 0.2) |       ostruct (>= 0.2) | ||||||
|     omniauth (2.1.2) |     omniauth (2.1.2) | ||||||
|  | @ -608,7 +608,7 @@ GEM | ||||||
|       rack |       rack | ||||||
|     rack-session (1.0.2) |     rack-session (1.0.2) | ||||||
|       rack (< 3) |       rack (< 3) | ||||||
|     rack-test (2.1.0) |     rack-test (2.2.0) | ||||||
|       rack (>= 1.3) |       rack (>= 1.3) | ||||||
|     rackup (1.0.1) |     rackup (1.0.1) | ||||||
|       rack (< 3) |       rack (< 3) | ||||||
|  | @ -749,9 +749,9 @@ GEM | ||||||
|       fugit (~> 1.1, >= 1.11.1) |       fugit (~> 1.1, >= 1.11.1) | ||||||
|     safety_net_attestation (0.4.0) |     safety_net_attestation (0.4.0) | ||||||
|       jwt (~> 2.0) |       jwt (~> 2.0) | ||||||
|     sanitize (6.1.3) |     sanitize (7.0.0) | ||||||
|       crass (~> 1.0.2) |       crass (~> 1.0.2) | ||||||
|       nokogiri (>= 1.12.0) |       nokogiri (>= 1.16.8) | ||||||
|     scenic (1.8.0) |     scenic (1.8.0) | ||||||
|       activerecord (>= 4.0.0) |       activerecord (>= 4.0.0) | ||||||
|       railties (>= 4.0.0) |       railties (>= 4.0.0) | ||||||
|  | @ -811,7 +811,7 @@ GEM | ||||||
|       climate_control |       climate_control | ||||||
|     test-prof (1.4.3) |     test-prof (1.4.3) | ||||||
|     thor (1.3.2) |     thor (1.3.2) | ||||||
|     tilt (2.4.0) |     tilt (2.5.0) | ||||||
|     timeout (0.4.3) |     timeout (0.4.3) | ||||||
|     tpm-key_attestation (0.12.1) |     tpm-key_attestation (0.12.1) | ||||||
|       bindata (~> 2.4) |       bindata (~> 2.4) | ||||||
|  | @ -891,7 +891,7 @@ DEPENDENCIES | ||||||
|   binding_of_caller (~> 1.0) |   binding_of_caller (~> 1.0) | ||||||
|   blurhash (~> 0.1) |   blurhash (~> 0.1) | ||||||
|   bootsnap (~> 1.18.0) |   bootsnap (~> 1.18.0) | ||||||
|   brakeman (~> 6.0) |   brakeman (~> 7.0) | ||||||
|   browser |   browser | ||||||
|   bundler-audit (~> 0.9) |   bundler-audit (~> 0.9) | ||||||
|   capybara (~> 3.39) |   capybara (~> 3.39) | ||||||
|  | @ -948,7 +948,7 @@ DEPENDENCIES | ||||||
|   memory_profiler |   memory_profiler | ||||||
|   mime-types (~> 3.6.0) |   mime-types (~> 3.6.0) | ||||||
|   mutex_m |   mutex_m | ||||||
|   net-http (~> 0.5.0) |   net-http (~> 0.6.0) | ||||||
|   net-ldap (~> 0.18) |   net-ldap (~> 0.18) | ||||||
|   nokogiri (~> 1.15) |   nokogiri (~> 1.15) | ||||||
|   oj (~> 3.14) |   oj (~> 3.14) | ||||||
|  | @ -1007,7 +1007,7 @@ DEPENDENCIES | ||||||
|   ruby-progressbar (~> 1.13) |   ruby-progressbar (~> 1.13) | ||||||
|   ruby-vips (~> 2.2) |   ruby-vips (~> 2.2) | ||||||
|   rubyzip (~> 2.3) |   rubyzip (~> 2.3) | ||||||
|   sanitize (~> 6.0) |   sanitize (~> 7.0) | ||||||
|   scenic (~> 1.7) |   scenic (~> 1.7) | ||||||
|   selenium-webdriver |   selenium-webdriver | ||||||
|   shoulda-matchers |   shoulda-matchers | ||||||
|  | @ -1037,4 +1037,4 @@ RUBY VERSION | ||||||
|    ruby 3.3.6p108 |    ruby 3.3.6p108 | ||||||
| 
 | 
 | ||||||
| BUNDLED WITH | BUNDLED WITH | ||||||
|    2.6.1 |    2.6.2 | ||||||
|  |  | ||||||
|  | @ -473,6 +473,7 @@ class Status extends ImmutablePureComponent { | ||||||
|       bookmark: this.handleHotkeyBookmark, |       bookmark: this.handleHotkeyBookmark, | ||||||
|       toggleSensitive: this.handleHotkeyToggleSensitive, |       toggleSensitive: this.handleHotkeyToggleSensitive, | ||||||
|       openMedia: this.handleHotkeyOpenMedia, |       openMedia: this.handleHotkeyOpenMedia, | ||||||
|  |       onTranslate: this.handleTranslate, | ||||||
|     }; |     }; | ||||||
| 
 | 
 | ||||||
|     let prepend, rebloggedByText; |     let prepend, rebloggedByText; | ||||||
|  |  | ||||||
|  | @ -70,6 +70,10 @@ class KeyboardShortcuts extends ImmutablePureComponent { | ||||||
|                 <td><kbd>enter</kbd>, <kbd>o</kbd></td> |                 <td><kbd>enter</kbd>, <kbd>o</kbd></td> | ||||||
|                 <td><FormattedMessage id='keyboard_shortcuts.enter' defaultMessage='to open status' /></td> |                 <td><FormattedMessage id='keyboard_shortcuts.enter' defaultMessage='to open status' /></td> | ||||||
|               </tr> |               </tr> | ||||||
|  |               <tr> | ||||||
|  |                 <td><kbd>t</kbd></td> | ||||||
|  |                 <td><FormattedMessage id='keyboard_shortcuts.translate' defaultMessage='to translate a post' /></td> | ||||||
|  |               </tr> | ||||||
|               <tr> |               <tr> | ||||||
|                 <td><kbd>e</kbd></td> |                 <td><kbd>e</kbd></td> | ||||||
|                 <td><FormattedMessage id='keyboard_shortcuts.open_media' defaultMessage='to open media' /></td> |                 <td><FormattedMessage id='keyboard_shortcuts.open_media' defaultMessage='to open media' /></td> | ||||||
|  |  | ||||||
|  | @ -485,6 +485,10 @@ class Status extends ImmutablePureComponent { | ||||||
|     this.props.history.push(`/@${this.props.status.getIn(['account', 'acct'])}`); |     this.props.history.push(`/@${this.props.status.getIn(['account', 'acct'])}`); | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|  |   handleHotkeyTranslate = () => { | ||||||
|  |     this.handleTranslate(this.props.status); | ||||||
|  |   }; | ||||||
|  | 
 | ||||||
|   handleMoveUp = id => { |   handleMoveUp = id => { | ||||||
|     const { status, ancestorsIds, descendantsIds } = this.props; |     const { status, ancestorsIds, descendantsIds } = this.props; | ||||||
| 
 | 
 | ||||||
|  | @ -677,6 +681,7 @@ class Status extends ImmutablePureComponent { | ||||||
|       toggleHidden: this.handleToggleHidden, |       toggleHidden: this.handleToggleHidden, | ||||||
|       toggleSensitive: this.handleHotkeyToggleSensitive, |       toggleSensitive: this.handleHotkeyToggleSensitive, | ||||||
|       openMedia: this.handleHotkeyOpenMedia, |       openMedia: this.handleHotkeyOpenMedia, | ||||||
|  |       onTranslate: this.handleHotkeyTranslate, | ||||||
|     }; |     }; | ||||||
| 
 | 
 | ||||||
|     return ( |     return ( | ||||||
|  |  | ||||||
|  | @ -136,6 +136,7 @@ const keyMap = { | ||||||
|   bookmark: 'd', |   bookmark: 'd', | ||||||
|   toggleSensitive: 'h', |   toggleSensitive: 'h', | ||||||
|   openMedia: 'e', |   openMedia: 'e', | ||||||
|  |   onTranslate: 't', | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| class SwitchingColumnsArea extends PureComponent { | class SwitchingColumnsArea extends PureComponent { | ||||||
|  |  | ||||||
|  | @ -384,6 +384,7 @@ class Status extends ImmutablePureComponent { | ||||||
|       toggleHidden: this.handleHotkeyToggleHidden, |       toggleHidden: this.handleHotkeyToggleHidden, | ||||||
|       toggleSensitive: this.handleHotkeyToggleSensitive, |       toggleSensitive: this.handleHotkeyToggleSensitive, | ||||||
|       openMedia: this.handleHotkeyOpenMedia, |       openMedia: this.handleHotkeyOpenMedia, | ||||||
|  |       onTranslate: this.handleTranslate, | ||||||
|     }; |     }; | ||||||
| 
 | 
 | ||||||
|     let media, statusAvatar, prepend, rebloggedByText; |     let media, statusAvatar, prepend, rebloggedByText; | ||||||
|  |  | ||||||
|  | @ -66,6 +66,10 @@ class KeyboardShortcuts extends ImmutablePureComponent { | ||||||
|                 <td><kbd>enter</kbd>, <kbd>o</kbd></td> |                 <td><kbd>enter</kbd>, <kbd>o</kbd></td> | ||||||
|                 <td><FormattedMessage id='keyboard_shortcuts.enter' defaultMessage='to open status' /></td> |                 <td><FormattedMessage id='keyboard_shortcuts.enter' defaultMessage='to open status' /></td> | ||||||
|               </tr> |               </tr> | ||||||
|  |               <tr> | ||||||
|  |                 <td><kbd>t</kbd></td> | ||||||
|  |                 <td><FormattedMessage id='keyboard_shortcuts.translate' defaultMessage='to translate a post' /></td> | ||||||
|  |               </tr> | ||||||
|               <tr> |               <tr> | ||||||
|                 <td><kbd>e</kbd></td> |                 <td><kbd>e</kbd></td> | ||||||
|                 <td><FormattedMessage id='keyboard_shortcuts.open_media' defaultMessage='to open media' /></td> |                 <td><FormattedMessage id='keyboard_shortcuts.open_media' defaultMessage='to open media' /></td> | ||||||
|  |  | ||||||
|  | @ -474,6 +474,10 @@ class Status extends ImmutablePureComponent { | ||||||
|     this.handleToggleMediaVisibility(); |     this.handleToggleMediaVisibility(); | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|  |   handleHotkeyTranslate = () => { | ||||||
|  |     this.handleTranslate(this.props.status); | ||||||
|  |   }; | ||||||
|  | 
 | ||||||
|   handleMoveUp = id => { |   handleMoveUp = id => { | ||||||
|     const { status, ancestorsIds, descendantsIds } = this.props; |     const { status, ancestorsIds, descendantsIds } = this.props; | ||||||
| 
 | 
 | ||||||
|  | @ -650,6 +654,7 @@ class Status extends ImmutablePureComponent { | ||||||
|       toggleHidden: this.handleHotkeyToggleHidden, |       toggleHidden: this.handleHotkeyToggleHidden, | ||||||
|       toggleSensitive: this.handleHotkeyToggleSensitive, |       toggleSensitive: this.handleHotkeyToggleSensitive, | ||||||
|       openMedia: this.handleHotkeyOpenMedia, |       openMedia: this.handleHotkeyOpenMedia, | ||||||
|  |       onTranslate: this.handleHotkeyTranslate, | ||||||
|     }; |     }; | ||||||
| 
 | 
 | ||||||
|     return ( |     return ( | ||||||
|  |  | ||||||
|  | @ -126,6 +126,7 @@ const keyMap = { | ||||||
|   toggleHidden: 'x', |   toggleHidden: 'x', | ||||||
|   toggleSensitive: 'h', |   toggleSensitive: 'h', | ||||||
|   openMedia: 'e', |   openMedia: 'e', | ||||||
|  |   onTranslate: 't', | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| class SwitchingColumnsArea extends PureComponent { | class SwitchingColumnsArea extends PureComponent { | ||||||
|  |  | ||||||
|  | @ -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.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.redraft": "Slet og omformulér", | ||||||
|   "status.remove_bookmark": "Fjern bogmærke", |   "status.remove_bookmark": "Fjern bogmærke", | ||||||
|  |   "status.remove_favourite": "Fjern fra favoritter", | ||||||
|   "status.replied_in_thread": "Svaret i tråd", |   "status.replied_in_thread": "Svaret i tråd", | ||||||
|   "status.replied_to": "Besvarede {name}", |   "status.replied_to": "Besvarede {name}", | ||||||
|   "status.reply": "Besvar", |   "status.reply": "Besvar", | ||||||
|  |  | ||||||
|  | @ -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.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": "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.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.duration": "Umfragedauer", | ||||||
|   "compose_form.poll.multiple": "Mehrfachauswahl", |   "compose_form.poll.multiple": "Mehrfachauswahl", | ||||||
|   "compose_form.poll.option_placeholder": "{number}. Auswahl", |   "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.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.redraft": "Löschen und neu erstellen", | ||||||
|   "status.remove_bookmark": "Lesezeichen entfernen", |   "status.remove_bookmark": "Lesezeichen entfernen", | ||||||
|  |   "status.remove_favourite": "Aus Favoriten entfernen", | ||||||
|   "status.replied_in_thread": "Antwortete im Thread", |   "status.replied_in_thread": "Antwortete im Thread", | ||||||
|   "status.replied_to": "Antwortete {name}", |   "status.replied_to": "Antwortete {name}", | ||||||
|   "status.reply": "Antworten", |   "status.reply": "Antworten", | ||||||
|  |  | ||||||
|  | @ -457,6 +457,7 @@ | ||||||
|   "keyboard_shortcuts.toggle_hidden": "Show/hide text behind CW", |   "keyboard_shortcuts.toggle_hidden": "Show/hide text behind CW", | ||||||
|   "keyboard_shortcuts.toggle_sensitivity": "Show/hide media", |   "keyboard_shortcuts.toggle_sensitivity": "Show/hide media", | ||||||
|   "keyboard_shortcuts.toot": "Start a new post", |   "keyboard_shortcuts.toot": "Start a new post", | ||||||
|  |   "keyboard_shortcuts.translate": "to translate a post", | ||||||
|   "keyboard_shortcuts.unfocus": "Unfocus compose textarea/search", |   "keyboard_shortcuts.unfocus": "Unfocus compose textarea/search", | ||||||
|   "keyboard_shortcuts.up": "Move up in the list", |   "keyboard_shortcuts.up": "Move up in the list", | ||||||
|   "lightbox.close": "Close", |   "lightbox.close": "Close", | ||||||
|  |  | ||||||
|  | @ -836,6 +836,7 @@ | ||||||
|   "status.reblogs.empty": "Ankoraŭ neniu diskonigis tiun afiŝon. Kiam iu faras tion, ri aperos ĉi tie.", |   "status.reblogs.empty": "Ankoraŭ neniu diskonigis tiun afiŝon. Kiam iu faras tion, ri aperos ĉi tie.", | ||||||
|   "status.redraft": "Forigi kaj reskribi", |   "status.redraft": "Forigi kaj reskribi", | ||||||
|   "status.remove_bookmark": "Forigi legosignon", |   "status.remove_bookmark": "Forigi legosignon", | ||||||
|  |   "status.remove_favourite": "Forigi el plej ŝatataj", | ||||||
|   "status.replied_in_thread": "Respondis en fadeno", |   "status.replied_in_thread": "Respondis en fadeno", | ||||||
|   "status.replied_to": "Respondis al {name}", |   "status.replied_to": "Respondis al {name}", | ||||||
|   "status.reply": "Respondi", |   "status.reply": "Respondi", | ||||||
|  |  | ||||||
|  | @ -836,6 +836,7 @@ | ||||||
|   "status.reblogs.empty": "Todavía nadie adhirió a este mensaje. Cuando alguien lo haga, se mostrará acá.", |   "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.redraft": "Eliminar mensaje original y editarlo", | ||||||
|   "status.remove_bookmark": "Quitar marcador", |   "status.remove_bookmark": "Quitar marcador", | ||||||
|  |   "status.remove_favourite": "Quitar de favoritos", | ||||||
|   "status.replied_in_thread": "Respuesta en hilo", |   "status.replied_in_thread": "Respuesta en hilo", | ||||||
|   "status.replied_to": "Respondió a {name}", |   "status.replied_to": "Respondió a {name}", | ||||||
|   "status.reply": "Responder", |   "status.reply": "Responder", | ||||||
|  |  | ||||||
|  | @ -836,6 +836,7 @@ | ||||||
|   "status.reblogs.empty": "Nadie impulsó esta publicación todavía. Cuando alguien lo haga, aparecerá aquí.", |   "status.reblogs.empty": "Nadie impulsó esta publicación todavía. Cuando alguien lo haga, aparecerá aquí.", | ||||||
|   "status.redraft": "Borrar y volver a borrador", |   "status.redraft": "Borrar y volver a borrador", | ||||||
|   "status.remove_bookmark": "Eliminar marcador", |   "status.remove_bookmark": "Eliminar marcador", | ||||||
|  |   "status.remove_favourite": "Eliminar de favoritos", | ||||||
|   "status.replied_in_thread": "Respondido en el hilo", |   "status.replied_in_thread": "Respondido en el hilo", | ||||||
|   "status.replied_to": "Respondió a {name}", |   "status.replied_to": "Respondió a {name}", | ||||||
|   "status.reply": "Responder", |   "status.reply": "Responder", | ||||||
|  |  | ||||||
|  | @ -836,6 +836,7 @@ | ||||||
|   "status.reblogs.empty": "Nadie ha impulsado esta publicación todavía. Cuando alguien lo haga, aparecerá aquí.", |   "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.redraft": "Borrar y volver a borrador", | ||||||
|   "status.remove_bookmark": "Eliminar marcador", |   "status.remove_bookmark": "Eliminar marcador", | ||||||
|  |   "status.remove_favourite": "Eliminar de favoritos", | ||||||
|   "status.replied_in_thread": "Respondió en el hilo", |   "status.replied_in_thread": "Respondió en el hilo", | ||||||
|   "status.replied_to": "Respondió a {name}", |   "status.replied_to": "Respondió a {name}", | ||||||
|   "status.reply": "Responder", |   "status.reply": "Responder", | ||||||
|  |  | ||||||
|  | @ -12,7 +12,7 @@ | ||||||
|   "about.powered_by": "Hajutatud sotsiaalmeedia, mille taga on {mastodon}", |   "about.powered_by": "Hajutatud sotsiaalmeedia, mille taga on {mastodon}", | ||||||
|   "about.rules": "Serveri reeglid", |   "about.rules": "Serveri reeglid", | ||||||
|   "account.account_note_header": "Isiklik märge", |   "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.bot": "Robot", | ||||||
|   "account.badges.group": "Grupp", |   "account.badges.group": "Grupp", | ||||||
|   "account.block": "Blokeeri @{name}", |   "account.block": "Blokeeri @{name}", | ||||||
|  | @ -150,7 +150,7 @@ | ||||||
|   "column.follow_requests": "Jälgimistaotlused", |   "column.follow_requests": "Jälgimistaotlused", | ||||||
|   "column.home": "Kodu", |   "column.home": "Kodu", | ||||||
|   "column.list_members": "Halda loendi liikmeid", |   "column.list_members": "Halda loendi liikmeid", | ||||||
|   "column.lists": "Nimekirjad", |   "column.lists": "Loetelud", | ||||||
|   "column.mutes": "Vaigistatud kasutajad", |   "column.mutes": "Vaigistatud kasutajad", | ||||||
|   "column.notifications": "Teated", |   "column.notifications": "Teated", | ||||||
|   "column.pins": "Kinnitatud postitused", |   "column.pins": "Kinnitatud postitused", | ||||||
|  | @ -426,7 +426,7 @@ | ||||||
|   "intervals.full.hours": "{number, plural, one {# tund} other {# tundi}}", |   "intervals.full.hours": "{number, plural, one {# tund} other {# tundi}}", | ||||||
|   "intervals.full.minutes": "{number, plural, one {# minut} other {# minutit}}", |   "intervals.full.minutes": "{number, plural, one {# minut} other {# minutit}}", | ||||||
|   "keyboard_shortcuts.back": "Liigu tagasi", |   "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.boost": "Jaga", | ||||||
|   "keyboard_shortcuts.column": "Fookus veerule", |   "keyboard_shortcuts.column": "Fookus veerule", | ||||||
|   "keyboard_shortcuts.compose": "Fookus teksti koostamise alale", |   "keyboard_shortcuts.compose": "Fookus teksti koostamise alale", | ||||||
|  | @ -474,14 +474,27 @@ | ||||||
|   "lists.add_to_lists": "Lisa {name} loetellu", |   "lists.add_to_lists": "Lisa {name} loetellu", | ||||||
|   "lists.create": "Loo", |   "lists.create": "Loo", | ||||||
|   "lists.create_a_list_to_organize": "Loo uus loetelu, et organiseerida oma avalehe lõime", |   "lists.create_a_list_to_organize": "Loo uus loetelu, et organiseerida oma avalehe lõime", | ||||||
|   "lists.delete": "Kustuta nimekiri", |   "lists.create_list": "Loo loetelu", | ||||||
|   "lists.edit": "Muuda nimekirja", |   "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_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.followed": "Igalt jälgitud kasutajalt", | ||||||
|   "lists.replies_policy.list": "Listi liikmetelt", |   "lists.replies_policy.list": "Loetelu liikmetelt", | ||||||
|   "lists.replies_policy.none": "Mitte kelleltki", |   "lists.replies_policy.none": "Mitte kelleltki", | ||||||
|   "lists.save": "Salvesta", |   "lists.save": "Salvesta", | ||||||
|   "lists.search": "Otsi", |   "lists.search": "Otsi", | ||||||
|  |   "lists.show_replies_to": "Kaasa ka loetelu liikmete vastused", | ||||||
|   "load_pending": "{count, plural, one {# uus kirje} other {# uut kirjet}}", |   "load_pending": "{count, plural, one {# uus kirje} other {# uut kirjet}}", | ||||||
|   "loading_indicator.label": "Laadimine…", |   "loading_indicator.label": "Laadimine…", | ||||||
|   "media_gallery.hide": "Peida", |   "media_gallery.hide": "Peida", | ||||||
|  | @ -511,7 +524,7 @@ | ||||||
|   "navigation_bar.follow_requests": "Jälgimistaotlused", |   "navigation_bar.follow_requests": "Jälgimistaotlused", | ||||||
|   "navigation_bar.followed_tags": "Jälgitavad märksõnad", |   "navigation_bar.followed_tags": "Jälgitavad märksõnad", | ||||||
|   "navigation_bar.follows_and_followers": "Jälgitavad ja jälgijad", |   "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.logout": "Logi välja", | ||||||
|   "navigation_bar.moderation": "Modereerimine", |   "navigation_bar.moderation": "Modereerimine", | ||||||
|   "navigation_bar.mutes": "Vaigistatud kasutajad", |   "navigation_bar.mutes": "Vaigistatud kasutajad", | ||||||
|  | @ -636,7 +649,11 @@ | ||||||
|   "notifications_permission_banner.enable": "Luba töölaua märguanded", |   "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.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", |   "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.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": "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.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", |   "onboarding.profile.display_name": "Näidatav nimi", | ||||||
|  |  | ||||||
|  | @ -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.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.redraft": "Poista ja palauta muokattavaksi", | ||||||
|   "status.remove_bookmark": "Poista kirjanmerkki", |   "status.remove_bookmark": "Poista kirjanmerkki", | ||||||
|  |   "status.remove_favourite": "Poista suosikeista", | ||||||
|   "status.replied_in_thread": "Vastasi ketjuun", |   "status.replied_in_thread": "Vastasi ketjuun", | ||||||
|   "status.replied_to": "Vastaus käyttäjälle {name}", |   "status.replied_to": "Vastaus käyttäjälle {name}", | ||||||
|   "status.reply": "Vastaa", |   "status.reply": "Vastaa", | ||||||
|  |  | ||||||
|  | @ -835,6 +835,7 @@ | ||||||
|   "status.reblogs.empty": "Eingin hevur stimbrað hendan postin enn. Tá onkur stimbrar postin, verður hann sjónligur her.", |   "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.redraft": "Strika & ger nýggja kladdu", | ||||||
|   "status.remove_bookmark": "Gloym", |   "status.remove_bookmark": "Gloym", | ||||||
|  |   "status.remove_favourite": "Strika í yndismerkjum", | ||||||
|   "status.replied_in_thread": "Svaraði í tráðnum", |   "status.replied_in_thread": "Svaraði í tráðnum", | ||||||
|   "status.replied_to": "Svaraði {name}", |   "status.replied_to": "Svaraði {name}", | ||||||
|   "status.reply": "Svara", |   "status.reply": "Svara", | ||||||
|  |  | ||||||
|  | @ -836,6 +836,7 @@ | ||||||
|   "status.reblogs.empty": "Personne n’a encore boosté cette publication. Lorsque quelqu’un le fera, elle apparaîtra ici.", |   "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.redraft": "Supprimer et réécrire", | ||||||
|   "status.remove_bookmark": "Retirer des signets", |   "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_in_thread": "A répondu dans un fil de discussion", | ||||||
|   "status.replied_to": "A répondu à {name}", |   "status.replied_to": "A répondu à {name}", | ||||||
|   "status.reply": "Répondre", |   "status.reply": "Répondre", | ||||||
|  |  | ||||||
|  | @ -836,6 +836,7 @@ | ||||||
|   "status.reblogs.empty": "Personne n’a encore partagé ce message. Lorsque quelqu’un le fera, il apparaîtra ici.", |   "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.redraft": "Supprimer et réécrire", | ||||||
|   "status.remove_bookmark": "Retirer des marque-pages", |   "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_in_thread": "A répondu dans un fil de discussion", | ||||||
|   "status.replied_to": "En réponse à {name}", |   "status.replied_to": "En réponse à {name}", | ||||||
|   "status.reply": "Répondre", |   "status.reply": "Répondre", | ||||||
|  |  | ||||||
|  | @ -836,6 +836,7 @@ | ||||||
|   "status.reblogs.empty": "Senki sem tolta még meg ezt a bejegyzést. Ha valaki megteszi, itt fog megjelenni.", |   "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.redraft": "Törlés és újraírás", | ||||||
|   "status.remove_bookmark": "Könyvjelző eltávolítása", |   "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_in_thread": "Válaszolva a szálban", | ||||||
|   "status.replied_to": "Megválaszolva {name} számára", |   "status.replied_to": "Megválaszolva {name} számára", | ||||||
|   "status.reply": "Válasz", |   "status.reply": "Válasz", | ||||||
|  |  | ||||||
|  | @ -836,6 +836,7 @@ | ||||||
|   "status.reblogs.empty": "Ancora nessuno ha rebloggato questo post. Quando qualcuno lo farà, apparirà qui.", |   "status.reblogs.empty": "Ancora nessuno ha rebloggato questo post. Quando qualcuno lo farà, apparirà qui.", | ||||||
|   "status.redraft": "Elimina e riscrivi", |   "status.redraft": "Elimina e riscrivi", | ||||||
|   "status.remove_bookmark": "Rimuovi segnalibro", |   "status.remove_bookmark": "Rimuovi segnalibro", | ||||||
|  |   "status.remove_favourite": "Rimuovi dai preferiti", | ||||||
|   "status.replied_in_thread": "Ha risposto nella discussione", |   "status.replied_in_thread": "Ha risposto nella discussione", | ||||||
|   "status.replied_to": "Risposta a {name}", |   "status.replied_to": "Risposta a {name}", | ||||||
|   "status.reply": "Rispondi", |   "status.reply": "Rispondi", | ||||||
|  |  | ||||||
|  | @ -821,6 +821,7 @@ | ||||||
|   "status.reblogs.empty": "Šio įrašo dar niekas nepakėlė. Kai kas nors tai padarys, jie bus rodomi čia.", |   "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.redraft": "Ištrinti ir parengti iš naujo", | ||||||
|   "status.remove_bookmark": "Pašalinti žymę", |   "status.remove_bookmark": "Pašalinti žymę", | ||||||
|  |   "status.remove_favourite": "Šalinti iš mėgstamų", | ||||||
|   "status.replied_in_thread": "Atsakyta gijoje", |   "status.replied_in_thread": "Atsakyta gijoje", | ||||||
|   "status.replied_to": "Atsakyta į {name}", |   "status.replied_to": "Atsakyta į {name}", | ||||||
|   "status.reply": "Atsakyti", |   "status.reply": "Atsakyti", | ||||||
|  |  | ||||||
|  | @ -836,6 +836,7 @@ | ||||||
|   "status.reblogs.empty": "Niemand heeft dit bericht nog geboost. Wanneer iemand dit doet, valt dat hier te zien.", |   "status.reblogs.empty": "Niemand heeft dit bericht nog geboost. Wanneer iemand dit doet, valt dat hier te zien.", | ||||||
|   "status.redraft": "Verwijderen en herschrijven", |   "status.redraft": "Verwijderen en herschrijven", | ||||||
|   "status.remove_bookmark": "Bladwijzer verwijderen", |   "status.remove_bookmark": "Bladwijzer verwijderen", | ||||||
|  |   "status.remove_favourite": "Verwijderen uit favorieten", | ||||||
|   "status.replied_in_thread": "Reageerde in gesprek", |   "status.replied_in_thread": "Reageerde in gesprek", | ||||||
|   "status.replied_to": "Reageerde op {name}", |   "status.replied_to": "Reageerde op {name}", | ||||||
|   "status.reply": "Reageren", |   "status.reply": "Reageren", | ||||||
|  |  | ||||||
|  | @ -11,6 +11,7 @@ | ||||||
|   "about.not_available": "Această informație nu a fost pusă la dispoziție pe acest server.", |   "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.powered_by": "Media socială descentralizată furnizată de {mastodon}", | ||||||
|   "about.rules": "Reguli server", |   "about.rules": "Reguli server", | ||||||
|  |   "account.account_note_header": "Notă personală", | ||||||
|   "account.add_or_remove_from_list": "Adaugă sau elimină din liste", |   "account.add_or_remove_from_list": "Adaugă sau elimină din liste", | ||||||
|   "account.badges.bot": "Robot", |   "account.badges.bot": "Robot", | ||||||
|   "account.badges.group": "Grup", |   "account.badges.group": "Grup", | ||||||
|  | @ -29,11 +30,13 @@ | ||||||
|   "account.featured_tags.last_status_at": "Ultima postare pe {date}", |   "account.featured_tags.last_status_at": "Ultima postare pe {date}", | ||||||
|   "account.featured_tags.last_status_never": "Fără postări", |   "account.featured_tags.last_status_never": "Fără postări", | ||||||
|   "account.featured_tags.title": "Haștagurile recomandate de {name}", |   "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.follow_back": "Urmăreşte înapoi", | ||||||
|   "account.followers": "Urmăritori", |   "account.followers": "Urmăritori", | ||||||
|   "account.followers.empty": "Acest utilizator nu are încă 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": "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.follows.empty": "Momentan acest utilizator nu are niciun abonament.", | ||||||
|   "account.go_to_profile": "Mergi la profil", |   "account.go_to_profile": "Mergi la profil", | ||||||
|   "account.hide_reblogs": "Ascunde distribuirile de la @{name}", |   "account.hide_reblogs": "Ascunde distribuirile de la @{name}", | ||||||
|  | @ -49,6 +52,7 @@ | ||||||
|   "account.mute_notifications_short": "Amuțește notificările", |   "account.mute_notifications_short": "Amuțește notificările", | ||||||
|   "account.mute_short": "Ignoră", |   "account.mute_short": "Ignoră", | ||||||
|   "account.muted": "Pus pe silențios", |   "account.muted": "Pus pe silențios", | ||||||
|  |   "account.mutual": "Mutual", | ||||||
|   "account.no_bio": "Nicio descriere furnizată.", |   "account.no_bio": "Nicio descriere furnizată.", | ||||||
|   "account.open_original_page": "Deschide pagina originală", |   "account.open_original_page": "Deschide pagina originală", | ||||||
|   "account.posts": "Postări", |   "account.posts": "Postări", | ||||||
|  | @ -58,12 +62,14 @@ | ||||||
|   "account.requested_follow": "{name} A cerut să vă urmărească", |   "account.requested_follow": "{name} A cerut să vă urmărească", | ||||||
|   "account.share": "Distribuie profilul lui @{name}", |   "account.share": "Distribuie profilul lui @{name}", | ||||||
|   "account.show_reblogs": "Afișează distribuirile de la @{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": "Deblochează pe @{name}", | ||||||
|   "account.unblock_domain": "Deblochează domeniul {domain}", |   "account.unblock_domain": "Deblochează domeniul {domain}", | ||||||
|   "account.unblock_short": "Deblochează", |   "account.unblock_short": "Deblochează", | ||||||
|   "account.unendorse": "Nu promova pe profil", |   "account.unendorse": "Nu promova pe profil", | ||||||
|   "account.unfollow": "Nu mai urmări", |   "account.unfollow": "Nu mai urmări", | ||||||
|   "account.unmute": "Nu mai ignora pe @{name}", |   "account.unmute": "Nu mai ignora pe @{name}", | ||||||
|  |   "account.unmute_notifications_short": "Dezamuțire notificări", | ||||||
|   "account.unmute_short": "Reafișare", |   "account.unmute_short": "Reafișare", | ||||||
|   "account_note.placeholder": "Click to add a note", |   "account_note.placeholder": "Click to add a note", | ||||||
|   "admin.dashboard.daily_retention": "Rata de retenţie a utilizatorului pe zi după înregistrare", |   "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.average": "În medie", | ||||||
|   "admin.dashboard.retention.cohort": "Înregistrări lunar", |   "admin.dashboard.retention.cohort": "Înregistrări lunar", | ||||||
|   "admin.dashboard.retention.cohort_size": "Utilizatori noi", |   "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", |   "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.message": "Vă rugăm să reîncercați după {retry_time, time, medium}.", | ||||||
|   "alert.rate_limited.title": "Debit limitat", |   "alert.rate_limited.title": "Debit limitat", | ||||||
|   "alert.unexpected.message": "A apărut o eroare neașteptată.", |   "alert.unexpected.message": "A apărut o eroare neașteptată.", | ||||||
|   "alert.unexpected.title": "Ups!", |   "alert.unexpected.title": "Ups!", | ||||||
|  |   "alt_text_badge.title": "Text alternativ", | ||||||
|   "announcement.announcement": "Anunț", |   "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)", |   "attachments_list.unprocessed": "(neprocesate)", | ||||||
|   "audio.hide": "Ascunde audio", |   "audio.hide": "Ascunde audio", | ||||||
|   "boost_modal.combo": "Poți apăsa {combo} pentru a sări peste asta data viitoare", |   "boost_modal.combo": "Poți apăsa {combo} pentru a sări peste asta data viitoare", | ||||||
|  |  | ||||||
|  | @ -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.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.redraft": "Fshijeni & rihartojeni", | ||||||
|   "status.remove_bookmark": "Hiqe faqerojtësin", |   "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_in_thread": "U përgjigj te rrjedha", | ||||||
|   "status.replied_to": "Iu përgjigj {name}", |   "status.replied_to": "Iu përgjigj {name}", | ||||||
|   "status.reply": "Përgjigjuni", |   "status.reply": "Përgjigjuni", | ||||||
|  |  | ||||||
|  | @ -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.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.redraft": "Sil,Düzenle ve yeniden-paylaş", | ||||||
|   "status.remove_bookmark": "Yer işaretini kaldır", |   "status.remove_bookmark": "Yer işaretini kaldır", | ||||||
|  |   "status.remove_favourite": "Favorilerden kaldır", | ||||||
|   "status.replied_in_thread": "Akışta yanıtlandı", |   "status.replied_in_thread": "Akışta yanıtlandı", | ||||||
|   "status.replied_to": "{name} kullanıcısına yanıt verdi", |   "status.replied_to": "{name} kullanıcısına yanıt verdi", | ||||||
|   "status.reply": "Yanıtla", |   "status.reply": "Yanıtla", | ||||||
|  |  | ||||||
|  | @ -802,6 +802,7 @@ | ||||||
|   "status.reblogs.empty": "Ніхто ще не поширив цей допис. Коли хтось це зроблять, вони будуть зображені тут.", |   "status.reblogs.empty": "Ніхто ще не поширив цей допис. Коли хтось це зроблять, вони будуть зображені тут.", | ||||||
|   "status.redraft": "Видалити та виправити", |   "status.redraft": "Видалити та виправити", | ||||||
|   "status.remove_bookmark": "Видалити закладку", |   "status.remove_bookmark": "Видалити закладку", | ||||||
|  |   "status.remove_favourite": "Видалити з улюблених", | ||||||
|   "status.replied_in_thread": "Відповідь у потоці", |   "status.replied_in_thread": "Відповідь у потоці", | ||||||
|   "status.replied_to": "Відповідь для {name}", |   "status.replied_to": "Відповідь для {name}", | ||||||
|   "status.reply": "Відповісти", |   "status.reply": "Відповісти", | ||||||
|  |  | ||||||
|  | @ -836,6 +836,7 @@ | ||||||
|   "status.reblogs.empty": "还没有人转嘟过此条嘟文。转嘟此嘟文的人会显示在这里。", |   "status.reblogs.empty": "还没有人转嘟过此条嘟文。转嘟此嘟文的人会显示在这里。", | ||||||
|   "status.redraft": "删除并重新编辑", |   "status.redraft": "删除并重新编辑", | ||||||
|   "status.remove_bookmark": "取消收藏", |   "status.remove_bookmark": "取消收藏", | ||||||
|  |   "status.remove_favourite": "从喜欢列表中移除", | ||||||
|   "status.replied_in_thread": "回复嘟文串", |   "status.replied_in_thread": "回复嘟文串", | ||||||
|   "status.replied_to": "回复 {name}", |   "status.replied_to": "回复 {name}", | ||||||
|   "status.reply": "回复", |   "status.reply": "回复", | ||||||
|  |  | ||||||
|  | @ -835,7 +835,8 @@ | ||||||
|   "status.reblogs": "{count, plural, other {則轉嘟}}", |   "status.reblogs": "{count, plural, other {則轉嘟}}", | ||||||
|   "status.reblogs.empty": "還沒有人轉嘟過這則嘟文。當有人轉嘟時,它將於此顯示。", |   "status.reblogs.empty": "還沒有人轉嘟過這則嘟文。當有人轉嘟時,它將於此顯示。", | ||||||
|   "status.redraft": "刪除並重新編輯", |   "status.redraft": "刪除並重新編輯", | ||||||
|   "status.remove_bookmark": "移除書籤", |   "status.remove_bookmark": "自書籤中移除", | ||||||
|  |   "status.remove_favourite": "自最愛中移除", | ||||||
|   "status.replied_in_thread": "於討論串中回覆", |   "status.replied_in_thread": "於討論串中回覆", | ||||||
|   "status.replied_to": "回覆 {name}", |   "status.replied_to": "回覆 {name}", | ||||||
|   "status.reply": "回覆", |   "status.reply": "回覆", | ||||||
|  |  | ||||||
|  | @ -39,6 +39,11 @@ et: | ||||||
|           attributes: |           attributes: | ||||||
|             data: |             data: | ||||||
|               malformed: on vigasel kujul |               malformed: on vigasel kujul | ||||||
|  |         list_account: | ||||||
|  |           attributes: | ||||||
|  |             account_id: | ||||||
|  |               taken: on juba loetelus | ||||||
|  |           must_be_following: peab olema jälgitav konto | ||||||
|         status: |         status: | ||||||
|           attributes: |           attributes: | ||||||
|             reblog: |             reblog: | ||||||
|  |  | ||||||
|  | @ -15,6 +15,11 @@ eu: | ||||||
|       user/invite_request: |       user/invite_request: | ||||||
|         text: Arrazoia |         text: Arrazoia | ||||||
|     errors: |     errors: | ||||||
|  |       attributes: | ||||||
|  |         domain: | ||||||
|  |           invalid: ez da domeinu izen baliogarria | ||||||
|  |       messages: | ||||||
|  |         invalid_domain_on_line: "%{value} ez da domeinu izen baliogarria" | ||||||
|       models: |       models: | ||||||
|         account: |         account: | ||||||
|           attributes: |           attributes: | ||||||
|  |  | ||||||
|  | @ -132,7 +132,7 @@ et: | ||||||
|         filters: Filtrid |         filters: Filtrid | ||||||
|         follow: Jälgitavad, Vaigistatud ja Blokeeritud |         follow: Jälgitavad, Vaigistatud ja Blokeeritud | ||||||
|         follows: Jälgimised |         follows: Jälgimised | ||||||
|         lists: Nimekirjad |         lists: Loetelud | ||||||
|         media: Lisatud meedia |         media: Lisatud meedia | ||||||
|         mutes: Vaigistused |         mutes: Vaigistused | ||||||
|         notifications: Teavitused |         notifications: Teavitused | ||||||
|  | @ -176,7 +176,7 @@ et: | ||||||
|       read:favourites: näha sinu lemmikuid |       read:favourites: näha sinu lemmikuid | ||||||
|       read:filters: näha su filtreid |       read:filters: näha su filtreid | ||||||
|       read:follows: näha su jälgimisi |       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:mutes: näha su vaigistusi | ||||||
|       read:notifications: näha teateid |       read:notifications: näha teateid | ||||||
|       read:reports: näha teavitusi |       read:reports: näha teavitusi | ||||||
|  | @ -190,7 +190,7 @@ et: | ||||||
|       write:favourites: lisada postitusi lemmikuks |       write:favourites: lisada postitusi lemmikuks | ||||||
|       write:filters: luua filtreid |       write:filters: luua filtreid | ||||||
|       write:follows: jälgida inimesi |       write:follows: jälgida inimesi | ||||||
|       write:lists: luua nimekirju |       write:lists: luua loetelusid | ||||||
|       write:media: üles laadida meediafaile |       write:media: üles laadida meediafaile | ||||||
|       write:mutes: vaigista inimesi ja vestluseid |       write:mutes: vaigista inimesi ja vestluseid | ||||||
|       write:notifications: tühjendada teateid |       write:notifications: tühjendada teateid | ||||||
|  |  | ||||||
|  | @ -335,7 +335,7 @@ et: | ||||||
|       enabled_msg: Selle emotikoni lubamine õnnestus |       enabled_msg: Selle emotikoni lubamine õnnestus | ||||||
|       image_hint: PNG või GIF suurusega kuni %{size} |       image_hint: PNG või GIF suurusega kuni %{size} | ||||||
|       list: Loend |       list: Loend | ||||||
|       listed: Nimekirjastatud |       listed: Loetletud | ||||||
|       new: |       new: | ||||||
|         title: Lisa uus emotikon |         title: Lisa uus emotikon | ||||||
|       no_emoji_selected: Emotikone ei muudetud, kuna ühtegi polnud valitud |       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 |       shortcode_hint: Vähemalt 2 tähemärki, ainult tähted, numbrid ja alakriipsud | ||||||
|       title: Emotikonid |       title: Emotikonid | ||||||
|       uncategorized: Kategoriseerimata |       uncategorized: Kategoriseerimata | ||||||
|       unlist: Kirjendamata |       unlist: Loetlemata | ||||||
|       unlisted: Kirjendamata |       unlisted: Loetlemata | ||||||
|       update_failed_msg: Ei saanud seda emotikoni uuendada |       update_failed_msg: Ei saanud seda emotikoni uuendada | ||||||
|       updated_msg: Emotikoni uuendamine õnnestus! |       updated_msg: Emotikoni uuendamine õnnestus! | ||||||
|       upload: Lae üles |       upload: Lae üles | ||||||
|  | @ -828,12 +828,17 @@ et: | ||||||
|       media: |       media: | ||||||
|         title: Meedia |         title: Meedia | ||||||
|       metadata: Metaandmed |       metadata: Metaandmed | ||||||
|  |       no_history: Seda postitust pole muudetud | ||||||
|       no_status_selected: Ühtegi postitust ei muudetud, sest ühtegi polnud valitud |       no_status_selected: Ühtegi postitust ei muudetud, sest ühtegi polnud valitud | ||||||
|       open: Ava postitus |       open: Ava postitus | ||||||
|       original_status: Algne postitus |       original_status: Algne postitus | ||||||
|       reblogs: Jagamised |       reblogs: Jagamised | ||||||
|  |       replied_to_html: Vastatud %{acct_link} | ||||||
|       status_changed: Muudetud postitus |       status_changed: Muudetud postitus | ||||||
|  |       status_title: Postitajaks @%{name} | ||||||
|  |       title: Postitus kontolt - @%{name} | ||||||
|       trending: Populaarne |       trending: Populaarne | ||||||
|  |       view_publicly: Nähtav avalikult | ||||||
|       visibility: Nähtavus |       visibility: Nähtavus | ||||||
|       with_media: Meediaga |       with_media: Meediaga | ||||||
|     strikes: |     strikes: | ||||||
|  | @ -910,6 +915,19 @@ et: | ||||||
|       search: Otsi |       search: Otsi | ||||||
|       title: Märksõnad |       title: Märksõnad | ||||||
|       updated_msg: Sildi sätted edukalt uuendatud |       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: "<strong>Loodud teenusetingimusi ei avaldata automaatselt.</strong> 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 |     title: Administreerimine | ||||||
|     trends: |     trends: | ||||||
|       allow: Luba |       allow: Luba | ||||||
|  | @ -1275,7 +1293,7 @@ et: | ||||||
|     bookmarks: Järjehoidjad |     bookmarks: Järjehoidjad | ||||||
|     csv: CSV |     csv: CSV | ||||||
|     domain_blocks: Domeeni blokeeringud |     domain_blocks: Domeeni blokeeringud | ||||||
|     lists: Nimekirjad |     lists: Loetelud | ||||||
|     mutes: Oled vaigistanud |     mutes: Oled vaigistanud | ||||||
|     storage: Meedia hoidla |     storage: Meedia hoidla | ||||||
|   featured_tags: |   featured_tags: | ||||||
|  | @ -1776,7 +1794,7 @@ et: | ||||||
|       private_long: Näevad ainult jälgijad |       private_long: Näevad ainult jälgijad | ||||||
|       public: Avalik |       public: Avalik | ||||||
|       public_long: Postitused on kõigile näha |       public_long: Postitused on kõigile näha | ||||||
|       unlisted: Kirjendamata |       unlisted: Loetlemata | ||||||
|       unlisted_long: Kõigile näha, kuid ei näidata avalikel ajajoontel |       unlisted_long: Kõigile näha, kuid ei näidata avalikel ajajoontel | ||||||
|   statuses_cleanup: |   statuses_cleanup: | ||||||
|     enabled: Vanade postituste automaatne kustutamine |     enabled: Vanade postituste automaatne kustutamine | ||||||
|  |  | ||||||
|  | @ -128,6 +128,9 @@ et: | ||||||
|         show_application: Sa saad sõltumata sellest vaadata, milline äpp su postituse postitas. |         show_application: Sa saad sõltumata sellest vaadata, milline äpp su postituse postitas. | ||||||
|       tag: |       tag: | ||||||
|         name: Saad muuta ainult tähtede suurtähelisust, näiteks selleks, et muuta seda loetavamaks |         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: |       user: | ||||||
|         chosen_languages: Keelte valimisel näidatakse avalikel ajajoontel ainult neis keeltes postitusi |         chosen_languages: Keelte valimisel näidatakse avalikel ajajoontel ainult neis keeltes postitusi | ||||||
|         role: Rollid määravad, millised õigused kasutajal on. |         role: Rollid määravad, millised õigused kasutajal on. | ||||||
|  |  | ||||||
|  | @ -5,7 +5,7 @@ require 'rails_helper' | ||||||
| RSpec.describe Admin::AccountActionsController do | RSpec.describe Admin::AccountActionsController do | ||||||
|   render_views |   render_views | ||||||
| 
 | 
 | ||||||
|   let(:user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) } |   let(:user) { Fabricate(:admin_user) } | ||||||
| 
 | 
 | ||||||
|   before do |   before do | ||||||
|     sign_in user, scope: :user |     sign_in user, scope: :user | ||||||
|  |  | ||||||
|  | @ -8,7 +8,7 @@ RSpec.describe Admin::AccountsController do | ||||||
|   before { sign_in current_user, scope: :user } |   before { sign_in current_user, scope: :user } | ||||||
| 
 | 
 | ||||||
|   describe 'GET #index' do |   describe 'GET #index' do | ||||||
|     let(:current_user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) } |     let(:current_user) { Fabricate(:admin_user) } | ||||||
|     let(:params) do |     let(:params) do | ||||||
|       { |       { | ||||||
|         origin: 'local', |         origin: 'local', | ||||||
|  | @ -53,7 +53,7 @@ RSpec.describe Admin::AccountsController do | ||||||
|   end |   end | ||||||
| 
 | 
 | ||||||
|   describe 'GET #show' do |   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 |     describe 'account moderation notes' do | ||||||
|       let(:account) { Fabricate(:account) } |       let(:account) { Fabricate(:account) } | ||||||
|  |  | ||||||
|  | @ -16,7 +16,7 @@ RSpec.describe Admin::ActionLogsController do | ||||||
| 
 | 
 | ||||||
|   describe 'GET #index' do |   describe 'GET #index' do | ||||||
|     it 'returns 200' 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 } |       get :index, params: { page: 1 } | ||||||
| 
 | 
 | ||||||
|       expect(response).to have_http_status(200) |       expect(response).to have_http_status(200) | ||||||
|  |  | ||||||
|  | @ -20,7 +20,7 @@ RSpec.describe Admin::BaseController do | ||||||
| 
 | 
 | ||||||
|   it 'returns private cache control headers' do |   it 'returns private cache control headers' do | ||||||
|     routes.draw { get 'success' => 'admin/base#success' } |     routes.draw { get 'success' => 'admin/base#success' } | ||||||
|     sign_in(Fabricate(:user, role: UserRole.find_by(name: 'Moderator'))) |     sign_in(Fabricate(:moderator_user)) | ||||||
|     get :success |     get :success | ||||||
| 
 | 
 | ||||||
|     expect(response.headers['Cache-Control']).to include('private, no-store') |     expect(response.headers['Cache-Control']).to include('private, no-store') | ||||||
|  | @ -28,14 +28,14 @@ RSpec.describe Admin::BaseController do | ||||||
| 
 | 
 | ||||||
|   it 'renders admin layout as a moderator' do |   it 'renders admin layout as a moderator' do | ||||||
|     routes.draw { get 'success' => 'admin/base#success' } |     routes.draw { get 'success' => 'admin/base#success' } | ||||||
|     sign_in(Fabricate(:user, role: UserRole.find_by(name: 'Moderator'))) |     sign_in(Fabricate(:moderator_user)) | ||||||
|     get :success |     get :success | ||||||
|     expect(response).to render_template layout: 'admin' |     expect(response).to render_template layout: 'admin' | ||||||
|   end |   end | ||||||
| 
 | 
 | ||||||
|   it 'renders admin layout as an admin' do |   it 'renders admin layout as an admin' do | ||||||
|     routes.draw { get 'success' => 'admin/base#success' } |     routes.draw { get 'success' => 'admin/base#success' } | ||||||
|     sign_in(Fabricate(:user, role: UserRole.find_by(name: 'Admin'))) |     sign_in(Fabricate(:admin_user)) | ||||||
|     get :success |     get :success | ||||||
|     expect(response).to render_template layout: 'admin' |     expect(response).to render_template layout: 'admin' | ||||||
|   end |   end | ||||||
|  |  | ||||||
|  | @ -5,7 +5,7 @@ require 'rails_helper' | ||||||
| RSpec.describe Admin::ChangeEmailsController do | RSpec.describe Admin::ChangeEmailsController do | ||||||
|   render_views |   render_views | ||||||
| 
 | 
 | ||||||
|   let(:admin) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) } |   let(:admin) { Fabricate(:admin_user) } | ||||||
| 
 | 
 | ||||||
|   before do |   before do | ||||||
|     sign_in admin |     sign_in admin | ||||||
|  |  | ||||||
|  | @ -6,7 +6,7 @@ RSpec.describe Admin::ConfirmationsController do | ||||||
|   render_views |   render_views | ||||||
| 
 | 
 | ||||||
|   before do |   before do | ||||||
|     sign_in Fabricate(:user, role: UserRole.find_by(name: 'Admin')), scope: :user |     sign_in Fabricate(:admin_user), scope: :user | ||||||
|   end |   end | ||||||
| 
 | 
 | ||||||
|   describe 'POST #create' do |   describe 'POST #create' do | ||||||
|  |  | ||||||
|  | @ -6,7 +6,7 @@ RSpec.describe Admin::DashboardController do | ||||||
|   render_views |   render_views | ||||||
| 
 | 
 | ||||||
|   describe 'GET #index' do |   describe 'GET #index' do | ||||||
|     let(:user) { Fabricate(:user, role: UserRole.find_by(name: 'Owner')) } |     let(:user) { Fabricate(:owner_user) } | ||||||
| 
 | 
 | ||||||
|     before do |     before do | ||||||
|       stub_system_checks |       stub_system_checks | ||||||
|  |  | ||||||
|  | @ -16,7 +16,7 @@ RSpec.describe Admin::Disputes::AppealsController do | ||||||
|   let(:appeal) { Fabricate(:appeal, strike: strike, account: target_account) } |   let(:appeal) { Fabricate(:appeal, strike: strike, account: target_account) } | ||||||
| 
 | 
 | ||||||
|   describe 'GET #index' do |   describe 'GET #index' do | ||||||
|     let(:current_user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) } |     let(:current_user) { Fabricate(:admin_user) } | ||||||
| 
 | 
 | ||||||
|     before { appeal } |     before { appeal } | ||||||
| 
 | 
 | ||||||
|  | @ -32,7 +32,7 @@ RSpec.describe Admin::Disputes::AppealsController do | ||||||
|   describe 'POST #approve' do |   describe 'POST #approve' do | ||||||
|     subject { post :approve, params: { id: appeal.id } } |     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 |     it 'redirects back to the strike page and notifies target account about approved appeal', :inline_jobs do | ||||||
|       emails = capture_emails { subject } |       emails = capture_emails { subject } | ||||||
|  | @ -56,7 +56,7 @@ RSpec.describe Admin::Disputes::AppealsController do | ||||||
|   describe 'POST #reject' do |   describe 'POST #reject' do | ||||||
|     subject { post :reject, params: { id: appeal.id } } |     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 |     it 'redirects back to the strike page and notifies target account about rejected appeal', :inline_jobs do | ||||||
|       emails = capture_emails { subject } |       emails = capture_emails { subject } | ||||||
|  |  | ||||||
|  | @ -6,7 +6,7 @@ RSpec.describe Admin::DomainBlocksController do | ||||||
|   render_views |   render_views | ||||||
| 
 | 
 | ||||||
|   before do |   before do | ||||||
|     sign_in Fabricate(:user, role: UserRole.find_by(name: 'Admin')), scope: :user |     sign_in Fabricate(:admin_user), scope: :user | ||||||
|   end |   end | ||||||
| 
 | 
 | ||||||
|   describe 'GET #new' do |   describe 'GET #new' do | ||||||
|  |  | ||||||
|  | @ -6,7 +6,7 @@ RSpec.describe Admin::EmailDomainBlocksController do | ||||||
|   render_views |   render_views | ||||||
| 
 | 
 | ||||||
|   before do |   before do | ||||||
|     sign_in Fabricate(:user, role: UserRole.find_by(name: 'Admin')), scope: :user |     sign_in Fabricate(:admin_user), scope: :user | ||||||
|   end |   end | ||||||
| 
 | 
 | ||||||
|   describe 'GET #index' do |   describe 'GET #index' do | ||||||
|  |  | ||||||
|  | @ -6,7 +6,7 @@ RSpec.describe Admin::ExportDomainAllowsController do | ||||||
|   render_views |   render_views | ||||||
| 
 | 
 | ||||||
|   before do |   before do | ||||||
|     sign_in Fabricate(:user, role: UserRole.find_by(name: 'Admin')), scope: :user |     sign_in Fabricate(:admin_user), scope: :user | ||||||
|   end |   end | ||||||
| 
 | 
 | ||||||
|   describe 'GET #new' do |   describe 'GET #new' do | ||||||
|  |  | ||||||
|  | @ -6,7 +6,7 @@ RSpec.describe Admin::ExportDomainBlocksController do | ||||||
|   render_views |   render_views | ||||||
| 
 | 
 | ||||||
|   before do |   before do | ||||||
|     sign_in Fabricate(:user, role: UserRole.find_by(name: 'Admin')), scope: :user |     sign_in Fabricate(:admin_user), scope: :user | ||||||
|   end |   end | ||||||
| 
 | 
 | ||||||
|   describe 'GET #new' do |   describe 'GET #new' do | ||||||
|  |  | ||||||
|  | @ -5,7 +5,7 @@ require 'rails_helper' | ||||||
| RSpec.describe Admin::FollowRecommendationsController do | RSpec.describe Admin::FollowRecommendationsController do | ||||||
|   render_views |   render_views | ||||||
| 
 | 
 | ||||||
|   let(:user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) } |   let(:user) { Fabricate(:admin_user) } | ||||||
| 
 | 
 | ||||||
|   before do |   before do | ||||||
|     sign_in user, scope: :user |     sign_in user, scope: :user | ||||||
|  |  | ||||||
|  | @ -5,7 +5,7 @@ require 'rails_helper' | ||||||
| RSpec.describe Admin::InstancesController do | RSpec.describe Admin::InstancesController do | ||||||
|   render_views |   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') } |   let!(:account_popular_main) { Fabricate(:account, domain: 'popular') } | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -5,7 +5,7 @@ require 'rails_helper' | ||||||
| RSpec.describe Admin::RelationshipsController do | RSpec.describe Admin::RelationshipsController do | ||||||
|   render_views |   render_views | ||||||
| 
 | 
 | ||||||
|   let(:user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) } |   let(:user) { Fabricate(:admin_user) } | ||||||
| 
 | 
 | ||||||
|   before do |   before do | ||||||
|     sign_in user, scope: :user |     sign_in user, scope: :user | ||||||
|  |  | ||||||
|  | @ -5,7 +5,7 @@ require 'rails_helper' | ||||||
| RSpec.describe Admin::Reports::ActionsController do | RSpec.describe Admin::Reports::ActionsController do | ||||||
|   render_views |   render_views | ||||||
| 
 | 
 | ||||||
|   let(:user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) } |   let(:user) { Fabricate(:admin_user) } | ||||||
| 
 | 
 | ||||||
|   before do |   before do | ||||||
|     sign_in user, scope: :user |     sign_in user, scope: :user | ||||||
|  |  | ||||||
|  | @ -5,7 +5,7 @@ require 'rails_helper' | ||||||
| RSpec.describe Admin::ReportsController do | RSpec.describe Admin::ReportsController do | ||||||
|   render_views |   render_views | ||||||
| 
 | 
 | ||||||
|   let(:user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) } |   let(:user) { Fabricate(:admin_user) } | ||||||
| 
 | 
 | ||||||
|   before do |   before do | ||||||
|     sign_in user, scope: :user |     sign_in user, scope: :user | ||||||
|  |  | ||||||
|  | @ -7,7 +7,7 @@ RSpec.describe Admin::Settings::BrandingController do | ||||||
| 
 | 
 | ||||||
|   describe 'When signed in as an admin' do |   describe 'When signed in as an admin' do | ||||||
|     before do |     before do | ||||||
|       sign_in Fabricate(:user, role: UserRole.find_by(name: 'Admin')), scope: :user |       sign_in Fabricate(:admin_user), scope: :user | ||||||
|     end |     end | ||||||
| 
 | 
 | ||||||
|     describe 'PUT #update' do |     describe 'PUT #update' do | ||||||
|  |  | ||||||
|  | @ -5,7 +5,7 @@ require 'rails_helper' | ||||||
| RSpec.describe Admin::SiteUploadsController do | RSpec.describe Admin::SiteUploadsController do | ||||||
|   render_views |   render_views | ||||||
| 
 | 
 | ||||||
|   let(:user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) } |   let(:user) { Fabricate(:admin_user) } | ||||||
| 
 | 
 | ||||||
|   before do |   before do | ||||||
|     sign_in user, scope: :user |     sign_in user, scope: :user | ||||||
|  |  | ||||||
|  | @ -5,7 +5,7 @@ require 'rails_helper' | ||||||
| RSpec.describe Admin::StatusesController do | RSpec.describe Admin::StatusesController do | ||||||
|   render_views |   render_views | ||||||
| 
 | 
 | ||||||
|   let(:user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) } |   let(:user) { Fabricate(:admin_user) } | ||||||
|   let(:account) { Fabricate(:account) } |   let(:account) { Fabricate(:account) } | ||||||
|   let!(:status) { Fabricate(:status, account: account) } |   let!(:status) { Fabricate(:status, account: account) } | ||||||
|   let(:media_attached_status) { Fabricate(:status, account: account, sensitive: !sensitive) } |   let(:media_attached_status) { Fabricate(:status, account: account, sensitive: !sensitive) } | ||||||
|  |  | ||||||
|  | @ -5,7 +5,7 @@ require 'rails_helper' | ||||||
| RSpec.describe Admin::TermsOfService::DistributionsController do | RSpec.describe Admin::TermsOfService::DistributionsController do | ||||||
|   render_views |   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) } |   let(:terms_of_service) { Fabricate(:terms_of_service, notification_sent_at: nil) } | ||||||
| 
 | 
 | ||||||
|   before do |   before do | ||||||
|  |  | ||||||
|  | @ -5,7 +5,7 @@ require 'rails_helper' | ||||||
| RSpec.describe Admin::TermsOfService::DraftsController do | RSpec.describe Admin::TermsOfService::DraftsController do | ||||||
|   render_views |   render_views | ||||||
| 
 | 
 | ||||||
|   let(:user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) } |   let(:user) { Fabricate(:admin_user) } | ||||||
| 
 | 
 | ||||||
|   before do |   before do | ||||||
|     sign_in user, scope: :user |     sign_in user, scope: :user | ||||||
|  |  | ||||||
|  | @ -5,7 +5,7 @@ require 'rails_helper' | ||||||
| RSpec.describe Admin::TermsOfService::GeneratesController do | RSpec.describe Admin::TermsOfService::GeneratesController do | ||||||
|   render_views |   render_views | ||||||
| 
 | 
 | ||||||
|   let(:user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) } |   let(:user) { Fabricate(:admin_user) } | ||||||
| 
 | 
 | ||||||
|   before do |   before do | ||||||
|     sign_in user, scope: :user |     sign_in user, scope: :user | ||||||
|  |  | ||||||
|  | @ -5,7 +5,7 @@ require 'rails_helper' | ||||||
| RSpec.describe Admin::TermsOfService::HistoriesController do | RSpec.describe Admin::TermsOfService::HistoriesController do | ||||||
|   render_views |   render_views | ||||||
| 
 | 
 | ||||||
|   let(:user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) } |   let(:user) { Fabricate(:admin_user) } | ||||||
| 
 | 
 | ||||||
|   before do |   before do | ||||||
|     sign_in user, scope: :user |     sign_in user, scope: :user | ||||||
|  |  | ||||||
|  | @ -5,7 +5,7 @@ require 'rails_helper' | ||||||
| RSpec.describe Admin::TermsOfService::PreviewsController do | RSpec.describe Admin::TermsOfService::PreviewsController do | ||||||
|   render_views |   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) } |   let(:terms_of_service) { Fabricate(:terms_of_service, notification_sent_at: nil) } | ||||||
| 
 | 
 | ||||||
|   before do |   before do | ||||||
|  |  | ||||||
|  | @ -5,7 +5,7 @@ require 'rails_helper' | ||||||
| RSpec.describe Admin::TermsOfService::TestsController do | RSpec.describe Admin::TermsOfService::TestsController do | ||||||
|   render_views |   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) } |   let(:terms_of_service) { Fabricate(:terms_of_service, notification_sent_at: nil) } | ||||||
| 
 | 
 | ||||||
|   before do |   before do | ||||||
|  |  | ||||||
|  | @ -5,7 +5,7 @@ require 'rails_helper' | ||||||
| RSpec.describe Admin::TermsOfServiceController do | RSpec.describe Admin::TermsOfServiceController do | ||||||
|   render_views |   render_views | ||||||
| 
 | 
 | ||||||
|   let(:user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) } |   let(:user) { Fabricate(:admin_user) } | ||||||
| 
 | 
 | ||||||
|   before do |   before do | ||||||
|     sign_in user, scope: :user |     sign_in user, scope: :user | ||||||
|  |  | ||||||
|  | @ -5,7 +5,7 @@ require 'rails_helper' | ||||||
| RSpec.describe Admin::Trends::Links::PreviewCardProvidersController do | RSpec.describe Admin::Trends::Links::PreviewCardProvidersController do | ||||||
|   render_views |   render_views | ||||||
| 
 | 
 | ||||||
|   let(:user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) } |   let(:user) { Fabricate(:admin_user) } | ||||||
| 
 | 
 | ||||||
|   before do |   before do | ||||||
|     sign_in user, scope: :user |     sign_in user, scope: :user | ||||||
|  |  | ||||||
|  | @ -5,7 +5,7 @@ require 'rails_helper' | ||||||
| RSpec.describe Admin::Trends::LinksController do | RSpec.describe Admin::Trends::LinksController do | ||||||
|   render_views |   render_views | ||||||
| 
 | 
 | ||||||
|   let(:user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) } |   let(:user) { Fabricate(:admin_user) } | ||||||
| 
 | 
 | ||||||
|   before do |   before do | ||||||
|     sign_in user, scope: :user |     sign_in user, scope: :user | ||||||
|  |  | ||||||
|  | @ -5,7 +5,7 @@ require 'rails_helper' | ||||||
| RSpec.describe Admin::Trends::StatusesController do | RSpec.describe Admin::Trends::StatusesController do | ||||||
|   render_views |   render_views | ||||||
| 
 | 
 | ||||||
|   let(:user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) } |   let(:user) { Fabricate(:admin_user) } | ||||||
| 
 | 
 | ||||||
|   before do |   before do | ||||||
|     sign_in user, scope: :user |     sign_in user, scope: :user | ||||||
|  |  | ||||||
|  | @ -5,7 +5,7 @@ require 'rails_helper' | ||||||
| RSpec.describe Admin::Trends::TagsController do | RSpec.describe Admin::Trends::TagsController do | ||||||
|   render_views |   render_views | ||||||
| 
 | 
 | ||||||
|   let(:user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) } |   let(:user) { Fabricate(:admin_user) } | ||||||
| 
 | 
 | ||||||
|   before do |   before do | ||||||
|     sign_in user, scope: :user |     sign_in user, scope: :user | ||||||
|  |  | ||||||
|  | @ -9,7 +9,7 @@ RSpec.describe Admin::Users::TwoFactorAuthenticationsController do | ||||||
|   let(:user) { Fabricate(:user) } |   let(:user) { Fabricate(:user) } | ||||||
| 
 | 
 | ||||||
|   before do |   before do | ||||||
|     sign_in Fabricate(:user, role: UserRole.find_by(name: 'Admin')), scope: :user |     sign_in Fabricate(:admin_user), scope: :user | ||||||
|   end |   end | ||||||
| 
 | 
 | ||||||
|   describe 'DELETE #destroy' do |   describe 'DELETE #destroy' do | ||||||
|  |  | ||||||
|  | @ -5,7 +5,7 @@ require 'rails_helper' | ||||||
| RSpec.describe Admin::WarningPresetsController do | RSpec.describe Admin::WarningPresetsController do | ||||||
|   render_views |   render_views | ||||||
| 
 | 
 | ||||||
|   let(:user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) } |   let(:user) { Fabricate(:admin_user) } | ||||||
| 
 | 
 | ||||||
|   before do |   before do | ||||||
|     sign_in user, scope: :user |     sign_in user, scope: :user | ||||||
|  |  | ||||||
|  | @ -5,7 +5,7 @@ require 'rails_helper' | ||||||
| RSpec.describe Admin::Webhooks::SecretsController do | RSpec.describe Admin::Webhooks::SecretsController do | ||||||
|   render_views |   render_views | ||||||
| 
 | 
 | ||||||
|   let(:user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) } |   let(:user) { Fabricate(:admin_user) } | ||||||
| 
 | 
 | ||||||
|   before do |   before do | ||||||
|     sign_in user, scope: :user |     sign_in user, scope: :user | ||||||
|  |  | ||||||
|  | @ -13,3 +13,15 @@ Fabricator(:user) do | ||||||
|   current_sign_in_at { Time.zone.now } |   current_sign_in_at { Time.zone.now } | ||||||
|   agreement true |   agreement true | ||||||
| end | 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 | ||||||
|  |  | ||||||
|  | @ -8,7 +8,7 @@ RSpec.describe Admin::AccountAction do | ||||||
|   describe '#save!' do |   describe '#save!' do | ||||||
|     subject              { account_action.save! } |     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(:target_account) { Fabricate(:account) } | ||||||
|     let(:type)           { 'disable' } |     let(:type)           { 'disable' } | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -8,7 +8,7 @@ RSpec.describe Form::AccountBatch do | ||||||
|   describe '#save' do |   describe '#save' do | ||||||
|     subject           { account_batch.save } |     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(:account_ids) { [] } | ||||||
|     let(:query)       { Account.none } |     let(:query)       { Account.none } | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -7,7 +7,7 @@ RSpec.describe Form::CustomEmojiBatch do | ||||||
|     subject { described_class.new({ current_account: account }.merge(options)) } |     subject { described_class.new({ current_account: account }.merge(options)) } | ||||||
| 
 | 
 | ||||||
|     let(: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 |     context 'with empty custom_emoji_ids' do | ||||||
|       let(:options) { { custom_emoji_ids: [] } } |       let(:options) { { custom_emoji_ids: [] } } | ||||||
|  |  | ||||||
|  | @ -601,7 +601,7 @@ RSpec.describe User do | ||||||
|   end |   end | ||||||
| 
 | 
 | ||||||
|   describe '.those_who_can' do |   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 |     context 'when there are not any user roles' do | ||||||
|       before { UserRole.destroy_all } |       before { UserRole.destroy_all } | ||||||
|  | @ -618,7 +618,7 @@ RSpec.describe User do | ||||||
|     end |     end | ||||||
| 
 | 
 | ||||||
|     context 'when there are users with roles' do |     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 |       it 'returns the users with the role' do | ||||||
|         expect(described_class.those_who_can(:manage_blocks)).to eq([admin_user]) |         expect(described_class.those_who_can(:manage_blocks)).to eq([admin_user]) | ||||||
|  |  | ||||||
|  | @ -18,7 +18,7 @@ RSpec.describe Webhook do | ||||||
|       subject { Fabricate.build :webhook, current_account: account } |       subject { Fabricate.build :webhook, current_account: account } | ||||||
| 
 | 
 | ||||||
|       context 'with account that has permissions' do |       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) } |         it { is_expected.to allow_values(%w(account.created)).for(:events) } | ||||||
|       end |       end | ||||||
|  |  | ||||||
|  | @ -5,7 +5,7 @@ require 'rails_helper' | ||||||
| RSpec.describe AccountModerationNotePolicy do | RSpec.describe AccountModerationNotePolicy do | ||||||
|   subject { described_class } |   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(:john)    { Fabricate(:account) } | ||||||
| 
 | 
 | ||||||
|   permissions :create? do |   permissions :create? do | ||||||
|  |  | ||||||
|  | @ -5,7 +5,7 @@ require 'rails_helper' | ||||||
| RSpec.describe AccountPolicy do | RSpec.describe AccountPolicy do | ||||||
|   subject { described_class } |   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(:john)    { Fabricate(:account) } | ||||||
|   let(:alice)   { Fabricate(:account) } |   let(:alice)   { Fabricate(:account) } | ||||||
| 
 | 
 | ||||||
|  | @ -70,7 +70,7 @@ RSpec.describe AccountPolicy do | ||||||
|   end |   end | ||||||
| 
 | 
 | ||||||
|   permissions :suspend?, :silence? do |   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 staff' do | ||||||
|       context 'when record is staff' do |       context 'when record is staff' do | ||||||
|  | @ -94,7 +94,7 @@ RSpec.describe AccountPolicy do | ||||||
|   end |   end | ||||||
| 
 | 
 | ||||||
|   permissions :memorialize? do |   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 admin' do | ||||||
|       context 'when record is admin' do |       context 'when record is admin' do | ||||||
|  |  | ||||||
|  | @ -5,7 +5,7 @@ require 'rails_helper' | ||||||
| RSpec.describe AccountWarningPolicy do | RSpec.describe AccountWarningPolicy do | ||||||
|   subject { described_class } |   subject { described_class } | ||||||
| 
 | 
 | ||||||
|   let(:admin) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')).account } |   let(:admin) { Fabricate(:admin_user).account } | ||||||
|   let(:account) { Fabricate(:account) } |   let(:account) { Fabricate(:account) } | ||||||
| 
 | 
 | ||||||
|   permissions :show? do |   permissions :show? do | ||||||
|  |  | ||||||
|  | @ -4,7 +4,7 @@ require 'rails_helper' | ||||||
| 
 | 
 | ||||||
| RSpec.describe AccountWarningPresetPolicy do | RSpec.describe AccountWarningPresetPolicy do | ||||||
|   let(:policy) { described_class } |   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(:john)    { Fabricate(:account) } | ||||||
| 
 | 
 | ||||||
|   permissions :index?, :create?, :update?, :destroy? do |   permissions :index?, :create?, :update?, :destroy? do | ||||||
|  |  | ||||||
|  | @ -4,7 +4,7 @@ require 'rails_helper' | ||||||
| 
 | 
 | ||||||
| RSpec.describe Admin::StatusPolicy do | RSpec.describe Admin::StatusPolicy do | ||||||
|   let(:policy) { described_class } |   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(:john)    { Fabricate(:account) } | ||||||
|   let(:status) { Fabricate(:status, visibility: status_visibility) } |   let(:status) { Fabricate(:status, visibility: status_visibility) } | ||||||
|   let(:status_visibility) { :public } |   let(:status_visibility) { :public } | ||||||
|  |  | ||||||
|  | @ -4,7 +4,7 @@ require 'rails_helper' | ||||||
| 
 | 
 | ||||||
| RSpec.describe AnnouncementPolicy do | RSpec.describe AnnouncementPolicy do | ||||||
|   let(:policy) { described_class } |   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(:john)    { Fabricate(:account) } | ||||||
| 
 | 
 | ||||||
|   permissions :index?, :create?, :update?, :destroy? do |   permissions :index?, :create?, :update?, :destroy? do | ||||||
|  |  | ||||||
|  | @ -4,7 +4,7 @@ require 'rails_helper' | ||||||
| 
 | 
 | ||||||
| RSpec.describe AppealPolicy do | RSpec.describe AppealPolicy do | ||||||
|   let(:policy) { described_class } |   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(:john)    { Fabricate(:account) } | ||||||
|   let(:appeal) { Fabricate(:appeal) } |   let(:appeal) { Fabricate(:appeal) } | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -5,7 +5,7 @@ require 'rails_helper' | ||||||
| RSpec.describe AuditLogPolicy do | RSpec.describe AuditLogPolicy do | ||||||
|   subject { described_class } |   subject { described_class } | ||||||
| 
 | 
 | ||||||
|   let(:admin) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')).account } |   let(:admin) { Fabricate(:admin_user).account } | ||||||
|   let(:account) { Fabricate(:account) } |   let(:account) { Fabricate(:account) } | ||||||
| 
 | 
 | ||||||
|   permissions :index? do |   permissions :index? do | ||||||
|  |  | ||||||
|  | @ -4,7 +4,7 @@ require 'rails_helper' | ||||||
| 
 | 
 | ||||||
| RSpec.describe CanonicalEmailBlockPolicy do | RSpec.describe CanonicalEmailBlockPolicy do | ||||||
|   let(:policy) { described_class } |   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(:john)    { Fabricate(:account) } | ||||||
| 
 | 
 | ||||||
|   permissions :index?, :show?, :test?, :create?, :destroy? do |   permissions :index?, :show?, :test?, :create?, :destroy? do | ||||||
|  |  | ||||||
|  | @ -5,7 +5,7 @@ require 'rails_helper' | ||||||
| RSpec.describe CustomEmojiPolicy do | RSpec.describe CustomEmojiPolicy do | ||||||
|   subject { described_class } |   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(:john)    { Fabricate(:account) } | ||||||
| 
 | 
 | ||||||
|   permissions :index?, :enable?, :disable? do |   permissions :index?, :enable?, :disable? do | ||||||
|  |  | ||||||
|  | @ -5,7 +5,7 @@ require 'rails_helper' | ||||||
| RSpec.describe DashboardPolicy do | RSpec.describe DashboardPolicy do | ||||||
|   subject { described_class } |   subject { described_class } | ||||||
| 
 | 
 | ||||||
|   let(:admin) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')).account } |   let(:admin) { Fabricate(:admin_user).account } | ||||||
|   let(:account) { Fabricate(:account) } |   let(:account) { Fabricate(:account) } | ||||||
| 
 | 
 | ||||||
|   permissions :index? do |   permissions :index? do | ||||||
|  |  | ||||||
|  | @ -4,7 +4,7 @@ require 'rails_helper' | ||||||
| 
 | 
 | ||||||
| RSpec.describe DeliveryPolicy do | RSpec.describe DeliveryPolicy do | ||||||
|   let(:policy) { described_class } |   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(:john)    { Fabricate(:account) } | ||||||
| 
 | 
 | ||||||
|   permissions :clear_delivery_errors?, :restart_delivery?, :stop_delivery? do |   permissions :clear_delivery_errors?, :restart_delivery?, :stop_delivery? do | ||||||
|  |  | ||||||
|  | @ -5,7 +5,7 @@ require 'rails_helper' | ||||||
| RSpec.describe DomainAllowPolicy do | RSpec.describe DomainAllowPolicy do | ||||||
|   subject { described_class } |   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(:john)    { Fabricate(:account) } | ||||||
| 
 | 
 | ||||||
|   permissions :index?, :show?, :create?, :destroy? do |   permissions :index?, :show?, :create?, :destroy? do | ||||||
|  |  | ||||||
|  | @ -5,7 +5,7 @@ require 'rails_helper' | ||||||
| RSpec.describe DomainBlockPolicy do | RSpec.describe DomainBlockPolicy do | ||||||
|   subject { described_class } |   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(:john)    { Fabricate(:account) } | ||||||
| 
 | 
 | ||||||
|   permissions :index?, :show?, :create?, :destroy?, :update? do |   permissions :index?, :show?, :create?, :destroy?, :update? do | ||||||
|  |  | ||||||
|  | @ -5,7 +5,7 @@ require 'rails_helper' | ||||||
| RSpec.describe EmailDomainBlockPolicy do | RSpec.describe EmailDomainBlockPolicy do | ||||||
|   subject { described_class } |   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(:john)    { Fabricate(:account) } | ||||||
| 
 | 
 | ||||||
|   permissions :index?, :show?, :create?, :destroy? do |   permissions :index?, :show?, :create?, :destroy? do | ||||||
|  |  | ||||||
|  | @ -4,7 +4,7 @@ require 'rails_helper' | ||||||
| 
 | 
 | ||||||
| RSpec.describe FollowRecommendationPolicy do | RSpec.describe FollowRecommendationPolicy do | ||||||
|   let(:policy) { described_class } |   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(:john)    { Fabricate(:account) } | ||||||
| 
 | 
 | ||||||
|   permissions :show?, :suppress?, :unsuppress? do |   permissions :show?, :suppress?, :unsuppress? do | ||||||
|  |  | ||||||
|  | @ -5,7 +5,7 @@ require 'rails_helper' | ||||||
| RSpec.describe InstancePolicy do | RSpec.describe InstancePolicy do | ||||||
|   subject { described_class } |   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(:john)    { Fabricate(:account) } | ||||||
| 
 | 
 | ||||||
|   permissions :index?, :show?, :destroy? do |   permissions :index?, :show?, :destroy? do | ||||||
|  |  | ||||||
|  | @ -5,7 +5,7 @@ require 'rails_helper' | ||||||
| RSpec.describe InvitePolicy do | RSpec.describe InvitePolicy do | ||||||
|   subject { described_class } |   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 } |   let(:john)    { Fabricate(:user).account } | ||||||
| 
 | 
 | ||||||
|   permissions :index? do |   permissions :index? do | ||||||
|  |  | ||||||
|  | @ -4,7 +4,7 @@ require 'rails_helper' | ||||||
| 
 | 
 | ||||||
| RSpec.describe IpBlockPolicy do | RSpec.describe IpBlockPolicy do | ||||||
|   let(:policy) { described_class } |   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(:john)    { Fabricate(:account) } | ||||||
| 
 | 
 | ||||||
|   permissions :index?, :show?, :create?, :update?, :destroy? do |   permissions :index?, :show?, :create?, :update?, :destroy? do | ||||||
|  |  | ||||||
|  | @ -4,7 +4,7 @@ require 'rails_helper' | ||||||
| 
 | 
 | ||||||
| RSpec.describe PreviewCardPolicy do | RSpec.describe PreviewCardPolicy do | ||||||
|   let(:policy) { described_class } |   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(:john)    { Fabricate(:account) } | ||||||
| 
 | 
 | ||||||
|   permissions :index?, :review? do |   permissions :index?, :review? do | ||||||
|  |  | ||||||
|  | @ -4,7 +4,7 @@ require 'rails_helper' | ||||||
| 
 | 
 | ||||||
| RSpec.describe PreviewCardProviderPolicy do | RSpec.describe PreviewCardProviderPolicy do | ||||||
|   let(:policy) { described_class } |   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(:john)    { Fabricate(:account) } | ||||||
| 
 | 
 | ||||||
|   permissions :index?, :review? do |   permissions :index?, :review? do | ||||||
|  |  | ||||||
|  | @ -5,7 +5,7 @@ require 'rails_helper' | ||||||
| RSpec.describe RelayPolicy do | RSpec.describe RelayPolicy do | ||||||
|   subject { described_class } |   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(:john)    { Fabricate(:account) } | ||||||
| 
 | 
 | ||||||
|   permissions :update? do |   permissions :update? do | ||||||
|  |  | ||||||
Some files were not shown because too many files have changed in this diff Show More
		Loading…
	
		Reference in New Issue