diff options
author | Eugen Rochko <eugen@zeonfederated.com> | 2019-12-30 19:20:43 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-12-30 19:20:43 +0100 |
commit | f86ee4b59f25727d248609e0afe277a4f69f6be7 (patch) | |
tree | 8bc4518d8ec59d2f23f10a5c5a67709bee2de610 /app/services | |
parent | b2f81060b75e5128279cd3f85f55de0982e8f35b (diff) |
Fix IDN mentions not being processed, IDN domains not being rendered (#12715)
This changes the REST API to return unicode domains in the `acct` attribute instead of punycode, and to render unicode instead of punycode on public HTML pages as well. Fix #7812, fix #12246
Diffstat (limited to 'app/services')
-rw-r--r-- | app/services/process_mentions_service.rb | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/app/services/process_mentions_service.rb b/app/services/process_mentions_service.rb index 2f7a9e985..b2d868165 100644 --- a/app/services/process_mentions_service.rb +++ b/app/services/process_mentions_service.rb @@ -14,7 +14,16 @@ class ProcessMentionsService < BaseService mentions = [] status.text = status.text.gsub(Account::MENTION_RE) do |match| - username, domain = Regexp.last_match(1).split('@') + username, domain = Regexp.last_match(1).split('@') + + domain = begin + if TagManager.instance.local_domain?(domain) + nil + else + TagManager.instance.normalize_domain(domain) + end + end + mentioned_account = Account.find_remote(username, domain) if mention_undeliverable?(mentioned_account) |