Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Pleroma
pleroma
Commits
2f76a40d
Verified
Commit
2f76a40d
authored
Feb 12, 2019
by
Haelwenn
Browse files
formatter.ex: Add get_emoji_map/1
parent
d70af321
Changes
7
Hide whitespace changes
Inline
Side-by-side
lib/pleroma/formatter.ex
View file @
2f76a40d
...
...
@@ -128,12 +128,23 @@ def demojify(text) do
def
demojify
(
text
,
nil
),
do
:
text
@doc
"Outputs a list of the emoji-shortcodes in a text"
def
get_emoji
(
text
)
when
is_binary
(
text
)
do
Enum
.
filter
(
Emoji
.
get_all
(),
fn
{
emoji
,
_
,
_
}
->
String
.
contains?
(
text
,
":
#{
emoji
}
:"
)
end
)
end
def
get_emoji
(
_
),
do
:
[]
@doc
"Outputs a list of the emoji-Maps in a text"
def
get_emoji_map
(
text
)
when
is_binary
(
text
)
do
get_emoji
(
text
)
|>
Enum
.
reduce
(%{},
fn
{
name
,
file
,
_group
},
acc
->
Map
.
put
(
acc
,
name
,
"
#{
Pleroma
.
Web
.
Endpoint
.
static_url
()
}#{
file
}
"
)
end
)
end
def
get_emoji_map
(
_
),
do
:
[]
def
html_escape
({
text
,
mentions
,
hashtags
},
type
)
do
{
html_escape
(
text
,
type
),
mentions
,
hashtags
}
end
...
...
lib/pleroma/user/info.ex
View file @
2f76a40d
...
...
@@ -41,6 +41,7 @@ defmodule Pleroma.User.Info do
field
(
:hide_favorites
,
:boolean
,
default:
true
)
field
(
:pinned_activities
,
{
:array
,
:string
},
default:
[])
field
(
:flavour
,
:string
,
default:
nil
)
field
(
:emoji
,
{
:array
,
:map
},
default:
[])
field
(
:notification_settings
,
:map
,
default:
%{
"remote"
=>
true
,
"local"
=>
true
,
"followers"
=>
true
,
"follows"
=>
true
}
...
...
lib/pleroma/web/activity_pub/transmogrifier.ex
View file @
2f76a40d
...
...
@@ -856,10 +856,16 @@ def add_mention_tags(object) do
|>
Map
.
put
(
"tag"
,
tags
++
mentions
)
end
def
add_emoji_tags
(%
User
{
info:
%{
"emoji"
=>
_emoji
}
=
user_info
}
=
object
)
do
user_info
=
add_emoji_tags
(
user_info
)
object
|>
Map
.
put
(
:info
,
user_info
)
end
# TODO: we should probably send mtime instead of unix epoch time for updated
def
add_emoji_tags
(
object
)
do
def
add_emoji_tags
(
%{
"emoji"
=>
emoji
}
=
object
)
do
tags
=
object
[
"tag"
]
||
[]
emoji
=
object
[
"emoji"
]
||
[]
out
=
emoji
...
...
@@ -877,6 +883,10 @@ def add_emoji_tags(object) do
|>
Map
.
put
(
"tag"
,
tags
++
out
)
end
def
add_emoji_tags
(
object
)
do
object
end
def
set_conversation
(
object
)
do
Map
.
put
(
object
,
"conversation"
,
object
[
"context"
])
end
...
...
lib/pleroma/web/activity_pub/views/user_view.ex
View file @
2f76a40d
...
...
@@ -69,6 +69,11 @@ def render("user.json", %{user: user}) do
endpoints
=
render
(
"endpoints.json"
,
%{
user:
user
})
user_tags
=
user
|>
Transmogrifier
.
add_emoji_tags
()
|>
Map
.
get
(
"tag"
,
[])
%{
"id"
=>
user
.
ap_id
,
"type"
=>
"Person"
,
...
...
@@ -87,7 +92,7 @@ def render("user.json", %{user: user}) do
"publicKeyPem"
=>
public_key
},
"endpoints"
=>
endpoints
,
"tag"
=>
user
.
info
.
source_data
[
"tag"
]
||
[]
"tag"
=>
(
user
.
info
.
source_data
[
"tag"
]
||
[]
)
++
user_tags
}
|>
Map
.
merge
(
maybe_make_image
(
&
User
.
avatar_url
/
2
,
"icon"
,
user
))
|>
Map
.
merge
(
maybe_make_image
(
&
User
.
banner_url
/
2
,
"image"
,
user
))
...
...
lib/pleroma/web/common_api/common_api.ex
View file @
2f76a40d
...
...
@@ -151,8 +151,8 @@ def post(user, %{"status" => status} = data) do
),
{
to
,
cc
}
<-
to_for_user_and_mentions
(
user
,
mentions
,
in_reply_to
,
visibility
),
context
<-
make_context
(
in_reply_to
),
cw
<-
data
[
"spoiler_text"
],
full_payload
<-
String
.
trim
(
status
<>
(
data
[
"spoiler_text"
]
||
""
)
),
cw
<-
data
[
"spoiler_text"
]
||
""
,
full_payload
<-
String
.
trim
(
status
<>
cw
),
length
when
length
in
1
..
limit
<-
String
.
length
(
full_payload
),
object
<-
make_note_data
(
...
...
@@ -170,10 +170,7 @@ def post(user, %{"status" => status} = data) do
Map
.
put
(
object
,
"emoji"
,
(
Formatter
.
get_emoji
(
status
)
++
Formatter
.
get_emoji
(
data
[
"spoiler_text"
]))
|>
Enum
.
reduce
(%{},
fn
{
name
,
file
,
_
},
acc
->
Map
.
put
(
acc
,
name
,
"
#{
Pleroma
.
Web
.
Endpoint
.
static_url
()
}#{
file
}
"
)
end
)
Formatter
.
get_emoji_map
(
full_payload
)
)
do
res
=
ActivityPub
.
create
(
...
...
lib/pleroma/web/twitter_api/twitter_api_controller.ex
View file @
2f76a40d
...
...
@@ -9,6 +9,7 @@ defmodule Pleroma.Web.TwitterAPI.Controller do
alias
Ecto
.
Changeset
alias
Pleroma
.
Activity
alias
Pleroma
.
Formatter
alias
Pleroma
.
Notification
alias
Pleroma
.
Object
alias
Pleroma
.
Repo
...
...
@@ -653,7 +654,16 @@ defp build_info_cng(user, params) do
defp
parse_profile_bio
(
user
,
params
)
do
if
bio
=
params
[
"description"
]
do
Map
.
put
(
params
,
"bio"
,
User
.
parse_bio
(
bio
,
user
))
user_info
=
user
.
info
|>
Map
.
put
(
"emojis"
,
Formatter
.
get_emoji_map
(
params
[
"description"
])
)
params
|>
Map
.
put
(
"bio"
,
User
.
parse_bio
(
bio
,
user
))
|>
Map
.
put
(
"info"
,
user_info
)
else
params
end
...
...
test/web/twitter_api/twitter_api_controller_test.exs
View file @
2f76a40d
...
...
@@ -1611,6 +1611,34 @@ test "it unlocks an account", %{conn: conn} do
assert
json_response
(
conn
,
200
)
==
UserView
.
render
(
"user.json"
,
%{
user:
user
,
for:
user
})
end
# Broken before the change to class="emoji" and non-<img/> in the DB
@tag
:skip
test
"it formats emojos"
,
%{
conn:
conn
}
do
user
=
insert
(
:user
)
conn
=
conn
|>
assign
(
:user
,
user
)
|>
post
(
"/api/account/update_profile.json"
,
%{
"bio"
=>
"I love our :moominmamma:"
})
assert
response
=
json_response
(
conn
,
200
)
assert
%{
"description"
=>
"I love our :moominmamma:"
,
"description_html"
=>
~s{I love our <img class="emoji" alt="moominmamma" title="moominmamma" src="}
<>
_
}
=
response
conn
=
conn
|>
get
(
"/api/users/show.json?user_id=
#{
user
.
nickname
}
"
)
assert
response
==
json_response
(
conn
,
200
)
end
end
defp
valid_user
(
_context
)
do
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment