aboutsummaryrefslogtreecommitdiff
path: root/src/components/conversation/conversation.js
diff options
context:
space:
mode:
authorHJ <30-hj@users.noreply.git.pleroma.social>2019-03-25 19:21:48 +0000
committerHJ <30-hj@users.noreply.git.pleroma.social>2019-03-25 19:21:48 +0000
commit04217fc6604ff6c4454ba0291c081a927a46d03c (patch)
treee802758f03cf83e8089cbfa7fcec1aa520f43387 /src/components/conversation/conversation.js
parentfe13b1b75a42d03a813072633194f89385acec8e (diff)
parent854d0e80512d2da80cd5153144698a5148da4aa6 (diff)
Merge branch 'develop' into 'mastoapi/friends-tl'
# Conflicts: # src/services/api/api.service.js
Diffstat (limited to 'src/components/conversation/conversation.js')
-rw-r--r--src/components/conversation/conversation.js33
1 files changed, 26 insertions, 7 deletions
diff --git a/src/components/conversation/conversation.js b/src/components/conversation/conversation.js
index 48b8aaaa..e806be8e 100644
--- a/src/components/conversation/conversation.js
+++ b/src/components/conversation/conversation.js
@@ -1,4 +1,5 @@
import { reduce, filter } from 'lodash'
+import { set } from 'vue'
import Status from '../status/status.vue'
const sortById = (a, b) => {
@@ -25,7 +26,8 @@ const sortAndFilterConversation = (conversation) => {
const conversation = {
data () {
return {
- highlight: null
+ highlight: null,
+ converationStatusIds: []
}
},
props: [
@@ -36,6 +38,15 @@ const conversation = {
status () {
return this.statusoid
},
+ idsToShow () {
+ if (this.converationStatusIds.length > 0) {
+ return this.converationStatusIds
+ } else if (this.statusId) {
+ return [this.statusId]
+ } else {
+ return []
+ }
+ },
statusId () {
if (this.statusoid.retweeted_status) {
return this.statusoid.retweeted_status.id
@@ -48,9 +59,11 @@ const conversation = {
return []
}
- const conversationId = this.status.statusnet_conversation_id
- const statuses = this.$store.state.statuses.allStatuses
- const conversation = filter(statuses, { statusnet_conversation_id: conversationId })
+ const statusesObject = this.$store.state.statuses.allStatusesObject
+ const conversation = this.idsToShow.reduce((acc, id) => {
+ acc.push(statusesObject[id])
+ return acc
+ }, [])
return sortAndFilterConversation(conversation)
},
replies () {
@@ -83,9 +96,15 @@ const conversation = {
methods: {
fetchConversation () {
if (this.status) {
- const conversationId = this.status.statusnet_conversation_id
- this.$store.state.api.backendInteractor.fetchConversation({id: conversationId})
- .then((statuses) => this.$store.dispatch('addNewStatuses', { statuses }))
+ this.$store.state.api.backendInteractor.fetchConversation({id: this.status.id})
+ .then(({ancestors, descendants}) => {
+ this.$store.dispatch('addNewStatuses', { statuses: ancestors })
+ this.$store.dispatch('addNewStatuses', { statuses: descendants })
+ set(this, 'converationStatusIds', [].concat(
+ ancestors.map(_ => _.id),
+ this.statusId,
+ descendants.map(_ => _.id)))
+ })
.then(() => this.setHighlight(this.statusId))
} else {
const id = this.$route.params.id