From 89962793d0244006a4e0ddfe0a2f41ff2084b042 Mon Sep 17 00:00:00 2001 From: Robin Ward Date: Mon, 12 Dec 2016 11:54:43 -0500 Subject: [PATCH] Update to new Connector API --- .../show-notes-on-profile.js.es6 | 22 ++++++++++++++++ .../lib/staff-notes.js.es6 | 18 +++++++++++++ .../initializers/enable-staff-notes.js.es6 | 25 +++---------------- .../discourse/templates/modal/staff-notes.hbs | 5 ++-- 4 files changed, 45 insertions(+), 25 deletions(-) create mode 100644 assets/javascripts/discourse-staff-notes/connectors/user-profile-controls/show-notes-on-profile.js.es6 create mode 100644 assets/javascripts/discourse-staff-notes/lib/staff-notes.js.es6 diff --git a/assets/javascripts/discourse-staff-notes/connectors/user-profile-controls/show-notes-on-profile.js.es6 b/assets/javascripts/discourse-staff-notes/connectors/user-profile-controls/show-notes-on-profile.js.es6 new file mode 100644 index 0000000..ef377cf --- /dev/null +++ b/assets/javascripts/discourse-staff-notes/connectors/user-profile-controls/show-notes-on-profile.js.es6 @@ -0,0 +1,22 @@ +import { showStaffNotes } from 'discourse/plugins/staff-notes/discourse-staff-notes/lib/staff-notes'; +import { getOwner } from 'discourse-common/lib/get-owner'; + +export default { + shouldRender(args, component) { + const { siteSettings, currentUser } = component; + return siteSettings.staff_notes_enabled && currentUser && currentUser.staff; + }, + + setupComponent(args, component) { + const { model } = args; + component.set('staffNotesCount', model.get('custom_fields.staff_notes_count') || 0); + }, + + actions: { + showStaffNotes() { + const store = getOwner(this).lookup('store:main'); + const user = this.get('args.model'); + showStaffNotes(store, user.get('id'), count => this.set('staffNotesCount', count)); + } + } +}; diff --git a/assets/javascripts/discourse-staff-notes/lib/staff-notes.js.es6 b/assets/javascripts/discourse-staff-notes/lib/staff-notes.js.es6 new file mode 100644 index 0000000..5b684ac --- /dev/null +++ b/assets/javascripts/discourse-staff-notes/lib/staff-notes.js.es6 @@ -0,0 +1,18 @@ +import showModal from 'discourse/lib/show-modal'; +import loadScript from 'discourse/lib/load-script'; + +export function showStaffNotes(store, userId, callback) { + return loadScript('defer/html-sanitizer-bundle').then(() => { + return store.find('staff-note', { user_id: userId }).then(model => { + const controller = showModal('staff-notes', { + model, + title: 'staff_notes.title', + addModalBodyView: true + }); + controller.reset(); + controller.set('userId', userId); + controller.set('callback', callback); + return controller; + }); + }); +} diff --git a/assets/javascripts/discourse/initializers/enable-staff-notes.js.es6 b/assets/javascripts/discourse/initializers/enable-staff-notes.js.es6 index ee54af0..0d751b0 100644 --- a/assets/javascripts/discourse/initializers/enable-staff-notes.js.es6 +++ b/assets/javascripts/discourse/initializers/enable-staff-notes.js.es6 @@ -1,7 +1,6 @@ import { withPluginApi } from 'discourse/lib/plugin-api'; -import showModal from 'discourse/lib/show-modal'; -import loadScript from 'discourse/lib/load-script'; import { iconNode } from 'discourse/helpers/fa-icon-node'; +import { showStaffNotes } from 'discourse/plugins/staff-notes/discourse-staff-notes/lib/staff-notes'; export default { name: 'enable-staff-notes', @@ -11,26 +10,9 @@ export default { if (!siteSettings.staff_notes_enabled || !currentUser || !currentUser.staff) { return; } const store = container.lookup('store:main'); - withPluginApi('0.2', api => { - function showStaffNotes(userId, callback) { - return loadScript('defer/html-sanitizer-bundle').then(() => { - return store.find('staff-note', { user_id: userId }).then(model => { - const controller = showModal('staff-notes', { - model, - title: 'staff_notes.title', - addModalBodyView: true - }); - controller.reset(); - controller.set('userId', userId); - controller.set('callback', callback); - return controller; - }); - }); - } - function widgetShowStaffNotes() { - showStaffNotes(this.attrs.user_id, count => { + showStaffNotes(store, this.attrs.user_id, count => { this.sendWidgetAction('refreshStaffNotes', count); }); } @@ -52,12 +34,11 @@ export default { actions: { showStaffNotes() { const user = this.get('model'); - showStaffNotes(user.get('id'), count => this.set('staffNotesCount', count)); + showStaffNotes(store, user.get('id'), count => this.set('staffNotesCount', count)); } } }); - const mobileView = api.container.lookup('site:main').mobileView; const loc = mobileView ? 'before' : 'after'; api.decorateWidget(`poster-name:${loc}`, dec => { diff --git a/assets/javascripts/discourse/templates/modal/staff-notes.hbs b/assets/javascripts/discourse/templates/modal/staff-notes.hbs index 86c5eb3..369a780 100644 --- a/assets/javascripts/discourse/templates/modal/staff-notes.hbs +++ b/assets/javascripts/discourse/templates/modal/staff-notes.hbs @@ -1,5 +1,4 @@ -