Merge commit '58b52b7a33717406faa8d988b7c05efa52f46f6a' into glitch-soc/merge-upstream

Conflicts:
- `app/models/account.rb`:
  Upstream added new validations close to lines on which glitch-soc had
  modified validations to handle custom limits set through environment
  variables.
  Ported upstream changes.
- `config/initializers/content_security_policy.rb`:
  Upstream added `AZURE_ALIAS_HOST`. Glitch-soc's version of the file is
  completely different.
  Added `AZURE_ALIAS_HOST` to our version of the file.
th-downstream
Claire 1 year ago
commit 2f3f1d75fa

@ -1,13 +1,13 @@
# This configuration was generated by # This configuration was generated by
# `haml-lint --auto-gen-config` # `haml-lint --auto-gen-config`
# on 2023-07-18 11:56:05 -0400 using Haml-Lint version 0.48.0. # on 2023-07-20 09:47:50 -0400 using Haml-Lint version 0.48.0.
# The point is for the user to remove these configuration records # The point is for the user to remove these configuration records
# one by one as the lints are removed from the code base. # one by one as the lints are removed from the code base.
# Note that changes in the inspected code, or installation of new # Note that changes in the inspected code, or installation of new
# versions of Haml-Lint, may require this file to be generated again. # versions of Haml-Lint, may require this file to be generated again.
linters: linters:
# Offense count: 959 # Offense count: 951
LineLength: LineLength:
enabled: false enabled: false
@ -15,7 +15,7 @@ linters:
UnnecessaryStringOutput: UnnecessaryStringOutput:
enabled: false enabled: false
# Offense count: 63 # Offense count: 57
RuboCop: RuboCop:
enabled: false enabled: false
@ -26,7 +26,7 @@ linters:
- 'app/views/admin/reports/show.html.haml' - 'app/views/admin/reports/show.html.haml'
- 'app/views/disputes/strikes/show.html.haml' - 'app/views/disputes/strikes/show.html.haml'
# Offense count: 40 # Offense count: 32
InstanceVariables: InstanceVariables:
exclude: exclude:
- 'app/views/admin/reports/_actions.html.haml' - 'app/views/admin/reports/_actions.html.haml'
@ -38,7 +38,6 @@ linters:
- 'app/views/invites/_form.html.haml' - 'app/views/invites/_form.html.haml'
- 'app/views/relationships/_account.html.haml' - 'app/views/relationships/_account.html.haml'
- 'app/views/shared/_og.html.haml' - 'app/views/shared/_og.html.haml'
- 'app/views/statuses/_status.html.haml'
# Offense count: 3 # Offense count: 3
IdNames: IdNames:

@ -127,12 +127,6 @@ Lint/UselessAssignment:
- 'spec/services/resolve_url_service_spec.rb' - 'spec/services/resolve_url_service_spec.rb'
- 'spec/views/statuses/show.html.haml_spec.rb' - 'spec/views/statuses/show.html.haml_spec.rb'
# This cop supports safe autocorrection (--autocorrect).
# Configuration parameters: CheckForMethodsWithNoSideEffects.
Lint/Void:
Exclude:
- 'spec/services/resolve_account_service_spec.rb'
# Configuration parameters: AllowedMethods, AllowedPatterns, CountRepeatedAttributes. # Configuration parameters: AllowedMethods, AllowedPatterns, CountRepeatedAttributes.
Metrics/AbcSize: Metrics/AbcSize:
Max: 150 Max: 150

@ -18,6 +18,7 @@ gem 'aws-sdk-s3', '~> 1.123', require: false
gem 'fog-core', '<= 2.4.0' gem 'fog-core', '<= 2.4.0'
gem 'fog-openstack', '~> 0.3', require: false gem 'fog-openstack', '~> 0.3', require: false
gem 'kt-paperclip', '~> 7.2' gem 'kt-paperclip', '~> 7.2'
gem 'md-paperclip-azure', '~> 2.2', require: false
gem 'blurhash', '~> 0.1' gem 'blurhash', '~> 0.1'
gem 'active_model_serializers', '~> 0.10' gem 'active_model_serializers', '~> 0.10'

@ -118,6 +118,14 @@ GEM
aws-sigv4 (~> 1.6) aws-sigv4 (~> 1.6)
aws-sigv4 (1.6.0) aws-sigv4 (1.6.0)
aws-eventstream (~> 1, >= 1.0.2) aws-eventstream (~> 1, >= 1.0.2)
azure-storage-blob (2.0.3)
azure-storage-common (~> 2.0)
nokogiri (~> 1, >= 1.10.8)
azure-storage-common (2.0.4)
faraday (~> 1.0)
faraday_middleware (~> 1.0, >= 1.0.0.rc1)
net-http-persistent (~> 4.0)
nokogiri (~> 1, >= 1.10.8)
bcrypt (3.1.18) bcrypt (3.1.18)
better_errors (2.10.1) better_errors (2.10.1)
erubi (>= 1.0.0) erubi (>= 1.0.0)
@ -261,6 +269,8 @@ GEM
faraday-patron (1.0.0) faraday-patron (1.0.0)
faraday-rack (1.0.0) faraday-rack (1.0.0)
faraday-retry (1.0.3) faraday-retry (1.0.3)
faraday_middleware (1.2.0)
faraday (~> 1.0)
fast_blank (1.0.1) fast_blank (1.0.1)
fastimage (2.2.7) fastimage (2.2.7)
ffi (1.15.5) ffi (1.15.5)
@ -410,6 +420,10 @@ GEM
mario-redis-lock (1.2.1) mario-redis-lock (1.2.1)
redis (>= 3.0.5) redis (>= 3.0.5)
matrix (0.4.2) matrix (0.4.2)
md-paperclip-azure (2.2.0)
addressable (~> 2.5)
azure-storage-blob (~> 2.0.1)
hashie (~> 5.0)
memory_profiler (1.0.1) memory_profiler (1.0.1)
method_source (1.0.0) method_source (1.0.0)
mime-types (3.4.1) mime-types (3.4.1)
@ -423,6 +437,8 @@ GEM
multipart-post (2.3.0) multipart-post (2.3.0)
net-http (0.3.2) net-http (0.3.2)
uri uri
net-http-persistent (4.0.2)
connection_pool (~> 2.2)
net-imap (0.3.6) net-imap (0.3.6)
date date
net-protocol net-protocol
@ -822,6 +838,7 @@ DEPENDENCIES
link_header (~> 0.0) link_header (~> 0.0)
lograge (~> 0.12) lograge (~> 0.12)
mario-redis-lock (~> 1.2) mario-redis-lock (~> 1.2)
md-paperclip-azure (~> 2.2)
memory_profiler memory_profiler
mime-types (~> 3.4.1) mime-types (~> 3.4.1)
net-http (~> 0.3.2) net-http (~> 0.3.2)

@ -17,13 +17,16 @@ class Api::V1::Statuses::FavouritesController < Api::BaseController
if fav if fav
@status = fav.status @status = fav.status
count = [@status.favourites_count - 1, 0].max
UnfavouriteWorker.perform_async(current_account.id, @status.id) UnfavouriteWorker.perform_async(current_account.id, @status.id)
else else
@status = Status.find(params[:status_id]) @status = Status.find(params[:status_id])
count = @status.favourites_count
authorize @status, :show? authorize @status, :show?
end end
render json: @status, serializer: REST::StatusSerializer, relationships: StatusRelationshipsPresenter.new([@status], current_account.id, favourites_map: { @status.id => false }) relationships = StatusRelationshipsPresenter.new([@status], current_account.id, favourites_map: { @status.id => false }, attributes_map: { @status.id => { favourites_count: count } })
render json: @status, serializer: REST::StatusSerializer, relationships: relationships
rescue Mastodon::NotPermittedError rescue Mastodon::NotPermittedError
not_found not_found
end end

@ -24,15 +24,18 @@ class Api::V1::Statuses::ReblogsController < Api::BaseController
if @status if @status
authorize @status, :unreblog? authorize @status, :unreblog?
@reblog = @status.reblog
count = [@reblog.reblogs_count - 1, 0].max
@status.discard @status.discard
RemovalWorker.perform_async(@status.id) RemovalWorker.perform_async(@status.id)
@reblog = @status.reblog
else else
@reblog = Status.find(params[:status_id]) @reblog = Status.find(params[:status_id])
count = @reblog.reblogs_count
authorize @reblog, :show? authorize @reblog, :show?
end end
render json: @reblog, serializer: REST::StatusSerializer, relationships: StatusRelationshipsPresenter.new([@status], current_account.id, reblogs_map: { @reblog.id => false }) relationships = StatusRelationshipsPresenter.new([@status], current_account.id, reblogs_map: { @reblog.id => false }, attributes_map: { @reblog.id => { reblogs_count: count } })
render json: @reblog, serializer: REST::StatusSerializer, relationships: relationships
rescue Mastodon::NotPermittedError rescue Mastodon::NotPermittedError
not_found not_found
end end

@ -236,6 +236,6 @@ module ApplicationHelper
private private
def storage_host_var def storage_host_var
ENV.fetch('S3_ALIAS_HOST', nil) || ENV.fetch('S3_CLOUDFRONT_HOST', nil) ENV.fetch('S3_ALIAS_HOST', nil) || ENV.fetch('S3_CLOUDFRONT_HOST', nil) || ENV.fetch('AZURE_ALIAS_HOST', nil)
end end
end end

@ -65,33 +65,6 @@ module StatusesHelper
embedded_view? ? '_blank' : nil embedded_view? ? '_blank' : nil
end end
def style_classes(status, is_predecessor, is_successor, include_threads)
classes = ['entry']
classes << 'entry-predecessor' if is_predecessor
classes << 'entry-reblog' if status.reblog?
classes << 'entry-successor' if is_successor
classes << 'entry-center' if include_threads
classes.join(' ')
end
def microformats_classes(status, is_direct_parent, is_direct_child)
classes = []
classes << 'p-in-reply-to' if is_direct_parent
classes << 'p-repost-of' if status.reblog? && is_direct_parent
classes << 'p-comment' if is_direct_child
classes.join(' ')
end
def microformats_h_class(status, is_predecessor, is_successor, include_threads)
if is_predecessor || status.reblog? || is_successor
'h-cite'
elsif include_threads
''
else
'h-entry'
end
end
def fa_visibility_icon(status) def fa_visibility_icon(status)
case status.visibility case status.visibility
when 'public' when 'public'

@ -184,6 +184,7 @@ class SwitchingColumnsArea extends PureComponent {
{singleColumn ? <Redirect from='/deck' to='/home' exact /> : null} {singleColumn ? <Redirect from='/deck' to='/home' exact /> : null}
{singleColumn && pathName.startsWith('/deck/') ? <Redirect from={pathName} to={pathName.slice(5)} /> : null} {singleColumn && pathName.startsWith('/deck/') ? <Redirect from={pathName} to={pathName.slice(5)} /> : null}
{!singleColumn && pathName === '/getting-started' ? <Redirect from='/getting-started' to='/deck/getting-started' exact /> : null}
<WrappedRoute path='/getting-started' component={GettingStarted} content={children} /> <WrappedRoute path='/getting-started' component={GettingStarted} content={children} />
<WrappedRoute path='/keyboard-shortcuts' component={KeyboardShortcuts} content={children} /> <WrappedRoute path='/keyboard-shortcuts' component={KeyboardShortcuts} content={children} />

@ -5,11 +5,16 @@ import { normalizeStatusTranslation } from '../actions/importer/normalizer';
import { import {
REBLOG_REQUEST, REBLOG_REQUEST,
REBLOG_FAIL, REBLOG_FAIL,
UNREBLOG_REQUEST,
UNREBLOG_FAIL,
FAVOURITE_REQUEST, FAVOURITE_REQUEST,
FAVOURITE_FAIL, FAVOURITE_FAIL,
UNFAVOURITE_SUCCESS, UNFAVOURITE_REQUEST,
UNFAVOURITE_FAIL,
BOOKMARK_REQUEST, BOOKMARK_REQUEST,
BOOKMARK_FAIL, BOOKMARK_FAIL,
UNBOOKMARK_REQUEST,
UNBOOKMARK_FAIL,
} from '../actions/interactions'; } from '../actions/interactions';
import { import {
STATUS_MUTE_SUCCESS, STATUS_MUTE_SUCCESS,
@ -72,18 +77,28 @@ export default function statuses(state = initialState, action) {
return importStatuses(state, action.statuses); return importStatuses(state, action.statuses);
case FAVOURITE_REQUEST: case FAVOURITE_REQUEST:
return state.setIn([action.status.get('id'), 'favourited'], true); return state.setIn([action.status.get('id'), 'favourited'], true);
case UNFAVOURITE_SUCCESS:
return state.updateIn([action.status.get('id'), 'favourites_count'], x => Math.max(0, x - 1));
case FAVOURITE_FAIL: case FAVOURITE_FAIL:
return state.get(action.status.get('id')) === undefined ? state : state.setIn([action.status.get('id'), 'favourited'], false); return state.get(action.status.get('id')) === undefined ? state : state.setIn([action.status.get('id'), 'favourited'], false);
case UNFAVOURITE_REQUEST:
return state.setIn([action.status.get('id'), 'favourited'], false);
case UNFAVOURITE_FAIL:
return state.get(action.status.get('id')) === undefined ? state : state.setIn([action.status.get('id'), 'favourited'], true);
case BOOKMARK_REQUEST: case BOOKMARK_REQUEST:
return state.get(action.status.get('id')) === undefined ? state : state.setIn([action.status.get('id'), 'bookmarked'], true); return state.get(action.status.get('id')) === undefined ? state : state.setIn([action.status.get('id'), 'bookmarked'], true);
case BOOKMARK_FAIL: case BOOKMARK_FAIL:
return state.get(action.status.get('id')) === undefined ? state : state.setIn([action.status.get('id'), 'bookmarked'], false); return state.get(action.status.get('id')) === undefined ? state : state.setIn([action.status.get('id'), 'bookmarked'], false);
case UNBOOKMARK_REQUEST:
return state.get(action.status.get('id')) === undefined ? state : state.setIn([action.status.get('id'), 'bookmarked'], false);
case UNBOOKMARK_FAIL:
return state.get(action.status.get('id')) === undefined ? state : state.setIn([action.status.get('id'), 'bookmarked'], true);
case REBLOG_REQUEST: case REBLOG_REQUEST:
return state.setIn([action.status.get('id'), 'reblogged'], true); return state.setIn([action.status.get('id'), 'reblogged'], true);
case REBLOG_FAIL: case REBLOG_FAIL:
return state.get(action.status.get('id')) === undefined ? state : state.setIn([action.status.get('id'), 'reblogged'], false); return state.get(action.status.get('id')) === undefined ? state : state.setIn([action.status.get('id'), 'reblogged'], false);
case UNREBLOG_REQUEST:
return state.setIn([action.status.get('id'), 'reblogged'], false);
case UNREBLOG_FAIL:
return state.get(action.status.get('id')) === undefined ? state : state.setIn([action.status.get('id'), 'reblogged'], true);
case STATUS_MUTE_SUCCESS: case STATUS_MUTE_SUCCESS:
return state.setIn([action.id, 'muted'], true); return state.setIn([action.id, 'muted'], true);
case STATUS_UNMUTE_SUCCESS: case STATUS_UNMUTE_SUCCESS:

@ -93,12 +93,19 @@ class Account < ApplicationRecord
# Remote user validations, also applies to internal actors # Remote user validations, also applies to internal actors
validates :username, format: { with: USERNAME_ONLY_RE }, if: -> { (!local? || actor_type == 'Application') && will_save_change_to_username? } validates :username, format: { with: USERNAME_ONLY_RE }, if: -> { (!local? || actor_type == 'Application') && will_save_change_to_username? }
# Remote user validations
validates :uri, presence: true, unless: :local?, on: :create
# Local user validations # Local user validations
validates :username, format: { with: /\A[a-z0-9_]+\z/i }, length: { maximum: 30 }, if: -> { local? && will_save_change_to_username? && actor_type != 'Application' } validates :username, format: { with: /\A[a-z0-9_]+\z/i }, length: { maximum: 30 }, if: -> { local? && will_save_change_to_username? && actor_type != 'Application' }
validates_with UnreservedUsernameValidator, if: -> { local? && will_save_change_to_username? && actor_type != 'Application' } validates_with UnreservedUsernameValidator, if: -> { local? && will_save_change_to_username? && actor_type != 'Application' }
validates :display_name, length: { maximum: MAX_DISPLAY_NAME_LENGTH }, if: -> { local? && will_save_change_to_display_name? } validates :display_name, length: { maximum: MAX_DISPLAY_NAME_LENGTH }, if: -> { local? && will_save_change_to_display_name? }
validates :note, note_length: { maximum: MAX_NOTE_LENGTH }, if: -> { local? && will_save_change_to_note? } validates :note, note_length: { maximum: MAX_NOTE_LENGTH }, if: -> { local? && will_save_change_to_note? }
validates :fields, length: { maximum: DEFAULT_FIELDS_SIZE }, if: -> { local? && will_save_change_to_fields? } validates :fields, length: { maximum: DEFAULT_FIELDS_SIZE }, if: -> { local? && will_save_change_to_fields? }
validates :uri, absence: true, if: :local?, on: :create
validates :inbox_url, absence: true, if: :local?, on: :create
validates :shared_inbox_url, absence: true, if: :local?, on: :create
validates :followers_url, absence: true, if: :local?, on: :create
scope :remote, -> { where.not(domain: nil) } scope :remote, -> { where.not(domain: nil) }
scope :local, -> { where(domain: nil) } scope :local, -> { where(domain: nil) }

@ -4,7 +4,7 @@ class StatusRelationshipsPresenter
PINNABLE_VISIBILITIES = %w(public unlisted private).freeze PINNABLE_VISIBILITIES = %w(public unlisted private).freeze
attr_reader :reblogs_map, :favourites_map, :mutes_map, :pins_map, attr_reader :reblogs_map, :favourites_map, :mutes_map, :pins_map,
:bookmarks_map, :filters_map :bookmarks_map, :filters_map, :attributes_map
def initialize(statuses, current_account_id = nil, **options) def initialize(statuses, current_account_id = nil, **options)
if current_account_id.nil? if current_account_id.nil?
@ -26,6 +26,7 @@ class StatusRelationshipsPresenter
@bookmarks_map = Status.bookmarks_map(status_ids, current_account_id).merge(options[:bookmarks_map] || {}) @bookmarks_map = Status.bookmarks_map(status_ids, current_account_id).merge(options[:bookmarks_map] || {})
@mutes_map = Status.mutes_map(conversation_ids, current_account_id).merge(options[:mutes_map] || {}) @mutes_map = Status.mutes_map(conversation_ids, current_account_id).merge(options[:mutes_map] || {})
@pins_map = Status.pins_map(pinnable_status_ids, current_account_id).merge(options[:pins_map] || {}) @pins_map = Status.pins_map(pinnable_status_ids, current_account_id).merge(options[:pins_map] || {})
@attributes_map = options[:attributes_map] || {}
end end
end end

@ -85,49 +85,57 @@ class REST::StatusSerializer < ActiveModel::Serializer
ActivityPub::TagManager.instance.url_for(object) ActivityPub::TagManager.instance.url_for(object)
end end
def reblogs_count
relationships&.attributes_map&.dig(object.id, :reblogs_count) || object.reblogs_count
end
def favourites_count
relationships&.attributes_map&.dig(object.id, :favourites_count) || object.favourites_count
end
def favourited def favourited
if instance_options && instance_options[:relationships] if relationships
instance_options[:relationships].favourites_map[object.id] || false relationships.favourites_map[object.id] || false
else else
current_user.account.favourited?(object) current_user.account.favourited?(object)
end end
end end
def reblogged def reblogged
if instance_options && instance_options[:relationships] if relationships
instance_options[:relationships].reblogs_map[object.id] || false relationships.reblogs_map[object.id] || false
else else
current_user.account.reblogged?(object) current_user.account.reblogged?(object)
end end
end end
def muted def muted
if instance_options && instance_options[:relationships] if relationships
instance_options[:relationships].mutes_map[object.conversation_id] || false relationships.mutes_map[object.conversation_id] || false
else else
current_user.account.muting_conversation?(object.conversation) current_user.account.muting_conversation?(object.conversation)
end end
end end
def bookmarked def bookmarked
if instance_options && instance_options[:relationships] if relationships
instance_options[:relationships].bookmarks_map[object.id] || false relationships.bookmarks_map[object.id] || false
else else
current_user.account.bookmarked?(object) current_user.account.bookmarked?(object)
end end
end end
def pinned def pinned
if instance_options && instance_options[:relationships] if relationships
instance_options[:relationships].pins_map[object.id] || false relationships.pins_map[object.id] || false
else else
current_user.account.pinned?(object) current_user.account.pinned?(object)
end end
end end
def filtered def filtered
if instance_options && instance_options[:relationships] if relationships
instance_options[:relationships].filters_map[object.id] || [] relationships.filters_map[object.id] || []
else else
current_user.account.status_matches_filters(object) current_user.account.status_matches_filters(object)
end end
@ -148,6 +156,12 @@ class REST::StatusSerializer < ActiveModel::Serializer
object.active_mentions.to_a.sort_by(&:id) object.active_mentions.to_a.sort_by(&:id)
end end
private
def relationships
instance_options && instance_options[:relationships]
end
class ApplicationSerializer < ActiveModel::Serializer class ApplicationSerializer < ActiveModel::Serializer
attributes :name, :website attributes :name, :website

@ -79,7 +79,7 @@ class ActivityPub::ProcessAccountService < BaseService
set_immediate_protocol_attributes! set_immediate_protocol_attributes!
@account.save @account.save!
end end
def update_account def update_account

@ -27,7 +27,7 @@
%button.button= t('admin.accounts.search') %button.button= t('admin.accounts.search')
= link_to t('admin.accounts.reset'), admin_reports_path, class: 'button negative' = link_to t('admin.accounts.reset'), admin_reports_path, class: 'button negative'
- @reports.group_by(&:target_account_id).each do |target_account_id, reports| - @reports.group_by(&:target_account_id).each do |_target_account_id, reports|
- target_account = reports.first.target_account - target_account = reports.first.target_account
.report-card .report-card
.report-card__profile .report-card__profile

@ -33,7 +33,7 @@
.auto-dir .auto-dir
= status_content_format(status) = status_content_format(status)
- if status.ordered_media_attachments.size > 0 - if status.ordered_media_attachments.size.positive?
%p %p
- status.ordered_media_attachments.each do |a| - status.ordered_media_attachments.each do |a|
- if status.local? - if status.local?

@ -14,5 +14,5 @@
%label= t('activerecord.attributes.doorkeeper/application.scopes') %label= t('activerecord.attributes.doorkeeper/application.scopes')
%span.hint= t('simple_form.hints.defaults.scopes') %span.hint= t('simple_form.hints.defaults.scopes')
- Doorkeeper.configuration.scopes.group_by { |s| s.split(':').first }.each do |k, v| - Doorkeeper.configuration.scopes.group_by { |s| s.split(':').first }.each do |_key, value|
= f.input :scopes, label: false, hint: false, collection: v.sort, wrapper: :with_block_label, include_blank: false, label_method: ->(scope) { safe_join([content_tag(:samp, scope, class: class_for_scope(scope)), content_tag(:span, t("doorkeeper.scopes.#{scope}"), class: 'hint')]) }, selected: f.object.scopes.all, required: false, as: :check_boxes, collection_wrapper_tag: 'ul', item_wrapper_tag: 'li' = f.input :scopes, label: false, hint: false, collection: value.sort, wrapper: :with_block_label, include_blank: false, label_method: ->(scope) { safe_join([content_tag(:samp, scope, class: class_for_scope(scope)), content_tag(:span, t("doorkeeper.scopes.#{scope}"), class: 'hint')]) }, selected: f.object.scopes.all, required: false, as: :check_boxes, collection_wrapper_tag: 'ul', item_wrapper_tag: 'li'

@ -8,7 +8,7 @@
- poll.loaded_options.each_with_index do |option, index| - poll.loaded_options.each_with_index do |option, index|
%li %li
- if show_results - if show_results
- percent = total_votes_count > 0 ? 100 * option.votes_count / total_votes_count : 0 - percent = total_votes_count.positive? ? 100 * option.votes_count / total_votes_count : 0
%label.poll__option>< %label.poll__option><
%span.poll__number>< %span.poll__number><
= "#{percent.round}%" = "#{percent.round}%"

@ -1,61 +1,2 @@
:ruby .entry
pinned ||= false = render (centered ? 'statuses/detailed_status' : 'statuses/simple_status'), status: status.proper, hide_show_thread: false
include_threads ||= false
is_predecessor ||= false
is_successor ||= false
direct_reply_id ||= false
parent_id ||= false
is_direct_parent = direct_reply_id == status.id
is_direct_child = parent_id == status.in_reply_to_id
centered ||= include_threads && !is_predecessor && !is_successor
h_class = microformats_h_class(status, is_predecessor, is_successor, include_threads)
style_classes = style_classes(status, is_predecessor, is_successor, include_threads)
mf_classes = microformats_classes(status, is_direct_parent, is_direct_child)
entry_classes = "#{h_class} #{mf_classes} #{style_classes}"
- if status.reply? && include_threads
- if @next_ancestor
.entry{ class: entry_classes }
= link_to_older ActivityPub::TagManager.instance.url_for(@next_ancestor)
= render partial: 'statuses/status', collection: @ancestors, as: :status, locals: { is_predecessor: true, direct_reply_id: status.in_reply_to_id }
.entry{ class: entry_classes }
- if status.reblog?
.status__prepend
.status__prepend-icon-wrapper
%i.status__prepend-icon.fa.fa-fw.fa-retweet
%span
= link_to ActivityPub::TagManager.instance.url_for(status.account), class: 'status__display-name muted' do
%bdi
%strong.emojify= display_name(status.account, custom_emojify: true)
= t('stream_entries.reblogged')
- elsif pinned
.status__prepend
.status__prepend-icon-wrapper
%i.status__prepend-icon.fa.fa-fw.fa-thumb-tack
%span
= t('stream_entries.pinned')
= render (centered ? 'statuses/detailed_status' : 'statuses/simple_status'), status: status.proper, hide_show_thread: is_predecessor || is_successor
- if include_threads
- if @since_descendant_thread_id
.entry{ class: entry_classes }
= link_to_newer short_account_status_url(status.account.username, status, max_descendant_thread_id: @since_descendant_thread_id + 1)
- @descendant_threads.each do |thread|
= render partial: 'statuses/status', collection: thread[:statuses], as: :status, locals: { is_successor: true, parent_id: status.id }
- if thread[:next_status]
.entry{ class: entry_classes }
= link_to_newer ActivityPub::TagManager.instance.url_for(thread[:next_status])
- if @next_descendant_thread
.entry{ class: entry_classes }
= link_to_newer short_account_status_url(status.account.username, status, since_descendant_thread_id: @max_descendant_thread_id - 1)
- if include_threads && !embedded_view? && !user_signed_in?
.entry{ class: entry_classes }
= link_to_login class: 'load-more load-gap' do
= fa_icon 'comments'
= t('statuses.sign_in_to_participate')

@ -9,7 +9,7 @@ if Rails.env.production?
data_hosts = [assets_host] data_hosts = [assets_host]
if ENV['S3_ENABLED'] == 'true' if ENV['S3_ENABLED'] == 'true'
attachments_host = "https://#{ENV['S3_ALIAS_HOST'] || ENV['S3_CLOUDFRONT_HOST'] || ENV['S3_HOSTNAME'] || "s3-#{ENV['S3_REGION'] || 'us-east-1'}.amazonaws.com"}" attachments_host = "https://#{ENV['S3_ALIAS_HOST'] || ENV['S3_CLOUDFRONT_HOST'] || ENV['AZURE_ALIAS_HOST'] || ENV['S3_HOSTNAME'] || "s3-#{ENV['S3_REGION'] || 'us-east-1'}.amazonaws.com"}"
attachments_host = "https://#{Addressable::URI.parse(attachments_host).host}" attachments_host = "https://#{Addressable::URI.parse(attachments_host).host}"
elsif ENV['SWIFT_ENABLED'] == 'true' elsif ENV['SWIFT_ENABLED'] == 'true'
attachments_host = ENV['SWIFT_OBJECT_URL'] attachments_host = ENV['SWIFT_OBJECT_URL']

@ -131,6 +131,26 @@ elsif ENV['SWIFT_ENABLED'] == 'true'
fog_host: ENV['SWIFT_OBJECT_URL'], fog_host: ENV['SWIFT_OBJECT_URL'],
fog_public: true fog_public: true
) )
elsif ENV['AZURE_ENABLED'] == 'true'
require 'paperclip-azure'
Paperclip::Attachment.default_options.merge!(
storage: :azure,
azure_options: {
protocol: 'https',
},
azure_credentials: {
storage_account_name: ENV['AZURE_STORAGE_ACCOUNT'],
storage_access_key: ENV['AZURE_STORAGE_ACCESS_KEY'],
container: ENV['AZURE_CONTAINER_NAME'],
}
)
if ENV.has_key?('AZURE_ALIAS_HOST')
Paperclip::Attachment.default_options.merge!(
url: ':azure_alias_url',
azure_host_alias: ENV['AZURE_ALIAS_HOST']
)
end
else else
Paperclip::Attachment.default_options.merge!( Paperclip::Attachment.default_options.merge!(
storage: :filesystem, storage: :filesystem,

@ -1488,7 +1488,6 @@ an:
show_newer: Amostrar mas recients show_newer: Amostrar mas recients
show_older: Amostrar mas antigos show_older: Amostrar mas antigos
show_thread: Amostrar discusión show_thread: Amostrar discusión
sign_in_to_participate: Rechistra-te pa participar en a conversación
title: "%{name}: «%{quote}»" title: "%{name}: «%{quote}»"
visibilities: visibilities:
direct: Directa direct: Directa
@ -1533,8 +1532,6 @@ an:
min_reblogs: Mantener publicacions reblogueadas mas de min_reblogs: Mantener publicacions reblogueadas mas de
min_reblogs_hint: No borra garra d'as publicacions que haigan estau reblogueadas mas d'este numero de vegadas. Deixa en blanco pa eliminar publicacions sin importar lo numero de reblogueos min_reblogs_hint: No borra garra d'as publicacions que haigan estau reblogueadas mas d'este numero de vegadas. Deixa en blanco pa eliminar publicacions sin importar lo numero de reblogueos
stream_entries: stream_entries:
pinned: Publicación fixada
reblogged: retutau
sensitive_content: Conteniu sensible sensitive_content: Conteniu sensible
strikes: strikes:
errors: errors:

@ -1623,7 +1623,6 @@ ar:
show_newer: إظهار أحدث show_newer: إظهار أحدث
show_older: إظهار أقدم show_older: إظهار أقدم
show_thread: اعرض خيط المحادثة show_thread: اعرض خيط المحادثة
sign_in_to_participate: قم بتسجيل الدخول للمشاركة في هذه المحادثة
title: '%{name}: "%{quote}"' title: '%{name}: "%{quote}"'
visibilities: visibilities:
direct: مباشرة direct: مباشرة
@ -1669,8 +1668,6 @@ ar:
min_reblogs: إبقاء المشاركات المعززة أكثر من min_reblogs: إبقاء المشاركات المعززة أكثر من
min_reblogs_hint: لن تُحذف أي من منشوراتك التي أعيد مشاركتها أكثر من هذا العدد من المرات. اتركه فارغاً لحذف المنشورات بغض النظر عن عدد إعادات المشاركة min_reblogs_hint: لن تُحذف أي من منشوراتك التي أعيد مشاركتها أكثر من هذا العدد من المرات. اتركه فارغاً لحذف المنشورات بغض النظر عن عدد إعادات المشاركة
stream_entries: stream_entries:
pinned: منشور مثبّت
reblogged: شارَكَه
sensitive_content: محتوى حساس sensitive_content: محتوى حساس
strikes: strikes:
errors: errors:

@ -1698,7 +1698,6 @@ be:
show_newer: Паказаць навейшыя show_newer: Паказаць навейшыя
show_older: Паказаць старэйшыя show_older: Паказаць старэйшыя
show_thread: Паказаць ланцуг show_thread: Паказаць ланцуг
sign_in_to_participate: Зарэгіструйцеся каб удзельнічаць у абмеркаванні
title: '%{name}: "%{quote}"' title: '%{name}: "%{quote}"'
visibilities: visibilities:
direct: Асабіста direct: Асабіста
@ -1744,8 +1743,6 @@ be:
min_reblogs: Захаваць допісы, якія пашырылі хаця б min_reblogs: Захаваць допісы, якія пашырылі хаця б
min_reblogs_hint: Не выдаляе вашыя допісы, якія пашырыла прынамсі вызначаная колькасць людзей. Пакіньце гэтае поле пустым, каб допісы выдаляліся незалежна ад гэтай колькасці min_reblogs_hint: Не выдаляе вашыя допісы, якія пашырыла прынамсі вызначаная колькасць людзей. Пакіньце гэтае поле пустым, каб допісы выдаляліся незалежна ад гэтай колькасці
stream_entries: stream_entries:
pinned: Замацаваны допіс
reblogged: пашыраны
sensitive_content: Далікатны змест sensitive_content: Далікатны змест
strikes: strikes:
errors: errors:

@ -1634,7 +1634,6 @@ bg:
show_newer: Показване на по-нови show_newer: Показване на по-нови
show_older: Показване на по-стари show_older: Показване на по-стари
show_thread: Показване на нишката show_thread: Показване на нишката
sign_in_to_participate: Влезте, за да участвате в разговора
title: "%{name}: „%{quote}“" title: "%{name}: „%{quote}“"
visibilities: visibilities:
direct: Директно direct: Директно
@ -1680,8 +1679,6 @@ bg:
min_reblogs: Запазване на публикации с поне толкова споделяния min_reblogs: Запазване на публикации с поне толкова споделяния
min_reblogs_hint: Не се изтриват ваши публикации, споделени поне толкова пъти. Оставете празно, за да изтриете публикациите независимо от техния брой споделяния min_reblogs_hint: Не се изтриват ваши публикации, споделени поне толкова пъти. Оставете празно, за да изтриете публикациите независимо от техния брой споделяния
stream_entries: stream_entries:
pinned: Закачена публикация
reblogged: подсилено
sensitive_content: Деликатно съдържание sensitive_content: Деликатно съдържание
strikes: strikes:
errors: errors:

@ -502,9 +502,6 @@ br:
'604800': 1 sizhunvezh '604800': 1 sizhunvezh
'63113904': 2 vloavezh '63113904': 2 vloavezh
'7889238': 3 months '7889238': 3 months
stream_entries:
pinned: Toud spilhennet
reblogged: en·he deus skignet
themes: themes:
default: Mastodoñ (Teñval) default: Mastodoñ (Teñval)
mastodon-light: Mastodoñ (Sklaer) mastodon-light: Mastodoñ (Sklaer)

@ -1634,7 +1634,6 @@ ca:
show_newer: Mostra els més nous show_newer: Mostra els més nous
show_older: Mostra els més vells show_older: Mostra els més vells
show_thread: Mostra el fil show_thread: Mostra el fil
sign_in_to_participate: Inicia la sessió per participar a la conversa
title: '%{name}: "%{quote}"' title: '%{name}: "%{quote}"'
visibilities: visibilities:
direct: Directe direct: Directe
@ -1680,8 +1679,6 @@ ca:
min_reblogs: Mantenir les publicacions impulsades més de min_reblogs: Mantenir les publicacions impulsades més de
min_reblogs_hint: No suprimeix cap de les teves publicacions que s'hagin impulsat més que aquest nombre de vegades. Deixa-ho en blanc per a suprimir les publicacions independentment del nombre d'impulsos que tinguin. min_reblogs_hint: No suprimeix cap de les teves publicacions que s'hagin impulsat més que aquest nombre de vegades. Deixa-ho en blanc per a suprimir les publicacions independentment del nombre d'impulsos que tinguin.
stream_entries: stream_entries:
pinned: Publicació fixada
reblogged: ha impulsat
sensitive_content: Contingut sensible sensitive_content: Contingut sensible
strikes: strikes:
errors: errors:

@ -996,7 +996,6 @@ ckb:
show_newer: نوێتر پیشان بدە show_newer: نوێتر پیشان بدە
show_older: پیشاندانی کۆنتر show_older: پیشاندانی کۆنتر
show_thread: نیشاندانی ڕشتە show_thread: نیشاندانی ڕشتە
sign_in_to_participate: بچۆ ژوورەوە بۆ بەشداریکردن لە گفتوگۆکەدا
visibilities: visibilities:
private: شوێنکەوتوانی تەنها private: شوێنکەوتوانی تەنها
private_long: تەنها بۆ شوێنکەوتوانی پیشان بدە private_long: تەنها بۆ شوێنکەوتوانی پیشان بدە
@ -1005,8 +1004,6 @@ ckb:
unlisted: پێرست نەبووە unlisted: پێرست نەبووە
unlisted_long: هەموو کەس دەتوانێت بیبینێت، بەڵام لە هێڵی کاتی گشتی دا نەریزراوە unlisted_long: هەموو کەس دەتوانێت بیبینێت، بەڵام لە هێڵی کاتی گشتی دا نەریزراوە
stream_entries: stream_entries:
pinned: توتی چەسپکراو
reblogged: بەهێزکردن
sensitive_content: ناوەڕۆکی هەستیار sensitive_content: ناوەڕۆکی هەستیار
tags: tags:
does_not_match_previous_name: لەگەڵ ناوی پێشوو یەک ناگرێتەوە does_not_match_previous_name: لەگەڵ ناوی پێشوو یەک ناگرێتەوە

@ -983,7 +983,6 @@ co:
show_newer: Vede i più ricenti show_newer: Vede i più ricenti
show_older: Vede i più anziani show_older: Vede i più anziani
show_thread: Vede u filu show_thread: Vede u filu
sign_in_to_participate: Cunnettatevi per participà à a cunversazione
title: '%{name}: "%{quote}"' title: '%{name}: "%{quote}"'
visibilities: visibilities:
direct: Direttu direct: Direttu
@ -1021,8 +1020,6 @@ co:
min_reblogs: Cunservà i statuti spartuti più di min_reblogs: Cunservà i statuti spartuti più di
min_reblogs_hint: Ùn sguassa micca i vostri statuti chì anu ricevuti più chì stu numeru di spartere. Lasciate viotu per sguassà i statuti senza piglià in contu u numaru di spartere min_reblogs_hint: Ùn sguassa micca i vostri statuti chì anu ricevuti più chì stu numeru di spartere. Lasciate viotu per sguassà i statuti senza piglià in contu u numaru di spartere
stream_entries: stream_entries:
pinned: Statutu puntarulatu
reblogged: hà spartutu
sensitive_content: Cuntenutu sensibile sensitive_content: Cuntenutu sensibile
tags: tags:
does_not_match_previous_name: ùn currisponde micca à l'anzianu nome does_not_match_previous_name: ùn currisponde micca à l'anzianu nome

@ -1642,7 +1642,6 @@ cs:
show_newer: Zobrazit novější show_newer: Zobrazit novější
show_older: Zobrazit starší show_older: Zobrazit starší
show_thread: Zobrazit vlákno show_thread: Zobrazit vlákno
sign_in_to_participate: Chcete-li se zúčastnit této konverzace, přihlaste se
title: "%{name}: „%{quote}“" title: "%{name}: „%{quote}“"
visibilities: visibilities:
direct: Přímé direct: Přímé
@ -1688,8 +1687,6 @@ cs:
min_reblogs: Zachovat příspěvky boostnuté alespoň min_reblogs: Zachovat příspěvky boostnuté alespoň
min_reblogs_hint: Nesmaže žádný z vašich příspěvků, který byl boostnut alespoň tolikrát. Ponechte prázdné pro mazání příspěvků bez ohledu na počet jejich boostnutí min_reblogs_hint: Nesmaže žádný z vašich příspěvků, který byl boostnut alespoň tolikrát. Ponechte prázdné pro mazání příspěvků bez ohledu na počet jejich boostnutí
stream_entries: stream_entries:
pinned: Připnutý příspěvek
reblogged: boostnul
sensitive_content: Citlivý obsah sensitive_content: Citlivý obsah
strikes: strikes:
errors: errors:

@ -1762,7 +1762,6 @@ cy:
show_newer: Dangos y diweddaraf show_newer: Dangos y diweddaraf
show_older: Dangos pethau hŷn show_older: Dangos pethau hŷn
show_thread: Dangos trywydd show_thread: Dangos trywydd
sign_in_to_participate: Mengofnodwch i gymryd rhan yn y sgwrs
title: '%{name}: "%{quote}"' title: '%{name}: "%{quote}"'
visibilities: visibilities:
direct: Uniongyrchol direct: Uniongyrchol
@ -1808,8 +1807,6 @@ cy:
min_reblogs: Cadw postiadau wedi eu hybu o leiaf min_reblogs: Cadw postiadau wedi eu hybu o leiaf
min_reblogs_hint: Nid yw'n dileu unrhyw un o'ch postiadau sydd wedi cael eu hybu o leiaf y nifer hwn o weithiau. Gadewch yn wag i ddileu postiadau waeth beth fo'u nifer o hybiadau min_reblogs_hint: Nid yw'n dileu unrhyw un o'ch postiadau sydd wedi cael eu hybu o leiaf y nifer hwn o weithiau. Gadewch yn wag i ddileu postiadau waeth beth fo'u nifer o hybiadau
stream_entries: stream_entries:
pinned: Postiad wedi'i binio
reblogged: hybwyd
sensitive_content: Cynnwys sensitif sensitive_content: Cynnwys sensitif
strikes: strikes:
errors: errors:

@ -1634,7 +1634,6 @@ da:
show_newer: Vis nyere show_newer: Vis nyere
show_older: Vis ældre show_older: Vis ældre
show_thread: Vis tråd show_thread: Vis tråd
sign_in_to_participate: Log ind for at deltage i konversationen
title: '%{name}: "%{quote}"' title: '%{name}: "%{quote}"'
visibilities: visibilities:
direct: Direkte direct: Direkte
@ -1680,8 +1679,6 @@ da:
min_reblogs: Behold indlæg boostet mindst min_reblogs: Behold indlæg boostet mindst
min_reblogs_hint: Sletter ingen egne indlæg, som er boostet flere end dette antal gange. Lad stå tomt for at ignorere denne tærskel under sletning min_reblogs_hint: Sletter ingen egne indlæg, som er boostet flere end dette antal gange. Lad stå tomt for at ignorere denne tærskel under sletning
stream_entries: stream_entries:
pinned: Fastgjort indlæg
reblogged: boostet
sensitive_content: Sensitivt indhold sensitive_content: Sensitivt indhold
strikes: strikes:
errors: errors:

@ -1634,7 +1634,6 @@ de:
show_newer: Neuere anzeigen show_newer: Neuere anzeigen
show_older: Ältere anzeigen show_older: Ältere anzeigen
show_thread: Thread anzeigen show_thread: Thread anzeigen
sign_in_to_participate: Melde dich an, um an der Unterhaltung teilzunehmen
title: "%{name}: „%{quote}“" title: "%{name}: „%{quote}“"
visibilities: visibilities:
direct: Direktnachricht direct: Direktnachricht
@ -1680,8 +1679,6 @@ de:
min_reblogs: Beiträge behalten, die mindestens so oft geteilt wurden min_reblogs: Beiträge behalten, die mindestens so oft geteilt wurden
min_reblogs_hint: Löscht keine Beiträge, die mindestens so oft geteilt worden sind. Lass das Feld leer, um alle Beiträge unabhängig der Anzahl an geteilten Beiträgen zu löschen min_reblogs_hint: Löscht keine Beiträge, die mindestens so oft geteilt worden sind. Lass das Feld leer, um alle Beiträge unabhängig der Anzahl an geteilten Beiträgen zu löschen
stream_entries: stream_entries:
pinned: Angehefteter Beitrag
reblogged: teilte
sensitive_content: Inhaltswarnung sensitive_content: Inhaltswarnung
strikes: strikes:
errors: errors:

@ -1570,7 +1570,6 @@ el:
show_newer: Εμφάνιση νεότερων show_newer: Εμφάνιση νεότερων
show_older: Εμφάνιση παλαιότερων show_older: Εμφάνιση παλαιότερων
show_thread: Εμφάνιση νήματος show_thread: Εμφάνιση νήματος
sign_in_to_participate: Συνδέσου για να συμμετάσχεις στη συζήτηση
title: '%{name}: "%{quote}"' title: '%{name}: "%{quote}"'
visibilities: visibilities:
direct: Άμεση direct: Άμεση
@ -1616,8 +1615,6 @@ el:
min_reblogs: Διατήρηση αναρτήσεων που έχουν ενισχυθεί τουλάχιστον min_reblogs: Διατήρηση αναρτήσεων που έχουν ενισχυθεί τουλάχιστον
min_reblogs_hint: Δεν διαγράφει καμία από τις δημοσιεύσεις σας που έχει λάβει τουλάχιστον αυτόν τον αριθμό ενισχύσεων. Αφήστε κενό για να διαγράψετε δημοσιεύσεις ανεξάρτητα από τον αριθμό των ενισχύσεων min_reblogs_hint: Δεν διαγράφει καμία από τις δημοσιεύσεις σας που έχει λάβει τουλάχιστον αυτόν τον αριθμό ενισχύσεων. Αφήστε κενό για να διαγράψετε δημοσιεύσεις ανεξάρτητα από τον αριθμό των ενισχύσεων
stream_entries: stream_entries:
pinned: Καρφιτσωμένη ανάρτηση
reblogged: ενισχύθηκε
sensitive_content: Ευαίσθητο περιεχόμενο sensitive_content: Ευαίσθητο περιεχόμενο
strikes: strikes:
errors: errors:

@ -1634,7 +1634,6 @@ en-GB:
show_newer: Show newer show_newer: Show newer
show_older: Show older show_older: Show older
show_thread: Show thread show_thread: Show thread
sign_in_to_participate: Sign in to participate in the conversation
title: '%{name}: "%{quote}"' title: '%{name}: "%{quote}"'
visibilities: visibilities:
direct: Direct direct: Direct
@ -1680,8 +1679,6 @@ en-GB:
min_reblogs: Keep posts boosted at least min_reblogs: Keep posts boosted at least
min_reblogs_hint: Doesn't delete any of your posts that has been boosted at least this number of times. Leave blank to delete posts regardless of their number of boosts min_reblogs_hint: Doesn't delete any of your posts that has been boosted at least this number of times. Leave blank to delete posts regardless of their number of boosts
stream_entries: stream_entries:
pinned: Pinned post
reblogged: boosted
sensitive_content: Sensitive content sensitive_content: Sensitive content
strikes: strikes:
errors: errors:

@ -770,7 +770,7 @@ en:
approved: Approval required for sign up approved: Approval required for sign up
none: Nobody can sign up none: Nobody can sign up
open: Anyone can sign up open: Anyone can sign up
title: Server Settings title: Server settings
site_uploads: site_uploads:
delete: Delete uploaded file delete: Delete uploaded file
destroyed_msg: Site upload successfully deleted! destroyed_msg: Site upload successfully deleted!
@ -1635,7 +1635,6 @@ en:
show_newer: Show newer show_newer: Show newer
show_older: Show older show_older: Show older
show_thread: Show thread show_thread: Show thread
sign_in_to_participate: Login to participate in the conversation
title: '%{name}: "%{quote}"' title: '%{name}: "%{quote}"'
visibilities: visibilities:
direct: Direct direct: Direct
@ -1681,8 +1680,6 @@ en:
min_reblogs: Keep posts boosted at least min_reblogs: Keep posts boosted at least
min_reblogs_hint: Doesn't delete any of your posts that has been boosted at least this number of times. Leave blank to delete posts regardless of their number of boosts min_reblogs_hint: Doesn't delete any of your posts that has been boosted at least this number of times. Leave blank to delete posts regardless of their number of boosts
stream_entries: stream_entries:
pinned: Pinned post
reblogged: boosted
sensitive_content: Sensitive content sensitive_content: Sensitive content
strikes: strikes:
errors: errors:

@ -1589,7 +1589,6 @@ eo:
show_newer: Montri pli novajn show_newer: Montri pli novajn
show_older: Montri pli malnovajn show_older: Montri pli malnovajn
show_thread: Montri la mesaĝaron show_thread: Montri la mesaĝaron
sign_in_to_participate: Ensalutu por partopreni la konversacion
title: "%{name}: “%{quote}”" title: "%{name}: “%{quote}”"
visibilities: visibilities:
direct: Rekta direct: Rekta
@ -1635,8 +1634,6 @@ eo:
min_reblogs: Konservi diskonitajn mesaĝojn almenau min_reblogs: Konservi diskonitajn mesaĝojn almenau
min_reblogs_hint: Oni ne forigas viajn afiŝojn kiuj estas diskonigitaj almenaŭ ĉi tiun nombron da fojoj. Lasu malplena por forigi afiŝojn sendepende de iliaj nombroj da diskonigoj min_reblogs_hint: Oni ne forigas viajn afiŝojn kiuj estas diskonigitaj almenaŭ ĉi tiun nombron da fojoj. Lasu malplena por forigi afiŝojn sendepende de iliaj nombroj da diskonigoj
stream_entries: stream_entries:
pinned: Fiksita afiŝo
reblogged: diskonigita
sensitive_content: Tikla enhavo sensitive_content: Tikla enhavo
strikes: strikes:
errors: errors:

@ -1634,7 +1634,6 @@ es-AR:
show_newer: Mostrar más recientes show_newer: Mostrar más recientes
show_older: Mostrar más antiguos show_older: Mostrar más antiguos
show_thread: Mostrar hilo show_thread: Mostrar hilo
sign_in_to_participate: Iniciá sesión para participar en la conversación
title: '%{name}: "%{quote}"' title: '%{name}: "%{quote}"'
visibilities: visibilities:
direct: Directo direct: Directo
@ -1680,8 +1679,6 @@ es-AR:
min_reblogs: Conservar adhesiones de por lo menos min_reblogs: Conservar adhesiones de por lo menos
min_reblogs_hint: No elimina ninguno de tus mensajes que haya recibido más de esta cantidad de adhesiones. Dejá en blanco para eliminar mensajes independientemente de su número de adhesiones. min_reblogs_hint: No elimina ninguno de tus mensajes que haya recibido más de esta cantidad de adhesiones. Dejá en blanco para eliminar mensajes independientemente de su número de adhesiones.
stream_entries: stream_entries:
pinned: Mensaje fijado
reblogged: adhirió a este mensaje
sensitive_content: Contenido sensible sensitive_content: Contenido sensible
strikes: strikes:
errors: errors:

@ -1634,7 +1634,6 @@ es-MX:
show_newer: Mostrar más recientes show_newer: Mostrar más recientes
show_older: Mostrar más antiguos show_older: Mostrar más antiguos
show_thread: Mostrar discusión show_thread: Mostrar discusión
sign_in_to_participate: Regístrate para participar en la conversación
title: "%{name}: «%{quote}»" title: "%{name}: «%{quote}»"
visibilities: visibilities:
direct: Directa direct: Directa
@ -1680,8 +1679,6 @@ es-MX:
min_reblogs: Mantener publicaciones reblogueadas más de min_reblogs: Mantener publicaciones reblogueadas más de
min_reblogs_hint: No borra ninguna de las publicaciones que hayan sido reblogueadas más de este número de veces. Deja en blanco para eliminar publicaciones sin importar el número de reblogueos min_reblogs_hint: No borra ninguna de las publicaciones que hayan sido reblogueadas más de este número de veces. Deja en blanco para eliminar publicaciones sin importar el número de reblogueos
stream_entries: stream_entries:
pinned: Toot fijado
reblogged: retooteado
sensitive_content: Contenido sensible sensitive_content: Contenido sensible
strikes: strikes:
errors: errors:

@ -1634,7 +1634,6 @@ es:
show_newer: Mostrar más recientes show_newer: Mostrar más recientes
show_older: Mostrar más antiguos show_older: Mostrar más antiguos
show_thread: Mostrar discusión show_thread: Mostrar discusión
sign_in_to_participate: Inicia sesión para participar en la conversación
title: "%{name}: «%{quote}»" title: "%{name}: «%{quote}»"
visibilities: visibilities:
direct: Directa direct: Directa
@ -1680,8 +1679,6 @@ es:
min_reblogs: Mantener publicaciones reblogueadas más de min_reblogs: Mantener publicaciones reblogueadas más de
min_reblogs_hint: No borra ninguna de las publicaciones que hayan sido reblogueadas más de este número de veces. Deja en blanco para eliminar publicaciones sin importar el número de reblogueos min_reblogs_hint: No borra ninguna de las publicaciones que hayan sido reblogueadas más de este número de veces. Deja en blanco para eliminar publicaciones sin importar el número de reblogueos
stream_entries: stream_entries:
pinned: Publicación fijada
reblogged: impulsó
sensitive_content: Contenido sensible sensitive_content: Contenido sensible
strikes: strikes:
errors: errors:

@ -1634,7 +1634,6 @@ et:
show_newer: Uuemate kuvamine show_newer: Uuemate kuvamine
show_older: Vanemate kuvamine show_older: Vanemate kuvamine
show_thread: Kuva lõim show_thread: Kuva lõim
sign_in_to_participate: Logi sisse, et liituda vestlusega
title: '%{name}: "%{quote}"' title: '%{name}: "%{quote}"'
visibilities: visibilities:
direct: Otsene direct: Otsene
@ -1682,8 +1681,6 @@ et:
min_reblogs: Säilita postitused jagatud vähemalt min_reblogs: Säilita postitused jagatud vähemalt
min_reblogs_hint: Ei kustuta postitusi, kui need on jagatud vähemalt nii mitu korda. Tühjaks jättes kustuvad postitused olenemata jagamistest min_reblogs_hint: Ei kustuta postitusi, kui need on jagatud vähemalt nii mitu korda. Tühjaks jättes kustuvad postitused olenemata jagamistest
stream_entries: stream_entries:
pinned: Kinnitatud postitus
reblogged: jagatud
sensitive_content: Tundlik sisu sensitive_content: Tundlik sisu
strikes: strikes:
errors: errors:

@ -1592,7 +1592,6 @@ eu:
show_newer: Erakutsi berriagoak show_newer: Erakutsi berriagoak
show_older: Erakutsi zaharragoak show_older: Erakutsi zaharragoak
show_thread: Erakutsi haria show_thread: Erakutsi haria
sign_in_to_participate: Eman izena elkarrizketan parte hartzeko
title: '%{name}: "%{quote}"' title: '%{name}: "%{quote}"'
visibilities: visibilities:
direct: Zuzena direct: Zuzena
@ -1638,8 +1637,6 @@ eu:
min_reblogs: Mantendu bultzada kopuru hau duten bidalketak min_reblogs: Mantendu bultzada kopuru hau duten bidalketak
min_reblogs_hint: Gutxienez bultzada kopuru hau jaso duten zure bidalketak ez dira ezabatuko. Hutsik utziz gero bultzada kopurua ez da kontuan hartuko bidalketak ezabatzean min_reblogs_hint: Gutxienez bultzada kopuru hau jaso duten zure bidalketak ez dira ezabatuko. Hutsik utziz gero bultzada kopurua ez da kontuan hartuko bidalketak ezabatzean
stream_entries: stream_entries:
pinned: Finkatutako bidalketa
reblogged: "(r)en bultzada"
sensitive_content: 'Kontuz: Eduki hunkigarria' sensitive_content: 'Kontuz: Eduki hunkigarria'
strikes: strikes:
errors: errors:

@ -1403,7 +1403,6 @@ fa:
show_newer: نمایش جدیدتر show_newer: نمایش جدیدتر
show_older: نمایش قدیمی‌تر show_older: نمایش قدیمی‌تر
show_thread: نمایش رشته show_thread: نمایش رشته
sign_in_to_participate: برای شرکت در گفتگو وارد حساب خود شوید
title: "%{name}: «%{quote}»" title: "%{name}: «%{quote}»"
visibilities: visibilities:
direct: مستقیم direct: مستقیم
@ -1449,8 +1448,6 @@ fa:
min_reblogs: نگه داشتن فرسته‌هایی با تقویت بیش از min_reblogs: نگه داشتن فرسته‌هایی با تقویت بیش از
min_reblogs_hint: هیچ یک از فرسته‌هایتان را که بیش از این تعداد تقویت شده باشند، حذف نمی‌کند. برای حذف فرسته‌ها فارغ از تعداد تقویت‌هایشان، خالی بگذارید min_reblogs_hint: هیچ یک از فرسته‌هایتان را که بیش از این تعداد تقویت شده باشند، حذف نمی‌کند. برای حذف فرسته‌ها فارغ از تعداد تقویت‌هایشان، خالی بگذارید
stream_entries: stream_entries:
pinned: نوشته‌های ثابت
reblogged: تقویت شده
sensitive_content: محتوای حساس sensitive_content: محتوای حساس
strikes: strikes:
errors: errors:

@ -1634,7 +1634,6 @@ fi:
show_newer: Näytä uudemmat show_newer: Näytä uudemmat
show_older: Näytä vanhempi show_older: Näytä vanhempi
show_thread: Näytä ketju show_thread: Näytä ketju
sign_in_to_participate: Kirjaudu osallistuaksesi keskusteluun
title: "%{name}: ”%{quote}”" title: "%{name}: ”%{quote}”"
visibilities: visibilities:
direct: Suoraan direct: Suoraan
@ -1680,8 +1679,6 @@ fi:
min_reblogs: Pidä viestit tehostettuna vähintään min_reblogs: Pidä viestit tehostettuna vähintään
min_reblogs_hint: Ei poista yhtään viestiäsi, jota on tehostettu vähintään näin monta kertaa. Jätä tyhjäksi poistaaksesi viestejä riippumatta niiden tehosteiden määrästä min_reblogs_hint: Ei poista yhtään viestiäsi, jota on tehostettu vähintään näin monta kertaa. Jätä tyhjäksi poistaaksesi viestejä riippumatta niiden tehosteiden määrästä
stream_entries: stream_entries:
pinned: Kiinnitetty tuuttaus
reblogged: tehosti
sensitive_content: Arkaluontoista sisältöä sensitive_content: Arkaluontoista sisältöä
strikes: strikes:
errors: errors:

@ -1634,7 +1634,6 @@ fo:
show_newer: Vís nýggjari show_newer: Vís nýggjari
show_older: Vís eldri show_older: Vís eldri
show_thread: Vís tráð show_thread: Vís tráð
sign_in_to_participate: Rita inn fyri at luttaka í samrøðuni
title: '%{name}: "%{quote}"' title: '%{name}: "%{quote}"'
visibilities: visibilities:
direct: Beinleiðis direct: Beinleiðis
@ -1680,8 +1679,6 @@ fo:
min_reblogs: Varðveit postar, sum eru stimbraðir í minsta lagi min_reblogs: Varðveit postar, sum eru stimbraðir í minsta lagi
min_reblogs_hint: Strikar ikki postar hjá tær, sum eru stimbraðir í minsta lagi so ofta. Lat vera blankt, um postar skulu strikast óansæð, hvussu ofta teir eru stimbraðir min_reblogs_hint: Strikar ikki postar hjá tær, sum eru stimbraðir í minsta lagi so ofta. Lat vera blankt, um postar skulu strikast óansæð, hvussu ofta teir eru stimbraðir
stream_entries: stream_entries:
pinned: Festir postar
reblogged: stimbraður
sensitive_content: Viðkvæmt innihald sensitive_content: Viðkvæmt innihald
strikes: strikes:
errors: errors:

@ -1634,7 +1634,6 @@ fr-QC:
show_newer: Plus récents show_newer: Plus récents
show_older: Plus anciens show_older: Plus anciens
show_thread: Afficher le fil de discussion show_thread: Afficher le fil de discussion
sign_in_to_participate: Inscrivez-vous pour prendre part à la conversation
title: "%{name}: « %{quote} »" title: "%{name}: « %{quote} »"
visibilities: visibilities:
direct: Direct direct: Direct
@ -1680,8 +1679,6 @@ fr-QC:
min_reblogs: Conserver les messages partagés au moins min_reblogs: Conserver les messages partagés au moins
min_reblogs_hint: Ne supprime aucun de vos messages qui ont été partagés au moins ce nombre de fois. Laisser vide pour supprimer les messages indépendamment de leur nombre de partages min_reblogs_hint: Ne supprime aucun de vos messages qui ont été partagés au moins ce nombre de fois. Laisser vide pour supprimer les messages indépendamment de leur nombre de partages
stream_entries: stream_entries:
pinned: Message épinglé
reblogged: a partagé
sensitive_content: Contenu sensible sensitive_content: Contenu sensible
strikes: strikes:
errors: errors:

@ -1634,7 +1634,6 @@ fr:
show_newer: Plus récents show_newer: Plus récents
show_older: Plus anciens show_older: Plus anciens
show_thread: Afficher le fil de discussion show_thread: Afficher le fil de discussion
sign_in_to_participate: Inscrivez-vous pour prendre part à la conversation
title: "%{name}: « %{quote} »" title: "%{name}: « %{quote} »"
visibilities: visibilities:
direct: Direct direct: Direct
@ -1680,8 +1679,6 @@ fr:
min_reblogs: Conserver les messages partagés au moins min_reblogs: Conserver les messages partagés au moins
min_reblogs_hint: Ne supprime aucun de vos messages qui ont été partagés au moins ce nombre de fois. Laisser vide pour supprimer les messages indépendamment de leur nombre de partages min_reblogs_hint: Ne supprime aucun de vos messages qui ont été partagés au moins ce nombre de fois. Laisser vide pour supprimer les messages indépendamment de leur nombre de partages
stream_entries: stream_entries:
pinned: Message épinglé
reblogged: a partagé
sensitive_content: Contenu sensible sensitive_content: Contenu sensible
strikes: strikes:
errors: errors:

@ -1634,7 +1634,6 @@ fy:
show_newer: Nijere toane show_newer: Nijere toane
show_older: Aldere toane show_older: Aldere toane
show_thread: Petear toane show_thread: Petear toane
sign_in_to_participate: Meld jo oan om oan dit petear mei te dwaan
title: '%{name}: "%{quote}"' title: '%{name}: "%{quote}"'
visibilities: visibilities:
direct: Direkt direct: Direkt
@ -1680,8 +1679,6 @@ fy:
min_reblogs: Berjochten dyt op syn minst safolle kear boost binne behâlde min_reblogs: Berjochten dyt op syn minst safolle kear boost binne behâlde
min_reblogs_hint: Smyt gjin berjochten dyt op syn minst safolle kear boost binne fuort. Lit leech om berjochten likefolle it tal boosts fuort te smiten min_reblogs_hint: Smyt gjin berjochten dyt op syn minst safolle kear boost binne fuort. Lit leech om berjochten likefolle it tal boosts fuort te smiten
stream_entries: stream_entries:
pinned: Fêstsette berjocht
reblogged: boostte
sensitive_content: Gefoelige ynhâld sensitive_content: Gefoelige ynhâld
strikes: strikes:
errors: errors:

@ -501,7 +501,6 @@ ga:
'63113904': 2 bhliain '63113904': 2 bhliain
'7889238': 3 mhí '7889238': 3 mhí
stream_entries: stream_entries:
pinned: Postáil pionnáilte
sensitive_content: Ábhar íogair sensitive_content: Ábhar íogair
two_factor_authentication: two_factor_authentication:
edit: Cuir in eagar edit: Cuir in eagar

@ -1698,7 +1698,6 @@ gd:
show_newer: Seall feadhainn as ùire show_newer: Seall feadhainn as ùire
show_older: Seall feadhainn as sine show_older: Seall feadhainn as sine
show_thread: Seall an snàithlean show_thread: Seall an snàithlean
sign_in_to_participate: Clàraich a-steach a ghabhail pàirt sa chòmhradh
title: "%{name}: “%{quote}”" title: "%{name}: “%{quote}”"
visibilities: visibilities:
direct: Dìreach direct: Dìreach
@ -1744,8 +1743,6 @@ gd:
min_reblogs: Cùm na tha ga bhrosnachadh le co-dhiù min_reblogs: Cùm na tha ga bhrosnachadh le co-dhiù
min_reblogs_hint: Cha dèid gin dhe na postaichean agad a sguabadh às a tha gam brosnachadh an àireamh de thursan seo air a char as lugha. Fàg seo bàn airson postaichean a sguabadh às ge b e co mheud turas a tha iad gam brosnachadh min_reblogs_hint: Cha dèid gin dhe na postaichean agad a sguabadh às a tha gam brosnachadh an àireamh de thursan seo air a char as lugha. Fàg seo bàn airson postaichean a sguabadh às ge b e co mheud turas a tha iad gam brosnachadh
stream_entries: stream_entries:
pinned: Post prìnichte
reblogged: "ga bhrosnachadh"
sensitive_content: Susbaint fhrionasach sensitive_content: Susbaint fhrionasach
strikes: strikes:
errors: errors:

@ -1634,7 +1634,6 @@ gl:
show_newer: Mostrar o máis novo show_newer: Mostrar o máis novo
show_older: Mostrar o máis vello show_older: Mostrar o máis vello
show_thread: Amosar fío show_thread: Amosar fío
sign_in_to_participate: Accede e participa na conversa
title: '%{name}: "%{quote}"' title: '%{name}: "%{quote}"'
visibilities: visibilities:
direct: Directa direct: Directa
@ -1680,8 +1679,6 @@ gl:
min_reblogs: Manter publicacións promovidas máis de min_reblogs: Manter publicacións promovidas máis de
min_reblogs_hint: Non elimina ningunha das túas publicacións se foron promovidas máis deste número de veces. Deixa en branco para eliminar publicacións independentemente do seu número de promocións min_reblogs_hint: Non elimina ningunha das túas publicacións se foron promovidas máis deste número de veces. Deixa en branco para eliminar publicacións independentemente do seu número de promocións
stream_entries: stream_entries:
pinned: Publicación fixada
reblogged: promoveu
sensitive_content: Contido sensible sensitive_content: Contido sensible
strikes: strikes:
errors: errors:

@ -1698,7 +1698,6 @@ he:
show_newer: הצג חדשים יותר show_newer: הצג חדשים יותר
show_older: הצג ישנים יותר show_older: הצג ישנים יותר
show_thread: הצג שרשור show_thread: הצג שרשור
sign_in_to_participate: הכנס כדי להשתתף בשיחה
title: '%{name}: "%{quote}"' title: '%{name}: "%{quote}"'
visibilities: visibilities:
direct: ישיר direct: ישיר
@ -1744,8 +1743,6 @@ he:
min_reblogs: שמור הודעות מהודהדות לפחות min_reblogs: שמור הודעות מהודהדות לפחות
min_reblogs_hint: לא מוחק מי מהודעותיך שקיבלו לפחות את המספר הזה של הדהודים. להשאיר ריק כדי למחוק הודעות ללא קשר למספר ההדהודים שקיבלו min_reblogs_hint: לא מוחק מי מהודעותיך שקיבלו לפחות את המספר הזה של הדהודים. להשאיר ריק כדי למחוק הודעות ללא קשר למספר ההדהודים שקיבלו
stream_entries: stream_entries:
pinned: הודעה נעוצה
reblogged: הודהד
sensitive_content: תוכן רגיש sensitive_content: תוכן רגיש
strikes: strikes:
errors: errors:

@ -207,7 +207,6 @@ hr:
public: Javno public: Javno
unlisted: Neprikazano unlisted: Neprikazano
stream_entries: stream_entries:
reblogged: boostano
sensitive_content: Osjetljivi sadržaj sensitive_content: Osjetljivi sadržaj
two_factor_authentication: two_factor_authentication:
disable: Onemogući 2FA disable: Onemogući 2FA

@ -1634,7 +1634,6 @@ hu:
show_newer: Újabbak mutatása show_newer: Újabbak mutatása
show_older: Régebbiek mutatása show_older: Régebbiek mutatása
show_thread: Szál mutatása show_thread: Szál mutatása
sign_in_to_participate: Bejelentkezés a beszélgetésben részvételhez
title: "%{name}: „%{quote}”" title: "%{name}: „%{quote}”"
visibilities: visibilities:
direct: Közvetlen direct: Közvetlen
@ -1680,8 +1679,6 @@ hu:
min_reblogs: Bejegyzések megtartása, melyeket többször toltak meg, mint min_reblogs: Bejegyzések megtartása, melyeket többször toltak meg, mint
min_reblogs_hint: Egyetlen olyan bejegyzésedet sem törli, melyet ennél többször toltak meg. Hagyd üresen, hogy a megtolások számától függetlenül töröljük a bejegyzéseket min_reblogs_hint: Egyetlen olyan bejegyzésedet sem törli, melyet ennél többször toltak meg. Hagyd üresen, hogy a megtolások számától függetlenül töröljük a bejegyzéseket
stream_entries: stream_entries:
pinned: Kitűzött bejegyzés
reblogged: megtolta
sensitive_content: Kényes tartalom sensitive_content: Kényes tartalom
strikes: strikes:
errors: errors:

@ -802,7 +802,6 @@ hy:
show_newer: Ցուցադրել նորերը show_newer: Ցուցադրել նորերը
show_older: Ցուցադրել հները show_older: Ցուցադրել հները
show_thread: Բացել շղթան show_thread: Բացել շղթան
sign_in_to_participate: Մուտք գործէք՝ զրոյցին միանալու համար
title: '%{name}: "%{quote}"' title: '%{name}: "%{quote}"'
visibilities: visibilities:
direct: Հասցէագրուած direct: Հասցէագրուած
@ -824,8 +823,6 @@ hy:
'63113904': 2 տարի '63113904': 2 տարի
'7889238': 3 ամիս '7889238': 3 ամիս
stream_entries: stream_entries:
pinned: Ամրացուած գրառում
reblogged: տարածուած
sensitive_content: Կասկածելի բովանդակութիւն sensitive_content: Կասկածելի բովանդակութիւն
themes: themes:
contrast: Mastodon (բարձր կոնտրաստով) contrast: Mastodon (բարձր կոնտրաստով)

@ -1448,7 +1448,6 @@ id:
show_newer: Tampilkan lebih baru show_newer: Tampilkan lebih baru
show_older: Tampilkan lebih lama show_older: Tampilkan lebih lama
show_thread: Tampilkan utas show_thread: Tampilkan utas
sign_in_to_participate: Masuk untuk mengikuti percakapan
title: '%{name}: "%{quote}"' title: '%{name}: "%{quote}"'
visibilities: visibilities:
direct: Langsung direct: Langsung
@ -1493,8 +1492,6 @@ id:
min_reblogs: Simpan kiriman yang di-boost lebih dari min_reblogs: Simpan kiriman yang di-boost lebih dari
min_reblogs_hint: Tidak menghapus kiriman Anda yang di-boost lebih dari sekian kali. Kosongkan bila ingin menghapus kiriman tanpa peduli jumlah boost-nya min_reblogs_hint: Tidak menghapus kiriman Anda yang di-boost lebih dari sekian kali. Kosongkan bila ingin menghapus kiriman tanpa peduli jumlah boost-nya
stream_entries: stream_entries:
pinned: Kiriman tersemat
reblogged: di-boost-kan
sensitive_content: Konten sensitif sensitive_content: Konten sensitif
strikes: strikes:
errors: errors:

@ -1437,7 +1437,6 @@ io:
show_newer: Montrez plu nova kozo show_newer: Montrez plu nova kozo
show_older: Montrez plu olda kozo show_older: Montrez plu olda kozo
show_thread: Montrez postaro show_thread: Montrez postaro
sign_in_to_participate: Registrez por partoprenar en konverso
title: '%{name}: "%{quote}"' title: '%{name}: "%{quote}"'
visibilities: visibilities:
direct: Direta direct: Direta
@ -1482,8 +1481,6 @@ io:
min_reblogs: Retenez bustita posti mine min_reblogs: Retenez bustita posti mine
min_reblogs_hint: Ne efacas irga vua posti quo bustigesos mine ca foyoquanto. Restez quale vakua por efacar posti sen suciar olia foyoquanto min_reblogs_hint: Ne efacas irga vua posti quo bustigesos mine ca foyoquanto. Restez quale vakua por efacar posti sen suciar olia foyoquanto
stream_entries: stream_entries:
pinned: Pinglagita posto
reblogged: diskonocigita
sensitive_content: Titiliva kontenajo sensitive_content: Titiliva kontenajo
strikes: strikes:
errors: errors:

@ -1638,7 +1638,6 @@ is:
show_newer: Sýna nýrri show_newer: Sýna nýrri
show_older: Sýna eldri show_older: Sýna eldri
show_thread: Birta þráð show_thread: Birta þráð
sign_in_to_participate: Skráðu þig inn til að taka þátt í samtalinu
title: "%{name}: „%{quote}‟" title: "%{name}: „%{quote}‟"
visibilities: visibilities:
direct: Beint direct: Beint
@ -1684,8 +1683,6 @@ is:
min_reblogs: Halda færslum sem eru endurbirtar oftar en min_reblogs: Halda færslum sem eru endurbirtar oftar en
min_reblogs_hint: Eyðir ekki þínum eigin færslum sem endurbirtar hafa verið þetta oft. Skildu þetta eftir autt til að eyða færslum burtséð frá fjölda endurbirtinga min_reblogs_hint: Eyðir ekki þínum eigin færslum sem endurbirtar hafa verið þetta oft. Skildu þetta eftir autt til að eyða færslum burtséð frá fjölda endurbirtinga
stream_entries: stream_entries:
pinned: Fest færsla
reblogged: endurbirt
sensitive_content: Viðkvæmt efni sensitive_content: Viðkvæmt efni
strikes: strikes:
errors: errors:

@ -1636,7 +1636,6 @@ it:
show_newer: Mostra più nuovi show_newer: Mostra più nuovi
show_older: Mostra più vecchi show_older: Mostra più vecchi
show_thread: Mostra thread show_thread: Mostra thread
sign_in_to_participate: Accedi per partecipare alla conversazione
title: '%{name}: "%{quote}"' title: '%{name}: "%{quote}"'
visibilities: visibilities:
direct: Diretto direct: Diretto
@ -1682,8 +1681,6 @@ it:
min_reblogs: Conserva i post condivisi più di min_reblogs: Conserva i post condivisi più di
min_reblogs_hint: Non cancella nessuno dei tuoi post che è stato condiviso più di questo numero di volte. Lascia vuoto per cancellare i post indipendentemente dal loro numero di condivisioni min_reblogs_hint: Non cancella nessuno dei tuoi post che è stato condiviso più di questo numero di volte. Lascia vuoto per cancellare i post indipendentemente dal loro numero di condivisioni
stream_entries: stream_entries:
pinned: Post fissato in cima
reblogged: condiviso
sensitive_content: Materiale sensibile sensitive_content: Materiale sensibile
strikes: strikes:
errors: errors:

@ -1602,7 +1602,6 @@ ja:
show_newer: 新しいものを表示 show_newer: 新しいものを表示
show_older: 古いものを表示 show_older: 古いものを表示
show_thread: スレッドを表示 show_thread: スレッドを表示
sign_in_to_participate: ログインして会話に参加
title: '%{name}: "%{quote}"' title: '%{name}: "%{quote}"'
visibilities: visibilities:
direct: ダイレクト direct: ダイレクト
@ -1648,8 +1647,6 @@ ja:
min_reblogs: ブーストの基準値 min_reblogs: ブーストの基準値
min_reblogs_hint: この数以上、ブーストされた投稿を削除せずに残します。空白にしておくと、ブーストされた数に関わらず投稿を削除します。 min_reblogs_hint: この数以上、ブーストされた投稿を削除せずに残します。空白にしておくと、ブーストされた数に関わらず投稿を削除します。
stream_entries: stream_entries:
pinned: 固定された投稿
reblogged: さんがブースト
sensitive_content: 閲覧注意 sensitive_content: 閲覧注意
strikes: strikes:
errors: errors:

@ -457,7 +457,6 @@ ka:
ownership: სხვისი ტუტი ვერ აიპინება ownership: სხვისი ტუტი ვერ აიპინება
reblog: ბუსტი ვერ აიპინება reblog: ბუსტი ვერ აიპინება
show_more: მეტის ჩვენება show_more: მეტის ჩვენება
sign_in_to_participate: საუბარში მონაწილეობისთვის გაიარეთ ავტორიზაცია
visibilities: visibilities:
private: მხოლოდ-მიმდევრები private: მხოლოდ-მიმდევრები
private_long: აჩვენე მხოლოდ მიმდევრებს private_long: აჩვენე მხოლოდ მიმდევრებს
@ -466,8 +465,6 @@ ka:
unlisted: ჩამოუთვლელი unlisted: ჩამოუთვლელი
unlisted_long: ხედავს ყველა, მაგრამ არ ჩანს საჯარო თაიმლაინებში unlisted_long: ხედავს ყველა, მაგრამ არ ჩანს საჯარო თაიმლაინებში
stream_entries: stream_entries:
pinned: აპინული ტუტი
reblogged: გაზრდილი
sensitive_content: მგრძნობიარე კონტენტი sensitive_content: მგრძნობიარე კონტენტი
themes: themes:
contrast: მაღალი კონტრასტი contrast: მაღალი კონტრასტი

@ -713,7 +713,6 @@ kab:
show_more: Ssken-d ugar show_more: Ssken-d ugar
show_newer: Ssken-d timaynutin show_newer: Ssken-d timaynutin
show_thread: Ssken-d lxiḍ show_thread: Ssken-d lxiḍ
sign_in_to_participate: Qqen i waken ad tzeddiḍ deg udiwenni
title: '%{name}: "%{quote}"' title: '%{name}: "%{quote}"'
visibilities: visibilities:
direct: Usrid direct: Usrid
@ -733,7 +732,6 @@ kab:
'63113904': 2 n yiseggasen '63113904': 2 n yiseggasen
'7889238': 3 n wayyuren '7889238': 3 n wayyuren
stream_entries: stream_entries:
pinned: Tijewwiqt yettwasentḍen
sensitive_content: Agbur amḥulfu sensitive_content: Agbur amḥulfu
themes: themes:
contrast: Maṣṭudun (agnil awriran) contrast: Maṣṭudun (agnil awriran)

@ -691,7 +691,6 @@ kk:
vote: Дауыс беру vote: Дауыс беру
show_more: Тағы әкел show_more: Тағы әкел
show_thread: Тақырыпты көрсет show_thread: Тақырыпты көрсет
sign_in_to_participate: Сұхбатқа қатысу үшін кіріңіз
visibilities: visibilities:
private: Тек оқырмандарға private: Тек оқырмандарға
private_long: Тек оқырмандарға ғана көрінеді private_long: Тек оқырмандарға ғана көрінеді
@ -700,8 +699,6 @@ kk:
unlisted: Тізімге енбеген unlisted: Тізімге енбеген
unlisted_long: Бәрі көре алады, бірақ ашық тізімдерге ене алмайды unlisted_long: Бәрі көре алады, бірақ ашық тізімдерге ене алмайды
stream_entries: stream_entries:
pinned: Жабыстырылған жазба
reblogged: бөлісті
sensitive_content: Нәзік мазмұн sensitive_content: Нәзік мазмұн
tags: tags:
does_not_match_previous_name: алдыңғы атқа сәйкес келмейді does_not_match_previous_name: алдыңғы атқа сәйкес келмейді

@ -1604,7 +1604,6 @@ ko:
show_newer: 새로운 것 표시 show_newer: 새로운 것 표시
show_older: 오래된 것 표시 show_older: 오래된 것 표시
show_thread: 글타래 보기 show_thread: 글타래 보기
sign_in_to_participate: 대화에 참여 위해 로그인 하기
title: '%{name}: "%{quote}"' title: '%{name}: "%{quote}"'
visibilities: visibilities:
direct: 다이렉트 direct: 다이렉트
@ -1650,8 +1649,6 @@ ko:
min_reblogs: 해당 횟수 이상 부스트된 게시물 유지 min_reblogs: 해당 횟수 이상 부스트된 게시물 유지
min_reblogs_hint: 이 횟수 이상의 부스트가 된 게시물은 삭제하지 않습니다. 부스트 수와 관계없이 게시물을 지우고 싶다면 공백으로 두세요 min_reblogs_hint: 이 횟수 이상의 부스트가 된 게시물은 삭제하지 않습니다. 부스트 수와 관계없이 게시물을 지우고 싶다면 공백으로 두세요
stream_entries: stream_entries:
pinned: 고정된 게시물
reblogged: 님이 부스트 했습니다
sensitive_content: 민감한 내용 sensitive_content: 민감한 내용
strikes: strikes:
errors: errors:

@ -1482,7 +1482,6 @@ ku:
show_newer: Nûtirîn nîşan bide show_newer: Nûtirîn nîşan bide
show_older: Kevntirîn nîşan bide show_older: Kevntirîn nîşan bide
show_thread: Mijarê nîşan bide show_thread: Mijarê nîşan bide
sign_in_to_participate: Ji bo tevlî sohbetê bibî xwe tomar bike
title: "%{name}%{quote}" title: "%{name}%{quote}"
visibilities: visibilities:
direct: Rasterast direct: Rasterast
@ -1527,8 +1526,6 @@ ku:
min_reblogs: Şandiyên ku bêtir hatine bilindkirin veşêre min_reblogs: Şandiyên ku bêtir hatine bilindkirin veşêre
min_reblogs_hint: Şandî ku ji ji vê hejmarê bêtir bilindkirin wergirtibe nayê jêbirin. Vala bihêle da ku şandiyan jê bibî tevlî ku çiqas hezkirin wergirtibe min_reblogs_hint: Şandî ku ji ji vê hejmarê bêtir bilindkirin wergirtibe nayê jêbirin. Vala bihêle da ku şandiyan jê bibî tevlî ku çiqas hezkirin wergirtibe
stream_entries: stream_entries:
pinned: Şandiya derzîkirî
reblogged: bilindkirî
sensitive_content: Naveroka hestiyarî sensitive_content: Naveroka hestiyarî
strikes: strikes:
errors: errors:

@ -458,7 +458,6 @@ lt:
ownership: Kitų vartotojų toot'ai negali būti prisegti ownership: Kitų vartotojų toot'ai negali būti prisegti
reblog: Pakeltos žinutės negali būti prisegtos reblog: Pakeltos žinutės negali būti prisegtos
show_more: Daugiau show_more: Daugiau
sign_in_to_participate: Prisijunkite jeigu norite dalyvauti pokalbyje
visibilities: visibilities:
private: Tik sekėjams private: Tik sekėjams
private_long: Rodyti tik sekėjams private_long: Rodyti tik sekėjams
@ -467,8 +466,6 @@ lt:
unlisted: Neįtrauktas į sąrašus unlisted: Neįtrauktas į sąrašus
unlisted_long: Matyti gali visi, tačiau nėra įtraukta į viešas laiko juostas unlisted_long: Matyti gali visi, tačiau nėra įtraukta į viešas laiko juostas
stream_entries: stream_entries:
pinned: Prisegtas toot'as
reblogged: pakeltas
sensitive_content: Jautrus turinys sensitive_content: Jautrus turinys
themes: themes:
contrast: Mastodon (Didelio Kontrasto) contrast: Mastodon (Didelio Kontrasto)

@ -1625,7 +1625,6 @@ lv:
show_newer: Nekad nerādīt show_newer: Nekad nerādīt
show_older: Rādīt senākus show_older: Rādīt senākus
show_thread: Rādīt tematu show_thread: Rādīt tematu
sign_in_to_participate: Lai piedalītos sarunā, pieraksties
title: "%{name}: “%{quote}”" title: "%{name}: “%{quote}”"
visibilities: visibilities:
direct: Tiešs direct: Tiešs
@ -1671,8 +1670,6 @@ lv:
min_reblogs: Saglabāt ziņas izceltas vismaz min_reblogs: Saglabāt ziņas izceltas vismaz
min_reblogs_hint: Neizdzēš nevienu no tavām ziņām, kas ir izceltas vismaz tik reižu. Atstāj tukšu, lai dzēstu ziņas neatkarīgi no to izcēlumu skaita min_reblogs_hint: Neizdzēš nevienu no tavām ziņām, kas ir izceltas vismaz tik reižu. Atstāj tukšu, lai dzēstu ziņas neatkarīgi no to izcēlumu skaita
stream_entries: stream_entries:
pinned: Piespraustā ziņa
reblogged: izceltie
sensitive_content: Sensitīvs saturs sensitive_content: Sensitīvs saturs
strikes: strikes:
errors: errors:

@ -942,7 +942,6 @@ ms:
edited_at_html: Disunting %{date} edited_at_html: Disunting %{date}
poll: poll:
vote: Undi vote: Undi
sign_in_to_participate: Daftar masuk untuk menyertai perbualan
visibilities: visibilities:
direct: Terus direct: Terus
private: Pengikut sahaja private: Pengikut sahaja
@ -968,7 +967,6 @@ ms:
'7889238': 3 bulan '7889238': 3 bulan
min_favs: Simpan hantaran digemarkan sekurang-kurangnya min_favs: Simpan hantaran digemarkan sekurang-kurangnya
stream_entries: stream_entries:
pinned: Hantaran disemat
sensitive_content: Kandungan sensitif sensitive_content: Kandungan sensitif
strikes: strikes:
errors: errors:

@ -1602,7 +1602,6 @@ my:
show_newer: ပို့စ်အသစ်များပြရန် show_newer: ပို့စ်အသစ်များပြရန်
show_older: ပို့စ်အဟောင်းများပြရန် show_older: ပို့စ်အဟောင်းများပြရန်
show_thread: Thread ကို ပြပါ show_thread: Thread ကို ပြပါ
sign_in_to_participate: စကားဝိုင်းတွင် ပါဝင်ရန် အကောင့်ဝင်ပါ
title: '%{name}: "%{quote}"' title: '%{name}: "%{quote}"'
visibilities: visibilities:
direct: တိုက်ရိုက် direct: တိုက်ရိုက်
@ -1648,8 +1647,6 @@ my:
min_reblogs: အနည်းဆုံးအားဖြင့် Boost လုပ်ထားသည့်ပို့စ်များကို သိမ်းဆည်းပါ min_reblogs: အနည်းဆုံးအားဖြင့် Boost လုပ်ထားသည့်ပို့စ်များကို သိမ်းဆည်းပါ
min_reblogs_hint: အနည်းဆုံး ဤအကြိမ်အရေအတွက်ကို မြှင့်တင်ထားသည့် သင့်ပို့စ်များကို မဖျက်ပါ။ ၎င်းတို့၏ မြှင့်တင်မှုအရေအတွက်ကို မခွဲခြားဘဲ ပို့စ်များကို ဖျက်ရန် ချန်ထားပါ min_reblogs_hint: အနည်းဆုံး ဤအကြိမ်အရေအတွက်ကို မြှင့်တင်ထားသည့် သင့်ပို့စ်များကို မဖျက်ပါ။ ၎င်းတို့၏ မြှင့်တင်မှုအရေအတွက်ကို မခွဲခြားဘဲ ပို့စ်များကို ဖျက်ရန် ချန်ထားပါ
stream_entries: stream_entries:
pinned: ပင်တွဲထားသောပို့စ်
reblogged: Boost လုပ်ခဲ့သည်
sensitive_content: သတိထားရသော အကြောင်းအရာ sensitive_content: သတိထားရသော အကြောင်းအရာ
strikes: strikes:
errors: errors:

@ -1634,7 +1634,6 @@ nl:
show_newer: Nieuwere tonen show_newer: Nieuwere tonen
show_older: Oudere tonen show_older: Oudere tonen
show_thread: Gesprek tonen show_thread: Gesprek tonen
sign_in_to_participate: Log in om deel te nemen aan het gesprek
title: '%{name}: "%{quote}"' title: '%{name}: "%{quote}"'
visibilities: visibilities:
direct: Privébericht direct: Privébericht
@ -1680,8 +1679,6 @@ nl:
min_reblogs: Berichten die minstens zoveel keer zijn geboost behouden min_reblogs: Berichten die minstens zoveel keer zijn geboost behouden
min_reblogs_hint: Verwijdert geen berichten die tenminste zoveel keer zijn geboost. Laat leeg om berichten ongeacht het aantal boosts te verwijderen min_reblogs_hint: Verwijdert geen berichten die tenminste zoveel keer zijn geboost. Laat leeg om berichten ongeacht het aantal boosts te verwijderen
stream_entries: stream_entries:
pinned: Vastgemaakt bericht
reblogged: boostte
sensitive_content: Gevoelige inhoud sensitive_content: Gevoelige inhoud
strikes: strikes:
errors: errors:

@ -1609,7 +1609,6 @@ nn:
show_newer: Vis nyere show_newer: Vis nyere
show_older: Vis eldre show_older: Vis eldre
show_thread: Vis tråden show_thread: Vis tråden
sign_in_to_participate: Logg inn for å verta med i samtalen
title: "%{name}: «%{quote}»" title: "%{name}: «%{quote}»"
visibilities: visibilities:
direct: Direkte direct: Direkte
@ -1655,8 +1654,6 @@ nn:
min_reblogs: Behold innlegg fremhevet av minst min_reblogs: Behold innlegg fremhevet av minst
min_reblogs_hint: Sletter ikke noen av dine innlegg som har blitt fremhevet minst dette antall ganger. La stå tom for å slette innlegg uavhengig av antall fremhevinger min_reblogs_hint: Sletter ikke noen av dine innlegg som har blitt fremhevet minst dette antall ganger. La stå tom for å slette innlegg uavhengig av antall fremhevinger
stream_entries: stream_entries:
pinned: Festa tut
reblogged: framheva
sensitive_content: Ømtolig innhald sensitive_content: Ømtolig innhald
strikes: strikes:
errors: errors:

@ -1556,7 +1556,6 @@
show_newer: Vis nyere show_newer: Vis nyere
show_older: Vis eldre show_older: Vis eldre
show_thread: Vis tråden show_thread: Vis tråden
sign_in_to_participate: Logg på for å delta i samtalen
title: "%{name}: «%{quote}»" title: "%{name}: «%{quote}»"
visibilities: visibilities:
direct: Direkte direct: Direkte
@ -1602,8 +1601,6 @@
min_reblogs: Behold innlegg fremhevet av minst min_reblogs: Behold innlegg fremhevet av minst
min_reblogs_hint: Sletter ikke noen av dine innlegg som har blitt fremhevet minst dette antall ganger. La stå tom for å slette innlegg uavhengig av antall fremhevinger min_reblogs_hint: Sletter ikke noen av dine innlegg som har blitt fremhevet minst dette antall ganger. La stå tom for å slette innlegg uavhengig av antall fremhevinger
stream_entries: stream_entries:
pinned: Festet innlegg
reblogged: fremhevet
sensitive_content: Følsomt innhold sensitive_content: Følsomt innhold
strikes: strikes:
errors: errors:

@ -890,7 +890,6 @@ oc:
show_newer: Veire mai recents show_newer: Veire mai recents
show_older: Veire mai ancians show_older: Veire mai ancians
show_thread: Mostrar lo fil show_thread: Mostrar lo fil
sign_in_to_participate: Inscrivètz-vos per participar a la conversacion
title: '%{name}: "%{quote}"' title: '%{name}: "%{quote}"'
visibilities: visibilities:
direct: Dirècte direct: Dirècte
@ -933,8 +932,6 @@ oc:
min_reblogs: Gardar las publicacions partejadas al mens min_reblogs: Gardar las publicacions partejadas al mens
min_reblogs_hint: Suprimís pas vòstras publicacions quan agut aqueste nombre de partiment. Daissar blanc per suprimir las publicacions sens far cas als partiments min_reblogs_hint: Suprimís pas vòstras publicacions quan agut aqueste nombre de partiment. Daissar blanc per suprimir las publicacions sens far cas als partiments
stream_entries: stream_entries:
pinned: Tut penjat
reblogged: a partejat
sensitive_content: Contengut sensible sensitive_content: Contengut sensible
tags: tags:
does_not_match_previous_name: correspond pas al nom precedent does_not_match_previous_name: correspond pas al nom precedent

@ -1698,7 +1698,6 @@ pl:
show_newer: Pokaż nowsze show_newer: Pokaż nowsze
show_older: Pokaż starsze show_older: Pokaż starsze
show_thread: Pokaż wątek show_thread: Pokaż wątek
sign_in_to_participate: Zaloguj się, aby udzielić się w tej konwersacji
title: '%{name}: "%{quote}"' title: '%{name}: "%{quote}"'
visibilities: visibilities:
direct: Bezpośredni direct: Bezpośredni
@ -1744,8 +1743,6 @@ pl:
min_reblogs: Utrzymuj posty wzmocnione więcej niż min_reblogs: Utrzymuj posty wzmocnione więcej niż
min_reblogs_hint: Nie usuwa żadnego z Twoich wpisów, które zostały wzmocnione więcej niż tyle razy. Pozostaw puste, aby usunąć posty bez względu na ich liczbę wzmocnień min_reblogs_hint: Nie usuwa żadnego z Twoich wpisów, które zostały wzmocnione więcej niż tyle razy. Pozostaw puste, aby usunąć posty bez względu na ich liczbę wzmocnień
stream_entries: stream_entries:
pinned: Przypięty wpis
reblogged: podbił
sensitive_content: Wrażliwa zawartość sensitive_content: Wrażliwa zawartość
strikes: strikes:
errors: errors:

@ -1634,7 +1634,6 @@ pt-BR:
show_newer: Mostrar mais recentes show_newer: Mostrar mais recentes
show_older: Mostrar mais antigos show_older: Mostrar mais antigos
show_thread: Mostrar conversa show_thread: Mostrar conversa
sign_in_to_participate: Entre para participar dessa conversa
title: '%{name}: "%{quote}"' title: '%{name}: "%{quote}"'
visibilities: visibilities:
direct: Direto direct: Direto
@ -1680,8 +1679,6 @@ pt-BR:
min_reblogs: Manter publicações impulsionadas por ao menos min_reblogs: Manter publicações impulsionadas por ao menos
min_reblogs_hint: Não exclui publicações que receberam pelo menos esta quantidade de impulsos. Deixe em branco para excluir publicações independentemente da quantidade de impulsos min_reblogs_hint: Não exclui publicações que receberam pelo menos esta quantidade de impulsos. Deixe em branco para excluir publicações independentemente da quantidade de impulsos
stream_entries: stream_entries:
pinned: Toot fixado
reblogged: deu boost
sensitive_content: Conteúdo sensível sensitive_content: Conteúdo sensível
strikes: strikes:
errors: errors:

@ -1634,7 +1634,6 @@ pt-PT:
show_newer: Mostrar mais recentes show_newer: Mostrar mais recentes
show_older: Mostrar mais antigos show_older: Mostrar mais antigos
show_thread: Mostrar conversa show_thread: Mostrar conversa
sign_in_to_participate: Inicie a sessão para participar na conversa
title: '%{name}: "%{quote}"' title: '%{name}: "%{quote}"'
visibilities: visibilities:
direct: Direto direct: Direto
@ -1680,8 +1679,6 @@ pt-PT:
min_reblogs: Manter as publicações reforçadas mais de min_reblogs: Manter as publicações reforçadas mais de
min_reblogs_hint: Não apaga nenhuma das suas publicações que tenha sido partilhada mais do que este número de vezes. Deixe em branco para apagar as publicações, independentemente do número de partilhas min_reblogs_hint: Não apaga nenhuma das suas publicações que tenha sido partilhada mais do que este número de vezes. Deixe em branco para apagar as publicações, independentemente do número de partilhas
stream_entries: stream_entries:
pinned: Publicação afixada
reblogged: reforçada
sensitive_content: Conteúdo problemático sensitive_content: Conteúdo problemático
strikes: strikes:
errors: errors:

@ -679,7 +679,6 @@ ro:
vote: Votează vote: Votează
show_more: Arată mai mult show_more: Arată mai mult
show_thread: Arată discuția show_thread: Arată discuția
sign_in_to_participate: Conectează-te pentru a participa la conversație
visibilities: visibilities:
private: Doar urmăritorii private: Doar urmăritorii
private_long: Arată doar urmăritorilor private_long: Arată doar urmăritorilor
@ -687,8 +686,6 @@ ro:
unlisted: Nelistat unlisted: Nelistat
unlisted_long: Toată lumea poate vedea, dar nu este listată pe fluxurile publice unlisted_long: Toată lumea poate vedea, dar nu este listată pe fluxurile publice
stream_entries: stream_entries:
pinned: Postare fixată
reblogged: impulsionată
sensitive_content: Conținut sensibil sensitive_content: Conținut sensibil
tags: tags:
does_not_match_previous_name: nu se potrivește cu numele anterior does_not_match_previous_name: nu se potrivește cu numele anterior

@ -1674,7 +1674,6 @@ ru:
show_newer: Показать более новое show_newer: Показать более новое
show_older: Показать старые show_older: Показать старые
show_thread: Открыть обсуждение show_thread: Открыть обсуждение
sign_in_to_participate: Войдите, чтобы принять участие в дискуссии
title: '%{name}: "%{quote}"' title: '%{name}: "%{quote}"'
visibilities: visibilities:
direct: Адресованный direct: Адресованный
@ -1720,8 +1719,6 @@ ru:
min_reblogs: Порог продвижений min_reblogs: Порог продвижений
min_reblogs_hint: Не удаляет ваши посты, количество продвижений которых достигло указанного выше значения. Оставьте поле пустым, чтобы удалять посты независимо от количества продвижений. min_reblogs_hint: Не удаляет ваши посты, количество продвижений которых достигло указанного выше значения. Оставьте поле пустым, чтобы удалять посты независимо от количества продвижений.
stream_entries: stream_entries:
pinned: Закреплённый пост
reblogged: продвинул(а)
sensitive_content: Содержимое деликатного характера sensitive_content: Содержимое деликатного характера
strikes: strikes:
errors: errors:

@ -931,7 +931,6 @@ sc:
show_newer: Ammustra is prus noos show_newer: Ammustra is prus noos
show_older: Ammustra is prus betzos show_older: Ammustra is prus betzos
show_thread: Ammustra su tema show_thread: Ammustra su tema
sign_in_to_participate: Identìfica·ti pro partetzipare in s'arresonada
title: '%{name}: "%{quote}"' title: '%{name}: "%{quote}"'
visibilities: visibilities:
direct: Deretu direct: Deretu
@ -952,8 +951,6 @@ sc:
'63113904': 2 annos '63113904': 2 annos
'7889238': 3 meses '7889238': 3 meses
stream_entries: stream_entries:
pinned: Tut apicadu
reblogged: cumpartzidu
sensitive_content: Cuntenutu sensìbile sensitive_content: Cuntenutu sensìbile
tags: tags:
does_not_match_previous_name: non cointzidet cun su nòmine anteriore does_not_match_previous_name: non cointzidet cun su nòmine anteriore

@ -1472,7 +1472,6 @@ sco:
show_newer: Shaw newer show_newer: Shaw newer
show_older: Shaw aulder show_older: Shaw aulder
show_thread: Shaw threid show_thread: Shaw threid
sign_in_to_participate: Sign in fir tae tak pairt in the conversation
title: '%{name}: "%{quote}"' title: '%{name}: "%{quote}"'
visibilities: visibilities:
direct: Direck direct: Direck
@ -1517,8 +1516,6 @@ sco:
min_reblogs: Keep posts heezed at least min_reblogs: Keep posts heezed at least
min_reblogs_hint: Disnae delete onie o yer posts thit's been heezed at least this nummer o times. Lea blank fir tae delete posts regairdless o their number o heezes min_reblogs_hint: Disnae delete onie o yer posts thit's been heezed at least this nummer o times. Lea blank fir tae delete posts regairdless o their number o heezes
stream_entries: stream_entries:
pinned: Preent post
reblogged: heezed
sensitive_content: Sensitive content sensitive_content: Sensitive content
strikes: strikes:
errors: errors:

@ -1265,7 +1265,6 @@ si:
show_newer: අලුත්ම පෙන්වන්න show_newer: අලුත්ම පෙන්වන්න
show_older: පැරණි පෙන්වන්න show_older: පැරණි පෙන්වන්න
show_thread: නූල් පෙන්වන්න show_thread: නූල් පෙන්වන්න
sign_in_to_participate: සංවාදයට සහභාගී වීමට පුරන්න
title: '%{name}: "%{quote}"' title: '%{name}: "%{quote}"'
visibilities: visibilities:
direct: සෘජු direct: සෘජු
@ -1310,8 +1309,6 @@ si:
min_reblogs: අඩුම තරමේ පෝස්ට් බූස්ට් කරගෙන තියාගන්න min_reblogs: අඩුම තරමේ පෝස්ට් බූස්ට් කරගෙන තියාගන්න
min_reblogs_hint: අඩුම තරමින් මෙම වාර ගණන වැඩි කර ඇති ඔබගේ පළ කිරීම් කිසිවක් මකා නොදමන්න. බූස්ට් ගණන නොතකා පළ කිරීම් මැකීමට හිස්ව තබන්න min_reblogs_hint: අඩුම තරමින් මෙම වාර ගණන වැඩි කර ඇති ඔබගේ පළ කිරීම් කිසිවක් මකා නොදමන්න. බූස්ට් ගණන නොතකා පළ කිරීම් මැකීමට හිස්ව තබන්න
stream_entries: stream_entries:
pinned: ඇමිණූ ලිපිය
reblogged: ඉහල නැංවීය
sensitive_content: සංවේදී අන්තර්ගතයකි sensitive_content: සංවේදී අන්තර්ගතයකි
strikes: strikes:
errors: errors:

@ -1124,7 +1124,6 @@ sk:
vote: Hlasuj vote: Hlasuj
show_more: Ukáž viac show_more: Ukáž viac
show_thread: Ukáž diskusné vlákno show_thread: Ukáž diskusné vlákno
sign_in_to_participate: Prihlás sa pre zapojenie do diskusie
title: '%{name}: „%{quote}"' title: '%{name}: „%{quote}"'
visibilities: visibilities:
private: Iba pre sledovateľov private: Iba pre sledovateľov
@ -1138,8 +1137,6 @@ sk:
keep_pinned_hint: Nevymaže žiadne s tvojich pripnutých príspevkov keep_pinned_hint: Nevymaže žiadne s tvojich pripnutých príspevkov
keep_self_bookmark: Ponechaj príspevky, ktoré sú záložkami keep_self_bookmark: Ponechaj príspevky, ktoré sú záložkami
stream_entries: stream_entries:
pinned: Pripnutý príspevok
reblogged: vyzdvihli
sensitive_content: Senzitívny obsah sensitive_content: Senzitívny obsah
tags: tags:
does_not_match_previous_name: nezhoduje sa s predošlým názvom does_not_match_previous_name: nezhoduje sa s predošlým názvom

@ -1659,7 +1659,6 @@ sl:
show_newer: Pokaži novejše show_newer: Pokaži novejše
show_older: Pokaži starejše show_older: Pokaži starejše
show_thread: Pokaži nit show_thread: Pokaži nit
sign_in_to_participate: Prijavite se, če želite sodelovati v pogovoru
title: "%{name}: »%{quote}«" title: "%{name}: »%{quote}«"
visibilities: visibilities:
direct: Neposredno direct: Neposredno
@ -1705,8 +1704,6 @@ sl:
min_reblogs: Obdrži objave izpostavljene vsaj min_reblogs: Obdrži objave izpostavljene vsaj
min_reblogs_hint: Ne izbriše nobene od vaših objav, ki je bila vsaj tolikokrat podprta. Pustite prazno, če želite izbrisati objave ne glede na število izpostavitev min_reblogs_hint: Ne izbriše nobene od vaših objav, ki je bila vsaj tolikokrat podprta. Pustite prazno, če želite izbrisati objave ne glede na število izpostavitev
stream_entries: stream_entries:
pinned: Pripeta objava
reblogged: izpostavljeno
sensitive_content: Občutljiva vsebina sensitive_content: Občutljiva vsebina
strikes: strikes:
errors: errors:

@ -1634,7 +1634,6 @@ sq:
show_newer: Shfaq më të reja show_newer: Shfaq më të reja
show_older: Shfaq më të vjetra show_older: Shfaq më të vjetra
show_thread: Shfaq rrjedhën show_thread: Shfaq rrjedhën
sign_in_to_participate: Bëni hyrjen, që të merrni pjesë te biseda
title: '%{name}: "%{quote}"' title: '%{name}: "%{quote}"'
visibilities: visibilities:
direct: I drejtpërdrejtë direct: I drejtpërdrejtë
@ -1680,8 +1679,6 @@ sq:
min_reblogs: Mbaji postimet e përforcuara më shumë se min_reblogs: Mbaji postimet e përforcuara më shumë se
min_reblogs_hint: Nuk fshihet ndonjë nga postimet tuaja që kanë marrë më shumë se sa ky numër përforcimesh. Lëreni të zbrazët për të fshirë postimet, pavarësisht të numrit të përforcimeve për to min_reblogs_hint: Nuk fshihet ndonjë nga postimet tuaja që kanë marrë më shumë se sa ky numër përforcimesh. Lëreni të zbrazët për të fshirë postimet, pavarësisht të numrit të përforcimeve për to
stream_entries: stream_entries:
pinned: Mesazh i fiksuar
reblogged: të përforcuara
sensitive_content: Lëndë rezervat sensitive_content: Lëndë rezervat
strikes: strikes:
errors: errors:

@ -1666,7 +1666,6 @@ sr-Latn:
show_newer: Nikad ne prikazuj show_newer: Nikad ne prikazuj
show_older: Prikaži starije show_older: Prikaži starije
show_thread: Prikaži niz show_thread: Prikaži niz
sign_in_to_participate: Prijavite se da učestvujete u razgovoru
title: "%{name}: „%{quote}”" title: "%{name}: „%{quote}”"
visibilities: visibilities:
direct: Direktno direct: Direktno
@ -1712,8 +1711,6 @@ sr-Latn:
min_reblogs: Zadrži objave podržane barem min_reblogs: Zadrži objave podržane barem
min_reblogs_hint: Ne briše nijednu vašu objavu koja je bila podržana najmanje ovoliko puta. Ostavite prazno za brisanje objava bez obzira na njihov broj podržavanja min_reblogs_hint: Ne briše nijednu vašu objavu koja je bila podržana najmanje ovoliko puta. Ostavite prazno za brisanje objava bez obzira na njihov broj podržavanja
stream_entries: stream_entries:
pinned: Zakačena objava
reblogged: podržano
sensitive_content: Osetljiv sadržaj sensitive_content: Osetljiv sadržaj
strikes: strikes:
errors: errors:

@ -1666,7 +1666,6 @@ sr:
show_newer: Никад не приказуј show_newer: Никад не приказуј
show_older: Прикажи старије show_older: Прикажи старије
show_thread: Прикажи низ show_thread: Прикажи низ
sign_in_to_participate: Пријавите се да учествујете у разговору
title: "%{name}: „%{quote}”" title: "%{name}: „%{quote}”"
visibilities: visibilities:
direct: Директно direct: Директно
@ -1712,8 +1711,6 @@ sr:
min_reblogs: Задржи објаве подржане барем min_reblogs: Задржи објаве подржане барем
min_reblogs_hint: Не брише ниједну вашу објаву која је била подржана најмање оволико пута. Оставите празно за брисање објава без обзира на њихов број подржавања min_reblogs_hint: Не брише ниједну вашу објаву која је била подржана најмање оволико пута. Оставите празно за брисање објава без обзира на њихов број подржавања
stream_entries: stream_entries:
pinned: Закачена објава
reblogged: подржано
sensitive_content: Осетљив садржај sensitive_content: Осетљив садржај
strikes: strikes:
errors: errors:

@ -1570,7 +1570,6 @@ sv:
show_newer: Visa nyare show_newer: Visa nyare
show_older: Visa äldre show_older: Visa äldre
show_thread: Visa tråd show_thread: Visa tråd
sign_in_to_participate: Logga in för att delta i konversationen
title: '%{name}: "%{quote}"' title: '%{name}: "%{quote}"'
visibilities: visibilities:
direct: Direkt direct: Direkt
@ -1616,8 +1615,6 @@ sv:
min_reblogs: Behåll boostade inlägg i minst min_reblogs: Behåll boostade inlägg i minst
min_reblogs_hint: Raderar inte något av dina inlägg som har blivit boostat minst detta antal gånger. Lämna tomt för att radera inlägg oavsett antal boostar min_reblogs_hint: Raderar inte något av dina inlägg som har blivit boostat minst detta antal gånger. Lämna tomt för att radera inlägg oavsett antal boostar
stream_entries: stream_entries:
pinned: Fäst inlägg
reblogged: boostad
sensitive_content: Känsligt innehåll sensitive_content: Känsligt innehåll
strikes: strikes:
errors: errors:

@ -1602,7 +1602,6 @@ th:
show_newer: แสดงที่ใหม่กว่า show_newer: แสดงที่ใหม่กว่า
show_older: แสดงที่เก่ากว่า show_older: แสดงที่เก่ากว่า
show_thread: แสดงกระทู้ show_thread: แสดงกระทู้
sign_in_to_participate: เข้าสู่ระบบเพื่อเข้าร่วมการสนทนา
title: '%{name}: "%{quote}"' title: '%{name}: "%{quote}"'
visibilities: visibilities:
direct: โดยตรง direct: โดยตรง
@ -1648,8 +1647,6 @@ th:
min_reblogs: เก็บโพสต์ที่ได้รับการดันอย่างน้อย min_reblogs: เก็บโพสต์ที่ได้รับการดันอย่างน้อย
min_reblogs_hint: ไม่ลบโพสต์ใดก็ตามของคุณที่ได้รับจำนวนครั้งการดันอย่างน้อยเท่านี้ เว้นว่างไว้เพื่อลบโพสต์โดยไม่คำนึงถึงจำนวนการดันของโพสต์ min_reblogs_hint: ไม่ลบโพสต์ใดก็ตามของคุณที่ได้รับจำนวนครั้งการดันอย่างน้อยเท่านี้ เว้นว่างไว้เพื่อลบโพสต์โดยไม่คำนึงถึงจำนวนการดันของโพสต์
stream_entries: stream_entries:
pinned: โพสต์ที่ปักหมุด
reblogged: ดันแล้ว
sensitive_content: เนื้อหาที่ละเอียดอ่อน sensitive_content: เนื้อหาที่ละเอียดอ่อน
strikes: strikes:
errors: errors:

@ -1634,7 +1634,6 @@ tr:
show_newer: Yenileri göster show_newer: Yenileri göster
show_older: Eskileri göster show_older: Eskileri göster
show_thread: Konuyu göster show_thread: Konuyu göster
sign_in_to_participate: Sohbete katılmak için oturum açın
title: '%{name}: "%{quote}"' title: '%{name}: "%{quote}"'
visibilities: visibilities:
direct: Doğrudan direct: Doğrudan
@ -1680,8 +1679,6 @@ tr:
min_reblogs: Şundan daha fazla teşvik edilen gönderileri sakla min_reblogs: Şundan daha fazla teşvik edilen gönderileri sakla
min_reblogs_hint: Bu belirtilenden daha fazla teşvik edilen gönderilerinizin herhangi birini silmez. Teşvik sayısından bağımsız olarak gönderilerin silinmesi için burayı boş bırakın min_reblogs_hint: Bu belirtilenden daha fazla teşvik edilen gönderilerinizin herhangi birini silmez. Teşvik sayısından bağımsız olarak gönderilerin silinmesi için burayı boş bırakın
stream_entries: stream_entries:
pinned: Sabitlenmiş gönderi
reblogged: boostladı
sensitive_content: Hassas içerik sensitive_content: Hassas içerik
strikes: strikes:
errors: errors:

@ -1698,7 +1698,6 @@ uk:
show_newer: Показати новіші show_newer: Показати новіші
show_older: Показати давніші show_older: Показати давніші
show_thread: Відкрити обговорення show_thread: Відкрити обговорення
sign_in_to_participate: Увійдіть для участі в бесіді
title: '%{name}: "%{quote}"' title: '%{name}: "%{quote}"'
visibilities: visibilities:
direct: Особисто direct: Особисто
@ -1744,8 +1743,6 @@ uk:
min_reblogs: Залишати дописи, поширені більше ніж min_reblogs: Залишати дописи, поширені більше ніж
min_reblogs_hint: Не видаляти ваших дописів, що були поширені більш ніж вказану кількість разів. Залиште порожнім, щоб видаляти дописи, попри кількість їхніх поширень min_reblogs_hint: Не видаляти ваших дописів, що були поширені більш ніж вказану кількість разів. Залиште порожнім, щоб видаляти дописи, попри кількість їхніх поширень
stream_entries: stream_entries:
pinned: Закріплений допис
reblogged: поширив
sensitive_content: Дражливий зміст sensitive_content: Дражливий зміст
strikes: strikes:
errors: errors:

@ -1602,7 +1602,6 @@ vi:
show_newer: Mới hơn show_newer: Mới hơn
show_older: Cũ hơn show_older: Cũ hơn
show_thread: Trích nguyên văn show_thread: Trích nguyên văn
sign_in_to_participate: Đăng nhập để trả lời tút này
title: '%{name}: "%{quote}"' title: '%{name}: "%{quote}"'
visibilities: visibilities:
direct: Nhắn riêng direct: Nhắn riêng
@ -1648,8 +1647,6 @@ vi:
min_reblogs: Giữ những tút đã đăng lại lâu hơn min_reblogs: Giữ những tút đã đăng lại lâu hơn
min_reblogs_hint: Những tút có lượt đăng lại nhiều hơn số này sẽ không bị xóa. Để trống nếu bạn muốn xóa hết min_reblogs_hint: Những tút có lượt đăng lại nhiều hơn số này sẽ không bị xóa. Để trống nếu bạn muốn xóa hết
stream_entries: stream_entries:
pinned: Tút đã ghim
reblogged: đăng lại
sensitive_content: NSFW sensitive_content: NSFW
strikes: strikes:
errors: errors:

@ -1602,7 +1602,6 @@ zh-CN:
show_newer: 显示更新内容 show_newer: 显示更新内容
show_older: 显示更早内容 show_older: 显示更早内容
show_thread: 显示全部对话 show_thread: 显示全部对话
sign_in_to_participate: 登录以加入对话
title: "%{name}:“%{quote}”" title: "%{name}:“%{quote}”"
visibilities: visibilities:
direct: 私信 direct: 私信
@ -1648,8 +1647,6 @@ zh-CN:
min_reblogs: 保留如下嘟文:转嘟数超过 min_reblogs: 保留如下嘟文:转嘟数超过
min_reblogs_hint: 转嘟数超过该阈值的的嘟文不会被删除。如果留空,则无论嘟文获得多少转嘟,都将被删除。 min_reblogs_hint: 转嘟数超过该阈值的的嘟文不会被删除。如果留空,则无论嘟文获得多少转嘟,都将被删除。
stream_entries: stream_entries:
pinned: 置顶嘟文
reblogged: 转嘟
sensitive_content: 敏感内容 sensitive_content: 敏感内容
strikes: strikes:
errors: errors:

@ -1507,7 +1507,6 @@ zh-HK:
show_newer: 顯示較新嘟文 show_newer: 顯示較新嘟文
show_older: 顯示較舊嘟文 show_older: 顯示較舊嘟文
show_thread: 顯示討論串 show_thread: 顯示討論串
sign_in_to_participate: 登入以加入討論
title: "%{name}:「%{quote}」" title: "%{name}:「%{quote}」"
visibilities: visibilities:
direct: 私人訊息 direct: 私人訊息
@ -1553,8 +1552,6 @@ zh-HK:
min_reblogs: 保留超過嘟文轉嘟門檻 min_reblogs: 保留超過嘟文轉嘟門檻
min_reblogs_hint: 如果您嘟文已收到超過轉嘟門檻則不會刪除。留白表示不論轉嘟數量皆刪除嘟文。 min_reblogs_hint: 如果您嘟文已收到超過轉嘟門檻則不會刪除。留白表示不論轉嘟數量皆刪除嘟文。
stream_entries: stream_entries:
pinned: 置頂文章
reblogged: 轉推
sensitive_content: 敏感內容 sensitive_content: 敏感內容
strikes: strikes:
errors: errors:

@ -1606,7 +1606,6 @@ zh-TW:
show_newer: 顯示較新嘟文 show_newer: 顯示較新嘟文
show_older: 顯示較舊嘟文 show_older: 顯示較舊嘟文
show_thread: 顯示討論串 show_thread: 顯示討論串
sign_in_to_participate: 登入以加入討論
title: "%{name}:「%{quote}」" title: "%{name}:「%{quote}」"
visibilities: visibilities:
direct: 私訊 direct: 私訊
@ -1652,8 +1651,6 @@ zh-TW:
min_reblogs: 保留超過嘟文轉嘟門檻 min_reblogs: 保留超過嘟文轉嘟門檻
min_reblogs_hint: 如果您嘟文已收到超過轉嘟門檻則不會刪除。留白表示不論轉嘟數量皆刪除該嘟文。 min_reblogs_hint: 如果您嘟文已收到超過轉嘟門檻則不會刪除。留白表示不論轉嘟數量皆刪除該嘟文。
stream_entries: stream_entries:
pinned: 釘選嘟文
reblogged: 轉嘟
sensitive_content: 敏感內容 sensitive_content: 敏感內容
strikes: strikes:
errors: errors:

@ -10,6 +10,12 @@ describe Api::V1::Statuses::ReblogsController do
let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: 'write:statuses', application: app) } let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: 'write:statuses', application: app) }
context 'with an oauth token' do context 'with an oauth token' do
around do |example|
Sidekiq::Testing.fake! do
example.run
end
end
before do before do
allow(controller).to receive(:doorkeeper_token) { token } allow(controller).to receive(:doorkeeper_token) { token }
end end

@ -13,5 +13,6 @@ Fabricator(:account) do
suspended_at { |attrs| attrs[:suspended] ? Time.now.utc : nil } suspended_at { |attrs| attrs[:suspended] ? Time.now.utc : nil }
silenced_at { |attrs| attrs[:silenced] ? Time.now.utc : nil } silenced_at { |attrs| attrs[:silenced] ? Time.now.utc : nil }
user { |attrs| attrs[:domain].nil? ? Fabricate.build(:user, account: nil) : nil } user { |attrs| attrs[:domain].nil? ? Fabricate.build(:user, account: nil) : nil }
uri { |attrs| attrs[:domain].nil? ? '' : "https://#{attrs[:domain]}/users/#{attrs[:username]}" }
discoverable true discoverable true
end end

@ -114,129 +114,4 @@ describe StatusesHelper do
params[:controller] = StatusesHelper::EMBEDDED_CONTROLLER params[:controller] = StatusesHelper::EMBEDDED_CONTROLLER
params[:action] = StatusesHelper::EMBEDDED_ACTION params[:action] = StatusesHelper::EMBEDDED_ACTION
end end
describe '#style_classes' do
it do
status = instance_double(Status, reblog?: false)
classes = helper.style_classes(status, false, false, false)
expect(classes).to eq 'entry'
end
it do
status = instance_double(Status, reblog?: true)
classes = helper.style_classes(status, false, false, false)
expect(classes).to eq 'entry entry-reblog'
end
it do
status = instance_double(Status, reblog?: false)
classes = helper.style_classes(status, true, false, false)
expect(classes).to eq 'entry entry-predecessor'
end
it do
status = instance_double(Status, reblog?: false)
classes = helper.style_classes(status, false, true, false)
expect(classes).to eq 'entry entry-successor'
end
it do
status = instance_double(Status, reblog?: false)
classes = helper.style_classes(status, false, false, true)
expect(classes).to eq 'entry entry-center'
end
it do
status = instance_double(Status, reblog?: true)
classes = helper.style_classes(status, true, true, true)
expect(classes).to eq 'entry entry-predecessor entry-reblog entry-successor entry-center'
end
end
describe '#microformats_classes' do
it do
status = instance_double(Status, reblog?: false)
classes = helper.microformats_classes(status, false, false)
expect(classes).to eq ''
end
it do
status = instance_double(Status, reblog?: false)
classes = helper.microformats_classes(status, true, false)
expect(classes).to eq 'p-in-reply-to'
end
it do
status = instance_double(Status, reblog?: false)
classes = helper.microformats_classes(status, false, true)
expect(classes).to eq 'p-comment'
end
it do
status = instance_double(Status, reblog?: true)
classes = helper.microformats_classes(status, true, false)
expect(classes).to eq 'p-in-reply-to p-repost-of'
end
it do
status = instance_double(Status, reblog?: true)
classes = helper.microformats_classes(status, true, true)
expect(classes).to eq 'p-in-reply-to p-repost-of p-comment'
end
end
describe '#microformats_h_class' do
it do
status = instance_double(Status, reblog?: false)
css_class = helper.microformats_h_class(status, false, false, false)
expect(css_class).to eq 'h-entry'
end
it do
status = instance_double(Status, reblog?: true)
css_class = helper.microformats_h_class(status, false, false, false)
expect(css_class).to eq 'h-cite'
end
it do
status = instance_double(Status, reblog?: false)
css_class = helper.microformats_h_class(status, true, false, false)
expect(css_class).to eq 'h-cite'
end
it do
status = instance_double(Status, reblog?: false)
css_class = helper.microformats_h_class(status, false, true, false)
expect(css_class).to eq 'h-cite'
end
it do
status = instance_double(Status, reblog?: false)
css_class = helper.microformats_h_class(status, false, false, true)
expect(css_class).to eq ''
end
it do
status = instance_double(Status, reblog?: true)
css_class = helper.microformats_h_class(status, true, true, true)
expect(css_class).to eq 'h-cite'
end
end
end end

@ -5,15 +5,15 @@ require 'rails_helper'
RSpec.describe AccountReachFinder do RSpec.describe AccountReachFinder do
let(:account) { Fabricate(:account) } let(:account) { Fabricate(:account) }
let(:ap_follower_example_com) { Fabricate(:account, protocol: :activitypub, inbox_url: 'https://example.com/inbox-1') } let(:ap_follower_example_com) { Fabricate(:account, protocol: :activitypub, inbox_url: 'https://example.com/inbox-1', domain: 'example.com') }
let(:ap_follower_example_org) { Fabricate(:account, protocol: :activitypub, inbox_url: 'https://example.org/inbox-2') } let(:ap_follower_example_org) { Fabricate(:account, protocol: :activitypub, inbox_url: 'https://example.org/inbox-2', domain: 'example.org') }
let(:ap_follower_with_shared) { Fabricate(:account, protocol: :activitypub, inbox_url: 'https://foo.bar/users/a/inbox', shared_inbox_url: 'https://foo.bar/inbox') } let(:ap_follower_with_shared) { Fabricate(:account, protocol: :activitypub, inbox_url: 'https://foo.bar/users/a/inbox', domain: 'foo.bar', shared_inbox_url: 'https://foo.bar/inbox') }
let(:ap_mentioned_with_shared) { Fabricate(:account, protocol: :activitypub, inbox_url: 'https://foo.bar/users/b/inbox', shared_inbox_url: 'https://foo.bar/inbox') } let(:ap_mentioned_with_shared) { Fabricate(:account, protocol: :activitypub, inbox_url: 'https://foo.bar/users/b/inbox', domain: 'foo.bar', shared_inbox_url: 'https://foo.bar/inbox') }
let(:ap_mentioned_example_com) { Fabricate(:account, protocol: :activitypub, inbox_url: 'https://example.com/inbox-3') } let(:ap_mentioned_example_com) { Fabricate(:account, protocol: :activitypub, inbox_url: 'https://example.com/inbox-3', domain: 'example.com') }
let(:ap_mentioned_example_org) { Fabricate(:account, protocol: :activitypub, inbox_url: 'https://example.org/inbox-4') } let(:ap_mentioned_example_org) { Fabricate(:account, protocol: :activitypub, inbox_url: 'https://example.org/inbox-4', domain: 'example.org') }
let(:unrelated_account) { Fabricate(:account, protocol: :activitypub, inbox_url: 'https://example.com/unrelated-inbox') } let(:unrelated_account) { Fabricate(:account, protocol: :activitypub, inbox_url: 'https://example.com/unrelated-inbox', domain: 'example.com') }
before do before do
ap_follower_example_com.follow!(account) ap_follower_example_com.follow!(account)

@ -5,7 +5,7 @@ require 'rails_helper'
RSpec.describe ActivityPub::Activity::Announce do RSpec.describe ActivityPub::Activity::Announce do
subject { described_class.new(json, sender) } subject { described_class.new(json, sender) }
let(:sender) { Fabricate(:account, followers_url: 'http://example.com/followers', uri: 'https://example.com/actor') } let(:sender) { Fabricate(:account, followers_url: 'http://example.com/followers', uri: 'https://example.com/actor', domain: 'example.com') }
let(:recipient) { Fabricate(:account) } let(:recipient) { Fabricate(:account) }
let(:status) { Fabricate(:status, account: recipient) } let(:status) { Fabricate(:status, account: recipient) }
@ -114,7 +114,7 @@ RSpec.describe ActivityPub::Activity::Announce do
context 'when the sender is relayed' do context 'when the sender is relayed' do
subject { described_class.new(json, sender, relayed_through_actor: relay_account) } subject { described_class.new(json, sender, relayed_through_actor: relay_account) }
let!(:relay_account) { Fabricate(:account, inbox_url: 'https://relay.example.com/inbox') } let!(:relay_account) { Fabricate(:account, inbox_url: 'https://relay.example.com/inbox', domain: 'relay.example.com') }
let!(:relay) { Fabricate(:relay, inbox_url: 'https://relay.example.com/inbox') } let!(:relay) { Fabricate(:relay, inbox_url: 'https://relay.example.com/inbox') }
let(:object_json) { 'https://example.com/actor/hello-world' } let(:object_json) { 'https://example.com/actor/hello-world' }

@ -5,22 +5,38 @@ require 'rails_helper'
RSpec.describe ActivityPub::Activity::Update do RSpec.describe ActivityPub::Activity::Update do
subject { described_class.new(json, sender) } subject { described_class.new(json, sender) }
let!(:sender) { Fabricate(:account) } let!(:sender) { Fabricate(:account, domain: 'example.com', inbox_url: 'https://example.com/foo/inbox', outbox_url: 'https://example.com/foo/outbox') }
before do
sender.update!(uri: ActivityPub::TagManager.instance.uri_for(sender))
end
describe '#perform' do describe '#perform' do
context 'with an Actor object' do context 'with an Actor object' do
let(:modified_sender) do
sender.tap do |modified_sender|
modified_sender.display_name = 'Totally modified now'
end
end
let(:actor_json) do let(:actor_json) do
ActiveModelSerializers::SerializableResource.new(modified_sender, serializer: ActivityPub::ActorSerializer, adapter: ActivityPub::Adapter).as_json {
'@context': [
'https://www.w3.org/ns/activitystreams',
'https://w3id.org/security/v1',
{
manuallyApprovesFollowers: 'as:manuallyApprovesFollowers',
toot: 'http://joinmastodon.org/ns#',
featured: { '@id': 'toot:featured', '@type': '@id' },
featuredTags: { '@id': 'toot:featuredTags', '@type': '@id' },
},
],
id: sender.uri,
type: 'Person',
following: 'https://example.com/users/dfsdf/following',
followers: 'https://example.com/users/dfsdf/followers',
inbox: sender.inbox_url,
outbox: sender.outbox_url,
featured: 'https://example.com/users/dfsdf/featured',
featuredTags: 'https://example.com/users/dfsdf/tags',
preferredUsername: sender.username,
name: 'Totally modified now',
publicKey: {
id: "#{sender.uri}#main-key",
owner: sender.uri,
publicKeyPem: sender.public_key,
},
}
end end
let(:json) do let(:json) do
@ -28,7 +44,7 @@ RSpec.describe ActivityPub::Activity::Update do
'@context': 'https://www.w3.org/ns/activitystreams', '@context': 'https://www.w3.org/ns/activitystreams',
id: 'foo', id: 'foo',
type: 'Update', type: 'Update',
actor: ActivityPub::TagManager.instance.uri_for(sender), actor: sender.uri,
object: actor_json, object: actor_json,
}.with_indifferent_access }.with_indifferent_access
end end
@ -38,6 +54,7 @@ RSpec.describe ActivityPub::Activity::Update do
stub_request(:get, actor_json[:followers]).to_return(status: 404) stub_request(:get, actor_json[:followers]).to_return(status: 404)
stub_request(:get, actor_json[:following]).to_return(status: 404) stub_request(:get, actor_json[:following]).to_return(status: 404)
stub_request(:get, actor_json[:featured]).to_return(status: 404) stub_request(:get, actor_json[:featured]).to_return(status: 404)
stub_request(:get, actor_json[:featuredTags]).to_return(status: 404)
subject.perform subject.perform
end end
@ -49,17 +66,17 @@ RSpec.describe ActivityPub::Activity::Update do
context 'with a Question object' do context 'with a Question object' do
let!(:at_time) { Time.now.utc } let!(:at_time) { Time.now.utc }
let!(:status) { Fabricate(:status, account: sender, poll: Poll.new(account: sender, options: %w(Bar Baz), cached_tallies: [0, 0], expires_at: at_time + 5.days)) } let!(:status) { Fabricate(:status, uri: 'https://example.com/statuses/poll', account: sender, poll: Poll.new(account: sender, options: %w(Bar Baz), cached_tallies: [0, 0], expires_at: at_time + 5.days)) }
let(:json) do let(:json) do
{ {
'@context': 'https://www.w3.org/ns/activitystreams', '@context': 'https://www.w3.org/ns/activitystreams',
id: 'foo', id: 'foo',
type: 'Update', type: 'Update',
actor: ActivityPub::TagManager.instance.uri_for(sender), actor: sender.uri,
object: { object: {
type: 'Question', type: 'Question',
id: ActivityPub::TagManager.instance.uri_for(status), id: status.uri,
content: 'Foo', content: 'Foo',
endTime: (at_time + 5.days).iso8601, endTime: (at_time + 5.days).iso8601,
oneOf: [ oneOf: [

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save