aboutsummaryrefslogtreecommitdiff
path: root/src/components/rich_content
diff options
context:
space:
mode:
authorHenry Jameson <me@hjkos.com>2021-06-08 11:38:44 +0300
committerHenry Jameson <me@hjkos.com>2021-06-08 11:38:44 +0300
commit3abd357694c29c84d213d7d2a7a954ab2a591da0 (patch)
tree99aeb473297ff303198ce7134369ede5de0cbb9e /src/components/rich_content
parent0583a6b8638afc6b3ea07adceecdb42ca9188251 (diff)
moving mentions into separate row
Diffstat (limited to 'src/components/rich_content')
-rw-r--r--src/components/rich_content/rich_content.jsx19
1 files changed, 15 insertions, 4 deletions
diff --git a/src/components/rich_content/rich_content.jsx b/src/components/rich_content/rich_content.jsx
index c15877c8..86a318bd 100644
--- a/src/components/rich_content/rich_content.jsx
+++ b/src/components/rich_content/rich_content.jsx
@@ -33,21 +33,32 @@ export default Vue.component('RichContent', {
class="img"
/>
}
- const renderMention = (attrs, children) => {
+ const renderMention = (attrs, children, encounteredText) => {
return <MentionLink
url={attrs.href}
content={flattenDeep(children).join('')}
+ firstMention={!encounteredText}
origattrs={attrs}
/>
}
+ let encounteredText = false
// Processor to use with mini_html_converter
const processItem = (item) => {
// Handle text noes - just add emoji
if (typeof item === 'string') {
+ const emptyText = item.trim()
+ if (!emptyText) {
+ return encounteredText ? item : item.trim()
+ }
+ let unescapedItem = unescape(item)
+ if (!encounteredText) {
+ unescapedItem = unescapedItem.trimStart()
+ encounteredText = true
+ }
if (item.includes(':')) {
return processTextForEmoji(
- unescape(item),
+ unescapedItem,
this.emoji,
({ shortcode, url }) => {
return <StillImage
@@ -59,7 +70,7 @@ export default Vue.component('RichContent', {
}
)
} else {
- return unescape(item)
+ return unescapedItem
}
}
// Handle tag nodes
@@ -73,7 +84,7 @@ export default Vue.component('RichContent', {
if (!this.handleLinks) break
const attrs = getAttrs(opener)
if (attrs['class'] && attrs['class'].includes('mention')) {
- return renderMention(attrs, children)
+ return renderMention(attrs, children, encounteredText)
}
}
// Render tag as is