1
0
Fork 0

Add support for custom emoji

This commit is contained in:
Ryan Fox 2022-03-29 21:48:56 -07:00
parent 291e0a8d75
commit 16eef14e04
Signed by: flewkey
GPG Key ID: 94F56ADFD848851E
3 changed files with 36 additions and 4 deletions

View File

@ -212,6 +212,8 @@ span.applink {
display: block;
float: left;
width: 50px;
height: 50px;
object-fit: cover;
border-radius: 50%;
margin-top: 2px;
}
@ -1162,3 +1164,9 @@ audio.viewer-content {
height: 18px;
margin: 0 1px;
}
.emoji-custom {
width: 24px;
height: 24px;
vertical-align: bottom;
}

View File

@ -396,7 +396,7 @@ accountView subView currentUser accountInfo =
else
text ""
]
, span [ class "account-note" ] (formatContent account.note [] [])
, span [ class "account-note" ] (formatContent account.note [] account.emojis)
]
]
, fields subView account

View File

@ -1,7 +1,6 @@
module View.Formatter exposing (formatContent, textContent)
import Dict
import Elmoji
import Html exposing (..)
import Html.Attributes exposing (..)
import HtmlParser
@ -11,6 +10,8 @@ import Mastodon.Model exposing (..)
import String.Extra exposing (replace, rightOf)
import Types exposing (..)
import View.Events exposing (..)
import Regex
import Json.Encode
formatContent : String -> List Mention -> List Emoji -> List (Html Msg)
@ -119,9 +120,32 @@ toVirtualDomEach mentions emoji node =
text ""
-- VERY janky.
handleEmoji : String -> List Emoji -> Html Msg
handleEmoji s emoji =
Elmoji.text_ s -- todo
handleEmoji s emojis =
span [ property "innerHTML" <| Json.Encode.string <| Regex.replace Regex.All shortcodeRegex (\{match} -> displayEmoji match emojis) <| s ] []
displayEmoji : String -> List Emoji -> String
displayEmoji s emojis =
case (lookupEmoji (String.slice 1 -1 s) emojis) of
Just emoji ->
"<img src=\""++emoji.url++"\" title=\""++s++"\" class=\"emoji-custom\">"
Nothing ->
s
lookupEmoji : String -> List Emoji -> Maybe Emoji
lookupEmoji shortcode emojis =
emojis
|> List.filter (\m -> m.shortcode == shortcode)
|> List.head
shortcodeRegex : Regex.Regex
shortcodeRegex =
Regex.regex ":[^:]*(?:::]*)*:"
toAttribute : ( String, String ) -> Attribute msg