import Flash from '../../../flash'; import AssigneeTitle from './assignee_title'; import Assignees from './assignees'; import Store from '../../stores/sidebar_store'; import eventHub from '../../event_hub'; export default { name: 'SidebarAssignees', data() { return { store: new Store(), loading: false, }; }, props: { mediator: { type: Object, required: true, }, field: { type: String, required: true, }, signedIn: { type: Boolean, required: false, default: false, }, }, components: { 'assignee-title': AssigneeTitle, assignees: Assignees, }, methods: { assignSelf() { // Notify gl dropdown that we are now assigning to current user this.$el.parentElement.dispatchEvent(new Event('assignYourself')); this.mediator.assignYourself(); this.saveAssignees(); }, saveAssignees() { this.loading = true; function setLoadingFalse() { this.loading = false; } this.mediator.saveAssignees(this.field) .then(setLoadingFalse.bind(this)) .catch(() => { setLoadingFalse(); return new Flash('Error occurred when saving assignees'); }); }, }, created() { this.removeAssignee = this.store.removeAssignee.bind(this.store); this.addAssignee = this.store.addAssignee.bind(this.store); this.removeAllAssignees = this.store.removeAllAssignees.bind(this.store); // Get events from glDropdown eventHub.$on('sidebar.removeAssignee', this.removeAssignee); eventHub.$on('sidebar.addAssignee', this.addAssignee); eventHub.$on('sidebar.removeAllAssignees', this.removeAllAssignees); eventHub.$on('sidebar.saveAssignees', this.saveAssignees); }, beforeDestroy() { eventHub.$off('sidebar.removeAssignee', this.removeAssignee); eventHub.$off('sidebar.addAssignee', this.addAssignee); eventHub.$off('sidebar.removeAllAssignees', this.removeAllAssignees); eventHub.$off('sidebar.saveAssignees', this.saveAssignees); }, template: `