announcements_page.js (1395B)
- import { mapState } from 'vuex'
- import Announcement from '../announcement/announcement.vue'
- import AnnouncementEditor from '../announcement_editor/announcement_editor.vue'
- const AnnouncementsPage = {
- components: {
- Announcement,
- AnnouncementEditor
- },
- data () {
- return {
- newAnnouncement: {
- content: '',
- startsAt: undefined,
- endsAt: undefined,
- allDay: false
- },
- posting: false,
- error: undefined
- }
- },
- mounted () {
- this.$store.dispatch('fetchAnnouncements')
- },
- computed: {
- ...mapState({
- currentUser: state => state.users.currentUser
- }),
- announcements () {
- return this.$store.state.announcements.announcements
- },
- canPostAnnouncement () {
- return this.currentUser && this.currentUser.privileges.includes('announcements_manage_announcements')
- }
- },
- methods: {
- postAnnouncement () {
- this.posting = true
- this.$store.dispatch('postAnnouncement', this.newAnnouncement)
- .then(() => {
- this.newAnnouncement.content = ''
- this.startsAt = undefined
- this.endsAt = undefined
- })
- .catch(error => {
- this.error = error.error
- })
- .finally(() => {
- this.posting = false
- })
- },
- clearError () {
- this.error = undefined
- }
- }
- }
- export default AnnouncementsPage