aboutsummaryrefslogtreecommitdiff
path: root/src/services/entity_normalizer/entity_normalizer.service.js
diff options
context:
space:
mode:
authorHenry Jameson <me@hjkos.com>2019-03-25 21:12:15 +0200
committerHenry Jameson <me@hjkos.com>2019-03-25 21:12:15 +0200
commit0ffd43954eb36d61feab7a0a8fb91f86a6857f75 (patch)
tree3f0b597e37613eda5d0840bc7f6e1d33b84cead4 /src/services/entity_normalizer/entity_normalizer.service.js
parent4a5aef8883d3e92a58e272857cdfb303da61feb2 (diff)
parent854d0e80512d2da80cd5153144698a5148da4aa6 (diff)
Merge remote-tracking branch 'upstream/develop' into mastoapi/actions
* upstream/develop: (87 commits) review Update attachment normalizer Add fallback for attachments uploaded via the other platforms Get correct mimetype through entity_normalizer Set default parameter Switch to mastoapi for posting status and uploading media Revert changes prevent text pasting if image is pasted remove border radius of suggested emojis #450 - dispatch login after saved state is loaded #448 - fix timeline fetch error when status text is null #451 - add class to username span No need to fetch mutes on load anymore 🙌 switch to mastoapi switch to mastoapi masto api sends muted property now No need to fetch user data using old api anymore 🎉 Switch to mastoapi reactivity fixes less hackery, more direct usage of mastoapi ...
Diffstat (limited to 'src/services/entity_normalizer/entity_normalizer.service.js')
-rw-r--r--src/services/entity_normalizer/entity_normalizer.service.js50
1 files changed, 31 insertions, 19 deletions
diff --git a/src/services/entity_normalizer/entity_normalizer.service.js b/src/services/entity_normalizer/entity_normalizer.service.js
index d20ce77f..5cac3463 100644
--- a/src/services/entity_normalizer/entity_normalizer.service.js
+++ b/src/services/entity_normalizer/entity_normalizer.service.js
@@ -39,11 +39,11 @@ export const parseUser = (data) => {
return output
}
- output.name = null // missing
- output.name_html = data.display_name
+ // output.name = ??? missing
+ output.name_html = addEmojis(data.display_name, data.emojis)
- output.description = null // missing
- output.description_html = data.note
+ // output.description = ??? missing
+ output.description_html = addEmojis(data.note, data.emojis)
// Utilize avatar_static for gif avatars?
output.profile_image_url = data.avatar
@@ -59,10 +59,14 @@ export const parseUser = (data) => {
output.statusnet_profile_url = data.url
if (data.pleroma) {
- const pleroma = data.pleroma
- output.follows_you = pleroma.follows_you
- output.statusnet_blocking = pleroma.statusnet_blocking
- output.muted = pleroma.muted
+ const relationship = data.pleroma.relationship
+
+ if (relationship) {
+ output.follows_you = relationship.followed_by
+ output.following = relationship.following
+ output.statusnet_blocking = relationship.blocking
+ output.muted = relationship.muting
+ }
}
// Missing, trying to recover
@@ -83,7 +87,7 @@ export const parseUser = (data) => {
output.friends_count = data.friends_count
- output.bot = null // missing
+ // output.bot = ??? missing
output.statusnet_profile_url = data.statusnet_profile_url
@@ -124,17 +128,18 @@ export const parseUser = (data) => {
return output
}
-const parseAttachment = (data) => {
+export const parseAttachment = (data) => {
const output = {}
const masto = !data.hasOwnProperty('oembed')
if (masto) {
// Not exactly same...
- output.mimetype = data.type
+ output.mimetype = data.pleroma ? data.pleroma.mime_type : data.type
output.meta = data.meta // not present in BE yet
+ output.id = data.id
} else {
output.mimetype = data.mimetype
- output.meta = null // missing
+ // output.meta = ??? missing
}
output.url = data.url
@@ -142,6 +147,14 @@ const parseAttachment = (data) => {
return output
}
+export const addEmojis = (string, emojis) => {
+ return emojis.reduce((acc, emoji) => {
+ return acc.replace(
+ new RegExp(`:${emoji.shortcode}:`, 'g'),
+ `<img src='${emoji.url}' alt='${emoji.shortcode}' class='emoji' />`
+ )
+ }, string)
+}
export const parseStatus = (data) => {
const output = {}
@@ -157,7 +170,7 @@ export const parseStatus = (data) => {
output.type = data.reblog ? 'retweet' : 'status'
output.nsfw = data.sensitive
- output.statusnet_html = data.content
+ output.statusnet_html = addEmojis(data.content, data.emojis)
// Not exactly the same but works?
output.text = data.content
@@ -166,7 +179,7 @@ export const parseStatus = (data) => {
output.in_reply_to_user_id = data.in_reply_to_account_id
// Missing!! fix in UI?
- output.in_reply_to_screen_name = null
+ // output.in_reply_to_screen_name = ???
// Not exactly the same but works
output.statusnet_conversation_id = data.id
@@ -176,11 +189,10 @@ export const parseStatus = (data) => {
}
output.summary = data.spoiler_text
- output.summary_html = data.spoiler_text
+ output.summary_html = addEmojis(data.spoiler_text, data.emojis)
output.external_url = data.url
- // FIXME missing!!
- output.is_local = false
+ // output.is_local = ??? missing
} else {
output.favorited = data.favorited
output.fave_num = data.fave_num
@@ -259,7 +271,7 @@ export const parseNotification = (data) => {
if (masto) {
output.type = mastoDict[data.type] || data.type
- output.seen = null // missing
+ // output.seen = ??? missing
output.status = parseStatus(data.status)
output.action = output.status // not sure
output.from_profile = parseUser(data.account)
@@ -282,5 +294,5 @@ export const parseNotification = (data) => {
const isNsfw = (status) => {
const nsfwRegex = /#nsfw/i
- return (status.tags || []).includes('nsfw') || !!status.text.match(nsfwRegex)
+ return (status.tags || []).includes('nsfw') || !!(status.text || '').match(nsfwRegex)
}