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:
parent
c155d843f4
commit
81cec35dbf
20 changed files with 382 additions and 31 deletions
|
@ -61,6 +61,8 @@ class ActivityPub::Activity::Create < ActivityPub::Activity
|
|||
process_hashtag tag, status
|
||||
when 'Mention'
|
||||
process_mention tag, status
|
||||
when 'Emoji'
|
||||
process_emoji tag, status
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -79,6 +81,17 @@ class ActivityPub::Activity::Create < ActivityPub::Activity
|
|||
account.mentions.create(status: status)
|
||||
end
|
||||
|
||||
def process_emoji(tag, _status)
|
||||
shortcode = tag['name'].delete(':')
|
||||
emoji = CustomEmoji.find_by(shortcode: shortcode, domain: @account.domain)
|
||||
|
||||
return if !emoji.nil? || skip_download?
|
||||
|
||||
emoji = CustomEmoji.new(domain: @account.domain, shortcode: shortcode)
|
||||
emoji.image_remote_url = tag['href']
|
||||
emoji.save
|
||||
end
|
||||
|
||||
def process_attachments(status)
|
||||
return unless @object['attachment'].is_a?(Array)
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue