logo

pleroma-fe

My custom branche(s) on git.pleroma.social/pleroma/pleroma-fe git clone https://anongit.hacktivis.me/git/pleroma-fe.git/

announcement.js (2938B)


  1. import { mapState } from 'vuex'
  2. import AnnouncementEditor from '../announcement_editor/announcement_editor.vue'
  3. import RichContent from '../rich_content/rich_content.jsx'
  4. import localeService from '../../services/locale/locale.service.js'
  5. import { useAnnouncementsStore } from 'src/stores/announcements'
  6. const Announcement = {
  7. components: {
  8. AnnouncementEditor,
  9. RichContent
  10. },
  11. data () {
  12. return {
  13. editing: false,
  14. editedAnnouncement: {
  15. content: '',
  16. startsAt: undefined,
  17. endsAt: undefined,
  18. allDay: undefined
  19. },
  20. editError: ''
  21. }
  22. },
  23. props: {
  24. announcement: Object
  25. },
  26. computed: {
  27. ...mapState({
  28. currentUser: state => state.users.currentUser
  29. }),
  30. canEditAnnouncement () {
  31. return this.currentUser && this.currentUser.privileges.includes('announcements_manage_announcements')
  32. },
  33. content () {
  34. return this.announcement.content
  35. },
  36. isRead () {
  37. return this.announcement.read
  38. },
  39. publishedAt () {
  40. const time = this.announcement.published_at
  41. if (!time) {
  42. return
  43. }
  44. return this.formatTimeOrDate(time, localeService.internalToBrowserLocale(this.$i18n.locale))
  45. },
  46. startsAt () {
  47. const time = this.announcement.starts_at
  48. if (!time) {
  49. return
  50. }
  51. return this.formatTimeOrDate(time, localeService.internalToBrowserLocale(this.$i18n.locale))
  52. },
  53. endsAt () {
  54. const time = this.announcement.ends_at
  55. if (!time) {
  56. return
  57. }
  58. return this.formatTimeOrDate(time, localeService.internalToBrowserLocale(this.$i18n.locale))
  59. },
  60. inactive () {
  61. return this.announcement.inactive
  62. }
  63. },
  64. methods: {
  65. markAsRead () {
  66. if (!this.isRead) {
  67. return useAnnouncementsStore().markAnnouncementAsRead(this.announcement.id)
  68. }
  69. },
  70. deleteAnnouncement () {
  71. return useAnnouncementsStore().deleteAnnouncement(this.announcement.id)
  72. },
  73. formatTimeOrDate (time, locale) {
  74. const d = new Date(time)
  75. return this.announcement.all_day ? d.toLocaleDateString(locale) : d.toLocaleString(locale)
  76. },
  77. enterEditMode () {
  78. this.editedAnnouncement.content = this.announcement.pleroma.raw_content
  79. this.editedAnnouncement.startsAt = this.announcement.starts_at
  80. this.editedAnnouncement.endsAt = this.announcement.ends_at
  81. this.editedAnnouncement.allDay = this.announcement.all_day
  82. this.editing = true
  83. },
  84. submitEdit () {
  85. useAnnouncementsStore().editAnnouncement({
  86. id: this.announcement.id,
  87. ...this.editedAnnouncement
  88. })
  89. .then(() => {
  90. this.editing = false
  91. })
  92. .catch(error => {
  93. this.editError = error.error
  94. })
  95. },
  96. cancelEdit () {
  97. this.editing = false
  98. },
  99. clearError () {
  100. this.editError = undefined
  101. }
  102. }
  103. }
  104. export default Announcement