From 99c2c48c0843f7c329eebdabbd3fd430d2656ebb Mon Sep 17 00:00:00 2001 From: Ahmed Gagan Date: Fri, 14 Aug 2020 16:07:34 +0530 Subject: [PATCH] DEV: Refactors following code review (#100) --- .../controllers/group-assigned.js.es6 | 62 ++++++++++--------- .../routes/group-assigned.js.es6 | 1 + .../components/group-assigned-filter.hbs | 4 +- .../discourse/templates/group/assigned.hbs | 10 ++- 4 files changed, 43 insertions(+), 34 deletions(-) diff --git a/assets/javascripts/discourse-assign/controllers/group-assigned.js.es6 b/assets/javascripts/discourse-assign/controllers/group-assigned.js.es6 index 693f016..b072921 100644 --- a/assets/javascripts/discourse-assign/controllers/group-assigned.js.es6 +++ b/assets/javascripts/discourse-assign/controllers/group-assigned.js.es6 @@ -1,8 +1,10 @@ import { inject as service } from "@ember/service"; import Controller, { inject as controller } from "@ember/controller"; +import { action } from "@ember/object"; +import { debounce } from "@ember/runloop"; import { ajax } from "discourse/lib/ajax"; -import discourseComputed, { observes } from "discourse-common/utils/decorators"; -import discourseDebounce from "discourse/lib/debounce"; +import discourseComputed from "discourse-common/utils/decorators"; +import { INPUT_DELAY } from "discourse-common/config/environment"; export default Controller.extend({ router: service(), @@ -17,30 +19,25 @@ export default Controller.extend({ return !mobileView; }, - @observes("filterName") - _setFilter: discourseDebounce(function() { - this.set("filter", this.filterName); - }, 500), - - @observes("filter") - _filterModel() { + _setFilter(filter) { this.set("loading", true); this.set("offset", 0); - ajax(`/assign/members/${this.group.name}`, { + this.set("filter", filter); + + const groupName = this.group.name; + ajax(`/assign/members/${groupName}`, { type: "GET", data: { filter: this.filter, offset: this.offset } - }).then(result => { - if (this.router.currentRoute.params.filter !== "everyone") { - this.transitionToRoute("group.assigned.show", "everyone"); - } - this.set("members", result.members); - this.set("loading", false); - }); - }, - - @observes("model.assignment_count") - assignmentCountChanged() { - this.set("group.assignment_count", this.model.assignment_count); + }) + .then(result => { + if (this.router.currentRoute.params.filter !== "everyone") { + this.transitionToRoute("group.assigned.show", groupName, "everyone"); + } + this.set("members", result.members); + }) + .finally(() => { + this.set("loading", false); + }); }, findMembers(refresh) { @@ -59,16 +56,21 @@ export default Controller.extend({ ajax(`/assign/members/${this.group.name}`, { type: "GET", data: { filter: this.filter, offset: this.offset } - }).then(result => { - this.members.pushObjects(result.members); - this.set("loading", false); - }); + }) + .then(result => { + this.members.pushObjects(result.members); + }) + .finally(() => this.set("loading", false)); } }, - actions: { - loadMore: function() { - this.findMembers(); - } + @action + loadMore() { + this.findMembers(); + }, + + @action + onChangeFilterName(value) { + debounce(this, this._setFilter, value, INPUT_DELAY * 2); } }); diff --git a/assets/javascripts/discourse-assign/routes/group-assigned.js.es6 b/assets/javascripts/discourse-assign/routes/group-assigned.js.es6 index 6e38895..244d62d 100644 --- a/assets/javascripts/discourse-assign/routes/group-assigned.js.es6 +++ b/assets/javascripts/discourse-assign/routes/group-assigned.js.es6 @@ -12,6 +12,7 @@ export default DiscourseRoute.extend({ members: [], group: this.modelFor("group") }); + controller.group.set("assignment_count", model.assignment_count); controller.findMembers(true); }, diff --git a/assets/javascripts/discourse/templates/components/group-assigned-filter.hbs b/assets/javascripts/discourse/templates/components/group-assigned-filter.hbs index 3d52373..a90e6b9 100644 --- a/assets/javascripts/discourse/templates/components/group-assigned-filter.hbs +++ b/assets/javascripts/discourse/templates/components/group-assigned-filter.hbs @@ -1,7 +1,7 @@ {{#if show-avatar}} {{#link-to "group.assigned.show" filter.username_lower}}
- {{avatar filter imageSize="large"}} + {{avatar filter imageSize="large"}}
@@ -19,7 +19,7 @@ {{i18n 'discourse_assign.group_everyone'}}
- {{assignment_count}} + {{assignmentCount}}
{{/link-to}} {{/if}} diff --git a/assets/javascripts/discourse/templates/group/assigned.hbs b/assets/javascripts/discourse/templates/group/assigned.hbs index db6b467..e8b68e5 100644 --- a/assets/javascripts/discourse/templates/group/assigned.hbs +++ b/assets/javascripts/discourse/templates/group/assigned.hbs @@ -2,11 +2,17 @@ {{#mobile-nav class="activity-nav" desktopClass="action-list activity-list nav-stacked" currentPath=router._router.currentPath}} {{#if isDesktop}}
- {{input type="text" placeholder=(i18n "discourse_assign.sidebar_name_filter_placeholder") value=filterName class="search"}} + {{input + type="text" + placeholder=(i18n "discourse_assign.sidebar_name_filter_placeholder") + value=filterName + class="search" + input=(action "onChangeFilterName" value="target.value") + }}
{{/if}} {{#load-more selector=".activity-nav li" action=(action "loadMore")}} - {{group-assigned-filter show-avatar=false filter="everyone" routeType=route_type assignment_count=group.assignment_count}} + {{group-assigned-filter show-avatar=false filter="everyone" routeType=route_type assignmentCount=group.assignment_count}} {{#each members as |member|}} {{group-assigned-filter show-avatar=true filter=member routeType=route_type}} {{/each}}