Thread.vue 837 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. <template>
  2. <li
  3. class="thread-list-item"
  4. :class="{ active: isCurrentThread }"
  5. @click="onClick">
  6. <h5 class="thread-name">{{ thread.name }}</h5>
  7. <div class="thread-time">
  8. {{ lastMessage.timestamp | time }}
  9. </div>
  10. <div class="thread-last-message">
  11. {{ lastMessage.text }}
  12. </div>
  13. </li>
  14. </template>
  15. <script>
  16. import vuex from '../vuex'
  17. export default {
  18. props: ['thread'],
  19. computed: {
  20. isCurrentThread () {
  21. return this.thread.id === vuex.state.currentThreadID
  22. },
  23. lastMessage () {
  24. let last
  25. this.thread.messages.forEach(message => {
  26. if (!last || message.timestamp > last.timestamp) {
  27. last = message
  28. }
  29. })
  30. return last
  31. }
  32. },
  33. methods: {
  34. onClick () {
  35. vuex.actions.switchThread(this.thread.id)
  36. }
  37. }
  38. }
  39. </script>