From 90f934a66033d967fa7893b4ba57bb4d3ae5ee65 Mon Sep 17 00:00:00 2001 From: Robin Ward Date: Thu, 31 Oct 2019 13:37:24 -0400 Subject: [PATCH] REFACTOR: Use a module for `Ember.isEmpty` --- .../admin/components/admin-user-field-item.js.es6 | 3 ++- .../admin/components/embeddable-host.js.es6 | 3 ++- .../admin/components/secret-value-list.js.es6 | 3 ++- .../admin/components/site-settings/bool.js.es6 | 3 ++- .../admin/components/watched-word-form.js.es6 | 3 ++- .../admin/controllers/admin-site-settings.js.es6 | 3 ++- .../admin/controllers/admin-watched-words.js.es6 | 5 +++-- .../admin/controllers/admin-web-hooks-show.js.es6 | 7 ++++--- .../controllers/modals/admin-add-upload.js.es6 | 3 ++- .../controllers/modals/admin-silence-user.js.es6 | 3 ++- .../controllers/modals/admin-suspend-user.js.es6 | 3 ++- app/assets/javascripts/admin/models/report.js.es6 | 3 ++- app/assets/javascripts/admin/models/theme.js.es6 | 9 +++++---- .../javascripts/admin/models/web-hook.js.es6 | 9 +++++---- .../admin/routes/admin-web-hooks-show.js.es6 | 3 ++- app/assets/javascripts/discourse-loader.js | 3 +++ .../categories-boxes-with-topics.js.es6 | 3 ++- .../discourse/components/categories-boxes.js.es6 | 5 +++-- .../discourse/components/choose-message.js.es6 | 3 ++- .../discourse/components/choose-topic.js.es6 | 3 ++- .../components/edit-category-general.js.es6 | 3 ++- .../components/edit-topic-timer-form.js.es6 | 3 ++- .../discourse/components/future-date-input.js.es6 | 3 ++- .../components/group-members-input.js.es6 | 3 ++- .../discourse/components/group-selector.js.es6 | 3 ++- .../components/groups-form-profile-fields.js.es6 | 3 ++- .../discourse/components/image-uploader.js.es6 | 7 ++++--- .../discourse/components/invite-panel.js.es6 | 11 ++++++----- .../discourse/components/share-panel.js.es6 | 3 ++- .../discourse/components/share-popup.js.es6 | 3 ++- .../discourse/components/tag-groups-form.js.es6 | 3 ++- .../components/user-card-contents.js.es6 | 7 ++++--- .../discourse/components/user-selector.js.es6 | 3 ++- .../discourse/controllers/add-post-notice.js.es6 | 3 ++- .../discourse/controllers/change-owner.js.es6 | 3 ++- .../discourse/controllers/change-timestamp.js.es6 | 3 ++- .../discourse/controllers/composer.js.es6 | 9 +++++---- .../discourse/controllers/create-account.js.es6 | 11 ++++++----- .../discourse/controllers/edit-category.js.es6 | 3 ++- .../discourse/controllers/forgot-password.js.es6 | 3 ++- .../discourse/controllers/full-page-search.js.es6 | 3 ++- .../controllers/group-add-members.js.es6 | 3 ++- .../discourse/controllers/group-bulk-add.js.es6 | 3 ++- .../discourse/controllers/insert-hyperlink.js.es6 | 3 ++- .../discourse/controllers/invites-show.js.es6 | 3 ++- .../discourse/controllers/login.js.es6 | 5 +++-- .../discourse/controllers/move-to-topic.js.es6 | 3 ++- .../controllers/preferences/account.js.es6 | 3 ++- .../controllers/preferences/profile.js.es6 | 7 ++++--- .../controllers/preferences/username.js.es6 | 3 ++- .../request-group-membership-form.js.es6 | 3 ++- .../discourse/controllers/topic.js.es6 | 5 +++-- .../javascripts/discourse/controllers/user.js.es6 | 7 ++++--- .../helpers/bound-avatar-template.js.es6 | 3 ++- .../discourse/helpers/bound-avatar.js.es6 | 3 ++- .../discourse/helpers/dash-if-empty.js.es6 | 3 ++- .../discourse/helpers/icon-or-image.js.es6 | 5 +++-- .../javascripts/discourse/lib/logout.js.es6 | 3 ++- .../javascripts/discourse/lib/search.js.es6 | 3 ++- .../discourse/lib/transform-post.js.es6 | 3 ++- app/assets/javascripts/discourse/lib/url.js.es6 | 5 +++-- .../discourse/mixins/name-validation.js.es6 | 3 ++- .../discourse/mixins/password-validation.js.es6 | 7 ++++--- .../mixins/user-fields-validation.js.es6 | 5 +++-- .../discourse/mixins/username-validation.js.es6 | 7 ++++--- .../javascripts/discourse/models/composer.js.es6 | 11 ++++++----- .../javascripts/discourse/models/group.js.es6 | 5 +++-- .../javascripts/discourse/models/model.js.es6 | 3 ++- .../discourse/models/post-stream.js.es6 | 11 ++++++----- .../javascripts/discourse/models/post.js.es6 | 3 ++- .../javascripts/discourse/models/site.js.es6 | 3 ++- .../discourse/models/topic-tracking-state.js.es6 | 3 ++- .../javascripts/discourse/models/user.js.es6 | 15 ++++++++------- .../discourse/routes/topic-from-params.js.es6 | 3 ++- .../javascripts/discourse/routes/topic.js.es6 | 3 ++- .../discourse/services/logs-notice.js.es6 | 7 ++++--- .../widgets/default-notification-item.js.es6 | 3 ++- .../liked-consolidated-notification-item.js.es6 | 3 ++- .../category-drop/category-drop-header.js.es6 | 3 ++- .../select-kit/components/category-row.js.es6 | 3 ++- .../components/future-date-input-selector.js.es6 | 3 ++- .../javascripts/select-kit/mixins/events.js.es6 | 15 ++++++++------- app/helpers/application_helper.rb | 1 + .../discourse-local-dates-create-form.js.es6 | 3 ++- test/javascripts/helpers/qunit-helpers.js.es6 | 5 +++-- 85 files changed, 232 insertions(+), 145 deletions(-) diff --git a/app/assets/javascripts/admin/components/admin-user-field-item.js.es6 b/app/assets/javascripts/admin/components/admin-user-field-item.js.es6 index 4c6392635da..23bfac19b42 100644 --- a/app/assets/javascripts/admin/components/admin-user-field-item.js.es6 +++ b/app/assets/javascripts/admin/components/admin-user-field-item.js.es6 @@ -1,3 +1,4 @@ +import { isEmpty } from "@ember/utils"; import { empty } from "@ember/object/computed"; import { scheduleOnce } from "@ember/runloop"; import Component from "@ember/component"; @@ -96,7 +97,7 @@ export default Component.extend(bufferedProperty("userField"), { cancel() { const id = this.get("userField.id"); - if (Ember.isEmpty(id)) { + if (isEmpty(id)) { this.destroyAction(this.userField); } else { this.rollbackBuffer(); diff --git a/app/assets/javascripts/admin/components/embeddable-host.js.es6 b/app/assets/javascripts/admin/components/embeddable-host.js.es6 index 98e1eab93af..57829b45fb9 100644 --- a/app/assets/javascripts/admin/components/embeddable-host.js.es6 +++ b/app/assets/javascripts/admin/components/embeddable-host.js.es6 @@ -1,3 +1,4 @@ +import { isEmpty } from "@ember/utils"; import { or } from "@ember/object/computed"; import { schedule } from "@ember/runloop"; import Component from "@ember/component"; @@ -23,7 +24,7 @@ export default Component.extend(bufferedProperty("host"), { @computed("buffered.host", "host.isSaving") cantSave(host, isSaving) { - return isSaving || Ember.isEmpty(host); + return isSaving || isEmpty(host); }, actions: { diff --git a/app/assets/javascripts/admin/components/secret-value-list.js.es6 b/app/assets/javascripts/admin/components/secret-value-list.js.es6 index db384bd5c6c..1822ba196a2 100644 --- a/app/assets/javascripts/admin/components/secret-value-list.js.es6 +++ b/app/assets/javascripts/admin/components/secret-value-list.js.es6 @@ -1,3 +1,4 @@ +import { isEmpty } from "@ember/utils"; import Component from "@ember/component"; import { on } from "ember-addons/ember-computed-decorators"; @@ -43,7 +44,7 @@ export default Component.extend({ _checkInvalidInput(inputs) { this.set("validationMessage", null); for (let input of inputs) { - if (Ember.isEmpty(input) || input.includes("|")) { + if (isEmpty(input) || input.includes("|")) { this.set( "validationMessage", I18n.t("admin.site_settings.secret_list.invalid_input") diff --git a/app/assets/javascripts/admin/components/site-settings/bool.js.es6 b/app/assets/javascripts/admin/components/site-settings/bool.js.es6 index 5bfc0612afd..2b2fdaca8e3 100644 --- a/app/assets/javascripts/admin/components/site-settings/bool.js.es6 +++ b/app/assets/javascripts/admin/components/site-settings/bool.js.es6 @@ -1,3 +1,4 @@ +import { isEmpty } from "@ember/utils"; import Component from "@ember/component"; import computed from "ember-addons/ember-computed-decorators"; @@ -5,7 +6,7 @@ export default Component.extend({ @computed("value") enabled: { get(value) { - if (Ember.isEmpty(value)) { + if (isEmpty(value)) { return false; } return value.toString() === "true"; diff --git a/app/assets/javascripts/admin/components/watched-word-form.js.es6 b/app/assets/javascripts/admin/components/watched-word-form.js.es6 index 74bbeeff1eb..629c5a2b6a7 100644 --- a/app/assets/javascripts/admin/components/watched-word-form.js.es6 +++ b/app/assets/javascripts/admin/components/watched-word-form.js.es6 @@ -1,3 +1,4 @@ +import { isEmpty } from "@ember/utils"; import { schedule } from "@ember/runloop"; import Component from "@ember/component"; import WatchedWord from "admin/models/watched-word"; @@ -23,7 +24,7 @@ export default Component.extend({ @observes("word") removeMessage() { - if (this.showMessage && !Ember.isEmpty(this.word)) { + if (this.showMessage && !isEmpty(this.word)) { this.set("showMessage", false); } }, diff --git a/app/assets/javascripts/admin/controllers/admin-site-settings.js.es6 b/app/assets/javascripts/admin/controllers/admin-site-settings.js.es6 index 100ff83295b..fe35885617c 100644 --- a/app/assets/javascripts/admin/controllers/admin-site-settings.js.es6 +++ b/app/assets/javascripts/admin/controllers/admin-site-settings.js.es6 @@ -1,3 +1,4 @@ +import { isEmpty } from "@ember/utils"; import { alias } from "@ember/object/computed"; import Controller from "@ember/controller"; import debounce from "discourse/lib/debounce"; @@ -10,7 +11,7 @@ export default Controller.extend({ filterContentNow(category) { // If we have no content, don't bother filtering anything - if (!!Ember.isEmpty(this.allSiteSettings)) return; + if (!!isEmpty(this.allSiteSettings)) return; let filter; if (this.filter) { diff --git a/app/assets/javascripts/admin/controllers/admin-watched-words.js.es6 b/app/assets/javascripts/admin/controllers/admin-watched-words.js.es6 index db269043ee9..397c5b030ea 100644 --- a/app/assets/javascripts/admin/controllers/admin-watched-words.js.es6 +++ b/app/assets/javascripts/admin/controllers/admin-watched-words.js.es6 @@ -1,3 +1,4 @@ +import { isEmpty } from "@ember/utils"; import { alias } from "@ember/object/computed"; import EmberObject from "@ember/object"; import Controller from "@ember/controller"; @@ -11,7 +12,7 @@ export default Controller.extend({ regularExpressions: null, filterContentNow() { - if (!!Ember.isEmpty(this.allWatchedWords)) return; + if (!!isEmpty(this.allWatchedWords)) return; let filter; if (this.filter) { @@ -44,7 +45,7 @@ export default Controller.extend({ filterContent: debounce(function() { this.filterContentNow(); - this.set("filtered", !Ember.isEmpty(this.filter)); + this.set("filtered", !isEmpty(this.filter)); }, 250).observes("filter"), actions: { diff --git a/app/assets/javascripts/admin/controllers/admin-web-hooks-show.js.es6 b/app/assets/javascripts/admin/controllers/admin-web-hooks-show.js.es6 index 0a331bf8cfb..83de79e1f01 100644 --- a/app/assets/javascripts/admin/controllers/admin-web-hooks-show.js.es6 +++ b/app/assets/javascripts/admin/controllers/admin-web-hooks-show.js.es6 @@ -1,3 +1,4 @@ +import { isEmpty } from "@ember/utils"; import { alias } from "@ember/object/computed"; import { inject } from "@ember/controller"; import Controller from "@ember/controller"; @@ -38,7 +39,7 @@ export default Controller.extend({ @computed("model.secret") secretValidation(secret) { - if (!Ember.isEmpty(secret)) { + if (!isEmpty(secret)) { if (secret.indexOf(" ") !== -1) { return InputValidation.create({ failed: true, @@ -57,7 +58,7 @@ export default Controller.extend({ @computed("model.wildcard_web_hook", "model.web_hook_event_types.[]") eventTypeValidation(isWildcard, eventTypes) { - if (!isWildcard && Ember.isEmpty(eventTypes)) { + if (!isWildcard && isEmpty(eventTypes)) { return InputValidation.create({ failed: true, reason: I18n.t("admin.web_hooks.event_type_missing") @@ -79,7 +80,7 @@ export default Controller.extend({ ) { return isSaving ? false - : secretValidation || eventTypeValidation || Ember.isEmpty(payloadUrl); + : secretValidation || eventTypeValidation || isEmpty(payloadUrl); }, actions: { diff --git a/app/assets/javascripts/admin/controllers/modals/admin-add-upload.js.es6 b/app/assets/javascripts/admin/controllers/modals/admin-add-upload.js.es6 index 3d0abf50374..d53278c8564 100644 --- a/app/assets/javascripts/admin/controllers/modals/admin-add-upload.js.es6 +++ b/app/assets/javascripts/admin/controllers/modals/admin-add-upload.js.es6 @@ -1,3 +1,4 @@ +import { isEmpty } from "@ember/utils"; import { and, not } from "@ember/object/computed"; import { inject } from "@ember/controller"; import Controller from "@ember/controller"; @@ -107,7 +108,7 @@ export default Controller.extend(ModalFunctionality, { actions: { updateName() { let name = this.name; - if (Ember.isEmpty(name)) { + if (isEmpty(name)) { name = $("#file-input")[0].files[0].name; this.set("name", name.split(".")[0]); } diff --git a/app/assets/javascripts/admin/controllers/modals/admin-silence-user.js.es6 b/app/assets/javascripts/admin/controllers/modals/admin-silence-user.js.es6 index 15aa4a28065..a64416f2ef7 100644 --- a/app/assets/javascripts/admin/controllers/modals/admin-silence-user.js.es6 +++ b/app/assets/javascripts/admin/controllers/modals/admin-silence-user.js.es6 @@ -1,3 +1,4 @@ +import { isEmpty } from "@ember/utils"; import Controller from "@ember/controller"; import computed from "ember-addons/ember-computed-decorators"; import PenaltyController from "admin/mixins/penalty-controller"; @@ -14,7 +15,7 @@ export default Controller.extend(PenaltyController, { @computed("silenceUntil", "reason", "silencing") submitDisabled(silenceUntil, reason, silencing) { return ( - silencing || Ember.isEmpty(silenceUntil) || !reason || reason.length < 1 + silencing || isEmpty(silenceUntil) || !reason || reason.length < 1 ); }, diff --git a/app/assets/javascripts/admin/controllers/modals/admin-suspend-user.js.es6 b/app/assets/javascripts/admin/controllers/modals/admin-suspend-user.js.es6 index 18a9e42e588..6a558b21305 100644 --- a/app/assets/javascripts/admin/controllers/modals/admin-suspend-user.js.es6 +++ b/app/assets/javascripts/admin/controllers/modals/admin-suspend-user.js.es6 @@ -1,3 +1,4 @@ +import { isEmpty } from "@ember/utils"; import Controller from "@ember/controller"; import computed from "ember-addons/ember-computed-decorators"; import PenaltyController from "admin/mixins/penalty-controller"; @@ -14,7 +15,7 @@ export default Controller.extend(PenaltyController, { @computed("suspendUntil", "reason", "suspending") submitDisabled(suspendUntil, reason, suspending) { return ( - suspending || Ember.isEmpty(suspendUntil) || !reason || reason.length < 1 + suspending || isEmpty(suspendUntil) || !reason || reason.length < 1 ); }, diff --git a/app/assets/javascripts/admin/models/report.js.es6 b/app/assets/javascripts/admin/models/report.js.es6 index b85e2e8c793..df99f0b5be6 100644 --- a/app/assets/javascripts/admin/models/report.js.es6 +++ b/app/assets/javascripts/admin/models/report.js.es6 @@ -1,3 +1,4 @@ +import { isEmpty } from "@ember/utils"; import EmberObject from "@ember/object"; import { escapeExpression } from "discourse/lib/utilities"; import { ajax } from "discourse/lib/ajax"; @@ -392,7 +393,7 @@ const Report = Discourse.Model.extend({ }, _numberLabel(value, options = {}) { - const formatNumbers = Ember.isEmpty(options.formatNumbers) + const formatNumbers = isEmpty(options.formatNumbers) ? true : options.formatNumbers; diff --git a/app/assets/javascripts/admin/models/theme.js.es6 b/app/assets/javascripts/admin/models/theme.js.es6 index b0c5f4729ef..bf4700719b2 100644 --- a/app/assets/javascripts/admin/models/theme.js.es6 +++ b/app/assets/javascripts/admin/models/theme.js.es6 @@ -1,3 +1,4 @@ +import { isEmpty } from "@ember/utils"; import { or, gt } from "@ember/object/computed"; import RestModel from "discourse/models/rest"; import { default as computed } from "ember-addons/ember-computed-decorators"; @@ -161,11 +162,11 @@ const Theme = RestModel.extend({ hasEdited(target, name) { if (name) { - return !Ember.isEmpty(this.getField(target, name)); + return !isEmpty(this.getField(target, name)); } else { let fields = this.theme_fields || []; return fields.any( - field => field.target === target && !Ember.isEmpty(field.value) + field => field.target === target && !isEmpty(field.value) ); } }, @@ -227,8 +228,8 @@ const Theme = RestModel.extend({ themeFields[key] = field; } else { const changed = - (Ember.isEmpty(existingField.value) && !Ember.isEmpty(value)) || - (Ember.isEmpty(value) && !Ember.isEmpty(existingField.value)); + (isEmpty(existingField.value) && !isEmpty(value)) || + (isEmpty(value) && !isEmpty(existingField.value)); existingField.value = value; if (changed) { diff --git a/app/assets/javascripts/admin/models/web-hook.js.es6 b/app/assets/javascripts/admin/models/web-hook.js.es6 index cc35f474371..84111591fa4 100644 --- a/app/assets/javascripts/admin/models/web-hook.js.es6 +++ b/app/assets/javascripts/admin/models/web-hook.js.es6 @@ -1,3 +1,4 @@ +import { isEmpty } from "@ember/utils"; import RestModel from "discourse/models/rest"; import Category from "discourse/models/category"; import Group from "discourse/models/group"; @@ -78,13 +79,13 @@ export default RestModel.extend({ wildcard_web_hook: this.wildcard_web_hook, verify_certificate: this.verify_certificate, active: this.active, - web_hook_event_type_ids: Ember.isEmpty(types) + web_hook_event_type_ids: isEmpty(types) ? [null] : types.map(type => type.id), - category_ids: Ember.isEmpty(categoryIds) ? [null] : categoryIds, - tag_names: Ember.isEmpty(tagNames) ? [null] : tagNames, + category_ids: isEmpty(categoryIds) ? [null] : categoryIds, + tag_names: isEmpty(tagNames) ? [null] : tagNames, group_ids: - Ember.isEmpty(groupNames) || Ember.isEmpty(groupNames[0]) + isEmpty(groupNames) || isEmpty(groupNames[0]) ? [null] : Discourse.Site.currentProp("groups").reduce((groupIds, g) => { if (groupNames.includes(g.name)) { diff --git a/app/assets/javascripts/admin/routes/admin-web-hooks-show.js.es6 b/app/assets/javascripts/admin/routes/admin-web-hooks-show.js.es6 index b68675740d8..07878867166 100644 --- a/app/assets/javascripts/admin/routes/admin-web-hooks-show.js.es6 +++ b/app/assets/javascripts/admin/routes/admin-web-hooks-show.js.es6 @@ -1,3 +1,4 @@ +import { isEmpty } from "@ember/utils"; import DiscourseRoute from "discourse/routes/discourse"; export default DiscourseRoute.extend({ @@ -15,7 +16,7 @@ export default DiscourseRoute.extend({ setupController(controller, model) { if ( model.get("isNew") || - Ember.isEmpty(model.get("web_hook_event_types")) + isEmpty(model.get("web_hook_event_types")) ) { model.set("web_hook_event_types", controller.get("defaultEventTypes")); } diff --git a/app/assets/javascripts/discourse-loader.js b/app/assets/javascripts/discourse-loader.js index 11bdb9d2fd4..408922ea8fc 100644 --- a/app/assets/javascripts/discourse-loader.js +++ b/app/assets/javascripts/discourse-loader.js @@ -66,6 +66,9 @@ var define, requirejs; "@ember/service": { default: Ember.Service, inject: Ember.inject.service + }, + "@ember/utils": { + isEmpty: Ember.isEmpty } }; } diff --git a/app/assets/javascripts/discourse/components/categories-boxes-with-topics.js.es6 b/app/assets/javascripts/discourse/components/categories-boxes-with-topics.js.es6 index b3144aeba07..40b16d03fae 100644 --- a/app/assets/javascripts/discourse/components/categories-boxes-with-topics.js.es6 +++ b/app/assets/javascripts/discourse/components/categories-boxes-with-topics.js.es6 @@ -1,3 +1,4 @@ +import { isEmpty } from "@ember/utils"; import Component from "@ember/component"; import computed from "ember-addons/ember-computed-decorators"; @@ -11,7 +12,7 @@ export default Component.extend({ @computed("categories.[].uploaded_logo.url") anyLogos() { return this.categories.any(c => { - return !Ember.isEmpty(c.get("uploaded_logo.url")); + return !isEmpty(c.get("uploaded_logo.url")); }); } }); diff --git a/app/assets/javascripts/discourse/components/categories-boxes.js.es6 b/app/assets/javascripts/discourse/components/categories-boxes.js.es6 index aa7992b4442..11b76ed1d4d 100644 --- a/app/assets/javascripts/discourse/components/categories-boxes.js.es6 +++ b/app/assets/javascripts/discourse/components/categories-boxes.js.es6 @@ -1,3 +1,4 @@ +import { isEmpty } from "@ember/utils"; import Component from "@ember/component"; import computed from "ember-addons/ember-computed-decorators"; import DiscourseURL from "discourse/lib/url"; @@ -12,12 +13,12 @@ export default Component.extend({ @computed("categories.[].uploaded_logo.url") anyLogos() { - return this.categories.any(c => !Ember.isEmpty(c.get("uploaded_logo.url"))); + return this.categories.any(c => !isEmpty(c.get("uploaded_logo.url"))); }, @computed("categories.[].subcategories") hasSubcategories() { - return this.categories.any(c => !Ember.isEmpty(c.get("subcategories"))); + return this.categories.any(c => !isEmpty(c.get("subcategories"))); }, click(e) { diff --git a/app/assets/javascripts/discourse/components/choose-message.js.es6 b/app/assets/javascripts/discourse/components/choose-message.js.es6 index be174ad685a..dc8e38eab46 100644 --- a/app/assets/javascripts/discourse/components/choose-message.js.es6 +++ b/app/assets/javascripts/discourse/components/choose-message.js.es6 @@ -1,3 +1,4 @@ +import { isEmpty } from "@ember/utils"; import { next } from "@ember/runloop"; import Component from "@ember/component"; import debounce from "discourse/lib/debounce"; @@ -31,7 +32,7 @@ export default Component.extend({ search: debounce(function(title) { const currentTopicId = this.currentTopicId; - if (Ember.isEmpty(title)) { + if (isEmpty(title)) { this.setProperties({ messages: null, loading: false }); return; } diff --git a/app/assets/javascripts/discourse/components/choose-topic.js.es6 b/app/assets/javascripts/discourse/components/choose-topic.js.es6 index a31aa5eee4c..f2d47924140 100644 --- a/app/assets/javascripts/discourse/components/choose-topic.js.es6 +++ b/app/assets/javascripts/discourse/components/choose-topic.js.es6 @@ -1,3 +1,4 @@ +import { isEmpty } from "@ember/utils"; import { next } from "@ember/runloop"; import Component from "@ember/component"; import debounce from "discourse/lib/debounce"; @@ -39,7 +40,7 @@ export default Component.extend({ const currentTopicId = this.currentTopicId; - if (Ember.isEmpty(title)) { + if (isEmpty(title)) { this.setProperties({ topics: null, loading: false }); return; } diff --git a/app/assets/javascripts/discourse/components/edit-category-general.js.es6 b/app/assets/javascripts/discourse/components/edit-category-general.js.es6 index b293a89b76d..e94e2a77d29 100644 --- a/app/assets/javascripts/discourse/components/edit-category-general.js.es6 +++ b/app/assets/javascripts/discourse/components/edit-category-general.js.es6 @@ -1,3 +1,4 @@ +import { isEmpty } from "@ember/utils"; import { not } from "@ember/object/computed"; import { buildCategoryPanel } from "discourse/components/edit-category-panel"; import { categoryBadgeHTML } from "discourse/helpers/category-link"; @@ -84,7 +85,7 @@ export default buildCategoryPanel("general", { // We can change the parent if there are no children @computed("category.id") subCategories(categoryId) { - if (Ember.isEmpty(categoryId)) { + if (isEmpty(categoryId)) { return null; } return Category.list().filterBy("parent_category_id", categoryId); diff --git a/app/assets/javascripts/discourse/components/edit-topic-timer-form.js.es6 b/app/assets/javascripts/discourse/components/edit-topic-timer-form.js.es6 index 9bdf466e707..5b774ca6678 100644 --- a/app/assets/javascripts/discourse/components/edit-topic-timer-form.js.es6 +++ b/app/assets/javascripts/discourse/components/edit-topic-timer-form.js.es6 @@ -1,3 +1,4 @@ +import { isEmpty } from "@ember/utils"; import { alias, equal, or } from "@ember/object/computed"; import { schedule } from "@ember/runloop"; import Component from "@ember/component"; @@ -34,7 +35,7 @@ export default Component.extend({ ) saveDisabled(updateTime, loading, publishToCategory, topicTimerCategoryId) { return ( - Ember.isEmpty(updateTime) || + isEmpty(updateTime) || loading || (publishToCategory && !topicTimerCategoryId) ); diff --git a/app/assets/javascripts/discourse/components/future-date-input.js.es6 b/app/assets/javascripts/discourse/components/future-date-input.js.es6 index 5f97d2bbd14..dbec3977f63 100644 --- a/app/assets/javascripts/discourse/components/future-date-input.js.es6 +++ b/app/assets/javascripts/discourse/components/future-date-input.js.es6 @@ -1,3 +1,4 @@ +import { isEmpty } from "@ember/utils"; import { equal, and, empty } from "@ember/object/computed"; import Component from "@ember/component"; import { @@ -108,7 +109,7 @@ export default Component.extend({ if ( statusType === PUBLISH_TO_CATEGORY_STATUS_TYPE && - Ember.isEmpty(categoryId) + isEmpty(categoryId) ) { return false; } diff --git a/app/assets/javascripts/discourse/components/group-members-input.js.es6 b/app/assets/javascripts/discourse/components/group-members-input.js.es6 index b39049abbfb..e1f701f96c0 100644 --- a/app/assets/javascripts/discourse/components/group-members-input.js.es6 +++ b/app/assets/javascripts/discourse/components/group-members-input.js.es6 @@ -1,3 +1,4 @@ +import { isEmpty } from "@ember/utils"; import { lte } from "@ember/object/computed"; import Component from "@ember/component"; import computed from "ember-addons/ember-computed-decorators"; @@ -62,7 +63,7 @@ export default Component.extend({ }, addMembers() { - if (Ember.isEmpty(this.get("model.usernames"))) { + if (isEmpty(this.get("model.usernames"))) { return; } this.model.addMembers(this.get("model.usernames")).catch(popupAjaxError); diff --git a/app/assets/javascripts/discourse/components/group-selector.js.es6 b/app/assets/javascripts/discourse/components/group-selector.js.es6 index 3083207ff3a..4d4b431888e 100644 --- a/app/assets/javascripts/discourse/components/group-selector.js.es6 +++ b/app/assets/javascripts/discourse/components/group-selector.js.es6 @@ -1,3 +1,4 @@ +import { isEmpty } from "@ember/utils"; import Component from "@ember/component"; import { on, @@ -27,7 +28,7 @@ export default Component.extend({ allowAny: false, items: _.isArray(groupNames) ? groupNames - : Ember.isEmpty(groupNames) + : isEmpty(groupNames) ? [] : [groupNames], single: this.single, diff --git a/app/assets/javascripts/discourse/components/groups-form-profile-fields.js.es6 b/app/assets/javascripts/discourse/components/groups-form-profile-fields.js.es6 index cff51ffd73d..98eabcea3fc 100644 --- a/app/assets/javascripts/discourse/components/groups-form-profile-fields.js.es6 +++ b/app/assets/javascripts/discourse/components/groups-form-profile-fields.js.es6 @@ -1,3 +1,4 @@ +import { isEmpty } from "@ember/utils"; import { not } from "@ember/object/computed"; import Component from "@ember/component"; import { @@ -65,7 +66,7 @@ export default Component.extend({ checkGroupName: debounce(function() { name = this.nameInput; - if (Ember.isEmpty(name)) return; + if (isEmpty(name)) return; Group.checkName(name).then(response => { const validationName = "uniqueNameValidation"; diff --git a/app/assets/javascripts/discourse/components/image-uploader.js.es6 b/app/assets/javascripts/discourse/components/image-uploader.js.es6 index ca919959a8a..514a9852230 100644 --- a/app/assets/javascripts/discourse/components/image-uploader.js.es6 +++ b/app/assets/javascripts/discourse/components/image-uploader.js.es6 @@ -1,3 +1,4 @@ +import { isEmpty } from "@ember/utils"; import { next } from "@ember/runloop"; import Component from "@ember/component"; import computed from "ember-addons/ember-computed-decorators"; @@ -30,7 +31,7 @@ export default Component.extend(UploadMixin, { @computed("placeholderUrl") placeholderStyle(url) { - if (Ember.isEmpty(url)) { + if (isEmpty(url)) { return "".htmlSafe(); } return `background-image: url(${url})`.htmlSafe(); @@ -38,7 +39,7 @@ export default Component.extend(UploadMixin, { @computed("imageUrl") imageCDNURL(url) { - if (Ember.isEmpty(url)) { + if (isEmpty(url)) { return "".htmlSafe(); } @@ -52,7 +53,7 @@ export default Component.extend(UploadMixin, { @computed("imageUrl") imageBaseName(imageUrl) { - if (Ember.isEmpty(imageUrl)) return; + if (isEmpty(imageUrl)) return; return imageUrl.split("/").slice(-1)[0]; }, diff --git a/app/assets/javascripts/discourse/components/invite-panel.js.es6 b/app/assets/javascripts/discourse/components/invite-panel.js.es6 index 513b9be3662..aece3745817 100644 --- a/app/assets/javascripts/discourse/components/invite-panel.js.es6 +++ b/app/assets/javascripts/discourse/components/invite-panel.js.es6 @@ -1,3 +1,4 @@ +import { isEmpty } from "@ember/utils"; import { alias, and, equal } from "@ember/object/computed"; import EmberObject from "@ember/object"; import Component from "@ember/component"; @@ -48,7 +49,7 @@ export default Component.extend({ can_invite_to ) { if (saving) return true; - if (Ember.isEmpty(emailOrUsername)) return true; + if (isEmpty(emailOrUsername)) return true; const emailTrimmed = emailOrUsername.trim(); @@ -65,7 +66,7 @@ export default Component.extend({ // when inviting to private topic via email, group name must be specified if ( isPrivateTopic && - Ember.isEmpty(groupNames) && + isEmpty(groupNames) && emailValid(emailTrimmed) ) { return true; @@ -94,7 +95,7 @@ export default Component.extend({ ) { if (hasCustomMessage) return true; if (saving) return true; - if (Ember.isEmpty(emailOrUsername)) return true; + if (isEmpty(emailOrUsername)) return true; const email = emailOrUsername.trim(); @@ -109,7 +110,7 @@ export default Component.extend({ } // when inviting to private topic via email, group name must be specified - if (isPrivateTopic && Ember.isEmpty(groupNames) && emailValid(email)) { + if (isPrivateTopic && isEmpty(groupNames) && emailValid(email)) { return true; } @@ -218,7 +219,7 @@ export default Component.extend({ return I18n.t("topic.invite_reply.to_username"); } else { // when inviting to a topic, display instructions based on provided entity - if (Ember.isEmpty(emailOrUsername)) { + if (isEmpty(emailOrUsername)) { return I18n.t("topic.invite_reply.to_topic_blank"); } else if (emailValid(emailOrUsername)) { this.set("inviteIcon", "envelope"); diff --git a/app/assets/javascripts/discourse/components/share-panel.js.es6 b/app/assets/javascripts/discourse/components/share-panel.js.es6 index 81408e1efbe..3a7b94b6454 100644 --- a/app/assets/javascripts/discourse/components/share-panel.js.es6 +++ b/app/assets/javascripts/discourse/components/share-panel.js.es6 @@ -1,3 +1,4 @@ +import { isEmpty } from "@ember/utils"; import { alias } from "@ember/object/computed"; import { schedule } from "@ember/runloop"; import Component from "@ember/component"; @@ -27,7 +28,7 @@ export default Component.extend({ shareUrl(forcedShareUrl, shareUrl) { shareUrl = forcedShareUrl || shareUrl; - if (Ember.isEmpty(shareUrl)) { + if (isEmpty(shareUrl)) { return; } diff --git a/app/assets/javascripts/discourse/components/share-popup.js.es6 b/app/assets/javascripts/discourse/components/share-popup.js.es6 index 49d8f677235..4f9d0b9792b 100644 --- a/app/assets/javascripts/discourse/components/share-popup.js.es6 +++ b/app/assets/javascripts/discourse/components/share-popup.js.es6 @@ -1,3 +1,4 @@ +import { isEmpty } from "@ember/utils"; import { bind } from "@ember/runloop"; import { scheduleOnce } from "@ember/runloop"; import Component from "@ember/component"; @@ -59,7 +60,7 @@ export default Component.extend({ const $currentTargetOffset = $target.offset(); const $this = $(this.element); - if (Ember.isEmpty(url)) { + if (isEmpty(url)) { return; } diff --git a/app/assets/javascripts/discourse/components/tag-groups-form.js.es6 b/app/assets/javascripts/discourse/components/tag-groups-form.js.es6 index 4d932e1d69b..2dddb086e84 100644 --- a/app/assets/javascripts/discourse/components/tag-groups-form.js.es6 +++ b/app/assets/javascripts/discourse/components/tag-groups-form.js.es6 @@ -1,3 +1,4 @@ +import { isEmpty } from "@ember/utils"; import Component from "@ember/component"; import computed from "ember-addons/ember-computed-decorators"; import { bufferedProperty } from "discourse/mixins/buffered-content"; @@ -8,7 +9,7 @@ export default Component.extend(bufferedProperty("model"), { @computed("buffered.isSaving", "buffered.name", "buffered.tag_names") savingDisabled(isSaving, name, tagNames) { - return isSaving || Ember.isEmpty(name) || Ember.isEmpty(tagNames); + return isSaving || isEmpty(name) || isEmpty(tagNames); }, actions: { diff --git a/app/assets/javascripts/discourse/components/user-card-contents.js.es6 b/app/assets/javascripts/discourse/components/user-card-contents.js.es6 index 023a7ab8a35..b5fd1a45575 100644 --- a/app/assets/javascripts/discourse/components/user-card-contents.js.es6 +++ b/app/assets/javascripts/discourse/components/user-card-contents.js.es6 @@ -1,3 +1,4 @@ +import { isEmpty } from "@ember/utils"; import { alias, gte, and, gt, not, or } from "@ember/object/computed"; import EmberObject from "@ember/object"; import Component from "@ember/component"; @@ -69,7 +70,7 @@ export default Component.extend(CardContentsBase, CanCheckEmails, CleansUp, { @computed("user.user_fields.@each.value") publicUserFields() { const siteUserFields = this.site.get("user_fields"); - if (!Ember.isEmpty(siteUserFields)) { + if (!isEmpty(siteUserFields)) { const userFields = this.get("user.user_fields"); return siteUserFields .filterBy("show_on_user_card", true) @@ -77,7 +78,7 @@ export default Component.extend(CardContentsBase, CanCheckEmails, CleansUp, { .map(field => { Ember.set(field, "dasherized_name", field.get("name").dasherize()); const value = userFields ? userFields[field.get("id")] : null; - return Ember.isEmpty(value) + return isEmpty(value) ? null : EmberObject.create({ value, field }); }) @@ -129,7 +130,7 @@ export default Component.extend(CardContentsBase, CanCheckEmails, CleansUp, { } const url = this.get("user.card_background_upload_url"); - const bg = Ember.isEmpty(url) ? "" : `url(${Discourse.getURLWithCDN(url)})`; + const bg = isEmpty(url) ? "" : `url(${Discourse.getURLWithCDN(url)})`; thisElem.style.backgroundImage = bg; }, diff --git a/app/assets/javascripts/discourse/components/user-selector.js.es6 b/app/assets/javascripts/discourse/components/user-selector.js.es6 index 2cc95441ed6..772777543c8 100644 --- a/app/assets/javascripts/discourse/components/user-selector.js.es6 +++ b/app/assets/javascripts/discourse/components/user-selector.js.es6 @@ -1,3 +1,4 @@ +import { isEmpty } from "@ember/utils"; import { on, observes } from "ember-addons/ember-computed-decorators"; import TextField from "discourse/components/text-field"; import userSearch from "discourse/lib/user-search"; @@ -130,7 +131,7 @@ export default TextField.extend({ // THIS IS A HUGE HACK TO SUPPORT CLEARING THE INPUT @observes("usernames") _clearInput() { - if (arguments.length > 1 && Ember.isEmpty(this.usernames)) { + if (arguments.length > 1 && isEmpty(this.usernames)) { $(this.element) .parent() .find("a") diff --git a/app/assets/javascripts/discourse/controllers/add-post-notice.js.es6 b/app/assets/javascripts/discourse/controllers/add-post-notice.js.es6 index ef05db0d67f..83883ca5aae 100644 --- a/app/assets/javascripts/discourse/controllers/add-post-notice.js.es6 +++ b/app/assets/javascripts/discourse/controllers/add-post-notice.js.es6 @@ -1,3 +1,4 @@ +import { isEmpty } from "@ember/utils"; import Controller from "@ember/controller"; import ModalFunctionality from "discourse/mixins/modal-functionality"; import computed from "ember-addons/ember-computed-decorators"; @@ -13,7 +14,7 @@ export default Controller.extend(ModalFunctionality, { @computed("saving", "notice") disabled(saving, notice) { - return saving || Ember.isEmpty(notice); + return saving || isEmpty(notice); }, onShow() { diff --git a/app/assets/javascripts/discourse/controllers/change-owner.js.es6 b/app/assets/javascripts/discourse/controllers/change-owner.js.es6 index ca45a50c832..4047a2eb35d 100644 --- a/app/assets/javascripts/discourse/controllers/change-owner.js.es6 +++ b/app/assets/javascripts/discourse/controllers/change-owner.js.es6 @@ -1,3 +1,4 @@ +import { isEmpty } from "@ember/utils"; import { alias } from "@ember/object/computed"; import { next } from "@ember/runloop"; import { inject } from "@ember/controller"; @@ -17,7 +18,7 @@ export default Controller.extend(ModalFunctionality, { @computed("saving", "new_user") buttonDisabled(saving, newUser) { - return saving || Ember.isEmpty(newUser); + return saving || isEmpty(newUser); }, @computed("saving") diff --git a/app/assets/javascripts/discourse/controllers/change-timestamp.js.es6 b/app/assets/javascripts/discourse/controllers/change-timestamp.js.es6 index 0251ab88834..9a29c747d74 100644 --- a/app/assets/javascripts/discourse/controllers/change-timestamp.js.es6 +++ b/app/assets/javascripts/discourse/controllers/change-timestamp.js.es6 @@ -1,3 +1,4 @@ +import { isEmpty } from "@ember/utils"; import { next } from "@ember/runloop"; import { inject } from "@ember/controller"; import Controller from "@ember/controller"; @@ -31,7 +32,7 @@ export default Controller.extend(ModalFunctionality, { @computed("saving", "date", "validTimestamp") buttonDisabled(saving, date, validTimestamp) { if (saving || validTimestamp) return true; - return Ember.isEmpty(date); + return isEmpty(date); }, onShow() { diff --git a/app/assets/javascripts/discourse/controllers/composer.js.es6 b/app/assets/javascripts/discourse/controllers/composer.js.es6 index b68fb42a146..195df3baad0 100644 --- a/app/assets/javascripts/discourse/controllers/composer.js.es6 +++ b/app/assets/javascripts/discourse/controllers/composer.js.es6 @@ -1,3 +1,4 @@ +import { isEmpty } from "@ember/utils"; import { and, or, alias, reads } from "@ember/object/computed"; import { debounce } from "@ember/runloop"; import { inject as service } from "@ember/service"; @@ -302,7 +303,7 @@ export default Controller.extend({ // We need exactly one user to issue a warning if ( - Ember.isEmpty(usernames) || + isEmpty(usernames) || usernames.split(",").length !== 1 || hasTargetGroups ) { @@ -441,8 +442,8 @@ export default Controller.extend({ this.closeAutocomplete(); if ( - Ember.isEmpty(this.get("model.reply")) && - Ember.isEmpty(this.get("model.title")) + isEmpty(this.get("model.reply")) && + isEmpty(this.get("model.title")) ) { this.close(); } else { @@ -744,7 +745,7 @@ export default Controller.extend({ // Notify the composer messages controller that a reply has been typed. Some // messages only appear after typing. checkReplyLength() { - if (!Ember.isEmpty("model.reply")) { + if (!isEmpty("model.reply")) { this.appEvents.trigger("composer:typed-reply"); } }, diff --git a/app/assets/javascripts/discourse/controllers/create-account.js.es6 b/app/assets/javascripts/discourse/controllers/create-account.js.es6 index 7a2e4b1359a..beb87d2d3a5 100644 --- a/app/assets/javascripts/discourse/controllers/create-account.js.es6 +++ b/app/assets/javascripts/discourse/controllers/create-account.js.es6 @@ -1,3 +1,4 @@ +import { isEmpty } from "@ember/utils"; import { notEmpty, or, not } from "@ember/object/computed"; import { inject } from "@ember/controller"; import Controller from "@ember/controller"; @@ -91,7 +92,7 @@ export default Controller.extend( @computed("authOptions.auth_provider") passwordRequired(authProvider) { - return Ember.isEmpty(authProvider); + return isEmpty(authProvider); }, @computed @@ -108,7 +109,7 @@ export default Controller.extend( @computed("accountEmail", "rejectedEmails.[]") emailValidation(email, rejectedEmails) { // If blank, fail without a reason - if (Ember.isEmpty(email)) { + if (isEmpty(email)) { return InputValidation.create({ failed: true }); @@ -176,7 +177,7 @@ export default Controller.extend( } if ( this.get("emailValidation.ok") && - (Ember.isEmpty(this.accountUsername) || this.get("authOptions.email")) + (isEmpty(this.accountUsername) || this.get("authOptions.email")) ) { // If email is valid and username has not been entered yet, // or email and username were filled automatically by 3rd parth auth, @@ -226,12 +227,12 @@ export default Controller.extend( const userFields = this.userFields; const destinationUrl = this.get("authOptions.destination_url"); - if (!Ember.isEmpty(destinationUrl)) { + if (!isEmpty(destinationUrl)) { $.cookie("destination_url", destinationUrl, { path: "/" }); } // Add the userfields to the data - if (!Ember.isEmpty(userFields)) { + if (!isEmpty(userFields)) { attrs.userFields = {}; userFields.forEach( f => (attrs.userFields[f.get("field.id")] = f.get("value")) diff --git a/app/assets/javascripts/discourse/controllers/edit-category.js.es6 b/app/assets/javascripts/discourse/controllers/edit-category.js.es6 index 6b2e99844f6..87c1378ffee 100644 --- a/app/assets/javascripts/discourse/controllers/edit-category.js.es6 +++ b/app/assets/javascripts/discourse/controllers/edit-category.js.es6 @@ -1,3 +1,4 @@ +import { isEmpty } from "@ember/utils"; import Controller from "@ember/controller"; import ModalFunctionality from "discourse/mixins/modal-functionality"; import DiscourseURL from "discourse/lib/url"; @@ -31,7 +32,7 @@ export default Controller.extend(ModalFunctionality, { @observes("model.description") changeSize() { - if (!Ember.isEmpty(this.get("model.description"))) { + if (!isEmpty(this.get("model.description"))) { this.set("modal.modalClass", "edit-category-modal full"); } else { this.set("modal.modalClass", "edit-category-modal small"); diff --git a/app/assets/javascripts/discourse/controllers/forgot-password.js.es6 b/app/assets/javascripts/discourse/controllers/forgot-password.js.es6 index 7f12df2e28c..ae5d53679d7 100644 --- a/app/assets/javascripts/discourse/controllers/forgot-password.js.es6 +++ b/app/assets/javascripts/discourse/controllers/forgot-password.js.es6 @@ -1,3 +1,4 @@ +import { isEmpty } from "@ember/utils"; import Controller from "@ember/controller"; import { ajax } from "discourse/lib/ajax"; import ModalFunctionality from "discourse/mixins/modal-functionality"; @@ -11,7 +12,7 @@ export default Controller.extend(ModalFunctionality, { @computed("accountEmailOrUsername", "disabled") submitDisabled(accountEmailOrUsername, disabled) { - return Ember.isEmpty((accountEmailOrUsername || "").trim()) || disabled; + return isEmpty((accountEmailOrUsername || "").trim()) || disabled; }, onShow() { diff --git a/app/assets/javascripts/discourse/controllers/full-page-search.js.es6 b/app/assets/javascripts/discourse/controllers/full-page-search.js.es6 index 63e8da38fc7..e54ce43ab7f 100644 --- a/app/assets/javascripts/discourse/controllers/full-page-search.js.es6 +++ b/app/assets/javascripts/discourse/controllers/full-page-search.js.es6 @@ -1,3 +1,4 @@ +import { isEmpty } from "@ember/utils"; import { or } from "@ember/object/computed"; import { inject } from "@ember/controller"; import Controller from "@ember/controller"; @@ -54,7 +55,7 @@ export default Controller.extend({ @computed("q") hasAutofocus(q) { - return Ember.isEmpty(q); + return isEmpty(q); }, @computed("q") diff --git a/app/assets/javascripts/discourse/controllers/group-add-members.js.es6 b/app/assets/javascripts/discourse/controllers/group-add-members.js.es6 index d3bf4a3ea56..53c1327c423 100644 --- a/app/assets/javascripts/discourse/controllers/group-add-members.js.es6 +++ b/app/assets/javascripts/discourse/controllers/group-add-members.js.es6 @@ -1,3 +1,4 @@ +import { isEmpty } from "@ember/utils"; import Controller from "@ember/controller"; import computed from "ember-addons/ember-computed-decorators"; import { extractError } from "discourse/lib/ajax-error"; @@ -18,7 +19,7 @@ export default Controller.extend(ModalFunctionality, { const model = this.model; const usernames = model.get("usernames"); - if (Ember.isEmpty(usernames)) { + if (isEmpty(usernames)) { return; } let promise; diff --git a/app/assets/javascripts/discourse/controllers/group-bulk-add.js.es6 b/app/assets/javascripts/discourse/controllers/group-bulk-add.js.es6 index 4a4323d611f..bef9d535f41 100644 --- a/app/assets/javascripts/discourse/controllers/group-bulk-add.js.es6 +++ b/app/assets/javascripts/discourse/controllers/group-bulk-add.js.es6 @@ -1,3 +1,4 @@ +import { isEmpty } from "@ember/utils"; import Controller from "@ember/controller"; import computed from "ember-addons/ember-computed-decorators"; import { extractError } from "discourse/lib/ajax-error"; @@ -9,7 +10,7 @@ export default Controller.extend(ModalFunctionality, { @computed("input", "loading", "result") disableAddButton(input, loading, result) { - return loading || Ember.isEmpty(input) || input.length <= 0 || result; + return loading || isEmpty(input) || input.length <= 0 || result; }, actions: { diff --git a/app/assets/javascripts/discourse/controllers/insert-hyperlink.js.es6 b/app/assets/javascripts/discourse/controllers/insert-hyperlink.js.es6 index 63b724f89cc..b04499456ba 100644 --- a/app/assets/javascripts/discourse/controllers/insert-hyperlink.js.es6 +++ b/app/assets/javascripts/discourse/controllers/insert-hyperlink.js.es6 @@ -1,3 +1,4 @@ +import { isEmpty } from "@ember/utils"; import { debounce } from "@ember/runloop"; import { cancel } from "@ember/runloop"; import { scheduleOnce } from "@ember/runloop"; @@ -148,7 +149,7 @@ export default Controller.extend(ModalFunctionality, { origLink.indexOf("://") === -1 ? `http://${origLink}` : origLink; const sel = this._lastSel; - if (Ember.isEmpty(linkUrl)) { + if (isEmpty(linkUrl)) { return; } diff --git a/app/assets/javascripts/discourse/controllers/invites-show.js.es6 b/app/assets/javascripts/discourse/controllers/invites-show.js.es6 index a1291651415..1b1c99de7de 100644 --- a/app/assets/javascripts/discourse/controllers/invites-show.js.es6 +++ b/app/assets/javascripts/discourse/controllers/invites-show.js.es6 @@ -1,3 +1,4 @@ +import { isEmpty } from "@ember/utils"; import { alias, notEmpty } from "@ember/object/computed"; import Controller from "@ember/controller"; import { default as computed } from "ember-addons/ember-computed-decorators"; @@ -68,7 +69,7 @@ export default Controller.extend( submit() { const userFields = this.userFields; let userCustomFields = {}; - if (!Ember.isEmpty(userFields)) { + if (!isEmpty(userFields)) { userFields.forEach(function(f) { userCustomFields[f.get("field.id")] = f.get("value"); }); diff --git a/app/assets/javascripts/discourse/controllers/login.js.es6 b/app/assets/javascripts/discourse/controllers/login.js.es6 index 177700eb72b..19fbc21fb73 100644 --- a/app/assets/javascripts/discourse/controllers/login.js.es6 +++ b/app/assets/javascripts/discourse/controllers/login.js.es6 @@ -1,3 +1,4 @@ +import { isEmpty } from "@ember/utils"; import { alias, or, readOnly } from "@ember/object/computed"; import EmberObject from "@ember/object"; import { next } from "@ember/runloop"; @@ -107,7 +108,7 @@ export default Controller.extend(ModalFunctionality, { return; } - if (Ember.isEmpty(this.loginName) || Ember.isEmpty(this.loginPassword)) { + if (isEmpty(this.loginName) || isEmpty(this.loginPassword)) { this.flash(I18n.t("login.blank_username_or_password"), "error"); return; } @@ -273,7 +274,7 @@ export default Controller.extend(ModalFunctionality, { return; } - if (Ember.isEmpty(this.loginName)) { + if (isEmpty(this.loginName)) { this.flash(I18n.t("login.blank_username"), "error"); return; } diff --git a/app/assets/javascripts/discourse/controllers/move-to-topic.js.es6 b/app/assets/javascripts/discourse/controllers/move-to-topic.js.es6 index eece1cd1bcb..3b731a23a55 100644 --- a/app/assets/javascripts/discourse/controllers/move-to-topic.js.es6 +++ b/app/assets/javascripts/discourse/controllers/move-to-topic.js.es6 @@ -1,3 +1,4 @@ +import { isEmpty } from "@ember/utils"; import { alias, equal } from "@ember/object/computed"; import { next } from "@ember/runloop"; import { inject } from "@ember/controller"; @@ -48,7 +49,7 @@ export default Controller.extend(ModalFunctionality, { @computed("saving", "selectedTopicId", "topicName") buttonDisabled(saving, selectedTopicId, topicName) { return ( - saving || (Ember.isEmpty(selectedTopicId) && Ember.isEmpty(topicName)) + saving || (isEmpty(selectedTopicId) && isEmpty(topicName)) ); }, diff --git a/app/assets/javascripts/discourse/controllers/preferences/account.js.es6 b/app/assets/javascripts/discourse/controllers/preferences/account.js.es6 index 1812fe8e701..e30386afdff 100644 --- a/app/assets/javascripts/discourse/controllers/preferences/account.js.es6 +++ b/app/assets/javascripts/discourse/controllers/preferences/account.js.es6 @@ -1,3 +1,4 @@ +import { isEmpty } from "@ember/utils"; import { not, or, gt } from "@ember/object/computed"; import Controller from "@ember/controller"; import { iconHTML } from "discourse-common/lib/icon-library"; @@ -241,7 +242,7 @@ export default Controller.extend(CanCheckEmails, PreferencesTabController, { .then(() => { if (!token) { const redirect = this.siteSettings.logout_redirect; - if (Ember.isEmpty(redirect)) { + if (isEmpty(redirect)) { window.location = Discourse.getURL("/"); } else { window.location.href = redirect; diff --git a/app/assets/javascripts/discourse/controllers/preferences/profile.js.es6 b/app/assets/javascripts/discourse/controllers/preferences/profile.js.es6 index 315c8c9da5b..b4e9a46facd 100644 --- a/app/assets/javascripts/discourse/controllers/preferences/profile.js.es6 +++ b/app/assets/javascripts/discourse/controllers/preferences/profile.js.es6 @@ -1,3 +1,4 @@ +import { isEmpty } from "@ember/utils"; import EmberObject from "@ember/object"; import Controller from "@ember/controller"; import { default as computed } from "ember-addons/ember-computed-decorators"; @@ -24,7 +25,7 @@ export default Controller.extend(PreferencesTabController, { @computed("model.user_fields.@each.value") userFields() { let siteUserFields = this.site.get("user_fields"); - if (!Ember.isEmpty(siteUserFields)) { + if (!isEmpty(siteUserFields)) { const userFields = this.get("model.user_fields"); // Staff can edit fields that are not `editable` @@ -53,9 +54,9 @@ export default Controller.extend(PreferencesTabController, { userFields = this.userFields; // Update the user fields - if (!Ember.isEmpty(userFields)) { + if (!isEmpty(userFields)) { const modelFields = model.get("user_fields"); - if (!Ember.isEmpty(modelFields)) { + if (!isEmpty(modelFields)) { userFields.forEach(function(uf) { modelFields[uf.get("field.id").toString()] = uf.get("value"); }); diff --git a/app/assets/javascripts/discourse/controllers/preferences/username.js.es6 b/app/assets/javascripts/discourse/controllers/preferences/username.js.es6 index aab336e2b08..954e8c739ee 100644 --- a/app/assets/javascripts/discourse/controllers/preferences/username.js.es6 +++ b/app/assets/javascripts/discourse/controllers/preferences/username.js.es6 @@ -1,3 +1,4 @@ +import { isEmpty } from "@ember/utils"; import { empty, or } from "@ember/object/computed"; import Controller from "@ember/controller"; import { @@ -37,7 +38,7 @@ export default Controller.extend({ this.set("taken", false); this.set("errorMessage", null); - if (Ember.isEmpty(this.newUsername)) return; + if (isEmpty(this.newUsername)) return; if (this.unchanged) return; Discourse.User.checkUsername( diff --git a/app/assets/javascripts/discourse/controllers/request-group-membership-form.js.es6 b/app/assets/javascripts/discourse/controllers/request-group-membership-form.js.es6 index 80a3b13edc5..0f316873ce8 100644 --- a/app/assets/javascripts/discourse/controllers/request-group-membership-form.js.es6 +++ b/app/assets/javascripts/discourse/controllers/request-group-membership-form.js.es6 @@ -1,3 +1,4 @@ +import { isEmpty } from "@ember/utils"; import { alias } from "@ember/object/computed"; import Controller from "@ember/controller"; import computed from "ember-addons/ember-computed-decorators"; @@ -16,7 +17,7 @@ export default Controller.extend(ModalFunctionality, { @computed("loading", "reason") disableSubmit(loading, reason) { - return loading || Ember.isEmpty(reason); + return loading || isEmpty(reason); }, actions: { diff --git a/app/assets/javascripts/discourse/controllers/topic.js.es6 b/app/assets/javascripts/discourse/controllers/topic.js.es6 index 0f236ba80fb..291e07d29b4 100644 --- a/app/assets/javascripts/discourse/controllers/topic.js.es6 +++ b/app/assets/javascripts/discourse/controllers/topic.js.es6 @@ -1,3 +1,4 @@ +import { isEmpty } from "@ember/utils"; import { or, and, not, alias } from "@ember/object/computed"; import EmberObject from "@ember/object"; import { next } from "@ember/runloop"; @@ -72,7 +73,7 @@ export default Controller.extend(bufferedProperty("model"), { @observes("model.title", "category") _titleChanged() { const title = this.get("model.title"); - if (!Ember.isEmpty(title)) { + if (!isEmpty(title)) { // force update lazily loaded titles this.send("refreshTitle"); } @@ -985,7 +986,7 @@ export default Controller.extend(bufferedProperty("model"), { composerController .open(options) .then(() => { - return Ember.isEmpty(quotedText) ? "" : quotedText; + return isEmpty(quotedText) ? "" : quotedText; }) .then(q => { const postUrl = `${location.protocol}//${location.host}${post.get( diff --git a/app/assets/javascripts/discourse/controllers/user.js.es6 b/app/assets/javascripts/discourse/controllers/user.js.es6 index 914aff4acae..f7aa3c10daf 100644 --- a/app/assets/javascripts/discourse/controllers/user.js.es6 +++ b/app/assets/javascripts/discourse/controllers/user.js.es6 @@ -1,3 +1,4 @@ +import { isEmpty } from "@ember/utils"; import { alias, or, gt, not, and } from "@ember/object/computed"; import EmberObject from "@ember/object"; import { inject as service } from "@ember/service"; @@ -29,7 +30,7 @@ export default Controller.extend(CanCheckEmails, { @computed("model.profileBackgroundUrl") hasProfileBackgroundUrl(background) { - return !Ember.isEmpty(background.toString()); + return !isEmpty(background.toString()); }, @computed("model.profile_hidden", "indexStream", "viewingSelf", "forceExpand") @@ -108,7 +109,7 @@ export default Controller.extend(CanCheckEmails, { @computed("model.user_fields.@each.value") publicUserFields() { const siteUserFields = this.site.get("user_fields"); - if (!Ember.isEmpty(siteUserFields)) { + if (!isEmpty(siteUserFields)) { const userFields = this.get("model.user_fields"); return siteUserFields .filterBy("show_on_profile", true) @@ -118,7 +119,7 @@ export default Controller.extend(CanCheckEmails, { const value = userFields ? userFields[field.get("id").toString()] : null; - return Ember.isEmpty(value) + return isEmpty(value) ? null : EmberObject.create({ value, field }); }) diff --git a/app/assets/javascripts/discourse/helpers/bound-avatar-template.js.es6 b/app/assets/javascripts/discourse/helpers/bound-avatar-template.js.es6 index 30cb9aa3bd2..b08e483b2e4 100644 --- a/app/assets/javascripts/discourse/helpers/bound-avatar-template.js.es6 +++ b/app/assets/javascripts/discourse/helpers/bound-avatar-template.js.es6 @@ -1,8 +1,9 @@ +import { isEmpty } from "@ember/utils"; import { htmlHelper } from "discourse-common/lib/helpers"; import { avatarImg } from "discourse/lib/utilities"; export default htmlHelper((avatarTemplate, size) => { - if (Ember.isEmpty(avatarTemplate)) { + if (isEmpty(avatarTemplate)) { return "
"; } else { return avatarImg({ size, avatarTemplate }); diff --git a/app/assets/javascripts/discourse/helpers/bound-avatar.js.es6 b/app/assets/javascripts/discourse/helpers/bound-avatar.js.es6 index 077e823220a..a1058c4e3d4 100644 --- a/app/assets/javascripts/discourse/helpers/bound-avatar.js.es6 +++ b/app/assets/javascripts/discourse/helpers/bound-avatar.js.es6 @@ -1,9 +1,10 @@ +import { isEmpty } from "@ember/utils"; import { htmlHelper } from "discourse-common/lib/helpers"; import { avatarImg } from "discourse/lib/utilities"; import { addExtraUserClasses } from "discourse/helpers/user-avatar"; export default htmlHelper((user, size) => { - if (Ember.isEmpty(user)) { + if (isEmpty(user)) { return "
"; } diff --git a/app/assets/javascripts/discourse/helpers/dash-if-empty.js.es6 b/app/assets/javascripts/discourse/helpers/dash-if-empty.js.es6 index 18370df0d2b..96d594e6506 100644 --- a/app/assets/javascripts/discourse/helpers/dash-if-empty.js.es6 +++ b/app/assets/javascripts/discourse/helpers/dash-if-empty.js.es6 @@ -1,3 +1,4 @@ +import { isEmpty } from "@ember/utils"; import { htmlHelper } from "discourse-common/lib/helpers"; -export default htmlHelper(str => (Ember.isEmpty(str) ? "—" : str)); +export default htmlHelper(str => (isEmpty(str) ? "—" : str)); diff --git a/app/assets/javascripts/discourse/helpers/icon-or-image.js.es6 b/app/assets/javascripts/discourse/helpers/icon-or-image.js.es6 index 0751b6f0e29..f038d40eb4f 100644 --- a/app/assets/javascripts/discourse/helpers/icon-or-image.js.es6 +++ b/app/assets/javascripts/discourse/helpers/icon-or-image.js.es6 @@ -1,12 +1,13 @@ +import { isEmpty } from "@ember/utils"; import { htmlHelper } from "discourse-common/lib/helpers"; import { iconHTML, convertIconClass } from "discourse-common/lib/icon-library"; export default htmlHelper(function({ icon, image }) { - if (!Ember.isEmpty(image)) { + if (!isEmpty(image)) { return ``; } - if (Ember.isEmpty(icon)) { + if (isEmpty(icon)) { return ""; } diff --git a/app/assets/javascripts/discourse/lib/logout.js.es6 b/app/assets/javascripts/discourse/lib/logout.js.es6 index 5e81d738e3a..09986e892bf 100644 --- a/app/assets/javascripts/discourse/lib/logout.js.es6 +++ b/app/assets/javascripts/discourse/lib/logout.js.es6 @@ -1,3 +1,4 @@ +import { isEmpty } from "@ember/utils"; export default function logout(siteSettings, keyValueStore) { if (!siteSettings || !keyValueStore) { const container = Discourse.__container__; @@ -8,7 +9,7 @@ export default function logout(siteSettings, keyValueStore) { keyValueStore.abandonLocal(); const redirect = siteSettings.logout_redirect; - if (Ember.isEmpty(redirect)) { + if (isEmpty(redirect)) { window.location = Discourse.getURL("/"); } else { window.location.href = redirect; diff --git a/app/assets/javascripts/discourse/lib/search.js.es6 b/app/assets/javascripts/discourse/lib/search.js.es6 index a558fdd495c..2824268e66e 100644 --- a/app/assets/javascripts/discourse/lib/search.js.es6 +++ b/app/assets/javascripts/discourse/lib/search.js.es6 @@ -1,3 +1,4 @@ +import { isEmpty } from "@ember/utils"; import EmberObject from "@ember/object"; import { ajax } from "discourse/lib/ajax"; import { findRawTemplate } from "discourse/lib/raw-templates"; @@ -53,7 +54,7 @@ export function translateResults(results, opts) { const fullName = Handlebars.Utils.escapeExpression( group.full_name || group.display_name ); - const flairUrl = Ember.isEmpty(group.flair_url) + const flairUrl = isEmpty(group.flair_url) ? null : Handlebars.Utils.escapeExpression(group.flair_url); const flairColor = Handlebars.Utils.escapeExpression(group.flair_color); diff --git a/app/assets/javascripts/discourse/lib/transform-post.js.es6 b/app/assets/javascripts/discourse/lib/transform-post.js.es6 index 5f882d8a933..e6583cf8f61 100644 --- a/app/assets/javascripts/discourse/lib/transform-post.js.es6 +++ b/app/assets/javascripts/discourse/lib/transform-post.js.es6 @@ -1,3 +1,4 @@ +import { isEmpty } from "@ember/utils"; import { userPath } from "discourse/lib/url"; const _additionalAttributes = []; @@ -48,7 +49,7 @@ export function transformBasicPost(post) { showFlagDelete: false, canRecover: post.can_recover, canEdit: post.can_edit, - canFlag: !Ember.isEmpty(post.get("flagsAvailable")), + canFlag: !isEmpty(post.get("flagsAvailable")), canReviewTopic: false, reviewableId: post.reviewable_id, reviewableScoreCount: post.reviewable_score_count, diff --git a/app/assets/javascripts/discourse/lib/url.js.es6 b/app/assets/javascripts/discourse/lib/url.js.es6 index 0dbb7aa3ce2..71986d4d298 100644 --- a/app/assets/javascripts/discourse/lib/url.js.es6 +++ b/app/assets/javascripts/discourse/lib/url.js.es6 @@ -1,3 +1,4 @@ +import { isEmpty } from "@ember/utils"; import EmberObject from "@ember/object"; import { next } from "@ember/runloop"; import { schedule } from "@ember/runloop"; @@ -62,7 +63,7 @@ export function groupPath(subPath) { let _jumpScheduled = false; export function jumpToElement(elementId) { - if (_jumpScheduled || Ember.isEmpty(elementId)) { + if (_jumpScheduled || isEmpty(elementId)) { return; } @@ -191,7 +192,7 @@ const DiscourseURL = EmberObject.extend({ routeTo(path, opts) { opts = opts || {}; - if (Ember.isEmpty(path)) { + if (isEmpty(path)) { return; } diff --git a/app/assets/javascripts/discourse/mixins/name-validation.js.es6 b/app/assets/javascripts/discourse/mixins/name-validation.js.es6 index b1a07dc3ad8..0cf4c796cb3 100644 --- a/app/assets/javascripts/discourse/mixins/name-validation.js.es6 +++ b/app/assets/javascripts/discourse/mixins/name-validation.js.es6 @@ -1,3 +1,4 @@ +import { isEmpty } from "@ember/utils"; import InputValidation from "discourse/models/input-validation"; import { default as computed } from "ember-addons/ember-computed-decorators"; import Mixin from "@ember/object/mixin"; @@ -17,7 +18,7 @@ export default Mixin.create({ nameValidation() { if ( this.siteSettings.full_name_required && - Ember.isEmpty(this.accountName) + isEmpty(this.accountName) ) { return InputValidation.create({ failed: true }); } diff --git a/app/assets/javascripts/discourse/mixins/password-validation.js.es6 b/app/assets/javascripts/discourse/mixins/password-validation.js.es6 index 4096ccc2a05..3ddf9131f02 100644 --- a/app/assets/javascripts/discourse/mixins/password-validation.js.es6 +++ b/app/assets/javascripts/discourse/mixins/password-validation.js.es6 @@ -1,3 +1,4 @@ +import { isEmpty } from "@ember/utils"; import InputValidation from "discourse/models/input-validation"; import { default as computed } from "ember-addons/ember-computed-decorators"; import Mixin from "@ember/object/mixin"; @@ -55,7 +56,7 @@ export default Mixin.create({ } // If blank, fail without a reason - if (Ember.isEmpty(password)) { + if (isEmpty(password)) { return InputValidation.create({ failed: true }); } @@ -67,14 +68,14 @@ export default Mixin.create({ }); } - if (!Ember.isEmpty(accountUsername) && password === accountUsername) { + if (!isEmpty(accountUsername) && password === accountUsername) { return InputValidation.create({ failed: true, reason: I18n.t("user.password.same_as_username") }); } - if (!Ember.isEmpty(accountEmail) && password === accountEmail) { + if (!isEmpty(accountEmail) && password === accountEmail) { return InputValidation.create({ failed: true, reason: I18n.t("user.password.same_as_email") diff --git a/app/assets/javascripts/discourse/mixins/user-fields-validation.js.es6 b/app/assets/javascripts/discourse/mixins/user-fields-validation.js.es6 index 3fd0d26c86f..ec007c993d1 100644 --- a/app/assets/javascripts/discourse/mixins/user-fields-validation.js.es6 +++ b/app/assets/javascripts/discourse/mixins/user-fields-validation.js.es6 @@ -1,3 +1,4 @@ +import { isEmpty } from "@ember/utils"; import EmberObject from "@ember/object"; import InputValidation from "discourse/models/input-validation"; import { @@ -29,10 +30,10 @@ export default Mixin.create({ if (userFields) { userFields = userFields.filterBy("field.required"); } - if (!Ember.isEmpty(userFields)) { + if (!isEmpty(userFields)) { const anyEmpty = userFields.any(uf => { const val = uf.get("value"); - return !val || Ember.isEmpty(val); + return !val || isEmpty(val); }); if (anyEmpty) { return InputValidation.create({ failed: true }); diff --git a/app/assets/javascripts/discourse/mixins/username-validation.js.es6 b/app/assets/javascripts/discourse/mixins/username-validation.js.es6 index 9aa8ea4b707..66e86221a90 100644 --- a/app/assets/javascripts/discourse/mixins/username-validation.js.es6 +++ b/app/assets/javascripts/discourse/mixins/username-validation.js.es6 @@ -1,3 +1,4 @@ +import { isEmpty } from "@ember/utils"; import InputValidation from "discourse/models/input-validation"; import debounce from "discourse/lib/debounce"; import { setting } from "discourse/lib/computed"; @@ -15,7 +16,7 @@ export default Mixin.create({ Discourse.User.checkUsername(null, this.accountEmail).then(result => { if ( result.suggestion && - (Ember.isEmpty(this.accountUsername) || + (isEmpty(this.accountUsername) || this.accountUsername === this.get("authOptions.username")) ) { this.setProperties({ @@ -38,7 +39,7 @@ export default Mixin.create({ } // If blank, fail without a reason - if (Ember.isEmpty(accountUsername)) { + if (isEmpty(accountUsername)) { return InputValidation.create({ failed: true }); } @@ -68,7 +69,7 @@ export default Mixin.create({ shouldCheckUsernameAvailability() { return ( - !Ember.isEmpty(this.accountUsername) && + !isEmpty(this.accountUsername) && this.accountUsername.length >= this.minUsernameLength ); }, diff --git a/app/assets/javascripts/discourse/models/composer.js.es6 b/app/assets/javascripts/discourse/models/composer.js.es6 index 217f48eb627..57b0478e2a3 100644 --- a/app/assets/javascripts/discourse/models/composer.js.es6 +++ b/app/assets/javascripts/discourse/models/composer.js.es6 @@ -1,3 +1,4 @@ +import { isEmpty } from "@ember/utils"; import { reads, equal, not, or, and } from "@ember/object/computed"; import EmberObject from "@ember/object"; import { next } from "@ember/runloop"; @@ -116,7 +117,7 @@ const Composer = RestModel.extend({ set(categoryId) { const oldCategoryId = this._categoryId; - if (Ember.isEmpty(categoryId)) { + if (isEmpty(categoryId)) { categoryId = null; } this._categoryId = categoryId; @@ -420,7 +421,7 @@ const Composer = RestModel.extend({ @computed("metaData") hasMetaData(metaData) { - return metaData ? Ember.isEmpty(Ember.keys(metaData)) : false; + return metaData ? isEmpty(Ember.keys(metaData)) : false; }, replyDirty: propertyNotEqual("reply", "originalText"), @@ -610,7 +611,7 @@ const Composer = RestModel.extend({ } } - if (!Ember.isEmpty(reply)) { + if (!isEmpty(reply)) { return; } @@ -633,7 +634,7 @@ const Composer = RestModel.extend({ if (!opts) opts = {}; this.set("loading", false); - const replyBlank = Ember.isEmpty(this.reply); + const replyBlank = isEmpty(this.reply); const composer = this; if ( @@ -1055,7 +1056,7 @@ const Composer = RestModel.extend({ let data = this.serialize(_draft_serializer); - if (data.postId && !Ember.isEmpty(this.originalText)) { + if (data.postId && !isEmpty(this.originalText)) { data.originalText = this.originalText; } diff --git a/app/assets/javascripts/discourse/models/group.js.es6 b/app/assets/javascripts/discourse/models/group.js.es6 index 3bc06e9d97e..b25746471e3 100644 --- a/app/assets/javascripts/discourse/models/group.js.es6 +++ b/app/assets/javascripts/discourse/models/group.js.es6 @@ -1,3 +1,4 @@ +import { isEmpty } from "@ember/utils"; import { notEmpty, equal } from "@ember/object/computed"; import { ajax } from "discourse/lib/ajax"; import { @@ -27,7 +28,7 @@ const Group = RestModel.extend({ @computed("automatic_membership_email_domains") emailDomains(value) { - return Ember.isEmpty(value) ? "" : value; + return isEmpty(value) ? "" : value; }, @computed("automatic") @@ -44,7 +45,7 @@ const Group = RestModel.extend({ }, findMembers(params) { - if (Ember.isEmpty(this.name) || !this.can_see_members) { + if (isEmpty(this.name) || !this.can_see_members) { return; } diff --git a/app/assets/javascripts/discourse/models/model.js.es6 b/app/assets/javascripts/discourse/models/model.js.es6 index ea1c9506887..5ce0eb2eaf3 100644 --- a/app/assets/javascripts/discourse/models/model.js.es6 +++ b/app/assets/javascripts/discourse/models/model.js.es6 @@ -1,10 +1,11 @@ +import { isEmpty } from "@ember/utils"; import EmberObject from "@ember/object"; const Model = EmberObject.extend(); Model.reopenClass({ extractByKey(collection, klass) { const retval = {}; - if (Ember.isEmpty(collection)) { + if (isEmpty(collection)) { return retval; } diff --git a/app/assets/javascripts/discourse/models/post-stream.js.es6 b/app/assets/javascripts/discourse/models/post-stream.js.es6 index 60f3f8d69de..0f60c6e7377 100644 --- a/app/assets/javascripts/discourse/models/post-stream.js.es6 +++ b/app/assets/javascripts/discourse/models/post-stream.js.es6 @@ -1,3 +1,4 @@ +import { isEmpty } from "@ember/utils"; import { or, not, and } from "@ember/object/computed"; import { ajax } from "discourse/lib/ajax"; import DiscourseURL from "discourse/lib/url"; @@ -114,7 +115,7 @@ export default RestModel.extend({ } const userFilters = this.userFilters; - if (!Ember.isEmpty(userFilters)) { + if (!isEmpty(userFilters)) { result.username_filters = userFilters.join(","); } @@ -361,7 +362,7 @@ export default RestModel.extend({ }); } else { const postIds = this.nextWindow; - if (Ember.isEmpty(postIds)) return Ember.RSVP.resolve(); + if (isEmpty(postIds)) return Ember.RSVP.resolve(); this.set("loadingBelow", true); postsWithPlaceholders.appending(postIds); @@ -402,7 +403,7 @@ export default RestModel.extend({ }); } else { const postIds = this.previousWindow; - if (Ember.isEmpty(postIds)) return Ember.RSVP.resolve(); + if (isEmpty(postIds)) return Ember.RSVP.resolve(); this.set("loadingAbove", true); return this.findPostsByIds(postIds.reverse()) @@ -520,7 +521,7 @@ export default RestModel.extend({ }, removePosts(posts) { - if (Ember.isEmpty(posts)) { + if (isEmpty(posts)) { return; } @@ -955,7 +956,7 @@ export default RestModel.extend({ }, loadIntoIdentityMap(postIds) { - if (Ember.isEmpty(postIds)) { + if (isEmpty(postIds)) { return Ember.RSVP.resolve([]); } diff --git a/app/assets/javascripts/discourse/models/post.js.es6 b/app/assets/javascripts/discourse/models/post.js.es6 index 77fe18dc873..59487da87d5 100644 --- a/app/assets/javascripts/discourse/models/post.js.es6 +++ b/app/assets/javascripts/discourse/models/post.js.es6 @@ -1,3 +1,4 @@ +import { isEmpty } from "@ember/utils"; import { equal, and, or, not } from "@ember/object/computed"; import EmberObject from "@ember/object"; import { ajax } from "discourse/lib/ajax"; @@ -93,7 +94,7 @@ const Post = RestModel.extend({ @computed("link_counts.@each.internal") internalLinks() { - if (Ember.isEmpty(this.link_counts)) return null; + if (isEmpty(this.link_counts)) return null; return this.link_counts.filterBy("internal").filterBy("title"); }, diff --git a/app/assets/javascripts/discourse/models/site.js.es6 b/app/assets/javascripts/discourse/models/site.js.es6 index 46715900cd4..6057ece5da2 100644 --- a/app/assets/javascripts/discourse/models/site.js.es6 +++ b/app/assets/javascripts/discourse/models/site.js.es6 @@ -1,3 +1,4 @@ +import { isEmpty } from "@ember/utils"; import { alias, sort } from "@ember/object/computed"; import EmberObject from "@ember/object"; import computed from "ember-addons/ember-computed-decorators"; @@ -39,7 +40,7 @@ const Site = RestModel.extend({ let siteFields = this.user_fields; - if (!Ember.isEmpty(siteFields)) { + if (!isEmpty(siteFields)) { return siteFields.map(f => { let value = fields ? fields[f.id.toString()] : null; value = value || "—".htmlSafe(); diff --git a/app/assets/javascripts/discourse/models/topic-tracking-state.js.es6 b/app/assets/javascripts/discourse/models/topic-tracking-state.js.es6 index 5c726069d37..13476b900e7 100644 --- a/app/assets/javascripts/discourse/models/topic-tracking-state.js.es6 +++ b/app/assets/javascripts/discourse/models/topic-tracking-state.js.es6 @@ -1,3 +1,4 @@ +import { isEmpty } from "@ember/utils"; import { NotificationLevels } from "discourse/lib/notification-levels"; import { default as computed, @@ -215,7 +216,7 @@ const TopicTrackingState = Discourse.Model.extend({ // If we have a cached topic list, we can update it from our tracking information. updateTopics(topics) { - if (Ember.isEmpty(topics)) { + if (isEmpty(topics)) { return; } diff --git a/app/assets/javascripts/discourse/models/user.js.es6 b/app/assets/javascripts/discourse/models/user.js.es6 index 88910cd58ef..e20a29f3791 100644 --- a/app/assets/javascripts/discourse/models/user.js.es6 +++ b/app/assets/javascripts/discourse/models/user.js.es6 @@ -1,3 +1,4 @@ +import { isEmpty } from "@ember/utils"; import { gt, equal, or } from "@ember/object/computed"; import EmberObject from "@ember/object"; import { ajax } from "discourse/lib/ajax"; @@ -86,7 +87,7 @@ const User = RestModel.extend({ @computed("username", "name") displayName(username, name) { - if (Discourse.SiteSettings.enable_names && !Ember.isEmpty(name)) { + if (Discourse.SiteSettings.enable_names && !isEmpty(name)) { return name; } return username; @@ -95,7 +96,7 @@ const User = RestModel.extend({ @computed("profile_background_upload_url") profileBackgroundUrl(bgUrl) { if ( - Ember.isEmpty(bgUrl) || + isEmpty(bgUrl) || !Discourse.SiteSettings.allow_profile_backgrounds ) { return "".htmlSafe(); @@ -515,7 +516,7 @@ const User = RestModel.extend({ // The user's stat count, excluding PMs. @computed("statsExcludingPms.@each.count") statsCountNonPM() { - if (Ember.isEmpty(this.statsExcludingPms)) return 0; + if (isEmpty(this.statsExcludingPms)) return 0; let count = 0; this.statsExcludingPms.forEach(val => { if (this.inAllStream(val)) { @@ -528,7 +529,7 @@ const User = RestModel.extend({ // The user's stats, excluding PMs. @computed("stats.@each.isPM") statsExcludingPms() { - if (Ember.isEmpty(this.stats)) return []; + if (isEmpty(this.stats)) return []; return this.stats.rejectBy("isPM"); }, @@ -538,7 +539,7 @@ const User = RestModel.extend({ return PreloadStore.getAndRemove(`user_${user.get("username")}`, () => { return ajax(userPath(`${user.get("username")}.json`), { data: options }); }).then(json => { - if (!Ember.isEmpty(json.user.stats)) { + if (!isEmpty(json.user.stats)) { json.user.stats = Discourse.User.groupStats( json.user.stats.map(s => { if (s.count) s.count = parseInt(s.count, 10); @@ -547,7 +548,7 @@ const User = RestModel.extend({ ); } - if (!Ember.isEmpty(json.user.groups)) { + if (!isEmpty(json.user.groups)) { const groups = []; for (let i = 0; i < json.user.groups.length; i++) { @@ -563,7 +564,7 @@ const User = RestModel.extend({ json.user.invited_by = Discourse.User.create(json.user.invited_by); } - if (!Ember.isEmpty(json.user.featured_user_badge_ids)) { + if (!isEmpty(json.user.featured_user_badge_ids)) { const userBadgesMap = {}; UserBadge.createFromJson(json).forEach(userBadge => { userBadgesMap[userBadge.get("id")] = userBadge; diff --git a/app/assets/javascripts/discourse/routes/topic-from-params.js.es6 b/app/assets/javascripts/discourse/routes/topic-from-params.js.es6 index 6f626644a4a..08c46712366 100644 --- a/app/assets/javascripts/discourse/routes/topic-from-params.js.es6 +++ b/app/assets/javascripts/discourse/routes/topic-from-params.js.es6 @@ -1,3 +1,4 @@ +import { isEmpty } from "@ember/utils"; import { scheduleOnce } from "@ember/runloop"; import DiscourseRoute from "discourse/routes/discourse"; import DiscourseURL from "discourse/lib/url"; @@ -68,7 +69,7 @@ export default DiscourseRoute.extend({ } DiscourseURL.jumpToPost(closest, opts); - if (!Ember.isEmpty(topic.draft)) { + if (!isEmpty(topic.draft)) { composerController.open({ draft: Draft.getLocal(topic.draft_key, topic.draft), draftKey: topic.draft_key, diff --git a/app/assets/javascripts/discourse/routes/topic.js.es6 b/app/assets/javascripts/discourse/routes/topic.js.es6 index f992c01c5b3..60bc266f00c 100644 --- a/app/assets/javascripts/discourse/routes/topic.js.es6 +++ b/app/assets/javascripts/discourse/routes/topic.js.es6 @@ -1,3 +1,4 @@ +import { isEmpty } from "@ember/utils"; import { cancel } from "@ember/runloop"; import { scheduleOnce } from "@ember/runloop"; import { later } from "@ember/runloop"; @@ -220,7 +221,7 @@ const TopicRoute = DiscourseRoute.extend({ userFilters = postStream.get("userFilters"); userFilters.clear(); - if (!Ember.isEmpty(usernames) && usernames !== "undefined") { + if (!isEmpty(usernames) && usernames !== "undefined") { userFilters.addObjects(usernames.split(",")); } diff --git a/app/assets/javascripts/discourse/services/logs-notice.js.es6 b/app/assets/javascripts/discourse/services/logs-notice.js.es6 index 3395489ce4d..73961054a1e 100644 --- a/app/assets/javascripts/discourse/services/logs-notice.js.es6 +++ b/app/assets/javascripts/discourse/services/logs-notice.js.es6 @@ -1,3 +1,4 @@ +import { isEmpty } from "@ember/utils"; import EmberObject from "@ember/object"; import { default as computed, @@ -48,7 +49,7 @@ const LogsNotice = EmberObject.extend({ @computed("text") isEmpty(text) { - return Ember.isEmpty(text); + return isEmpty(text); }, @computed("text") @@ -62,8 +63,8 @@ const LogsNotice = EmberObject.extend({ }, @computed("isEmpty", "isAdmin") - hidden(isEmpty, isAdmin) { - return !isAdmin || isEmpty; + hidden(thisIsEmpty, isAdmin) { + return !isAdmin || thisIsEmpty; }, @observes("text") diff --git a/app/assets/javascripts/discourse/widgets/default-notification-item.js.es6 b/app/assets/javascripts/discourse/widgets/default-notification-item.js.es6 index afbdbb59bdf..49d70e086e3 100644 --- a/app/assets/javascripts/discourse/widgets/default-notification-item.js.es6 +++ b/app/assets/javascripts/discourse/widgets/default-notification-item.js.es6 @@ -1,3 +1,4 @@ +import { isEmpty } from "@ember/utils"; import { wantsNewWindow } from "discourse/lib/intercept-click"; import RawHtml from "discourse/widgets/raw-html"; import { createWidget } from "discourse/widgets/widget"; @@ -74,7 +75,7 @@ export const DefaultNotificationItem = createWidget( const description = data.topic_title; - return Ember.isEmpty(description) ? "" : escapeExpression(description); + return isEmpty(description) ? "" : escapeExpression(description); }, text(notificationName, data) { diff --git a/app/assets/javascripts/discourse/widgets/liked-consolidated-notification-item.js.es6 b/app/assets/javascripts/discourse/widgets/liked-consolidated-notification-item.js.es6 index 61609ea09fd..96a36042555 100644 --- a/app/assets/javascripts/discourse/widgets/liked-consolidated-notification-item.js.es6 +++ b/app/assets/javascripts/discourse/widgets/liked-consolidated-notification-item.js.es6 @@ -1,3 +1,4 @@ +import { isEmpty } from "@ember/utils"; import { createWidgetFrom } from "discourse/widgets/widget"; import { DefaultNotificationItem } from "discourse/widgets/default-notification-item"; import { escapeExpression } from "discourse/lib/utilities"; @@ -25,7 +26,7 @@ createWidgetFrom( } ); - return Ember.isEmpty(description) ? "" : escapeExpression(description); + return isEmpty(description) ? "" : escapeExpression(description); } } ); diff --git a/app/assets/javascripts/select-kit/components/category-drop/category-drop-header.js.es6 b/app/assets/javascripts/select-kit/components/category-drop/category-drop-header.js.es6 index 629accda689..c04fc30840c 100644 --- a/app/assets/javascripts/select-kit/components/category-drop/category-drop-header.js.es6 +++ b/app/assets/javascripts/select-kit/components/category-drop/category-drop-header.js.es6 @@ -1,3 +1,4 @@ +import { isEmpty } from "@ember/utils"; import ComboBoxSelectBoxHeaderComponent from "select-kit/components/combo-box/combo-box-header"; import computed from "ember-addons/ember-computed-decorators"; import Category from "discourse/models/category"; @@ -12,7 +13,7 @@ export default ComboBoxSelectBoxHeaderComponent.extend({ @computed("computedContent.value", "computedContent.name") category(value, name) { - if (Ember.isEmpty(value)) { + if (isEmpty(value)) { const uncat = Category.findUncategorized(); if (uncat && uncat.get("name") === name) { return uncat; diff --git a/app/assets/javascripts/select-kit/components/category-row.js.es6 b/app/assets/javascripts/select-kit/components/category-row.js.es6 index 29153014229..8523bfb07e2 100644 --- a/app/assets/javascripts/select-kit/components/category-row.js.es6 +++ b/app/assets/javascripts/select-kit/components/category-row.js.es6 @@ -1,3 +1,4 @@ +import { isEmpty } from "@ember/utils"; import SelectKitRowComponent from "select-kit/components/select-kit/select-kit-row"; import computed from "ember-addons/ember-computed-decorators"; import Category from "discourse/models/category"; @@ -27,7 +28,7 @@ export default SelectKitRowComponent.extend({ @computed("computedContent.value", "computedContent.name") category(value, name) { - if (Ember.isEmpty(value)) { + if (isEmpty(value)) { const uncat = Category.findUncategorized(); if (uncat && uncat.get("name") === name) { return uncat; diff --git a/app/assets/javascripts/select-kit/components/future-date-input-selector.js.es6 b/app/assets/javascripts/select-kit/components/future-date-input-selector.js.es6 index 7944b825980..f5167afb202 100644 --- a/app/assets/javascripts/select-kit/components/future-date-input-selector.js.es6 +++ b/app/assets/javascripts/select-kit/components/future-date-input-selector.js.es6 @@ -1,3 +1,4 @@ +import { isEmpty } from "@ember/utils"; import ComboBoxComponent from "select-kit/components/combo-box"; import { CLOSE_STATUS_TYPE } from "discourse/controllers/edit-topic-timer"; import DatetimeMixin from "select-kit/components/future-date-input-selector/mixin"; @@ -239,7 +240,7 @@ export default ComboBoxComponent.extend(DatetimeMixin, { let input = null; const { time } = this._updateAt(value); - if (time && !Ember.isEmpty(value)) { + if (time && !isEmpty(value)) { input = time.locale("en").format(FORMAT); } diff --git a/app/assets/javascripts/select-kit/mixins/events.js.es6 b/app/assets/javascripts/select-kit/mixins/events.js.es6 index f37cade5576..0d6e7013a74 100644 --- a/app/assets/javascripts/select-kit/mixins/events.js.es6 +++ b/app/assets/javascripts/select-kit/mixins/events.js.es6 @@ -1,3 +1,4 @@ +import { isEmpty } from "@ember/utils"; import { throttle } from "@ember/runloop"; import { schedule } from "@ember/runloop"; import { on } from "ember-addons/ember-computed-decorators"; @@ -114,14 +115,14 @@ export default Mixin.create({ this.unfocus(event); } if (keyCode === this.keys.TAB && !event.shiftKey) this.tabFromHeader(event); - if (Ember.isEmpty(this.filter) && keyCode === this.keys.BACKSPACE) + if (isEmpty(this.filter) && keyCode === this.keys.BACKSPACE) this.backspaceFromHeader(event); if (keyCode === this.keys.ESC) this.escapeFromHeader(event); if (keyCode === this.keys.ENTER) this.enterFromHeader(event); if ([this.keys.UP, this.keys.DOWN].includes(keyCode)) this.upAndDownFromHeader(event); if ( - Ember.isEmpty(this.filter) && + isEmpty(this.filter) && [this.keys.LEFT, this.keys.RIGHT].includes(keyCode) ) { this.leftAndRightFromHeader(event); @@ -154,7 +155,7 @@ export default Mixin.create({ const keyCode = event.keyCode || event.which; if ( - Ember.isEmpty(this.filter) && + isEmpty(this.filter) && keyCode === this.keys.BACKSPACE && typeof this.didPressBackspaceFromFilter === "function" ) { @@ -171,7 +172,7 @@ export default Mixin.create({ this.upAndDownFromFilter(event); if ( - Ember.isEmpty(this.filter) && + isEmpty(this.filter) && [this.keys.LEFT, this.keys.RIGHT].includes(keyCode) ) { this.leftAndRightFromFilter(event); @@ -197,7 +198,7 @@ export default Mixin.create({ return true; } - if (Ember.isEmpty(this.filter)) { + if (isEmpty(this.filter)) { this.close(event); return true; } @@ -285,7 +286,7 @@ export default Mixin.create({ if (!this.selection || !this.selection.length) return; - if (!Ember.isEmpty(this.filter)) { + if (!isEmpty(this.filter)) { this.clearHighlightSelection(); return; } @@ -336,7 +337,7 @@ export default Mixin.create({ return; } - if (Ember.isEmpty(this.selection)) return; + if (isEmpty(this.selection)) return; const keyCode = event.keyCode || event.which; diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index 96531a9a187..383aca79aaa 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -442,6 +442,7 @@ module ApplicationHelper ids = theme_ids end + Rails.logger.info "0 >>>>>> #{name}" Stylesheet::Manager.stylesheet_link_tag(name, 'all', ids) end diff --git a/plugins/discourse-local-dates/assets/javascripts/discourse/components/discourse-local-dates-create-form.js.es6 b/plugins/discourse-local-dates/assets/javascripts/discourse/components/discourse-local-dates-create-form.js.es6 index 76e3d64088b..de01b5ef9c5 100644 --- a/plugins/discourse-local-dates/assets/javascripts/discourse/components/discourse-local-dates-create-form.js.es6 +++ b/plugins/discourse-local-dates/assets/javascripts/discourse/components/discourse-local-dates-create-form.js.es6 @@ -1,3 +1,4 @@ +import { isEmpty } from "@ember/utils"; import { schedule } from "@ember/runloop"; import Component from "@ember/component"; /* global Pikaday:true */ @@ -358,7 +359,7 @@ export default Component.extend({ }, _setTimeIfValid(time, key) { - if (Ember.isEmpty(time)) { + if (isEmpty(time)) { this.set(key, null); return; } diff --git a/test/javascripts/helpers/qunit-helpers.js.es6 b/test/javascripts/helpers/qunit-helpers.js.es6 index ca1bd8363a4..59f00c71ecd 100644 --- a/test/javascripts/helpers/qunit-helpers.js.es6 +++ b/test/javascripts/helpers/qunit-helpers.js.es6 @@ -1,3 +1,4 @@ +import { isEmpty } from "@ember/utils"; import { run } from "@ember/runloop"; import { later } from "@ember/runloop"; /* global QUnit, resetSite */ @@ -182,7 +183,7 @@ QUnit.assert.not = function(actual, message) { QUnit.assert.blank = function(actual, message) { this.pushResult({ - result: Ember.isEmpty(actual), + result: isEmpty(actual), actual, message }); @@ -190,7 +191,7 @@ QUnit.assert.blank = function(actual, message) { QUnit.assert.present = function(actual, message) { this.pushResult({ - result: !Ember.isEmpty(actual), + result: !isEmpty(actual), actual, message });