0
0
Fork 0

Custom emoji (#4988)

* Custom emoji

- In OStatus: `<link rel="emoji" name="coolcat" href="http://..." />`
- In ActivityPub: `{ type: "Emoji", name: ":coolcat:", href: "http://..." }`
- In REST API: Status object includes `emojis` array (`shortcode`, `url`)
- Domain blocks with reject media stop emojis
- Emoji file up to 50KB
- Web UI handles custom emojis
- Static pages render custom emojis as `<img />` tags

Side effects:

- Undo #4500 optimization, as I needed to modify it to restore
  shortcode handling in emojify()
- Formatter#plaintext should now make sure stripped out line-breaks
  and paragraphs are replaced with newlines

* Fix emoji at the start not being converted
This commit is contained in:
Eugen Rochko 2017-09-19 02:42:40 +02:00 committed by GitHub
parent c155d843f4
commit 81cec35dbf
20 changed files with 382 additions and 31 deletions

View file

@ -97,11 +97,23 @@ RSpec.describe OStatus::AtomSerializer do
mentioned = element.nodes.find do |node|
node.name == 'link' &&
node[:rel] == 'mentioned' &&
node['ostatus:object-type'] == TagManager::TYPES[:person]
node[:rel] == 'mentioned' &&
node['ostatus:object-type'] == TagManager::TYPES[:person]
end
expect(mentioned[:href]).to eq 'https://cb6e6126.ngrok.io/users/username'
end
it 'appends link elements for emojis' do
Fabricate(:custom_emoji)
status = Fabricate(:status, text: ':coolcat:')
element = serialize(status)
emoji = element.nodes.find { |node| node.name == 'link' && node[:rel] == 'emoji' }
expect(emoji[:name]).to eq 'coolcat'
expect(emoji[:href]).to_not be_blank
end
end
describe 'render' do