direct_conversation_timeline_item.js (2389B)
1 import DirectConversationAvatar from '../direct_conversation_avatar/direct_conversation_avatar.vue' 2 import AvatarList from '../avatar_list/avatar_list.vue' 3 import Timeago from '../timeago/timeago.vue' 4 import DirectConversationTitle from '../direct_conversation_title/direct_conversation_title.vue' 5 import fileType from 'src/services/file_type/file_type.service' 6 7 const DirectConversationTimelineItem = { 8 name: 'DirectConversationTimelineItem', 9 props: [ 10 'statusoid', 11 'conversation_recipients', 12 'conversation_id', 13 'unread' 14 ], 15 components: { 16 DirectConversationAvatar, 17 AvatarList, 18 Timeago, 19 DirectConversationTitle 20 }, 21 data () { 22 return { 23 betterShadow: this.$store.state.interface.browserSupport.cssFilter 24 } 25 }, 26 computed: { 27 author () { 28 if (this.otherParticipants.length > 1) { 29 return this.status.user.name_html 30 } 31 }, 32 otherParticipants () { 33 if (this.conversation_recipients) { 34 const currentUser = this.$store.state.users.currentUser 35 const other = this.conversation_recipients.filter(recipient => recipient.id !== currentUser.id) 36 37 return other 38 } else { 39 return [] 40 } 41 }, 42 deleted () { 43 return this.statusoid.deleted 44 }, 45 currentUser () { 46 return this.$store.state.users.currentUser 47 }, 48 status () { 49 return this.statusoid 50 }, 51 attachmentInfo () { 52 let types = this.status.attachments.map(file => fileType.fileType(file.mimetype)) 53 if (types.length === 0) { return } 54 if (types.includes('video')) { 55 return this.$t('direct_conversations.video') 56 } else if (types.includes('audio')) { 57 return this.$t('direct_conversations.audio') 58 } else if (types.includes('image')) { 59 return this.$t('direct_conversations.image') 60 } else { 61 return this.$t('direct_conversations.file') 62 } 63 }, 64 contentHtml () { 65 if (!this.status.summary_html) { 66 return this.status.statusnet_html 67 } 68 return this.status.summary_html + '<br />' + this.status.statusnet_html 69 } 70 }, 71 methods: { 72 openConversation (_e) { 73 if (this.conversation_id) { 74 this.$router.push({ name: 'direct-conversation', params: { username: this.currentUser.screen_name, id: this.conversation_id } }) 75 } 76 } 77 } 78 } 79 80 export default DirectConversationTimelineItem