48 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
			
		
		
	
	
			48 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
| import { default as computed, on } from 'ember-addons/ember-computed-decorators';
 | |
| import { popupAjaxError } from 'discourse/lib/ajax-error';
 | |
| 
 | |
| export default Ember.Controller.extend({
 | |
|   newNote: null,
 | |
|   saving: false,
 | |
|   user: null,
 | |
| 
 | |
|   @on('init')
 | |
|   reset() {
 | |
|     this.setProperties({ newNote: null, saving: false, callback: null });
 | |
|   },
 | |
| 
 | |
|   @computed('newNote', 'saving')
 | |
|   attachDisabled(newNote, saving) {
 | |
|     return saving || !newNote || (newNote.length === 0);
 | |
|   },
 | |
| 
 | |
|   _refreshCount() {
 | |
|     const callback = this.get('callback');
 | |
|     if (callback) {
 | |
|       callback(this.get('model.length'));
 | |
|     }
 | |
|   },
 | |
| 
 | |
|   actions: {
 | |
|     attachNote() {
 | |
|       const note = this.store.createRecord('staff-note');
 | |
|       const userId = parseInt(this.get('userId'));
 | |
| 
 | |
|       this.set('saving', true);
 | |
|       note.save({ raw: this.get('newNote'), user_id: userId }).then(() => {
 | |
|         this.set('newNote', '');
 | |
|         this.get('model').pushObject(note);
 | |
|         this._refreshCount();
 | |
|       }).catch(popupAjaxError).finally(() => this.set('saving', false));
 | |
|     },
 | |
| 
 | |
|     removeNote(note) {
 | |
|       note.destroyRecord().then(() => {
 | |
|         const notes = this.get('model');
 | |
|         notes.removeObject(note);
 | |
|         this._refreshCount();
 | |
|       });
 | |
|     }
 | |
|   }
 | |
| });
 |