Key emoji for statuses

This commit is contained in:
2024-03-10 22:10:12 +11:00
parent 1746ce8bb4
commit 1712d634e5
7 changed files with 30 additions and 9 deletions

View File

@@ -52,6 +52,7 @@ gem "jwt"
gem "lastfm", "~> 1.27" gem "lastfm", "~> 1.27"
gem "mail" gem "mail"
gem "que" gem "que"
gem "unicode-emoji"
gem "connection_pool" gem "connection_pool"
gem "omdb-api", "1.4.3", require: false gem "omdb-api", "1.4.3", require: false
gem "image_processing", "~> 1.0" gem "image_processing", "~> 1.0"

View File

@@ -488,6 +488,9 @@ GEM
tzinfo (2.0.6) tzinfo (2.0.6)
concurrent-ruby (~> 1.0) concurrent-ruby (~> 1.0)
unicode-display_width (2.5.0) unicode-display_width (2.5.0)
unicode-emoji (3.4.0)
unicode-version (~> 1.0)
unicode-version (1.4.0)
uri (0.13.0) uri (0.13.0)
version_gem (1.1.3) version_gem (1.1.3)
warning (1.3.0) warning (1.3.0)
@@ -573,6 +576,7 @@ DEPENDENCIES
standardrb standardrb
time_math2 time_math2
timecop timecop
unicode-emoji
warning warning
whenever whenever

View File

@@ -5,6 +5,7 @@
require "rexml/parsers/pullparser" require "rexml/parsers/pullparser"
require "sanitize" require "sanitize"
require "nokogiri" require "nokogiri"
require "unicode/emoji"
module Main module Main
module Decorators module Decorators
@@ -54,11 +55,15 @@ module Main
def prefix_emoji def prefix_emoji
if name if name
"" nil
elsif photos? && content == "" elsif photos? && content == ""
"📷" "📷"
else else
"💬" @prefix_emoji ||= if (match = content.match(Unicode::Emoji::REGEX))
match
else
"💬"
end
end end
end end
@@ -80,7 +85,8 @@ module Main
end end
def raw_content def raw_content
Sanitize.fragment(content) res = Sanitize.fragment(content)
res.gsub(prefix_emoji[0], "") if prefix_emoji
end end
def excerpt def excerpt

View File

@@ -11,9 +11,11 @@ module Main
module Statuses module Statuses
class Decorator < Main::Decorators::Posts::Decorator class Decorator < Main::Decorators::Posts::Decorator
def raw_content def raw_content
Sanitize.fragment(content, res = Sanitize.fragment(content,
elements: ["img", "p"], elements: ["img", "p"],
attributes: {"img" => ["alt", "src", "title"]}) attributes: {"img" => ["alt", "src", "title"]})
res.gsub(prefix_emoji[0], "") if prefix_emoji
end end
end end
end end

View File

@@ -1,10 +1,17 @@
div class="mb-8 h-entry border border-gray-200 m-2 p-4 bg-gray-50 hover:bg-gray-100 dark:border-slate-800 dark:bg-slate-900 dark:hover:bg-slate-950 hover:dark:border-slate-900 rounded" div class="mb-8 h-entry border border-gray-200 m-2 p-4 bg-gray-50 hover:bg-gray-100 dark:border-slate-800 dark:bg-slate-900 dark:hover:bg-slate-950 hover:dark:border-slate-900 rounded"
a class="border-b-2 border-transparent hover:border-blue-600 hover:border-b-2" href="/post/#{post.slug}" a class="border-b-2 border-transparent hover:border-blue-600 hover:border-b-2" href="/post/#{post.slug}"
div class="e-content prose-p:mb-0 prose-img:my-2 prose-a:text-blue-600 prose-a:no-underline hover:prose-a:underline p-name text-base prose prose-ul:list-none prose-ul:pl-0 prose-li:pl-0 text-gray-800 dark:text-gray-200 prose-a:dark:text-gray-100 mb-4 prose-img:rounded" div class="e-content prose-p:mb-0 prose-img:my-2 prose-a:text-blue-600 prose-a:no-underline hover:prose-a:underline p-name text-base prose prose-ul:list-none prose-ul:pl-0 prose-li:pl-0 text-gray-800 dark:text-gray-200 prose-a:dark:text-gray-100 mb-4 prose-img:rounded"
== " 💬 #{post.raw_content}" - if post.photos.count == 0 && post.key_image.nil?
div class="grid gap-4 grid-flow-row grid-cols-4 grid-rows-1" div class="flex"
-post.photos.each do |photo| div class="text-8xl px-8"
img loading="lazy" class="w-32 h-32 object-cover rounded" src=photo["value"] = post.prefix_emoji
div class=""
== post.raw_content
-else
== " #{post.prefix_emoji} #{post.raw_content}"
div class="grid gap-4 grid-flow-row grid-cols-4 grid-rows-1"
- post.photos.each do |photo|
img loading="lazy" class="w-32 h-32 object-cover rounded" src=photo["value"]
== render "shared/tags", tags: post.tags == render "shared/tags", tags: post.tags
div class="mb-8" div class="mb-8"

View File

@@ -1,5 +1,5 @@
- if tags.count > 0 - if tags.count > 0
p class="mb-2" p class="mb-2 dark:text-gray-200"
= "Tagged" = "Tagged"
div class="mb-2 justify-end gap-x-1.5" div class="mb-2 justify-end gap-x-1.5"
- tags.each do |post_tag| - tags.each do |post_tag|

View File

@@ -25,6 +25,7 @@ module.exports = {
'3xl': '1.953rem', '3xl': '1.953rem',
'4xl': '2.441rem', '4xl': '2.441rem',
'5xl': '3.052rem', '5xl': '3.052rem',
'8xl': '6rem',
}, },
extend: { extend: {
gridTemplateColumns: { gridTemplateColumns: {