diff options
| author | Henry Jameson <me@hjkos.com> | 2019-03-25 21:12:15 +0200 |
|---|---|---|
| committer | Henry Jameson <me@hjkos.com> | 2019-03-25 21:12:15 +0200 |
| commit | 0ffd43954eb36d61feab7a0a8fb91f86a6857f75 (patch) | |
| tree | 3f0b597e37613eda5d0840bc7f6e1d33b84cead4 /src/components/conversation/conversation.js | |
| parent | 4a5aef8883d3e92a58e272857cdfb303da61feb2 (diff) | |
| parent | 854d0e80512d2da80cd5153144698a5148da4aa6 (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/components/conversation/conversation.js')
| -rw-r--r-- | src/components/conversation/conversation.js | 33 |
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 |
