better handling of hellthreads with mentions at bottom

This commit is contained in:
Henry Jameson 2021-06-11 03:11:58 +03:00
parent b84aeff6bf
commit f883d2f75c
10 changed files with 138 additions and 142 deletions

View file

@ -3,6 +3,7 @@ import RichContent, { getHeadTailLinks } from 'src/components/rich_content/rich_
import MentionsLine from 'src/components/mentions_line/mentions_line.vue'
import { mapGetters } from 'vuex'
import { library } from '@fortawesome/fontawesome-svg-core'
import { set } from 'vue'
import {
faFile,
faMusic,
@ -27,11 +28,7 @@ const StatusContent = {
'noHeading',
'fullContent',
'singleLine',
// if this was computed at upper level it can be passed here, otherwise
// it will be in this component
'headTailLinks',
'hideFirstMentions',
'hideLastMentions'
'hideMentions'
],
data () {
return {
@ -39,9 +36,9 @@ const StatusContent = {
showingLongSubject: false,
// not as computed because it sets the initial state which will be changed later
expandingSubject: !this.$store.getters.mergedConfig.collapseMessageWithSubject,
headTailLinksComputed: this.headTailLinks
? this.headTailLinks
: getHeadTailLinks(this.status.raw_html)
headTailLinks: null,
firstMentions: [],
lastMentions: []
}
},
computed: {
@ -81,12 +78,6 @@ const StatusContent = {
attachmentTypes () {
return this.status.attachments.map(file => fileType.fileType(file.mimetype))
},
mentionsFirst () {
return this.headTailLinksComputed.firstMentions
},
mentionsLast () {
return this.headTailLinksComputed.lastMentions
},
...mapGetters(['mergedConfig'])
},
components: {
@ -107,6 +98,11 @@ const StatusContent = {
this.expandingSubject = !this.expandingSubject
}
},
setHeadTailLinks (headTailLinks) {
set(this, 'headTailLinks', headTailLinks)
set(this, 'firstMentions', headTailLinks.firstMentions)
set(this, 'lastMentions', headTailLinks.lastMentions)
},
generateTagLink (tag) {
return `/tag/${tag}`
}

View file

@ -48,20 +48,21 @@
:html="status.raw_html"
:emoji="status.emojis"
:handle-links="true"
:hide-mentions="hideMentions"
:greentext="mergedConfig.greentext"
:hide-first-mentions="hideFirstMentions"
:hide-last-mentions="hideLastMentions"
@parseReady="setHeadTailLinks"
ref="text"
>
<template v-slot:prefix>
<MentionsLine
v-if="!hideFirstMentions && mentionsFirst"
:mentions="mentionsFirst"
v-if="!hideMentions && firstMentions && firstMentions.length > 0"
:mentions="firstMentions"
/>
</template>
<template v-slot:suffix>
<MentionsLine
v-if="!hideFirstMentions && mentionsLast"
:mentions="mentionsLast"
v-if="!hideMentions && lastMentions.length > 0 && firstMentions.length === 0"
:mentions="lastMentions"
/>
</template>
</RichContent>