From 309043b158f5a4187b6f603f346ed17ee6ddb190 Mon Sep 17 00:00:00 2001
From: Ben Lubar <ben.lubar+github@gmail.com>
Date: Wed, 13 Feb 2019 18:04:43 -0600
Subject: [PATCH] Improve image description user experience (#10036)
* Add image descriptions to searchable post content.
* Allow multi-line image descriptions.
* Request image descriptions in the same query as posts when creating the search index.
(see https://github.com/tootsuite/mastodon/pull/10036#discussion_r256551624)
---
app/chewy/statuses_index.rb | 4 ++--
app/javascript/mastodon/features/compose/components/upload.js | 3 +--
app/javascript/styles/mastodon/components.scss | 2 +-
3 files changed, 4 insertions(+), 5 deletions(-)
diff --git a/app/chewy/statuses_index.rb b/app/chewy/statuses_index.rb
index d3104172c4..eafc1818b8 100644
--- a/app/chewy/statuses_index.rb
+++ b/app/chewy/statuses_index.rb
@@ -31,7 +31,7 @@ class StatusesIndex < Chewy::Index
},
}
- define_type ::Status.unscoped.without_reblogs do
+ define_type ::Status.unscoped.without_reblogs.includes(:media_attachments) do
crutch :mentions do |collection|
data = ::Mention.where(status_id: collection.map(&:id)).pluck(:status_id, :account_id)
data.each.with_object({}) { |(id, name), result| (result[id] ||= []).push(name) }
@@ -50,7 +50,7 @@ class StatusesIndex < Chewy::Index
root date_detection: false do
field :account_id, type: 'long'
- field :text, type: 'text', value: ->(status) { [status.spoiler_text, Formatter.instance.plaintext(status)].join("\n\n") } do
+ field :text, type: 'text', value: ->(status) { [status.spoiler_text, Formatter.instance.plaintext(status)].concat(status.media_attachments.map(&:description)).join("\n\n") } do
field :stemmed, type: 'text', analyzer: 'content'
end
diff --git a/app/javascript/mastodon/features/compose/components/upload.js b/app/javascript/mastodon/features/compose/components/upload.js
index 038d7ee28a..629cbc36ac 100644
--- a/app/javascript/mastodon/features/compose/components/upload.js
+++ b/app/javascript/mastodon/features/compose/components/upload.js
@@ -108,9 +108,8 @@ class Upload extends ImmutablePureComponent {
<label>
<span style={{ display: 'none' }}>{intl.formatMessage(messages.description)}</span>
- <input
+ <textarea
placeholder={intl.formatMessage(messages.description)}
- type='text'
value={description}
maxLength={420}
onFocus={this.handleInputFocus}
diff --git a/app/javascript/styles/mastodon/components.scss b/app/javascript/styles/mastodon/components.scss
index 8533e4eb5b..d88557559e 100644
--- a/app/javascript/styles/mastodon/components.scss
+++ b/app/javascript/styles/mastodon/components.scss
@@ -476,7 +476,7 @@
opacity: 0;
transition: opacity .1s ease;
- input {
+ textarea {
background: transparent;
color: $secondary-text-color;
border: 0;
--
GitLab