Add emoji alias-names support
This commit is contained in:
parent
dd05f2b58c
commit
8638e715cb
9 changed files with 42 additions and 6 deletions
|
@ -74,7 +74,7 @@ module Admin
|
||||||
end
|
end
|
||||||
|
|
||||||
def form_custom_emoji_batch_params
|
def form_custom_emoji_batch_params
|
||||||
params.require(:form_custom_emoji_batch).permit(:action, :category_id, :category_name, custom_emoji_ids: [])
|
params.require(:form_custom_emoji_batch).permit(:action, :category_id, :category_name, :aliases_raw, custom_emoji_ids: [])
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -143,6 +143,8 @@ export const buildCustomEmojis = (customEmojis) => {
|
||||||
const shortcode = emoji.get('shortcode');
|
const shortcode = emoji.get('shortcode');
|
||||||
const url = autoPlayGif ? emoji.get('url') : emoji.get('static_url');
|
const url = autoPlayGif ? emoji.get('url') : emoji.get('static_url');
|
||||||
const name = shortcode.replace(':', '');
|
const name = shortcode.replace(':', '');
|
||||||
|
const aliases = emoji.get('aliases');
|
||||||
|
const keywords = aliases ? [name, ...aliases] : [name];
|
||||||
|
|
||||||
emojis.push({
|
emojis.push({
|
||||||
id: name,
|
id: name,
|
||||||
|
@ -150,7 +152,7 @@ export const buildCustomEmojis = (customEmojis) => {
|
||||||
short_names: [name],
|
short_names: [name],
|
||||||
text: '',
|
text: '',
|
||||||
emoticons: [],
|
emoticons: [],
|
||||||
keywords: [name],
|
keywords,
|
||||||
imageUrl: url,
|
imageUrl: url,
|
||||||
custom: true,
|
custom: true,
|
||||||
customCategory: emoji.get('category'),
|
customCategory: emoji.get('category'),
|
||||||
|
|
|
@ -21,6 +21,7 @@
|
||||||
# image_storage_schema_version :integer
|
# image_storage_schema_version :integer
|
||||||
# image_width :integer
|
# image_width :integer
|
||||||
# image_height :integer
|
# image_height :integer
|
||||||
|
# aliases :jsonb
|
||||||
#
|
#
|
||||||
|
|
||||||
class CustomEmoji < ApplicationRecord
|
class CustomEmoji < ApplicationRecord
|
||||||
|
@ -80,6 +81,17 @@ class CustomEmoji < ApplicationRecord
|
||||||
size(Rails.configuration.x.use_s3 ? image.url : image.path)
|
size(Rails.configuration.x.use_s3 ? image.url : image.path)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def aliases_raw
|
||||||
|
return '' if aliases.nil? || aliases.blank?
|
||||||
|
|
||||||
|
aliases.join(',')
|
||||||
|
end
|
||||||
|
|
||||||
|
def aliases_raw=(raw)
|
||||||
|
aliases = raw.split(',').filter(&:present?).uniq
|
||||||
|
self[:aliases] = aliases
|
||||||
|
end
|
||||||
|
|
||||||
class << self
|
class << self
|
||||||
def from_text(text, domain = nil)
|
def from_text(text, domain = nil)
|
||||||
return [] if text.blank?
|
return [] if text.blank?
|
||||||
|
|
|
@ -6,7 +6,7 @@ class Form::CustomEmojiBatch
|
||||||
include AccountableConcern
|
include AccountableConcern
|
||||||
|
|
||||||
attr_accessor :custom_emoji_ids, :action, :current_account,
|
attr_accessor :custom_emoji_ids, :action, :current_account,
|
||||||
:category_id, :category_name, :visible_in_picker
|
:category_id, :category_name, :aliases_raw, :visible_in_picker
|
||||||
|
|
||||||
def save
|
def save
|
||||||
case action
|
case action
|
||||||
|
@ -43,7 +43,8 @@ class Form::CustomEmojiBatch
|
||||||
end
|
end
|
||||||
|
|
||||||
custom_emojis.each do |custom_emoji|
|
custom_emojis.each do |custom_emoji|
|
||||||
custom_emoji.update(category_id: category&.id)
|
new_aliases_raw = (aliases_raw.presence || custom_emoji.aliases_raw)
|
||||||
|
custom_emoji.update(category_id: category&.id, aliases_raw: new_aliases_raw)
|
||||||
log_action :update, custom_emoji
|
log_action :update, custom_emoji
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -8,6 +8,7 @@ class REST::CustomEmojiSerializer < ActiveModel::Serializer
|
||||||
attribute :category, if: :category_loaded?
|
attribute :category, if: :category_loaded?
|
||||||
attribute :width, if: :width?
|
attribute :width, if: :width?
|
||||||
attribute :height, if: :height?
|
attribute :height, if: :height?
|
||||||
|
attribute :aliases, if: :aliases?
|
||||||
|
|
||||||
def url
|
def url
|
||||||
full_asset_url(object.image.url)
|
full_asset_url(object.image.url)
|
||||||
|
@ -40,4 +41,8 @@ class REST::CustomEmojiSerializer < ActiveModel::Serializer
|
||||||
def height
|
def height
|
||||||
object.respond_to?(:image_height) ? object.image_height : object.height
|
object.respond_to?(:image_height) ? object.image_height : object.height
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def aliases?
|
||||||
|
object.respond_to?(:aliases) && object.aliases.present?
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -10,6 +10,8 @@
|
||||||
|
|
||||||
- if custom_emoji.local?
|
- if custom_emoji.local?
|
||||||
%span.account-role.bot= custom_emoji.category&.name || t('admin.custom_emojis.uncategorized')
|
%span.account-role.bot= custom_emoji.category&.name || t('admin.custom_emojis.uncategorized')
|
||||||
|
%br/
|
||||||
|
%span= custom_emoji.aliases_raw
|
||||||
|
|
||||||
.batch-table__row__content__extra
|
.batch-table__row__content__extra
|
||||||
- if custom_emoji.local?
|
- if custom_emoji.local?
|
||||||
|
|
|
@ -78,6 +78,12 @@
|
||||||
.label_input
|
.label_input
|
||||||
= f.text_field :category_name, class: 'string optional', placeholder: t('admin.custom_emojis.create_new_category'), 'aria-label': t('admin.custom_emojis.create_new_category')
|
= f.text_field :category_name, class: 'string optional', placeholder: t('admin.custom_emojis.create_new_category'), 'aria-label': t('admin.custom_emojis.create_new_category')
|
||||||
|
|
||||||
|
.fields-row
|
||||||
|
.fields-group.fields-row__column
|
||||||
|
.input.string.optional
|
||||||
|
.label_input
|
||||||
|
= f.text_field :aliases_raw, class: 'string optional', placeholder: 'Alias names', 'aria-label': 'Alias names'
|
||||||
|
|
||||||
.batch-table__body
|
.batch-table__body
|
||||||
- if @custom_emojis.empty?
|
- if @custom_emojis.empty?
|
||||||
= nothing_here 'nothing-here--under-tabs'
|
= nothing_here 'nothing-here--under-tabs'
|
||||||
|
|
7
db/migrate/20230521122642_add_aliases_to_custom_emoji.rb
Normal file
7
db/migrate/20230521122642_add_aliases_to_custom_emoji.rb
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
class AddAliasesToCustomEmoji < ActiveRecord::Migration[6.1]
|
||||||
|
def change
|
||||||
|
add_column :custom_emojis, :aliases, :jsonb
|
||||||
|
end
|
||||||
|
end
|
|
@ -12,7 +12,7 @@
|
||||||
#
|
#
|
||||||
# It's strongly recommended that you check this file into your version control system.
|
# It's strongly recommended that you check this file into your version control system.
|
||||||
|
|
||||||
ActiveRecord::Schema.define(version: 2023_05_14_030455) do
|
ActiveRecord::Schema.define(version: 2023_05_21_122642) do
|
||||||
|
|
||||||
# These are extensions that must be enabled in order to support this database
|
# These are extensions that must be enabled in order to support this database
|
||||||
enable_extension "plpgsql"
|
enable_extension "plpgsql"
|
||||||
|
@ -438,6 +438,7 @@ ActiveRecord::Schema.define(version: 2023_05_14_030455) do
|
||||||
t.integer "image_storage_schema_version"
|
t.integer "image_storage_schema_version"
|
||||||
t.integer "image_width"
|
t.integer "image_width"
|
||||||
t.integer "image_height"
|
t.integer "image_height"
|
||||||
|
t.jsonb "aliases"
|
||||||
t.index ["shortcode", "domain"], name: "index_custom_emojis_on_shortcode_and_domain", unique: true
|
t.index ["shortcode", "domain"], name: "index_custom_emojis_on_shortcode_and_domain", unique: true
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -1487,4 +1488,4 @@ ActiveRecord::Schema.define(version: 2023_05_14_030455) do
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
# rubocop:enable all
|
#rubocop:enable all
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue