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:
		@@ -17,6 +17,7 @@ RSpec.describe ActivityPub::Activity::Create do
 | 
			
		||||
 | 
			
		||||
  before do
 | 
			
		||||
    stub_request(:get, 'http://example.com/attachment.png').to_return(request_fixture('avatar.txt'))
 | 
			
		||||
    stub_request(:get, 'http://example.com/emoji.png').to_return(body: attachment_fixture('emojo.png'))
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  describe '#perform' do
 | 
			
		||||
@@ -217,5 +218,29 @@ RSpec.describe ActivityPub::Activity::Create do
 | 
			
		||||
        expect(status.tags.map(&:name)).to include('test')
 | 
			
		||||
      end
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    context 'with emojis' do
 | 
			
		||||
      let(:object_json) do
 | 
			
		||||
        {
 | 
			
		||||
          id: 'bar',
 | 
			
		||||
          type: 'Note',
 | 
			
		||||
          content: 'Lorem ipsum :tinking:',
 | 
			
		||||
          tag: [
 | 
			
		||||
            {
 | 
			
		||||
              type: 'Emoji',
 | 
			
		||||
              href: 'http://example.com/emoji.png',
 | 
			
		||||
              name: 'tinking',
 | 
			
		||||
            },
 | 
			
		||||
          ],
 | 
			
		||||
        }
 | 
			
		||||
      end
 | 
			
		||||
 | 
			
		||||
      it 'creates status' do
 | 
			
		||||
        status = sender.statuses.first
 | 
			
		||||
 | 
			
		||||
        expect(status).to_not be_nil
 | 
			
		||||
        expect(status.emojis.map(&:shortcode)).to include('tinking')
 | 
			
		||||
      end
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user