diff --git a/app/javascript/mastodon/components/status_content.js b/app/javascript/mastodon/components/status_content.js
index 549de95fc1..76117f1d92 100644
--- a/app/javascript/mastodon/components/status_content.js
+++ b/app/javascript/mastodon/components/status_content.js
@@ -112,7 +112,7 @@ export default class StatusContent extends React.PureComponent {
}
onHashtagClick = (hashtag, e) => {
- hashtag = hashtag.replace(/^#/, '').toLowerCase();
+ hashtag = hashtag.replace(/^#/, '');
if (this.context.router && e.button === 0 && !(e.ctrlKey || e.metaKey)) {
e.preventDefault();
diff --git a/app/lib/formatter.rb b/app/lib/formatter.rb
index 65059efa06..b5f42305fe 100644
--- a/app/lib/formatter.rb
+++ b/app/lib/formatter.rb
@@ -294,7 +294,7 @@ class Formatter
end
def hashtag_html(tag)
- "##{encode(tag)}"
+ "##{encode(tag)}"
end
def mention_html(account)
diff --git a/app/services/batched_remove_status_service.rb b/app/services/batched_remove_status_service.rb
index 27dc460a6b..6df8d4769e 100644
--- a/app/services/batched_remove_status_service.rb
+++ b/app/services/batched_remove_status_service.rb
@@ -80,8 +80,8 @@ class BatchedRemoveStatusService < BaseService
end
@tags[status.id].each do |hashtag|
- redis.publish("timeline:hashtag:#{hashtag}", payload)
- redis.publish("timeline:hashtag:#{hashtag}:local", payload) if status.local?
+ redis.publish("timeline:hashtag:#{hashtag.mb_chars.downcase}", payload)
+ redis.publish("timeline:hashtag:#{hashtag.mb_chars.downcase}:local", payload) if status.local?
end
end
end
diff --git a/app/services/fan_out_on_write_service.rb b/app/services/fan_out_on_write_service.rb
index f3e9c855dc..95336ef450 100644
--- a/app/services/fan_out_on_write_service.rb
+++ b/app/services/fan_out_on_write_service.rb
@@ -72,8 +72,8 @@ class FanOutOnWriteService < BaseService
Rails.logger.debug "Delivering status #{status.id} to hashtags"
status.tags.pluck(:name).each do |hashtag|
- Redis.current.publish("timeline:hashtag:#{hashtag}", @payload)
- Redis.current.publish("timeline:hashtag:#{hashtag}:local", @payload) if status.local?
+ Redis.current.publish("timeline:hashtag:#{hashtag.mb_chars.downcase}", @payload)
+ Redis.current.publish("timeline:hashtag:#{hashtag.mb_chars.downcase}:local", @payload) if status.local?
end
end
diff --git a/app/services/remove_status_service.rb b/app/services/remove_status_service.rb
index a69fce8b85..91c934181b 100644
--- a/app/services/remove_status_service.rb
+++ b/app/services/remove_status_service.rb
@@ -124,8 +124,8 @@ class RemoveStatusService < BaseService
return unless @status.public_visibility?
@tags.each do |hashtag|
- redis.publish("timeline:hashtag:#{hashtag}", @payload)
- redis.publish("timeline:hashtag:#{hashtag}:local", @payload) if @status.local?
+ redis.publish("timeline:hashtag:#{hashtag.mb_chars.downcase}", @payload)
+ redis.publish("timeline:hashtag:#{hashtag.mb_chars.downcase}:local", @payload) if @status.local?
end
end