From e55dce3176b7ac0a23a8a652c2626707a1b74dbb Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 13 Jul 2018 02:16:06 +0200 Subject: Add federation relay support (#7998) * Add federation relay support * Add admin UI for managing relays * Include actor on relay-related activities * Fix i18n --- spec/fabricators/relay_fabricator.rb | 4 ++++ spec/models/relay_spec.rb | 4 ++++ 2 files changed, 8 insertions(+) create mode 100644 spec/fabricators/relay_fabricator.rb create mode 100644 spec/models/relay_spec.rb (limited to 'spec') diff --git a/spec/fabricators/relay_fabricator.rb b/spec/fabricators/relay_fabricator.rb new file mode 100644 index 000000000..2c9df4ad3 --- /dev/null +++ b/spec/fabricators/relay_fabricator.rb @@ -0,0 +1,4 @@ +Fabricator(:relay) do + inbox_url "https://example.com/inbox" + enabled true +end diff --git a/spec/models/relay_spec.rb b/spec/models/relay_spec.rb new file mode 100644 index 000000000..12dc0f20f --- /dev/null +++ b/spec/models/relay_spec.rb @@ -0,0 +1,4 @@ +require 'rails_helper' + +RSpec.describe Relay, type: :model do +end -- cgit From 38e9662d78784d8286917f0d0e47d76d0df916df Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sat, 14 Jul 2018 04:05:36 +0200 Subject: Disable language detection for texts shorter than 140 characters (#8010) If the input text is blank after preparation (only mention, or only URL, or empty as in a media post), then use nil as language, since it's OK to show to everyone. Otherwise, always fall back to the server's default locale --- app/lib/language_detector.rb | 15 ++++++++++++--- spec/lib/language_detector_spec.rb | 4 ++-- 2 files changed, 14 insertions(+), 5 deletions(-) (limited to 'spec') diff --git a/app/lib/language_detector.rb b/app/lib/language_detector.rb index c6f52f0c7..688d21fd8 100644 --- a/app/lib/language_detector.rb +++ b/app/lib/language_detector.rb @@ -3,12 +3,16 @@ class LanguageDetector include Singleton + CHARACTER_THRESHOLD = 140 + def initialize @identifier = CLD3::NNetLanguageIdentifier.new(1, 2048) end def detect(text, account) - detect_language_code(text) || default_locale(account) + input_text = prepare_text(text) + return if input_text.blank? + detect_language_code(input_text) || default_locale(account) end def language_names @@ -23,8 +27,13 @@ class LanguageDetector simplify_text(text).strip end + def unreliable_input?(text) + text.size < CHARACTER_THRESHOLD + end + def detect_language_code(text) - result = @identifier.find_language(prepare_text(text)) + return if unreliable_input?(text) + result = @identifier.find_language(text) iso6391(result.language.to_s).to_sym if result.reliable? end @@ -66,6 +75,6 @@ class LanguageDetector end def default_locale(account) - account.user_locale&.to_sym + account.user_locale&.to_sym || I18n.default_locale end end diff --git a/spec/lib/language_detector_spec.rb b/spec/lib/language_detector_spec.rb index d17026511..d00d2a0e6 100644 --- a/spec/lib/language_detector_spec.rb +++ b/spec/lib/language_detector_spec.rb @@ -57,7 +57,7 @@ describe LanguageDetector do end it 'detects spanish language' do - string = 'Obtener un Hola y bienvenidos a Mastodon' + string = 'Obtener un Hola y bienvenidos a Mastodon. Obtener un Hola y bienvenidos a Mastodon. Obtener un Hola y bienvenidos a Mastodon. Obtener un Hola y bienvenidos a Mastodon' result = described_class.instance.detect(string, account_without_user_locale) expect(result).to eq :es @@ -86,7 +86,7 @@ describe LanguageDetector do account = double(user_locale: 'fr') result = described_class.instance.detect('', account) - expect(result).to eq :fr + expect(result).to eq nil end it 'uses nil when account is present but has no locale' do -- cgit From 2a176514be23398f7e784270ee5a23f814b0fa99 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sat, 14 Jul 2018 04:07:47 +0200 Subject: Display full acct on public status pages, always (#8011) --- app/helpers/stream_entries_helper.rb | 2 +- spec/helpers/stream_entries_helper_spec.rb | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) (limited to 'spec') diff --git a/app/helpers/stream_entries_helper.rb b/app/helpers/stream_entries_helper.rb index a91a28935..05cea73d7 100644 --- a/app/helpers/stream_entries_helper.rb +++ b/app/helpers/stream_entries_helper.rb @@ -67,7 +67,7 @@ module StreamEntriesHelper end def acct(account) - if embedded_view? && account.local? + if account.local? "@#{account.acct}@#{Rails.configuration.x.local_domain}" else "@#{account.acct}" diff --git a/spec/helpers/stream_entries_helper_spec.rb b/spec/helpers/stream_entries_helper_spec.rb index 1de6691ba..845b9974e 100644 --- a/spec/helpers/stream_entries_helper_spec.rb +++ b/spec/helpers/stream_entries_helper_spec.rb @@ -58,13 +58,14 @@ RSpec.describe StreamEntriesHelper, type: :helper do expect(acct).to eq '@user@foreign_server.com' end - it 'is the shortname for non embedded local accounts' do + it 'is fully qualified for non embedded local accounts' do + allow(Rails.configuration.x).to receive(:local_domain).and_return('local_domain') set_not_embedded_view account = Account.new(domain: nil, username: 'user') acct = helper.acct(account) - expect(acct).to eq '@user' + expect(acct).to eq '@user@local_domain' end end -- cgit